@prismicio/mock 0.0.10 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/index.cjs +153 -149
- package/dist/api/index.cjs.map +1 -1
- package/dist/api/index.d.ts +51 -5
- package/dist/api/index.js +153 -149
- package/dist/api/index.js.map +1 -1
- package/dist/index.cjs +609 -357
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +240 -70
- package/dist/index.js +602 -358
- package/dist/index.js.map +1 -1
- package/dist/model/index.cjs +236 -66
- package/dist/model/index.cjs.map +1 -1
- package/dist/model/index.d.ts +113 -27
- package/dist/model/index.js +236 -66
- package/dist/model/index.js.map +1 -1
- package/dist/value/index.cjs +347 -315
- package/dist/value/index.cjs.map +1 -1
- package/dist/value/index.d.ts +90 -38
- package/dist/value/index.js +347 -315
- package/dist/value/index.js.map +1 -1
- package/package.json +14 -14
- package/src/api/createAPIMockFactory.ts +56 -0
- package/src/api/query.ts +2 -2
- package/src/api/ref.ts +3 -3
- package/src/api/repository.ts +7 -9
- package/src/api/tags.ts +5 -2
- package/src/createMockFactory.ts +52 -0
- package/src/index.ts +15 -0
- package/src/lib/buildEmbedField.ts +13 -4
- package/src/lib/buildImageFieldImage.ts +16 -5
- package/src/lib/createFaker.ts +14 -15
- package/src/lib/generateCustomTypeId.ts +12 -4
- package/src/lib/generateFieldId.ts +12 -4
- package/src/lib/generateTags.ts +13 -4
- package/src/lib/getMockEmbedData.ts +12 -4
- package/src/lib/getMockImageData.ts +12 -4
- package/src/lib/valueForModel.ts +47 -30
- package/src/lib/valueForModelMap.ts +24 -4
- package/src/model/boolean.ts +5 -5
- package/src/model/buildMockGroupFieldMap.ts +4 -4
- package/src/model/color.ts +2 -2
- package/src/model/contentRelationship.ts +2 -2
- package/src/model/createModelMockFactory.ts +213 -0
- package/src/model/customType.ts +3 -3
- package/src/model/date.ts +2 -2
- package/src/model/embed.ts +2 -2
- package/src/model/geoPoint.ts +2 -2
- package/src/model/group.ts +6 -6
- package/src/model/image.ts +3 -3
- package/src/model/index.ts +2 -0
- package/src/model/integrationFields.ts +2 -2
- package/src/model/keyText.ts +2 -2
- package/src/model/link.ts +3 -3
- package/src/model/linkToMedia.ts +3 -3
- package/src/model/number.ts +2 -2
- package/src/model/richText.ts +2 -2
- package/src/model/select.ts +3 -3
- package/src/model/sharedSlice.ts +3 -3
- package/src/model/sharedSliceVariation.ts +6 -6
- package/src/model/slice.ts +3 -3
- package/src/model/sliceZone.ts +7 -4
- package/src/model/timestamp.ts +2 -2
- package/src/model/title.ts +2 -2
- package/src/model/uid.ts +2 -2
- package/src/types.ts +63 -21
- package/src/value/boolean.ts +3 -5
- package/src/value/color.ts +2 -2
- package/src/value/contentRelationship.ts +18 -15
- package/src/value/createValueMockFactory.ts +236 -0
- package/src/value/customType.ts +7 -7
- package/src/value/date.ts +6 -2
- package/src/value/embed.ts +6 -3
- package/src/value/geoPoint.ts +2 -2
- package/src/value/group.ts +5 -5
- package/src/value/image.ts +26 -18
- package/src/value/integrationFields.ts +12 -26
- package/src/value/keyText.ts +2 -2
- package/src/value/link.ts +9 -7
- package/src/value/linkToMedia.ts +2 -2
- package/src/value/number.ts +2 -2
- package/src/value/richText/embed.ts +6 -3
- package/src/value/richText/heading.ts +29 -17
- package/src/value/richText/image.ts +6 -3
- package/src/value/richText/index.ts +71 -43
- package/src/value/richText/list.ts +2 -2
- package/src/value/richText/oList.ts +2 -2
- package/src/value/richText/paragraph.ts +2 -2
- package/src/value/richText/preformatted.ts +2 -2
- package/src/value/select.ts +10 -6
- package/src/value/sharedSlice.ts +4 -4
- package/src/value/sharedSliceVariation.ts +9 -10
- package/src/value/slice.ts +9 -9
- package/src/value/sliceZone.ts +10 -8
- package/src/value/timestamp.ts +2 -2
- package/src/value/title.ts +7 -3
- package/src/value/uid.ts +5 -3
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/constants.ts","../src/lib/lorem.ts","../src/lib/createFaker.ts","../src/lib/generateTags.ts","../src/value/boolean.ts","../src/lib/valueForModel.ts","../src/lib/valueForModelMap.ts","../src/model/boolean.ts","../src/model/color.ts","../src/model/contentRelationship.ts","../src/model/customType.ts","../src/model/date.ts","../src/model/embed.ts","../src/model/geoPoint.ts","../src/model/group.ts","../src/model/image.ts","../src/model/integrationFields.ts","../src/model/keyText.ts","../src/model/link.ts","../src/model/linkToMedia.ts","../src/model/number.ts","../src/model/richText.ts","../src/model/select.ts","../src/model/sharedSlice.ts","../src/model/sharedSliceChoice.ts","../src/model/sharedSliceVariation.ts","../src/model/slice.ts","../src/model/sliceZone.ts","../src/model/timestamp.ts","../src/model/title.ts","../src/model/uid.ts","../src/lib/generateFieldId.ts","../src/model/buildMockGroupFieldMap.ts","../src/value/timestamp.ts","../src/lib/buildAlternativeLanguage.ts","../src/value/customType.ts","../src/value/color.ts","../src/lib/buildContentRelationshipField.ts","../src/lib/generateCustomTypeId.ts","../src/value/contentRelationship.ts","../src/value/date.ts","../src/lib/buildEmbedField.ts","../src/lib/getMockEmbedData.ts","../src/value/embed.ts","../src/value/geoPoint.ts","../src/value/group.ts","../src/lib/buildImageFieldImage.ts","../src/lib/getMockImageData.ts","../src/value/image.ts","../src/value/integrationFields.ts","../src/value/keyText.ts","../src/value/linkToMedia.ts","../src/value/link.ts","../src/value/number.ts","../src/value/richText/heading.ts","../src/value/richText/paragraph.ts","../src/value/richText/preformatted.ts","../src/value/richText/list.ts","../src/value/richText/oList.ts","../src/value/richText/image.ts","../src/value/richText/embed.ts","../src/value/richText/index.ts","../src/value/select.ts","../src/value/slice.ts","../src/value/sharedSliceVariation.ts","../src/value/sharedSlice.ts","../src/value/sliceZone.ts","../src/value/title.ts","../src/value/uid.ts","../src/api/ref.ts","../src/api/repository.ts","../src/api/query.ts","../src/api/tags.ts"],"sourcesContent":["import { Seed } from \"./types\";\n\nexport const FAKER_SEED: Seed = 1984;\n","/**\n * The following code is a modified version of fast-lorem-ipsum from Amit Gupta.\n * The changes are made to support starting the return value from a configurable\n * word offset.\n *\n * https://github.com/amitguptagwl/fast-lorem-ipsum/tree/7f836ee59a23cc75e7ca5b1a1747ea888eab31c7\n *\n * MIT License\n *\n * Copyright (c) 2017 Amit Gupta\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nconst wordsString =\n\t\"lorem ipsum dolor sit amet, consectetur adipiscing elit ut aliquam, purus sit amet luctus venenatis, lectus magna fringilla urna, porttitor rhoncus dolor purus non enim praesent elementum facilisis leo, vel fringilla est ullamcorper eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis eu volutpat odio facilisis mauris sit amet massa vitae tortor condimentum lacinia quis vel eros donec ac odio tempor orci dapibus ultrices in iaculis nunc sed augue lacus, viverra vitae congue eu, consequat ac felis donec et odio pellentesque diam volutpat commodo sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium vulputate sapien nec sagittis aliquam malesuada bibendum arcu vitae elementum curabitur vitae nunc sed velit dignissim sodales ut eu sem integer vitae justo eget magna fermentum iaculis eu non diam phasellus vestibulum lorem sed risus ultricies tristique nulla aliquet enim tortor, at auctor urna nunc id cursus metus aliquam eleifend mi in nulla posuere sollicitudin aliquam ultrices sagittis orci, a scelerisque purus semper eget duis at tellus at urna condimentum mattis pellentesque id nibh tortor, id aliquet lectus proin nibh nisl, condimentum id venenatis a, condimentum vitae sapien pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas sed tempus, urna et pharetra pharetra, massa massa ultricies mi, quis hendrerit dolor magna eget est lorem ipsum dolor sit amet, consectetur adipiscing elit pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas integer eget aliquet nibh praesent tristique magna sit amet purus gravida quis blandit turpis cursus in hac habitasse platea dictumst quisque sagittis, purus sit amet volutpat consequat, mauris nunc congue nisi, vitae suscipit tellus mauris a diam maecenas sed enim ut sem viverra aliquet eget sit amet tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra, magna ac placerat vestibulum, lectus mauris ultrices eros, in cursus turpis massa tincidunt dui ut ornare lectus sit amet est placerat in egestas erat imperdiet sed euismod nisi porta lorem mollis aliquam ut porttitor leo a diam sollicitudin tempor id eu nisl nunc mi ipsum, faucibus vitae aliquet nec, ullamcorper sit amet risus nullam eget felis eget nunc lobortis mattis aliquam faucibus purus in massa tempor nec feugiat nisl pretium fusce id velit ut tortor pretium viverra suspendisse potenti nullam ac tortor vitae purus faucibus ornare suspendisse sed nisi lacus, sed viverra tellus in hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at augue eget arcu dictum varius duis at consectetur lorem donec massa sapien, faucibus et molestie ac, feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi tincidunt ornare massa, eget egestas purus viverra accumsan in nisl nisi, scelerisque eu ultrices vitae, auctor eu augue ut lectus arcu, bibendum at varius vel, pharetra vel turpis nunc eget lorem dolor, sed viverra ipsum nunc aliquet bibendum enim, facilisis gravida neque convallis a cras semper auctor neque, vitae tempus quam pellentesque nec nam aliquam sem et tortor consequat id porta nibh venenatis cras sed felis eget velit aliquet sagittis id consectetur purus ut faucibus pulvinar elementum integer enim neque, volutpat ac tincidunt vitae, semper quis lectus nulla at volutpat diam ut venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci porta non pulvinar neque laoreet suspendisse interdum consectetur libero, id faucibus nisl tincidunt eget nullam non nisi est, sit amet facilisis magna etiam tempor, orci eu lobortis elementum, nibh tellus molestie nunc, non blandit massa enim nec dui nunc mattis enim ut tellus elementum sagittis vitae et leo duis ut diam quam nulla porttitor massa id neque aliquam vestibulum morbi blandit cursus risus, at ultrices mi tempus imperdiet nulla malesuada pellentesque elit eget gravida cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc vel risus commodo viverra maecenas accumsan, lacus vel facilisis volutpat, est velit egestas dui, id ornare arcu odio ut sem nulla pharetra diam sit amet nisl suscipit adipiscing bibendum est ultricies integer quis auctor elit sed vulputate mi sit amet mauris commodo quis imperdiet massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin libero nunc, consequat interdum varius sit amet, mattis vulputate enim nulla aliquet porttitor lacus, luctus accumsan tortor posuere ac ut consequat semper viverra nam libero justo, laoreet sit amet cursus sit amet, dictum sit amet justo donec enim diam, vulputate ut pharetra sit amet, aliquam id diam maecenas ultricies mi eget mauris pharetra et ultrices neque ornare aenean euismod elementum nisi, quis eleifend quam adipiscing vitae proin sagittis, nisl rhoncus mattis rhoncus, urna neque viverra justo, nec ultrices dui sapien eget mi proin sed libero enim, sed faucibus turpis in eu mi bibendum neque egestas congue quisque egestas diam in arcu cursus euismod quis viverra nibh cras pulvinar mattis nunc, sed blandit libero volutpat sed cras ornare arcu dui vivamus arcu felis, bibendum ut tristique et, egestas quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim, sit amet venenatis urna cursus eget nunc scelerisque viverra mauris, in aliquam sem fringilla ut morbi tincidunt augue interdum velit euismod in pellentesque massa placerat duis ultricies lacus sed turpis tincidunt id aliquet risus feugiat in ante metus, dictum at tempor commodo, ullamcorper a lacus vestibulum sed arcu non odio euismod lacinia at quis risus sed vulputate odio ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat velit, scelerisque in dictum non, consectetur a erat nam at lectus urna duis convallis convallis tellus, id interdum velit laoreet id donec ultrices tincidunt arcu, non sodales neque sodales ut etiam sit amet nisl purus, in mollis nunc sed id semper risus in hendrerit gravida rutrum quisque non tellus orci, ac auctor augue mauris augue neque, gravida in fermentum et, sollicitudin ac orci phasellus egestas tellus rutrum tellus pellentesque eu tincidunt tortor aliquam nulla facilisi cras fermentum, odio eu feugiat pretium, nibh ipsum consequat nisl, vel pretium lectus quam id leo in vitae turpis massa sed elementum tempus egestas sed sed risus pretium quam vulputate dignissim suspendisse in est ante in nibh mauris, cursus mattis molestie a, iaculis at erat pellentesque adipiscing commodo elit, at imperdiet dui accumsan sit amet nulla facilisi morbi tempus iaculis urna, id volutpat lacus laoreet non curabitur gravida arcu ac tortor dignissim convallis aenean et tortor at risus viverra adipiscing at in tellus integer feugiat scelerisque varius morbi enim nunc, faucibus a pellentesque sit amet, porttitor eget dolor morbi non arcu risus, quis varius quam quisque id diam vel quam elementum pulvinar etiam non quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit amet, consectetur adipiscing elit duis tristique sollicitudin nibh sit amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas maecenas pharetra convallis posuere morbi leo urna, molestie at elementum eu, facilisis sed odio morbi quis commodo odio aenean sed adipiscing diam donec adipiscing tristique risus nec feugiat in fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida hendrerit lectus a molestie\";\n\nexport const loremWords = wordsString.split(\" \");\n\n/**\n * Returns \"Lorem ipsum\" text of a specified length.\n *\n * @example\n *\n * ```ts\n * lorem(\"100w\"); // 100 words\n * lorem(\"200c\"); // 200 characters\n * ```\n *\n * @param length - Length of the returned text in the form of `${number}w` or\n * `${number}c`. `w` means words, `c` means characters.\n *\n * @returns Lorem ipsum text.\n */\nexport const lorem = (length: `${number}w` | `${number}c`, wordOffset = 0) => {\n\tconst count = parseInt(length.substring(0, length.length - 1));\n\tconst countType = length.charAt(length.length - 1);\n\n\tif (!isNaN(count) && (countType === \"w\" || countType === \"c\")) {\n\t\t// Build a list of indicies for each space in the list of\n\t\t// words. Only do this on the first call of `lorem`. The list\n\t\t// is cached to a property on `lorem` itself.\n\t\tif (!lorem.spaceIndices.length) {\n\t\t\tlet startIndex = -1;\n\t\t\tdo {\n\t\t\t\tconst index = wordsString.indexOf(\" \", startIndex + 1);\n\n\t\t\t\tlorem.spaceIndices.push(index);\n\n\t\t\t\tstartIndex = index;\n\t\t\t} while (startIndex !== -1);\n\t\t}\n\n\t\tif (countType === \"c\") {\n\t\t\treturn wordsString.substring(0, count);\n\t\t} else {\n\t\t\tlet sentence = \"\";\n\n\t\t\tconst startSpaceIndex =\n\t\t\t\tlorem.spaceIndices[(wordOffset % lorem.spaceIndices.length) - 1];\n\n\t\t\tconst endSpaceIndex =\n\t\t\t\tlorem.spaceIndices[\n\t\t\t\t\t(((wordOffset % lorem.spaceIndices.length) + count) %\n\t\t\t\t\t\tlorem.spaceIndices.length) -\n\t\t\t\t\t\t1\n\t\t\t\t];\n\n\t\t\tif (\n\t\t\t\tcount + (wordOffset % lorem.spaceIndices.length) >\n\t\t\t\tlorem.spaceIndices.length\n\t\t\t) {\n\t\t\t\tsentence += wordsString.substring(startSpaceIndex + 1) + \" \";\n\n\t\t\t\tconst wraparoundCounts =\n\t\t\t\t\tMath.floor(count / lorem.spaceIndices.length) - 1;\n\t\t\t\tfor (let i = 0; i < wraparoundCounts; i++) {\n\t\t\t\t\tsentence += wordsString + \" \";\n\t\t\t\t}\n\n\t\t\t\tsentence += wordsString.substring(0, endSpaceIndex);\n\t\t\t} else {\n\t\t\t\tsentence = wordsString.substring(startSpaceIndex + 1, endSpaceIndex);\n\t\t\t}\n\n\t\t\tif (sentence.charAt(sentence.length - 1) === \",\") {\n\t\t\t\treturn sentence.substring(0, sentence.length - 1);\n\t\t\t} else {\n\t\t\t\treturn sentence.substring(0, sentence.length);\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow new Error(\"Length must be of the form `${number}w` or `${number}c`\");\n};\nlorem.spaceIndices = [] as number[];\n","import Rand from \"rand-seed\";\n\nimport { Seed } from \"../types\";\nimport { FAKER_SEED } from \"../constants\";\nimport { lorem, loremWords } from \"./lorem\";\n\nexport const createFaker = (seed: Seed = FAKER_SEED) => {\n\tconst normalizedSeed = seed.toString();\n\n\tif (createFaker.cache[normalizedSeed]) {\n\t\treturn createFaker.cache[normalizedSeed];\n\t} else {\n\t\tconst faker = new Faker(normalizedSeed);\n\n\t\treturn (createFaker.cache[normalizedSeed] = faker);\n\t}\n};\ncreateFaker.cache = {} as Record<string, Faker>;\n\nconst DAY_MS = 1000 * 60 * 60 * 24;\nconst YEAR_MS = DAY_MS * 365;\nconst YEAR_2022_MS = 52 * (YEAR_MS + DAY_MS / 4);\n\nexport class Faker {\n\tprivate rand: Rand;\n\n\tconstructor(seed: string) {\n\t\tthis.rand = new Rand(seed);\n\t}\n\n\tboolean(): boolean {\n\t\treturn this.random() >= 0.5;\n\t}\n\n\trandom(): number {\n\t\treturn this.rand.next();\n\t}\n\n\trandomElement<T>(elements: readonly T[]): T {\n\t\treturn elements[this.range(0, elements.length)];\n\t}\n\n\trandomElements<T>(elements: readonly T[]): T[] {\n\t\treturn elements.filter(() => this.boolean());\n\t}\n\n\trange(min: number, max: number): number {\n\t\treturn Math.floor(this.rangeFloat(Math.ceil(min), Math.floor(max)));\n\t}\n\n\trangeFloat(min: number, max: number): number {\n\t\treturn this.random() * (max - min) + min;\n\t}\n\n\twords(length: number, wordOffset = this.range(0, loremWords.length)): string {\n\t\treturn lorem(`${length}w`, wordOffset);\n\t}\n\n\tword(): string {\n\t\treturn this.randomElement(loremWords);\n\t}\n\n\tlorem(\n\t\tlength: Parameters<typeof lorem>[0],\n\t\twordOffset = this.range(0, loremWords.length),\n\t): string {\n\t\treturn lorem(length, wordOffset);\n\t}\n\n\turl(): string {\n\t\treturn `https://${this.word()}.example`;\n\t}\n\n\thexColor(): string {\n\t\treturn `#${this.hash(6)}`;\n\t}\n\n\thash(length: number): string {\n\t\tlet hash = \"\";\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst chars = this.boolean() ? \"abcdef\" : \"0123456789\";\n\n\t\t\thash += chars[this.range(0, chars.length)];\n\t\t}\n\n\t\treturn hash;\n\t}\n\n\tdate(): Date {\n\t\treturn new Date(YEAR_2022_MS + this.range(-YEAR_MS * 3, YEAR_MS * 3));\n\t}\n\n\tdateAfter(date: Date): Date {\n\t\tconst timestamp = date.getTime();\n\n\t\treturn new Date(this.range(timestamp, timestamp + YEAR_MS * 3));\n\t}\n\n\tdateBefore(date: Date): Date {\n\t\tconst timestamp = date.getTime();\n\n\t\treturn new Date(this.range(timestamp - YEAR_MS * 3, timestamp));\n\t}\n\n\tdateBetween(min: Date, max: Date): Date {\n\t\treturn new Date(this.range(min.getTime(), max.getTime()));\n\t}\n}\n","import * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueConfig } from \"../types\";\n\ntype GenerateTagsConfig = {\n\tmin?: number;\n\tmax?: number;\n} & Pick<MockValueConfig, \"seed\">;\n\nexport const generateTags = (config: GenerateTagsConfig): string[] => {\n\tconst faker = createFaker(config.seed);\n\n\treturn Array.from(\n\t\t{ length: faker.range(config.min ?? 0, config.max ?? 2) },\n\t\t() => changeCase.capitalCase(faker.words(faker.range(1, 3))),\n\t);\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueConfig } from \"../types\";\n\nexport type MockBooleanValueConfig<\n\tModel extends prismicT.CustomTypeModelBooleanField = prismicT.CustomTypeModelBooleanField,\n> = MockValueConfig<Model>;\n\nexport const boolean = <\n\tModel extends prismicT.CustomTypeModelBooleanField = prismicT.CustomTypeModelBooleanField,\n>(\n\tconfig: MockBooleanValueConfig<Model> = {},\n): prismicT.BooleanField => {\n\tconst faker = createFaker(config.seed);\n\n\treturn faker.boolean();\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport {\n\tMockValueConfig,\n\tMockValueConfigForModel,\n\tModelValue,\n\tSetRequired,\n} from \"../types\";\n\ntype ValueForModelConfig<Model extends prismicT.CustomTypeModelField> = {\n\tconfig?: Omit<MockValueConfigForModel<Model>, \"seed\" | \"model\">;\n} & SetRequired<MockValueConfig<Model>, \"model\">;\n\nimport * as value from \"../value\";\n\nexport const valueForModel = <Model extends prismicT.CustomTypeModelField>(\n\tconfig: ValueForModelConfig<Model>,\n): ModelValue<Model> => {\n\tconst model = config.model;\n\n\tswitch (model.type) {\n\t\tcase prismicT.CustomTypeModelFieldType.Boolean: {\n\t\t\treturn value.boolean({\n\t\t\t\tseed: config.seed,\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 prismicT.CustomTypeModelFieldType.Color: {\n\t\t\treturn value.color({\n\t\t\t\tseed: config.seed,\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 prismicT.CustomTypeModelFieldType.Link: {\n\t\t\tswitch (model.config.select) {\n\t\t\t\tcase prismicT.CustomTypeModelLinkSelectType.Document: {\n\t\t\t\t\treturn value.contentRelationship({\n\t\t\t\t\t\tseed: config.seed,\n\t\t\t\t\t\tmodel: model as prismicT.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 prismicT.CustomTypeModelLinkSelectType.Media: {\n\t\t\t\t\treturn value.linkToMedia({\n\t\t\t\t\t\tseed: config.seed,\n\t\t\t\t\t\tmodel: model as prismicT.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\tseed: config.seed,\n\t\t\t\t\t\tmodel: model as prismicT.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 prismicT.CustomTypeModelFieldType.Date: {\n\t\t\treturn value.date({\n\t\t\t\tseed: config.seed,\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 prismicT.CustomTypeModelFieldType.Embed: {\n\t\t\treturn value.embed({\n\t\t\t\tseed: config.seed,\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 prismicT.CustomTypeModelFieldType.GeoPoint: {\n\t\t\treturn value.geoPoint({\n\t\t\t\tseed: config.seed,\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 prismicT.CustomTypeModelFieldType.Image: {\n\t\t\treturn value.image({\n\t\t\t\tseed: config.seed,\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 prismicT.CustomTypeModelFieldType.Text: {\n\t\t\treturn value.keyText({\n\t\t\t\tseed: config.seed,\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 prismicT.CustomTypeModelFieldType.Number: {\n\t\t\treturn value.number({\n\t\t\t\tseed: config.seed,\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 prismicT.CustomTypeModelFieldType.Select: {\n\t\t\treturn value.select({\n\t\t\t\tseed: config.seed,\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 prismicT.CustomTypeModelFieldType.Timestamp: {\n\t\t\treturn value.timestamp({\n\t\t\t\tseed: config.seed,\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 prismicT.CustomTypeModelFieldType.StructuredText: {\n\t\t\tif (\n\t\t\t\t\"single\" in model.config &&\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\tseed: config.seed,\n\t\t\t\t\tmodel: model as prismicT.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\tseed: config.seed,\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 prismicT.CustomTypeModelFieldType.IntegrationFields: {\n\t\t\treturn value.integrationFields({\n\t\t\t\tseed: config.seed,\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 prismicT.CustomTypeModelFieldType.UID: {\n\t\t\treturn value.uid({\n\t\t\t\tseed: config.seed,\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 prismicT.CustomTypeModelFieldType.Group: {\n\t\t\treturn value.group({\n\t\t\t\tseed: config.seed,\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 prismicT.CustomTypeModelFieldType.Slices: {\n\t\t\treturn value.sliceZone({\n\t\t\t\tseed: config.seed,\n\t\t\t\tmodel,\n\t\t\t\t...config.config,\n\t\t\t}) as ModelValue<Model>;\n\t\t}\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { MockValueConfig, ModelValue, ModelValueMap } from \"../types\";\nimport {\n\tMockBooleanValueConfig,\n\tMockColorValueConfig,\n\tMockContentRelationshipValueConfig,\n\tMockDateValueConfig,\n\tMockEmbedValueConfig,\n\tMockGeoPointValueConfig,\n\tMockGroupValueConfig,\n\tMockImageValueConfig,\n\tMockIntegrationFieldsValueConfig,\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\";\n\nconst getValueConfigType = <Model extends prismicT.CustomTypeModelField>(\n\tmodel: Model,\n): keyof ValueForModelMapConfigs => {\n\tswitch (model.type) {\n\t\tcase prismicT.CustomTypeModelFieldType.Boolean:\n\t\t\treturn \"boolean\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.Color:\n\t\t\treturn \"color\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.Date:\n\t\t\treturn \"date\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.Embed:\n\t\t\treturn \"embed\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.GeoPoint:\n\t\t\treturn \"geoPoint\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.Group:\n\t\t\treturn \"group\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.Image:\n\t\t\treturn \"image\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.Link: {\n\t\t\tswitch (model.config.select) {\n\t\t\t\tcase prismicT.CustomTypeModelLinkSelectType.Document:\n\t\t\t\t\treturn \"contentRelationship\";\n\t\t\t\tcase prismicT.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 prismicT.CustomTypeModelFieldType.Number:\n\t\t\treturn \"number\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.Select:\n\t\t\treturn \"select\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.StructuredText: {\n\t\t\tif (\n\t\t\t\t\"single\" in model.config &&\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 prismicT.CustomTypeModelFieldType.Text:\n\t\t\treturn \"keyText\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.Timestamp:\n\t\t\treturn \"timestamp\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.UID:\n\t\t\treturn \"uid\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.IntegrationFields:\n\t\t\treturn \"integrationFields\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.Slices:\n\t\t\treturn \"sliceZone\";\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\tintegrationFields?: MockIntegrationFieldsValueConfig;\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, prismicT.CustomTypeModelField>,\n> = {\n\tmap: ModelMap;\n\tconfigs?: ValueForModelMapConfigs;\n} & Omit<MockValueConfig, \"model\">;\n\nexport const valueForModelMap = <\n\tModelMap extends Record<string, prismicT.CustomTypeModelField>,\n>(\n\tconfig: ValueForModelMapConfig<ModelMap>,\n): ModelValueMap<ModelMap> => {\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\tseed: config.seed,\n\t\t\tmodel: fieldModel as prismicT.CustomTypeModelField,\n\t\t\tconfig: fieldConfig,\n\t\t}) as ModelValue<typeof fieldModel>;\n\t}\n\n\treturn result;\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockBooleanModelConfig = MockModelConfig;\n\nexport const boolean = (\n\tconfig: MockBooleanModelConfig = {},\n): prismicT.CustomTypeModelBooleanField => {\n\tconst faker = createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Boolean,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockColorModelConfig = MockModelConfig;\n\nexport const color = (\n\tconfig: MockColorModelConfig = {},\n): prismicT.CustomTypeModelColorField => {\n\tconst faker = createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Color,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockContentRelationshipModelConfig<\n\tCustomTypeIDs extends string = string,\n\tTags extends string = string,\n> = {\n\tcustomTypeIDs?: readonly CustomTypeIDs[];\n\ttags?: readonly Tags[];\n} & MockModelConfig;\n\nexport const contentRelationship = <\n\tCustomTypeIDs extends string,\n\tTags extends string,\n>(\n\tconfig: MockContentRelationshipModelConfig<CustomTypeIDs, Tags> = {},\n): prismicT.CustomTypeModelContentRelationshipField<CustomTypeIDs, Tags> => {\n\tconst faker = createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Link,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t\tselect: prismicT.CustomTypeModelLinkSelectType.Document,\n\t\t\tcustomtypes: config.customTypeIDs,\n\t\t\ttags: config.tags,\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\ntype MockCustomTypeModelConfig<\n\tDefinition extends\n\t\t| prismicT.CustomTypeModelTab\n\t\t| prismicT.CustomTypeModelDefinition =\n\t\t| prismicT.CustomTypeModelTab\n\t\t| prismicT.CustomTypeModelDefinition,\n> = {\n\tid?: string;\n\tlabel?: string;\n\tstatus?: boolean;\n\trepeatable?: boolean;\n} & (\n\t| {\n\t\t\tfields?: Definition;\n\t\t\ttabs?: never;\n\t }\n\t| {\n\t\t\ttabs?: Definition;\n\t\t\tfields?: never;\n\t }\n) &\n\tMockModelConfig;\n\ntype MockCustomTypeModel<\n\tDefinition extends\n\t\t| prismicT.CustomTypeModelTab\n\t\t| prismicT.CustomTypeModelDefinition,\n> = Definition extends prismicT.CustomTypeModelTab\n\t? prismicT.CustomTypeModel<string, Record<\"Main\", Definition>>\n\t: Definition extends prismicT.CustomTypeModelDefinition\n\t? prismicT.CustomTypeModel<string, Definition>\n\t: never;\n\nexport const customType = <\n\tDefinition extends\n\t\t| prismicT.CustomTypeModelTab\n\t\t| prismicT.CustomTypeModelDefinition,\n>(\n\tconfig: MockCustomTypeModelConfig<Definition> = {},\n): MockCustomTypeModel<Definition> => {\n\tconst faker = createFaker(config.seed);\n\n\tlet label: string =\n\t\tconfig.label || changeCase.capitalCase(faker.words(faker.range(1, 2)));\n\tlet id: string = config.id || changeCase.snakeCase(label);\n\n\tif (config.id && !config.label) {\n\t\tlabel = changeCase.capitalCase(config.id);\n\t} else if (config.label && !config.label) {\n\t\tid = changeCase.snakeCase(config.label);\n\t}\n\n\tlet json = {} as MockCustomTypeModel<Definition>[\"json\"];\n\n\tif (\"fields\" in config && config.fields) {\n\t\tjson = { Main: config.fields } as typeof json;\n\t} else if (\"tabs\" in config && config.tabs) {\n\t\tjson = config.tabs as typeof json;\n\t}\n\n\treturn {\n\t\tid,\n\t\tlabel,\n\t\tstatus: config.status ?? faker.boolean(),\n\t\trepeatable: config.repeatable ?? faker.boolean(),\n\t\tjson,\n\t} as MockCustomTypeModel<Definition>;\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockDateModelConfig = MockModelConfig;\n\nexport const date = (\n\tconfig: MockDateModelConfig = {},\n): prismicT.CustomTypeModelDateField => {\n\tconst faker = createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Date,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockEmbedModelConfig = MockModelConfig;\n\nexport const embed = (\n\tconfig: MockEmbedModelConfig = {},\n): prismicT.CustomTypeModelEmbedField => {\n\tconst faker = createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Embed,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockGeoPointModelConfig = MockModelConfig;\n\nexport const geoPoint = (\n\tconfig: MockGeoPointModelConfig = {},\n): prismicT.CustomTypeModelGeoPointField => {\n\tconst faker = createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.GeoPoint,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { GroupFieldModelMap, MockModelConfig } from \"../types\";\n\ntype MockGroupModelConfig<Fields extends GroupFieldModelMap> = {\n\tfields?: Fields;\n} & MockModelConfig;\n\nexport const group = <Fields extends GroupFieldModelMap>(\n\tconfig: MockGroupModelConfig<Fields> = {},\n): prismicT.CustomTypeModelGroupField<Fields> => {\n\tconst faker = createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Group,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tfields: config.fields || ({} as Fields),\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\ntype MockImageModelConfig<ThumbnailNames extends string = string> = {\n\twithConstraint?: boolean;\n\tthumbnailNames?: readonly ThumbnailNames[];\n} & MockModelConfig;\n\nexport const image = <ThumbnailNames extends string = string>(\n\tconfig: MockImageModelConfig<ThumbnailNames> = {},\n): prismicT.CustomTypeModelImageField<ThumbnailNames> => {\n\tconst faker = createFaker(config.seed);\n\n\tconst thumbnails = (config.thumbnailNames || []).map((name) => {\n\t\treturn {\n\t\t\tname,\n\t\t\twidth: faker.range(500, 2000),\n\t\t\theight: faker.range(500, 2000),\n\t\t};\n\t});\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Image,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tconstraint: {\n\t\t\t\twidth: config.withConstraint ? faker.range(500, 2000) : null,\n\t\t\t\theight: config.withConstraint ? faker.range(500, 2000) : null,\n\t\t\t},\n\t\t\tthumbnails,\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockIntegrationFieldsModelConfig = {\n\tcatalog?: string;\n} & MockModelConfig;\n\nexport const integrationFields = (\n\tconfig: MockIntegrationFieldsModelConfig = {},\n): prismicT.CustomTypeModelIntegrationFieldsField => {\n\tconst faker = createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.IntegrationFields,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tcatalog: config.catalog || changeCase.snakeCase(faker.words(2)),\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockKeyTextModelConfig = MockModelConfig;\n\nexport const keyText = (\n\tconfig: MockKeyTextModelConfig = {},\n): prismicT.CustomTypeModelKeyTextField => {\n\tconst faker = createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Text,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\ntype MockLinkModel<AllowTargetBlank extends boolean = boolean> =\n\tprismicT.CustomTypeModelLinkField & {\n\t\tconfig: AllowTargetBlank extends true\n\t\t\t? {\n\t\t\t\t\tallowTargetBlank: true;\n\t\t\t }\n\t\t\t: {\n\t\t\t\t\tallowTargetBlank?: undefined;\n\t\t\t };\n\t};\n\nexport type MockLinkModelConfig<AllowTargetBlank extends boolean = boolean> = {\n\tallowTargetBlank?: AllowTargetBlank;\n} & MockModelConfig;\n\nexport const link = <AllowTargetBlank extends boolean = boolean>(\n\tconfig: MockLinkModelConfig<AllowTargetBlank> = {},\n): MockLinkModel<AllowTargetBlank> => {\n\tconst faker = createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Link,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t\tselect: null,\n\t\t\tallowTargetBlank:\n\t\t\t\t(\"allowTargetBlank\" in config\n\t\t\t\t\t? config.allowTargetBlank\n\t\t\t\t\t: faker.boolean()) || undefined,\n\t\t},\n\t} as MockLinkModel<AllowTargetBlank>;\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockLinkTomediaModelConfig = MockModelConfig;\n\nexport const linkToMedia = (\n\tconfig: MockLinkTomediaModelConfig = {},\n): prismicT.CustomTypeModelLinkToMediaField => {\n\tconst faker = createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Link,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t\tselect: prismicT.CustomTypeModelLinkSelectType.Media,\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockNumberModelConfig = MockModelConfig;\n\nexport const number = (\n\tconfig: MockNumberModelConfig = {},\n): prismicT.CustomTypeModelNumberField => {\n\tconst faker = createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Number,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockRichTextModelConfig<\n\tWithMultipleBlocks extends boolean = boolean,\n> = {\n\twithMultipleBlocks?: WithMultipleBlocks;\n} & MockModelConfig;\n\nexport const richText = <WithMultipleBlocks extends boolean = boolean>(\n\tconfig: MockRichTextModelConfig<WithMultipleBlocks> = {},\n): WithMultipleBlocks extends true\n\t? prismicT.CustomTypeModelRichTextMultiField\n\t: prismicT.CustomTypeModelRichTextSingleField => {\n\tconst faker = createFaker(config.seed);\n\n\tconst blockTypes = faker\n\t\t.randomElements([\n\t\t\tprismicT.RichTextNodeType.heading1,\n\t\t\tprismicT.RichTextNodeType.heading2,\n\t\t\tprismicT.RichTextNodeType.heading3,\n\t\t\tprismicT.RichTextNodeType.heading4,\n\t\t\tprismicT.RichTextNodeType.heading5,\n\t\t\tprismicT.RichTextNodeType.heading6,\n\t\t\tprismicT.RichTextNodeType.paragraph,\n\t\t\tprismicT.RichTextNodeType.preformatted,\n\t\t\tprismicT.RichTextNodeType.strong,\n\t\t\tprismicT.RichTextNodeType.em,\n\t\t\tprismicT.RichTextNodeType.listItem,\n\t\t\tprismicT.RichTextNodeType.oListItem,\n\t\t\tprismicT.RichTextNodeType.image,\n\t\t\tprismicT.RichTextNodeType.embed,\n\t\t\tprismicT.RichTextNodeType.hyperlink,\n\t\t])\n\t\t.join(\",\");\n\n\tconst blockTypeConfig =\n\t\tconfig.withMultipleBlocks ?? faker.boolean()\n\t\t\t? { multi: blockTypes }\n\t\t\t: { single: blockTypes };\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.StructuredText,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t\tallowTargetBlank: faker.boolean() ? true : undefined,\n\t\t\t...blockTypeConfig,\n\t\t},\n\t} as WithMultipleBlocks extends true\n\t\t? prismicT.CustomTypeModelRichTextMultiField\n\t\t: prismicT.CustomTypeModelRichTextSingleField;\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\ntype MockSelectModelConfig<\n\tOption extends string = string,\n\tDefaultOption extends Option = Option,\n> = {\n\toptions?: Option[];\n\tdefaultValue?: DefaultOption;\n} & MockModelConfig;\n\nexport const select = <Option extends string, DefaultOption extends Option>(\n\tconfig: MockSelectModelConfig<Option, DefaultOption> = {},\n): prismicT.CustomTypeModelSelectField<Option, DefaultOption> => {\n\tconst faker = createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Select,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t\toptions: config.options || [],\n\t\t\tdefault_value: config.defaultValue || undefined,\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\ntype MockSharedSliceModelConfig<\n\tVariation extends prismicT.SharedSliceModelVariation,\n> = {\n\tid?: string;\n\tname?: string;\n\tvariations?: Variation[];\n} & MockModelConfig;\n\nexport const sharedSlice = <\n\tVariation extends prismicT.SharedSliceModelVariation,\n>(\n\tconfig: MockSharedSliceModelConfig<Variation> = {},\n): prismicT.SharedSliceModel<string, Variation> => {\n\tconst faker = createFaker(config.seed);\n\n\tlet name: string =\n\t\tconfig.name || changeCase.capitalCase(faker.words(faker.range(1, 2)));\n\tlet id: string = config.id || changeCase.snakeCase(name);\n\n\tif (config.id && !config.name) {\n\t\tname = changeCase.pascalCase(config.id);\n\t} else if (config.name && !config.name) {\n\t\tid = changeCase.snakeCase(config.name);\n\t}\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelSliceType.SharedSlice,\n\t\tid,\n\t\tname,\n\t\tdescription: changeCase.sentenceCase(faker.words(faker.range(5, 10))),\n\t\tvariations: config.variations || ([] as Variation[]),\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\n\nexport const sharedSliceChoice = (): prismicT.CustomTypeModelSharedSlice => {\n\treturn {\n\t\ttype: prismicT.CustomTypeModelSliceType.SharedSlice,\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { GroupFieldModelMap, MockModelConfig } from \"../types\";\n\nexport type MockSharedSliceVariationModelConfig<\n\tID extends string = string,\n\tPrimaryFields extends GroupFieldModelMap = GroupFieldModelMap,\n\tItemsFields extends GroupFieldModelMap = GroupFieldModelMap,\n> = {\n\tid?: ID;\n\tname?: string;\n\tprimaryFields?: PrimaryFields;\n\titemsFields?: ItemsFields;\n} & MockModelConfig;\n\nexport const sharedSliceVariation = <\n\tID extends string,\n\tPrimaryFields extends GroupFieldModelMap,\n\tItemsFields extends GroupFieldModelMap,\n>(\n\tconfig: MockSharedSliceVariationModelConfig<\n\t\tID,\n\t\tPrimaryFields,\n\t\tItemsFields\n\t> = {},\n): prismicT.SharedSliceModelVariation<ID, PrimaryFields, ItemsFields> => {\n\tconst faker = createFaker(config.seed);\n\n\tlet name: string =\n\t\tconfig.name || changeCase.capitalCase(faker.words(faker.range(1, 2)));\n\tlet id: ID = config.id || (changeCase.snakeCase(name) as ID);\n\n\tif (config.id && !config.name) {\n\t\tname = changeCase.pascalCase(config.id);\n\t} else if (config.name && !config.name) {\n\t\tid = changeCase.snakeCase(config.name) as ID;\n\t}\n\n\treturn {\n\t\tid,\n\t\tname,\n\t\tdescription: changeCase.sentenceCase(faker.words(faker.range(5, 10))),\n\t\tdocURL: faker.url(),\n\t\tversion: faker.hash(7),\n\t\tprimary: config.primaryFields || ({} as PrimaryFields),\n\t\titems: config.itemsFields || ({} as ItemsFields),\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { GroupFieldModelMap, MockModelConfig } from \"../types\";\n\ntype MockSliceModelConfig<\n\tNonRepeatFields extends GroupFieldModelMap = GroupFieldModelMap,\n\tRepeatFields extends GroupFieldModelMap = GroupFieldModelMap,\n> = {\n\tnonRepeatFields?: NonRepeatFields;\n\trepeatFields?: RepeatFields;\n} & MockModelConfig;\n\nexport const slice = <\n\tNonRepeatFields extends GroupFieldModelMap,\n\tRepeatFields extends GroupFieldModelMap,\n>(\n\tconfig: MockSliceModelConfig<NonRepeatFields, RepeatFields> = {},\n): prismicT.CustomTypeModelSlice<NonRepeatFields, RepeatFields> => {\n\tconst faker = createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelSliceType.Slice,\n\t\ticon: changeCase.snakeCase(faker.word()),\n\t\tdisplay: faker.boolean()\n\t\t\t? prismicT.CustomTypeModelSliceDisplay.Grid\n\t\t\t: prismicT.CustomTypeModelSliceDisplay.List,\n\t\tfieldset: changeCase.capitalCase(faker.words(2)),\n\t\tdescription: changeCase.sentenceCase(faker.words(faker.range(5, 10))),\n\t\trepeat: config.repeatFields || ({} as RepeatFields),\n\t\t\"non-repeat\": config.nonRepeatFields || ({} as NonRepeatFields),\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { MockModelConfig } from \"../types\";\n\ntype MockSliceZoneModelConfig<\n\tSlices extends Record<\n\t\tstring,\n\t\tprismicT.CustomTypeModelSlice | prismicT.CustomTypeModelSharedSlice\n\t> = Record<\n\t\tstring,\n\t\tprismicT.CustomTypeModelSlice | prismicT.CustomTypeModelSharedSlice\n\t>,\n> = {\n\tchoices?: Slices;\n} & MockModelConfig;\n\nexport const sliceZone = <\n\tSlices extends Record<\n\t\tstring,\n\t\tprismicT.CustomTypeModelSlice | prismicT.CustomTypeModelSharedSlice\n\t>,\n>(\n\tconfig: MockSliceZoneModelConfig<Slices> = {},\n): prismicT.CustomTypeModelSliceZoneField<Slices> => {\n\tconst labels =\n\t\t{} as prismicT.CustomTypeModelSliceZoneField<Slices>[\"config\"][\"labels\"];\n\n\tfor (const choiceId in config.choices) {\n\t\tconst choice = config.choices[choiceId];\n\n\t\tif (choice.type === prismicT.CustomTypeModelSliceType.Slice) {\n\t\t\tlabels[choiceId as unknown as keyof typeof labels] = [];\n\t\t}\n\t}\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Slices,\n\t\tfieldset: \"Slice zone\",\n\t\tconfig: {\n\t\t\tlabels,\n\t\t\tchoices: config.choices || ({} as Slices),\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockTimestampModelConfig = MockModelConfig;\n\nexport const timestamp = (\n\tconfig: MockTimestampModelConfig = {},\n): prismicT.CustomTypeModelTimestampField => {\n\tconst faker = createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Timestamp,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockTitleModelConfig = MockModelConfig;\n\nexport const title = (\n\tconfig: MockTitleModelConfig = {},\n): prismicT.CustomTypeModelTitleField => {\n\tconst faker = createFaker(config.seed);\n\n\tconst single = faker\n\t\t.randomElements([\n\t\t\t\"heading1\",\n\t\t\t\"heading2\",\n\t\t\t\"heading3\",\n\t\t\t\"heading4\",\n\t\t\t\"heading5\",\n\t\t\t\"heading6\",\n\t\t])\n\t\t.join(\",\");\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.StructuredText,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t\tsingle,\n\t\t\tallowTargetBlank: faker.boolean() || undefined,\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockUIDModelConfig = MockModelConfig;\n\nexport const uid = (\n\tconfig: MockUIDModelConfig = {},\n): prismicT.CustomTypeModelUIDField => {\n\tconst faker = createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.UID,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t},\n\t};\n};\n","import * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\ntype GenerateFieldIdConfig = Pick<MockModelConfig, \"seed\">;\n\nexport const generateFieldId = (config: GenerateFieldIdConfig): string => {\n\tconst faker = createFaker(config.seed);\n\n\treturn changeCase.snakeCase(faker.words(faker.range(1, 3)));\n};\n","import { GroupFieldModelMap, MockModelConfig, ValueOf } from \"../types\";\n\nimport { boolean } from \"../model/boolean\";\nimport { color } from \"../model/color\";\nimport { contentRelationship } from \"../model/contentRelationship\";\nimport { date } from \"../model/date\";\nimport { embed } from \"../model/embed\";\nimport { geoPoint } from \"../model/geoPoint\";\nimport { image } from \"../model/image\";\nimport { integrationFields } from \"../model/integrationFields\";\nimport { keyText } from \"../model/keyText\";\nimport { link } from \"../model/link\";\nimport { linkToMedia } from \"../model/linkToMedia\";\nimport { number } from \"../model/number\";\nimport { richText } from \"../model/richText\";\nimport { select } from \"../model/select\";\nimport { timestamp } from \"../model/timestamp\";\nimport { title } from \"../model/title\";\n\nimport { createFaker } from \"../lib/createFaker\";\nimport { generateFieldId } from \"../lib/generateFieldId\";\n\nconst mockModelFns = {\n\tboolean,\n\tcolor,\n\tcontentRelationship,\n\tdate,\n\tembed,\n\tgeoPoint,\n\timage,\n\tintegrationFields,\n\tkeyText,\n\tlink,\n\tlinkToMedia,\n\tnumber,\n\trichText,\n\tselect,\n\ttimestamp,\n\ttitle,\n};\n\nexport type BuildMockGroupFieldMapConfig = MockModelConfig;\n\nexport const buildMockGroupFieldMap = (\n\tconfig: BuildMockGroupFieldMapConfig = {},\n): GroupFieldModelMap => {\n\tconst faker = createFaker(config.seed);\n\n\tconst fields: GroupFieldModelMap = {};\n\n\tconst fieldTypes = faker.randomElements(\n\t\tObject.keys(mockModelFns) as (keyof typeof mockModelFns)[],\n\t);\n\n\tfor (const fieldType of fieldTypes) {\n\t\tconst fieldId = generateFieldId({ seed: config.seed });\n\t\tconst mockModelFn = mockModelFns[fieldType] as (\n\t\t\tconfig: MockModelConfig,\n\t\t) => ValueOf<GroupFieldModelMap>;\n\n\t\tfields[fieldId] = mockModelFn({ seed: config.seed });\n\t}\n\n\treturn fields;\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nexport type MockTimestampValueConfig<\n\tModel extends prismicT.CustomTypeModelTimestampField = prismicT.CustomTypeModelTimestampField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\tafter?: Date;\n\tbefore?: Date;\n} & MockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\nexport type MockTimestampValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.TimestampField<State>;\n\nexport const timestamp = <\n\tModel extends prismicT.CustomTypeModelTimestampField = prismicT.CustomTypeModelTimestampField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockTimestampValueConfig<Model, State> = {},\n): MockTimestampValue<State> => {\n\tconst faker = createFaker(config.seed);\n\n\tif (config.state === \"empty\") {\n\t\treturn null as MockTimestampValue<State>;\n\t} else {\n\t\tlet date: Date;\n\n\t\t// Working with Date objects produces non-deterministic values;\n\t\t// machines can return different values due to differing\n\t\t// timezones and other unknown factors. To get around this, we\n\t\t// can can remove time from the given values and only use their dates.\n\t\tconst after = config.after\n\t\t\t? new Date(config.after.toISOString().split(\"T\")[0])\n\t\t\t: undefined;\n\t\tconst before = config.before\n\t\t\t? new Date(config.before.toISOString().split(\"T\")[0])\n\t\t\t: undefined;\n\n\t\tif (after && before) {\n\t\t\tdate = faker.dateBetween(after, before);\n\t\t} else if (after) {\n\t\t\tdate = faker.dateAfter(after);\n\t\t} else if (before) {\n\t\t\tdate = faker.dateBefore(before);\n\t\t} else {\n\t\t\tdate = faker.date();\n\t\t}\n\n\t\treturn date.toISOString() as MockTimestampValue<State>;\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\n\ntype BuildEmbedFieldConfig<Document extends prismicT.PrismicDocument> = {\n\tdocument: Document;\n};\n\nexport const buildAlternativeLanguage = <\n\tDocument extends prismicT.PrismicDocument,\n>(\n\tconfig: BuildEmbedFieldConfig<Document>,\n): prismicT.AlternateLanguage<Document[\"type\"], Document[\"lang\"]> => {\n\treturn {\n\t\tid: config.document.id,\n\t\ttype: config.document.type,\n\t\tlang: config.document.lang,\n\t\tuid: config.document.uid || undefined,\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\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 prismicT.CustomTypeModel = prismicT.CustomTypeModel,\n> = {\n\twithURL?: boolean;\n\talternateLanguages?: prismicT.PrismicDocument[];\n\tconfigs?: ValueForModelMapConfigs;\n} & MockValueConfig<Model>;\n\nexport const customType = <\n\tModel extends prismicT.CustomTypeModel = prismicT.CustomTypeModel,\n>(\n\tconfig: MockCustomTypeValueConfig<Model> = {},\n): ModelValue<Model> => {\n\tconst faker = createFaker(config.seed);\n\n\tconst model = config.model || modelGen.customType({ seed: config.seed });\n\n\tconst fieldModelsMap = Object.assign(\n\t\t{},\n\t\t...Object.values(model.json),\n\t) as prismicT.CustomTypeModelTab;\n\n\tconst dataFieldModelsMap: prismicT.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 !== prismicT.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 === prismicT.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 ? changeCase.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({ seed: config.seed }),\n\t\tslugs: [] as prismicT.PrismicDocument[\"slugs\"],\n\t\tlinked_documents: [] as prismicT.PrismicDocument[\"linked_documents\"],\n\t\talternate_languages: alternateLanguages,\n\t\tfirst_publication_date: timestamp({ seed: config.seed }),\n\t\tlast_publication_date: timestamp({ seed: config.seed }),\n\t\tdata: valueForModelMap({\n\t\t\tseed: config.seed,\n\t\t\tmap: dataFieldModelsMap,\n\t\t\tconfigs: config.configs,\n\t\t}),\n\t} as ModelValue<Model>;\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nexport type MockColorValueConfig<\n\tModel extends prismicT.CustomTypeModelColorField = prismicT.CustomTypeModelColorField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = MockValueConfig<Model> & MockValueStateConfig<State>;\n\nexport type MockColorValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.ColorField<State>;\n\nexport const color = <\n\tModel extends prismicT.CustomTypeModelColorField = prismicT.CustomTypeModelColorField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockColorValueConfig<Model, State> = {},\n): MockColorValue<State> => {\n\tconst faker = createFaker(config.seed);\n\n\treturn (\n\t\tconfig.state === \"empty\" ? null : faker.hexColor().toUpperCase()\n\t) as MockColorValue<State>;\n};\n","import * as prismicT from \"@prismicio/types\";\n\ntype BuildEmbedFieldConfig<Document extends prismicT.PrismicDocument> = {\n\tdocument: Document;\n};\n\nexport const buildContentRelationshipField = <\n\tDocument extends prismicT.PrismicDocument,\n>(\n\tconfig: BuildEmbedFieldConfig<Document>,\n): prismicT.RelationField<\n\tDocument[\"type\"],\n\tDocument[\"lang\"],\n\tnever,\n\t\"filled\"\n> => {\n\treturn {\n\t\tlink_type: prismicT.LinkType.Document,\n\t\tid: config.document.id,\n\t\tuid: config.document.uid || undefined,\n\t\ttype: config.document.type,\n\t\ttags: config.document.tags,\n\t\tlang: config.document.lang,\n\t\turl: config.document.url || undefined,\n\t\tslug: config.document.slugs[0],\n\t\tisBroken: false,\n\t};\n};\n","import * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\ntype GenerateFieldIdConfig = Pick<MockModelConfig, \"seed\">;\n\nexport const generateCustomTypeId = (config: GenerateFieldIdConfig): string => {\n\tconst faker = createFaker(config.seed);\n\n\treturn changeCase.snakeCase(faker.words(faker.range(1, 3)));\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { buildContentRelationshipField } from \"../lib/buildContentRelationshipField\";\nimport { createFaker } from \"../lib/createFaker\";\nimport { generateCustomTypeId } from \"../lib/generateCustomTypeId\";\nimport { generateTags } from \"../lib/generateTags\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nimport * as modelGen from \"../model\";\n\nimport { document as documentGen } from \"./document\";\n\nexport type MockContentRelationshipValueConfig<\n\tModel extends prismicT.CustomTypeModelContentRelationshipField = prismicT.CustomTypeModelContentRelationshipField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\t/**\n\t * A list of potential documents to which the field can be linked.\n\t */\n\tlinkableDocuments?: prismicT.PrismicDocument[];\n} & MockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\ntype MockContentRelationshipValue<\n\tModel extends prismicT.CustomTypeModelContentRelationshipField = prismicT.CustomTypeModelContentRelationshipField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.RelationField<\n\tModel[\"config\"][\"customtypes\"],\n\tstring,\n\tnever,\n\tState\n>;\n\nexport const contentRelationship = <\n\tModel extends prismicT.CustomTypeModelContentRelationshipField = prismicT.CustomTypeModelContentRelationshipField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockContentRelationshipValueConfig<Model, State> = {},\n): MockContentRelationshipValue<Model, State> => {\n\tconst faker = createFaker(config.seed);\n\n\tif (config.state === \"empty\") {\n\t\treturn {\n\t\t\tlink_type: prismicT.LinkType.Document,\n\t\t} as MockContentRelationshipValue<Model, State>;\n\t} else {\n\t\tconst model =\n\t\t\tconfig.model || modelGen.contentRelationship({ seed: config.seed });\n\n\t\tconst linkableDocuments = config.linkableDocuments\n\t\t\t? config.linkableDocuments.filter(\n\t\t\t\t\t(\n\t\t\t\t\t\tdocument,\n\t\t\t\t\t): document is prismicT.PrismicDocument<\n\t\t\t\t\t\tnever,\n\t\t\t\t\t\tNonNullable<Model[\"config\"][\"customtypes\"]>[number]\n\t\t\t\t\t> => {\n\t\t\t\t\t\tlet shouldKeep = true;\n\n\t\t\t\t\t\tif (model.config.customtypes) {\n\t\t\t\t\t\t\tshouldKeep =\n\t\t\t\t\t\t\t\tshouldKeep && model.config.customtypes.includes(document.type);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (model.config.tags) {\n\t\t\t\t\t\t\tshouldKeep =\n\t\t\t\t\t\t\t\tshouldKeep &&\n\t\t\t\t\t\t\t\tmodel.config.tags.some((tag) => document.tags.includes(tag));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn shouldKeep;\n\t\t\t\t\t},\n\t\t\t )\n\t\t\t: [\n\t\t\t\t\t{\n\t\t\t\t\t\t...documentGen({ seed: config.seed }),\n\t\t\t\t\t\ttype: model.config.customtypes\n\t\t\t\t\t\t\t? faker.randomElement(model.config.customtypes)\n\t\t\t\t\t\t\t: generateCustomTypeId({ seed: config.seed }),\n\t\t\t\t\t\ttags: model.config.tags\n\t\t\t\t\t\t\t? faker.randomElements(model.config.tags)\n\t\t\t\t\t\t\t: generateTags({ seed: config.seed }),\n\t\t\t\t\t} as prismicT.PrismicDocument<\n\t\t\t\t\t\tnever,\n\t\t\t\t\t\tNonNullable<Model[\"config\"][\"customtypes\"]>[number]\n\t\t\t\t\t>,\n\t\t\t ];\n\n\t\tconst document = faker.randomElement(linkableDocuments);\n\n\t\tif (!document) {\n\t\t\tthrow new Error(\"A linkable document could not be found.\");\n\t\t}\n\n\t\treturn buildContentRelationshipField({\n\t\t\tdocument,\n\t\t}) as unknown as MockContentRelationshipValue<Model, State>;\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nimport { MockTimestampValueConfig, timestamp } from \"./timestamp\";\n\nexport type MockDateValueConfig<\n\tModel extends prismicT.CustomTypeModelDateField = prismicT.CustomTypeModelDateField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = Pick<MockTimestampValueConfig, \"after\" | \"before\"> &\n\tMockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\nexport type MockDateValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.DateField<State>;\n\nexport const date = <\n\tModel extends prismicT.CustomTypeModelDateField = prismicT.CustomTypeModelDateField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockDateValueConfig<Model, State> = {},\n): MockDateValue<State> => {\n\treturn (\n\t\tconfig.state === \"empty\"\n\t\t\t? null\n\t\t\t: timestamp({\n\t\t\t\t\tseed: config.seed,\n\t\t\t\t\tafter: config.after,\n\t\t\t\t\tbefore: config.before,\n\t\t\t\t\tstate: \"filled\",\n\t\t\t }).split(\"T\")[0]\n\t) as MockDateValue<State>;\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueConfig } from \"../types\";\n\ntype BuildEmbedFieldConfig<\n\tData extends prismicT.AnyOEmbed = prismicT.AnyOEmbed,\n> = {\n\turl?: string;\n\thtml?: string;\n\tdata: Data;\n} & Pick<MockValueConfig, \"seed\">;\n\nexport const buildEmbedField = <\n\tData extends prismicT.AnyOEmbed = prismicT.AnyOEmbed,\n>(\n\tconfig: BuildEmbedFieldConfig<Data>,\n): prismicT.EmbedField<Data, \"filled\"> => {\n\tconst faker = createFaker(config.seed);\n\n\treturn {\n\t\tembed_url: config.url ?? faker.url(),\n\t\thtml: `<div>embed html</div>`,\n\t\t...config.data,\n\t} as prismicT.EmbedField<Data, \"filled\">;\n};\n","import { createFaker } from \"../lib/createFaker\";\n\nimport { MockEmbedData, MockValueConfig } from \"../types\";\n\nconst dataSet: MockEmbedData[] = [\n\t{\n\t\tversion: \"1.0\",\n\t\ttype: \"video\",\n\t\tembed_url: \"https://www.youtube.com/embed/fiOwHYFkUz0\",\n\t\tthumbnail_url: \"https://i.ytimg.com/vi/fiOwHYFkUz0/hqdefault.jpg\",\n\t\tthumbnail_height: 360,\n\t\tthumbnail_width: 480,\n\t\thtml: '<iframe width=\"200\" height=\"113\" src=\"https://www.youtube.com/embed/fiOwHYFkUz0?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>',\n\t\twidth: 200,\n\t\theight: 113,\n\t},\n\t{\n\t\tversion: \"1.0\",\n\t\ttype: \"video\",\n\t\tembed_url: \"https://www.youtube.com/embed/c-ATzcy6VkI\",\n\t\tthumbnail_url: \"https://i.ytimg.com/vi/c-ATzcy6VkI/hqdefault.jpg\",\n\t\tthumbnail_height: 360,\n\t\tthumbnail_width: 480,\n\t\thtml: '<iframe width=\"200\" height=\"113\" src=\"https://www.youtube.com/embed/c-ATzcy6VkI?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>',\n\t\twidth: 200,\n\t\theight: 113,\n\t},\n\t{\n\t\tversion: \"1.0\",\n\t\ttype: \"video\",\n\t\tembed_url: \"https://www.youtube.com/watch?v=fiOwHYFkUz0\",\n\t\tthumbnail_url: \"https://i.ytimg.com/vi/iewZXv94XGY/hqdefault.jpg\",\n\t\tthumbnail_height: 360,\n\t\tthumbnail_width: 480,\n\t\thtml: '<iframe width=\"200\" height=\"113\" src=\"https://www.youtube.com/embed/iewZXv94XGY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>',\n\t\twidth: 200,\n\t\theight: 113,\n\t},\n\t{\n\t\tversion: \"1.0\",\n\t\ttype: \"rich\",\n\t\tembed_url: \"https://twitter.com/prismicio/status/1356293316158095361\",\n\t\tthumbnail_url: null,\n\t\tthumbnail_height: null,\n\t\tthumbnail_width: null,\n\t\thtml: '<blockquote class=\"twitter-tweet\"><p lang=\"en\" dir=\"ltr\">Gatsby is a popular choice for Prismic users and we work hard on delivering a CMS that plays to its strengths.<br><br>But, what makes <a href=\"https://twitter.com/GatsbyJS?ref_src=twsrc%5Etfw\">@GatsbyJS</a> so popular?<br><br>Here are some of <a href=\"https://twitter.com/mxstbr?ref_src=twsrc%5Etfw\">@mxstbr</a>'s thoughts on Gatsby's success and how they're improving developer experience.<a href=\"https://t.co/ZjCPvsWWUD\">https://t.co/ZjCPvsWWUD</a> <a href=\"https://t.co/EQqzJpeNKl\">pic.twitter.com/EQqzJpeNKl</a></p>— Prismic (@prismicio) <a href=\"https://twitter.com/prismicio/status/1356293316158095361?ref_src=twsrc%5Etfw\">February 1, 2021</a></blockquote>\\n<script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>\\n',\n\t\twidth: 200,\n\t\theight: 113,\n\t},\n\t{\n\t\ttype: \"rich\",\n\t\tversion: \"1.0\",\n\t\tembed_url: \"https://twitter.com/timbenniks/status/1304146886832594944\",\n\t\tthumbnail_url: null,\n\t\tthumbnail_width: null,\n\t\tthumbnail_height: null,\n\t\thtml: '<blockquote class=\"twitter-tweet\"><p lang=\"en\" dir=\"ltr\">I’ve been diving deep on <a href=\"https://twitter.com/prismicio?ref_src=twsrc%5Etfw\">@prismicio</a> <a href=\"https://twitter.com/hashtag/slicemachine?src=hash&ref_src=twsrc%5Etfw\">#slicemachine</a> today. I made all my own components and I used custom slices. It works like a charm with <a href=\"https://twitter.com/nuxt_js?ref_src=twsrc%5Etfw\">@nuxt_js</a>. Also: I’m coding with this view. <a href=\"https://t.co/F0I8X9gz39\">pic.twitter.com/F0I8X9gz39</a></p>— Tim Benniks (@timbenniks) <a href=\"https://twitter.com/timbenniks/status/1304146886832594944?ref_src=twsrc%5Etfw\">September 10, 2020</a></blockquote>\\n<script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>\\n',\n\t\twidth: 200,\n\t\theight: 113,\n\t},\n\t{\n\t\tversion: \"1.0\",\n\t\ttype: \"rich\",\n\t\tembed_url: \"https://twitter.com/prismicio/status/1354112310252630016\",\n\t\tthumbnail_url: null,\n\t\tthumbnail_width: null,\n\t\tthumbnail_height: null,\n\t\thtml: '<blockquote class=\"twitter-tweet\"><p lang=\"en\" dir=\"ltr\">We're launching a new <a href=\"https://twitter.com/hashtag/SliceContest?src=hash&ref_src=twsrc%5Etfw\">#SliceContest</a> tomorrow along with Slice Machine upgrades.<br><br>Want to know more? Join us at tomorrow's Product Meet-up👇<a href=\"https://t.co/prYSypiAvB\">https://t.co/prYSypiAvB</a><br><br>We can't tell you any further details for now, but here's a sneak peek at the prizes👀 <a href=\"https://t.co/fV1eoGlEBh\">pic.twitter.com/fV1eoGlEBh</a></p>— Prismic (@prismicio) <a href=\"https://twitter.com/prismicio/status/1354112310252630016?ref_src=twsrc%5Etfw\">January 26, 2021</a></blockquote>\\n<script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>\\n',\n\t\twidth: 200,\n\t\theight: 113,\n\t},\n\t{\n\t\tversion: \"1.0\",\n\t\ttype: \"rich\",\n\t\tembed_url: \"https://twitter.com/prismicio/status/1354835716430319617\",\n\t\tthumbnail_url: null,\n\t\tthumbnail_width: null,\n\t\tthumbnail_height: null,\n\t\thtml: '<blockquote class=\"twitter-tweet\"><p lang=\"en\" dir=\"ltr\">Does anyone want to create a wildly popular website for discussing 'Wall Street Bets' using Prismic?<br><br>It may or may not have to look a lot like <a href=\"https://twitter.com/hashtag/reddit?src=hash&ref_src=twsrc%5Etfw\">#reddit</a> and we won't make it private.<br><br>Just asking for some friends...</p>— Prismic (@prismicio) <a href=\"https://twitter.com/prismicio/status/1354835716430319617?ref_src=twsrc%5Etfw\">January 28, 2021</a></blockquote>\\n<script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>\\n',\n\t\twidth: 200,\n\t\theight: 113,\n\t},\n];\ntype GetMockEmbedDataConfig = Pick<MockValueConfig, \"seed\">;\n\nexport const getMockEmbedData = (\n\tconfig: GetMockEmbedDataConfig,\n): MockEmbedData => {\n\tconst faker = createFaker(config.seed);\n\n\treturn faker.randomElement(dataSet);\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { buildEmbedField } from \"../lib/buildEmbedField\";\nimport { getMockEmbedData } from \"../lib/getMockEmbedData\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nexport type MockEmbedValueConfig<\n\tModel extends prismicT.CustomTypeModelEmbedField = prismicT.CustomTypeModelEmbedField,\n\tData extends prismicT.AnyOEmbed = prismicT.AnyOEmbed,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\turl?: string;\n\thtml?: string;\n\tdata?: Data;\n} & MockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\nexport type MockEmbedValue<\n\tData extends prismicT.AnyOEmbed = prismicT.AnyOEmbed,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.EmbedField<Data, State>;\n\nexport const embed = <\n\tModel extends prismicT.CustomTypeModelEmbedField = prismicT.CustomTypeModelEmbedField,\n\tData extends prismicT.AnyOEmbed = prismicT.AnyOEmbed,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockEmbedValueConfig<Model, Data, State> = {},\n): MockEmbedValue<Data, State> => {\n\tconst data = config.data ?? getMockEmbedData({ seed: config.seed });\n\n\treturn (\n\t\tconfig.state === \"empty\"\n\t\t\t? {}\n\t\t\t: buildEmbedField({\n\t\t\t\t\tseed: config.seed,\n\t\t\t\t\turl: config.url ?? (\"embed_url\" in data ? data.embed_url : undefined),\n\t\t\t\t\thtml: config.html ?? (\"html\" in data ? data.html : undefined),\n\t\t\t\t\tdata,\n\t\t\t })\n\t) as MockEmbedValue<Data, State>;\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nexport type MockGeoPointValueConfig<\n\tModel extends prismicT.CustomTypeModelGeoPointField = prismicT.CustomTypeModelGeoPointField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = MockValueConfig<Model> & MockValueStateConfig<State>;\n\nexport type MockGeoPointValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.GeoPointField<State>;\n\nexport const geoPoint = <\n\tModel extends prismicT.CustomTypeModelGeoPointField = prismicT.CustomTypeModelGeoPointField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockGeoPointValueConfig<Model, State> = {},\n): MockGeoPointValue<State> => {\n\tconst faker = createFaker(config.seed);\n\n\treturn (\n\t\tconfig.state === \"empty\"\n\t\t\t? {}\n\t\t\t: {\n\t\t\t\t\tlongitude: faker.rangeFloat(-180, 180),\n\t\t\t\t\tlatitude: faker.rangeFloat(-90, 90),\n\t\t\t }\n\t) as MockGeoPointValue<State>;\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\nimport {\n\tvalueForModelMap,\n\tValueForModelMapConfigs,\n} from \"../lib/valueForModelMap\";\n\nimport { MockValueConfig, MockValueStateConfig, ModelValue } from \"../types\";\n\nimport * as modelGen from \"../model\";\n\nexport type MockGroupValueConfig<\n\tModel extends prismicT.CustomTypeModelGroupField = prismicT.CustomTypeModelGroupField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\titemsCount?: State extends \"empty\" ? 0 : number;\n\tconfigs?: ValueForModelMapConfigs;\n} & MockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\nexport type MockGroupValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.DateField<State>;\n\nexport const group = <\n\tModel extends prismicT.CustomTypeModelGroupField = prismicT.CustomTypeModelGroupField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockGroupValueConfig<Model, State> = {},\n): ModelValue<Model, State> => {\n\tif (config.state === \"empty\") {\n\t\treturn [] as ModelValue<Model, State>;\n\t} else {\n\t\tconst faker = createFaker(config.seed);\n\n\t\tconst model = config.model || modelGen.group({ seed: config.seed });\n\n\t\tconst itemsCount = config.itemsCount ?? faker.range(1, 6);\n\n\t\treturn Array(itemsCount)\n\t\t\t.fill(undefined)\n\t\t\t.map(() => {\n\t\t\t\treturn valueForModelMap({\n\t\t\t\t\tseed: config.seed,\n\t\t\t\t\tmap: model.config.fields,\n\t\t\t\t\tconfigs: config.configs,\n\t\t\t\t});\n\t\t\t}) as ModelValue<Model, State>;\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockImageData, MockValueConfig } from \"../types\";\n\ntype BuildImageFieldConfig<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\timageData: MockImageData;\n\tconstraint?: prismicT.CustomTypeModelImageField[\"config\"][\"constraint\"];\n} & Pick<MockValueConfig, \"seed\"> &\n\tPick<MockValueStateConfig<State>, \"state\">;\n\nexport const buildImageFieldImage = <\n\tState extends prismicT.FieldState = prismicT.FieldState,\n>(\n\tconfig: BuildImageFieldConfig<State>,\n): prismicT.ImageFieldImage<State> => {\n\tif (config.state === \"empty\") {\n\t\treturn {\n\t\t\turl: null,\n\t\t\tdimensions: null,\n\t\t\talt: null,\n\t\t\tcopyright: null,\n\t\t} as prismicT.ImageFieldImage<State>;\n\t} else {\n\t\tconst faker = createFaker(config.seed);\n\n\t\tconst url = new URL(config.imageData.url);\n\n\t\tconst dimensions = {\n\t\t\twidth: config.constraint?.width ?? config.imageData.width,\n\t\t\theight: config.constraint?.height ?? config.imageData.height,\n\t\t};\n\n\t\turl.searchParams.set(\"w\", dimensions.width.toString());\n\t\turl.searchParams.set(\"h\", dimensions.height.toString());\n\t\turl.searchParams.set(\"fit\", \"crop\");\n\n\t\treturn {\n\t\t\turl: url.toString(),\n\t\t\tdimensions,\n\t\t\talt: changeCase.sentenceCase(faker.words(faker.range(5, 15))),\n\t\t\tcopyright: changeCase.sentenceCase(faker.words(faker.range(5, 15))),\n\t\t} as prismicT.ImageFieldImage<State>;\n\t}\n};\n","import { createFaker } from \"../lib/createFaker\";\n\nimport { MockImageData, MockValueConfig } from \"../types\";\n\nconst dataSet: MockImageData[] = [\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1604537529428-15bcbeecfe4d\",\n\t\twidth: 4240,\n\t\theight: 2832,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05\",\n\t\twidth: 7372,\n\t\theight: 4392,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1441974231531-c6227db76b6e\",\n\t\twidth: 2560,\n\t\theight: 1705,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1418065460487-3e41a6c84dc5\",\n\t\twidth: 2200,\n\t\theight: 1467,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1426604966848-d7adac402bff\",\n\t\twidth: 5616,\n\t\theight: 3744,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1604537466608-109fa2f16c3b\",\n\t\twidth: 4240,\n\t\theight: 2832,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1497436072909-60f360e1d4b1\",\n\t\twidth: 2560,\n\t\theight: 1440,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/reserve/HgZuGu3gSD6db21T3lxm_San%20Zenone.jpg\",\n\t\twidth: 6373,\n\t\theight: 4253,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1504198266287-1659872e6590\",\n\t\twidth: 4272,\n\t\theight: 2848,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1470770903676-69b98201ea1c\",\n\t\twidth: 4554,\n\t\theight: 3036,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1587502537745-84b86da1204f\",\n\t\twidth: 6550,\n\t\theight: 4367,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1431794062232-2a99a5431c6c\",\n\t\twidth: 6000,\n\t\theight: 4000,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1446329813274-7c9036bd9a1f\",\n\t\twidth: 6000,\n\t\theight: 4000,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1504567961542-e24d9439a724\",\n\t\twidth: 4608,\n\t\theight: 3456,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1444464666168-49d633b86797\",\n\t\twidth: 4844,\n\t\theight: 3234,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1553531384-397c80973a0b\",\n\t\twidth: 4335,\n\t\theight: 6502,\n\t},\n];\n\ntype GetMockImageDataConfig = Pick<MockValueConfig, \"seed\">;\n\nexport const getMockImageData = (\n\tconfig: GetMockImageDataConfig,\n): MockImageData => {\n\tconst faker = createFaker(config.seed);\n\n\treturn faker.randomElement(dataSet);\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { buildImageFieldImage } from \"../lib/buildImageFieldImage\";\nimport { getMockImageData } from \"../lib/getMockImageData\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nimport * as modelGen from \"../model\";\n\nexport type MockImageValueConfig<\n\tModel extends prismicT.CustomTypeModelImageField = prismicT.CustomTypeModelImageField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = MockValueConfig<Model> & MockValueStateConfig<State>;\n\nexport type MockImageValue<\n\tModel extends prismicT.CustomTypeModelImageField = prismicT.CustomTypeModelImageField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.ImageField<Model[\"config\"][\"thumbnails\"][number][\"name\"], State>;\n\nexport const image = <\n\tModel extends prismicT.CustomTypeModelImageField = prismicT.CustomTypeModelImageField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockImageValueConfig<Model, State> = {},\n): MockImageValue<Model, State> => {\n\tconst model = config.model || modelGen.image({ seed: config.seed });\n\tconst imageData = getMockImageData({ seed: config.seed });\n\n\tconst value = buildImageFieldImage({\n\t\tseed: config.seed,\n\t\timageData,\n\t\tconstraint: model.config.constraint,\n\t\tstate: config.state,\n\t}) as MockImageValue<Model, State>;\n\n\tfor (const thumbnail of model.config.thumbnails) {\n\t\t// TODO: Resolve the following type error\n\t\t// @ts-expect-error - Unsure how to fix this type mismatch\n\t\tvalue[thumbnail.name as keyof typeof value] = buildImageFieldImage({\n\t\t\tseed: config.seed,\n\t\t\timageData,\n\t\t\tconstraint: {\n\t\t\t\twidth: thumbnail.width,\n\t\t\t\theight: thumbnail.height,\n\t\t\t},\n\t\t\tstate: config.state,\n\t\t});\n\t}\n\n\treturn value;\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\nimport { getMockImageData } from \"../lib/getMockImageData\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nexport type MockIntegrationFieldsValueConfig<\n\tModel extends prismicT.CustomTypeModelIntegrationFieldsField = prismicT.CustomTypeModelIntegrationFieldsField,\n\tBlob = unknown,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\tdata?: Blob;\n} & MockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\nexport type MockIntegrationFieldsValue<\n\tBlob = unknown,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.IntegrationFields<Blob, State>;\n\nexport const integrationFields = <\n\tModel extends prismicT.CustomTypeModelIntegrationFieldsField = prismicT.CustomTypeModelIntegrationFieldsField,\n\tBlob = unknown,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockIntegrationFieldsValueConfig<Model, Blob, State> = {},\n): MockIntegrationFieldsValue<Blob, State> => {\n\tconst faker = createFaker(config.seed);\n\n\tconst imageData = getMockImageData({ seed: config.seed });\n\n\treturn (\n\t\tconfig.state === \"empty\"\n\t\t\t? null\n\t\t\t: {\n\t\t\t\t\tid: faker.hash(7),\n\t\t\t\t\ttitle: changeCase.capitalCase(faker.words(faker.range(1, 3))),\n\t\t\t\t\tdescription: changeCase.sentenceCase(faker.words(faker.range(5, 10))),\n\t\t\t\t\timage_url: imageData.url,\n\t\t\t\t\tlast_update: faker.date().getTime(),\n\t\t\t\t\tblob: config.data as Blob,\n\t\t\t }\n\t) as MockIntegrationFieldsValue<Blob, State>;\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nexport type MockKeyTextValueConfig<\n\tModel extends prismicT.CustomTypeModelKeyTextField = prismicT.CustomTypeModelKeyTextField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = MockValueConfig<Model> & MockValueStateConfig<State>;\n\nexport type MockKeyTextValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.KeyTextField<State>;\n\nexport const keyText = <\n\tModel extends prismicT.CustomTypeModelKeyTextField = prismicT.CustomTypeModelKeyTextField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockKeyTextValueConfig<Model, State> = {},\n): MockKeyTextValue<State> => {\n\tconst faker = createFaker(config.seed);\n\n\treturn (\n\t\tconfig.state === \"empty\" ? null : changeCase.sentenceCase(faker.words(3))\n\t) as MockKeyTextValue<State>;\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nexport type MockLinkToMediaValueConfig<\n\tModel extends prismicT.CustomTypeModelLinkToMediaField = prismicT.CustomTypeModelLinkToMediaField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = MockValueConfig<Model> & MockValueStateConfig<State>;\n\ntype MockLinkToMediaValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.LinkToMediaField<State>;\n\nexport const linkToMedia = <\n\tModel extends prismicT.CustomTypeModelLinkToMediaField = prismicT.CustomTypeModelLinkToMediaField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockLinkToMediaValueConfig<Model, State> = {},\n): MockLinkToMediaValue<State> => {\n\tconst faker = createFaker(config.seed);\n\n\tif (config.state === \"empty\") {\n\t\treturn {\n\t\t\tlink_type: prismicT.LinkType.Media,\n\t\t} as MockLinkToMediaValue<State>;\n\t} else {\n\t\treturn {\n\t\t\tlink_type: prismicT.LinkType.Media,\n\t\t\tname: `${changeCase.snakeCase(faker.words(faker.range(1, 2)))}.example`,\n\t\t\tkind: changeCase.snakeCase(faker.word()),\n\t\t\turl: faker.url(),\n\t\t\tsize: faker.range(500, 3000).toString(),\n\t\t\theight: faker.range(500, 3000).toString(),\n\t\t\twidth: faker.range(500, 3000).toString(),\n\t\t} as MockLinkToMediaValue<State>;\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nimport * as modelGen from \"../model\";\n\nimport { contentRelationship } from \"./contentRelationship\";\nimport { linkToMedia } from \"./linkToMedia\";\n\nexport type MockLinkValueConfig<\n\tLinkType extends typeof prismicT.LinkType[keyof typeof prismicT.LinkType] = typeof prismicT.LinkType[keyof typeof prismicT.LinkType],\n\tModel extends prismicT.CustomTypeModelLinkField = prismicT.CustomTypeModelLinkField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\ttype?: LinkType;\n\twithTargetBlank?: Model[\"config\"][\"allowTargetBlank\"] extends undefined\n\t\t? false\n\t\t: boolean;\n\t/**\n\t * A list of potential documents to which the field can be linked.\n\t */\n\tlinkableDocuments?: LinkType extends typeof prismicT.LinkType.Document\n\t\t? prismicT.PrismicDocument[]\n\t\t: never;\n} & MockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\ntype MockLinkValue<\n\tLinkType extends typeof prismicT.LinkType[keyof typeof prismicT.LinkType] = typeof prismicT.LinkType[keyof typeof prismicT.LinkType],\n\tState extends prismicT.FieldState = \"filled\",\n> = State extends \"empty\"\n\t? prismicT.EmptyLinkField<LinkType>\n\t: LinkType extends typeof prismicT.LinkType.Web\n\t? prismicT.FilledLinkToWebField\n\t: LinkType extends typeof prismicT.LinkType.Media\n\t? prismicT.FilledLinkToMediaField\n\t: LinkType extends typeof prismicT.LinkType.Document\n\t? prismicT.FilledLinkToDocumentField\n\t: never;\n\nexport const link = <\n\tLinkType extends typeof prismicT.LinkType[keyof typeof prismicT.LinkType] = typeof prismicT.LinkType[keyof typeof prismicT.LinkType],\n\tModel extends prismicT.CustomTypeModelLinkField = prismicT.CustomTypeModelLinkField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockLinkValueConfig<LinkType, Model, State> = {},\n): MockLinkValue<LinkType, State> => {\n\tconst faker = createFaker(config.seed);\n\n\tconst type =\n\t\tconfig.type ||\n\t\tfaker.randomElement([\n\t\t\tprismicT.LinkType.Web,\n\t\t\tprismicT.LinkType.Document,\n\t\t\tprismicT.LinkType.Media,\n\t\t]);\n\n\tif (config.state === \"empty\") {\n\t\treturn {\n\t\t\tlink_type: type,\n\t\t} as MockLinkValue<LinkType, State>;\n\t} else {\n\t\tswitch (type) {\n\t\t\tcase prismicT.LinkType.Document: {\n\t\t\t\treturn contentRelationship({\n\t\t\t\t\tseed: config.seed,\n\t\t\t\t\tstate: config.state,\n\t\t\t\t\tlinkableDocuments: config.linkableDocuments,\n\t\t\t\t}) as unknown as MockLinkValue<LinkType, State>;\n\t\t\t}\n\n\t\t\tcase prismicT.LinkType.Media: {\n\t\t\t\treturn linkToMedia({\n\t\t\t\t\tseed: config.seed,\n\t\t\t\t\tstate: config.state,\n\t\t\t\t}) as MockLinkValue<LinkType, State>;\n\t\t\t}\n\n\t\t\tcase prismicT.LinkType.Web:\n\t\t\tdefault: {\n\t\t\t\tconst model = config.model || modelGen.link({ seed: config.seed });\n\n\t\t\t\treturn {\n\t\t\t\t\tlink_type: prismicT.LinkType.Web,\n\t\t\t\t\turl: faker.url(),\n\t\t\t\t\ttarget:\n\t\t\t\t\t\tconfig.withTargetBlank ??\n\t\t\t\t\t\t(model.config.allowTargetBlank && faker.boolean())\n\t\t\t\t\t\t\t? \"_blank\"\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t} as MockLinkValue<LinkType, State>;\n\t\t\t}\n\t\t}\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nexport type MockNumberValueConfig<\n\tModel extends prismicT.CustomTypeModelNumberField = prismicT.CustomTypeModelNumberField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = MockValueConfig<Model> & MockValueStateConfig<State>;\n\nexport type MockNumberValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.NumberField<State>;\n\nexport const number = <\n\tModel extends prismicT.CustomTypeModelNumberField = prismicT.CustomTypeModelNumberField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockNumberValueConfig<Model, State> = {},\n): MockNumberValue<State> => {\n\tconst faker = createFaker(config.seed);\n\n\treturn (\n\t\tconfig.state === \"empty\" ? null : faker.range(1, 100)\n\t) as MockNumberValue<State>;\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../../lib/createFaker\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\nimport * as modelGen from \"../../model\";\n\ntype RichTextNodeTitleType =\n\t| typeof prismicT.RichTextNodeType.heading1\n\t| typeof prismicT.RichTextNodeType.heading2\n\t| typeof prismicT.RichTextNodeType.heading3\n\t| typeof prismicT.RichTextNodeType.heading4\n\t| typeof prismicT.RichTextNodeType.heading5\n\t| typeof prismicT.RichTextNodeType.heading6;\n\ntype RTHeadingNode =\n\t| prismicT.RTHeading1Node\n\t| prismicT.RTHeading2Node\n\t| prismicT.RTHeading3Node\n\t| prismicT.RTHeading4Node\n\t| prismicT.RTHeading5Node\n\t| prismicT.RTHeading6Node;\n\nconst patterns = {\n\tshort: {\n\t\tminWords: 1,\n\t\tmaxWords: 3,\n\t},\n\tmedium: {\n\t\tminWords: 3,\n\t\tmaxWords: 6,\n\t},\n\tlong: {\n\t\tminWords: 6,\n\t\tmaxWords: 12,\n\t},\n} as const;\n\nexport type MockRichTextHeadingValueConfig = {\n\tpattern?: keyof typeof patterns;\n} & MockRichTextValueConfig;\n\nexport const heading = (\n\tconfig: MockRichTextHeadingValueConfig = {},\n): RTHeadingNode | undefined => {\n\tconst faker = createFaker(config.seed);\n\n\tconst model = config.model || modelGen.title({ seed: config.seed });\n\n\tconst types = (\n\t\t\"single\" in model.config ? model.config.single : model.config.multi\n\t)\n\t\t.split(\",\")\n\t\t.filter((type) =>\n\t\t\t[\n\t\t\t\tprismicT.RichTextNodeType.heading1,\n\t\t\t\tprismicT.RichTextNodeType.heading2,\n\t\t\t\tprismicT.RichTextNodeType.heading3,\n\t\t\t\tprismicT.RichTextNodeType.heading4,\n\t\t\t\tprismicT.RichTextNodeType.heading5,\n\t\t\t\tprismicT.RichTextNodeType.heading6,\n\t\t\t].includes(type as RichTextNodeTitleType),\n\t\t) as RichTextNodeTitleType[];\n\tconst type = faker.randomElement(types);\n\n\tif (type) {\n\t\tconst patternKey =\n\t\t\tconfig.pattern ||\n\t\t\tfaker.randomElement(Object.keys(patterns) as (keyof typeof patterns)[]);\n\t\tconst pattern = patterns[patternKey];\n\n\t\treturn {\n\t\t\ttype,\n\t\t\ttext: changeCase.capitalCase(\n\t\t\t\tfaker.words(faker.range(pattern.minWords, pattern.maxWords)),\n\t\t\t),\n\t\t\tspans: [],\n\t\t};\n\t} else {\n\t\treturn undefined;\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../../lib/createFaker\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\nconst patterns = {\n\tshort: {\n\t\tsentenceCount: 2,\n\t},\n\tmedium: {\n\t\tsentenceCount: 6,\n\t},\n\tlong: {\n\t\tsentenceCount: 12,\n\t},\n} as const;\n\ntype MockRichTextParagraphValueConfig = {\n\tpattern?: keyof typeof patterns;\n} & MockRichTextValueConfig;\n\nexport const paragraph = (\n\tconfig: MockRichTextParagraphValueConfig = {},\n): prismicT.RTParagraphNode | undefined => {\n\tconst faker = createFaker(config.seed);\n\n\tconst patternKey =\n\t\tconfig.pattern ||\n\t\tfaker.randomElement(Object.keys(patterns) as (keyof typeof patterns)[]);\n\tconst pattern = patterns[patternKey];\n\n\tconst text = Array.from(\n\t\t{ length: pattern.sentenceCount },\n\t\t() => changeCase.sentenceCase(faker.words(faker.range(5, 15))) + \".\",\n\t).join(\" \");\n\n\treturn {\n\t\ttype: prismicT.RichTextNodeType.paragraph,\n\t\ttext,\n\t\tspans: [],\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../../lib/createFaker\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\nconst patterns = {\n\tshort: {\n\t\tsentenceCount: 2,\n\t},\n\tmedium: {\n\t\tsentenceCount: 6,\n\t},\n\tlong: {\n\t\tsentenceCount: 12,\n\t},\n} as const;\n\ntype MockRichTextPreformattedValueConfig = {\n\tpattern?: keyof typeof patterns;\n} & MockRichTextValueConfig;\n\nexport const preformatted = (\n\tconfig: MockRichTextPreformattedValueConfig = {},\n): prismicT.RTPreformattedNode | undefined => {\n\tconst faker = createFaker(config.seed);\n\n\tconst patternKey =\n\t\tconfig.pattern ||\n\t\tfaker.randomElement(Object.keys(patterns) as (keyof typeof patterns)[]);\n\tconst pattern = patterns[patternKey];\n\n\t// TODO: Use code, not lorem ipsum.\n\tconst text = Array.from(\n\t\t{ length: pattern.sentenceCount },\n\t\t() => changeCase.sentenceCase(faker.words(faker.range(5, 15))) + \".\",\n\t).join(\" \");\n\n\treturn {\n\t\ttype: prismicT.RichTextNodeType.preformatted,\n\t\ttext,\n\t\tspans: [],\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../../lib/createFaker\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\nconst patterns = {\n\tshort: {\n\t\tminItems: 1,\n\t\tmaxItems: 3,\n\t},\n\tmedium: {\n\t\tminItems: 3,\n\t\tmaxItems: 6,\n\t},\n\tlong: {\n\t\tminItems: 6,\n\t\tmaxItems: 12,\n\t},\n} as const;\n\ntype MockRichTextListValueConfig = {\n\tpattern?: keyof typeof patterns;\n} & MockRichTextValueConfig;\n\nexport const list = (\n\tconfig: MockRichTextListValueConfig = {},\n): prismicT.RTListItemNode[] | undefined => {\n\tconst faker = createFaker(config.seed);\n\n\tconst patternKey =\n\t\tconfig.pattern ||\n\t\tfaker.randomElement(Object.keys(patterns) as (keyof typeof patterns)[]);\n\tconst pattern = patterns[patternKey];\n\n\tconst itemsCount = faker.range(pattern.minItems, pattern.maxItems);\n\n\treturn Array(itemsCount)\n\t\t.fill(undefined)\n\t\t.map(() => {\n\t\t\treturn {\n\t\t\t\ttype: prismicT.RichTextNodeType.listItem,\n\t\t\t\ttext: changeCase.sentenceCase(faker.words(faker.range(5, 15))),\n\t\t\t\tspans: [],\n\t\t\t};\n\t\t});\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../../lib/createFaker\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\nconst patterns = {\n\tshort: {\n\t\tminItems: 1,\n\t\tmaxItems: 3,\n\t},\n\tmedium: {\n\t\tminItems: 3,\n\t\tmaxItems: 6,\n\t},\n\tlong: {\n\t\tminItems: 6,\n\t\tmaxItems: 12,\n\t},\n} as const;\n\ntype MockRichTextOListValueConfig = {\n\tpattern?: keyof typeof patterns;\n} & MockRichTextValueConfig;\n\nexport const oList = (\n\tconfig: MockRichTextOListValueConfig = {},\n): prismicT.RTOListItemNode[] | undefined => {\n\tconst faker = createFaker(config.seed);\n\n\tconst patternKey =\n\t\tconfig.pattern ||\n\t\tfaker.randomElement(Object.keys(patterns) as (keyof typeof patterns)[]);\n\tconst pattern = patterns[patternKey];\n\n\tconst itemsCount = faker.range(pattern.minItems, pattern.maxItems);\n\n\treturn Array(itemsCount)\n\t\t.fill(undefined)\n\t\t.map(() => {\n\t\t\treturn {\n\t\t\t\ttype: prismicT.RichTextNodeType.oListItem,\n\t\t\t\ttext: changeCase.sentenceCase(faker.words(faker.range(5, 15))),\n\t\t\t\tspans: [],\n\t\t\t};\n\t\t});\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { buildImageFieldImage } from \"../../lib/buildImageFieldImage\";\nimport { getMockImageData } from \"../../lib/getMockImageData\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\ntype MockRichTextImageValueConfig = MockRichTextValueConfig;\n\nexport const image = (\n\tconfig: MockRichTextImageValueConfig = {},\n): prismicT.RTImageNode | undefined => {\n\tconst imageData = getMockImageData({ seed: config.seed });\n\tconst imageField = buildImageFieldImage({\n\t\tseed: config.seed,\n\t\timageData,\n\t\tstate: \"filled\",\n\t});\n\n\treturn {\n\t\ttype: prismicT.RichTextNodeType.image,\n\t\talt: imageField.alt,\n\t\turl: imageField.url,\n\t\tcopyright: imageField.copyright,\n\t\tdimensions: imageField.dimensions,\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { buildEmbedField } from \"../../lib/buildEmbedField\";\nimport { getMockEmbedData } from \"../../lib/getMockEmbedData\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\ntype MockRichTextEmbedValueConfig = MockRichTextValueConfig;\n\nexport const embed = (\n\tconfig: MockRichTextEmbedValueConfig = {},\n): prismicT.RTEmbedNode | undefined => {\n\tconst data = getMockEmbedData({ seed: config.seed });\n\tconst embedField = buildEmbedField({ seed: config.seed, data });\n\n\treturn {\n\t\ttype: prismicT.RichTextNodeType.embed,\n\t\toembed: embedField,\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../../lib/createFaker\";\n\nimport { MockRichTextValueConfig as BaseMockRichTextValueConfig } from \"../../types\";\n\nimport * as modelGen from \"../../model\";\nimport { heading } from \"./heading\";\nimport { paragraph } from \"./paragraph\";\nimport { preformatted } from \"./preformatted\";\nimport { list } from \"./list\";\nimport { oList } from \"./oList\";\nimport { image } from \"./image\";\nimport { embed } from \"./embed\";\n\nconst patterns = {\n\tshort: {\n\t\tblockCountMin: 1,\n\t\tblockCountMax: 2,\n\t},\n\tmedium: {\n\t\tblockCountMin: 2,\n\t\tblockCountMax: 4,\n\t},\n\tlong: {\n\t\tblockCountMin: 4,\n\t\tblockCountMax: 8,\n\t},\n} as const;\n\nexport type MockRichTextValueConfig = {\n\tpattern?: keyof typeof patterns;\n} & BaseMockRichTextValueConfig<prismicT.CustomTypeModelRichTextField>;\n\nconst generators = {\n\t[prismicT.RichTextNodeType.heading1]: heading,\n\t[prismicT.RichTextNodeType.heading2]: heading,\n\t[prismicT.RichTextNodeType.heading3]: heading,\n\t[prismicT.RichTextNodeType.heading4]: heading,\n\t[prismicT.RichTextNodeType.heading5]: heading,\n\t[prismicT.RichTextNodeType.heading6]: heading,\n\t[prismicT.RichTextNodeType.paragraph]: paragraph,\n\t[prismicT.RichTextNodeType.preformatted]: preformatted,\n\t[prismicT.RichTextNodeType.listItem]: list,\n\t[prismicT.RichTextNodeType.oListItem]: oList,\n\t[prismicT.RichTextNodeType.image]: image,\n\t[prismicT.RichTextNodeType.embed]: embed,\n};\n\nexport const richText = (\n\tconfig: MockRichTextValueConfig = {},\n): prismicT.RichTextField => {\n\tconst faker = createFaker(config.seed);\n\n\tconst model =\n\t\tconfig.model ||\n\t\tmodelGen.richText({\n\t\t\tseed: config.seed,\n\t\t\twithMultipleBlocks: true,\n\t\t});\n\tconst supportsMultipleBlocks = \"multi\" in model.config;\n\tconst types = (\n\t\t\"multi\" in model.config ? model.config.multi : model.config.single\n\t)\n\t\t.split(\",\")\n\t\t.filter((type) =>\n\t\t\tObject.keys(generators).includes(type),\n\t\t) as prismicT.RTNode[\"type\"][];\n\n\tif (types.length > 0) {\n\t\tconst patternKey =\n\t\t\tconfig.pattern ||\n\t\t\tfaker.randomElement(Object.keys(patterns) as (keyof typeof patterns)[]);\n\t\tconst pattern = patterns[patternKey];\n\n\t\tconst blockCount = supportsMultipleBlocks\n\t\t\t? faker.range(pattern.blockCountMin, pattern.blockCountMax)\n\t\t\t: 1;\n\n\t\treturn Array(blockCount)\n\t\t\t.fill(undefined)\n\t\t\t.map(() => {\n\t\t\t\tconst type = faker.randomElement(types);\n\t\t\t\tconst generator = generators[type];\n\n\t\t\t\treturn generator({ seed: config.seed, model });\n\t\t\t})\n\t\t\t.flat()\n\t\t\t.filter((block): block is prismicT.RTNode => block !== undefined)\n\t\t\t.slice(0, blockCount) as prismicT.RichTextField;\n\t} else {\n\t\treturn [];\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nimport * as modelGen from \"../model\";\n\nexport type MockSelectValueConfig<\n\tModel extends prismicT.CustomTypeModelSelectField = prismicT.CustomTypeModelSelectField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = MockValueConfig<Model> & MockValueStateConfig<State>;\n\nexport type MockSelectValue<\n\tModel extends prismicT.CustomTypeModelSelectField = prismicT.CustomTypeModelSelectField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.SelectField<Model[\"config\"][\"options\"][number], State>;\n\nexport const select = <\n\tModel extends prismicT.CustomTypeModelSelectField = prismicT.CustomTypeModelSelectField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockSelectValueConfig<Model, State> = {},\n): MockSelectValue<Model, State> => {\n\tconst faker = createFaker(config.seed);\n\n\tconst model = config.model || modelGen.select({ seed: config.seed });\n\tconst defaultValue = model.config.default_value;\n\n\tif (config.state === \"empty\") {\n\t\treturn null as MockSelectValue<Model, State>;\n\t} else {\n\t\treturn (\n\t\t\ttypeof defaultValue === \"string\" && faker.boolean()\n\t\t\t\t? defaultValue\n\t\t\t\t: faker.randomElement(model.config.options)\n\t\t) as MockSelectValue<Model, State>;\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { MockValueConfig, ModelValue } from \"../types\";\n\nimport { createFaker } from \"../lib/createFaker\";\nimport { generateFieldId } from \"../lib/generateFieldId\";\nimport {\n\tvalueForModelMap,\n\tValueForModelMapConfigs,\n} from \"../lib/valueForModelMap\";\n\nimport * as modelGen from \"../model\";\n\nexport type MockSliceValueConfig<\n\tModel extends prismicT.CustomTypeModelSlice = prismicT.CustomTypeModelSlice,\n> = {\n\ttype?: string;\n\tlabel?: string | null;\n\titemsCount?: number;\n\tprimaryFieldConfigs?: ValueForModelMapConfigs;\n\titemsFieldConfigs?: ValueForModelMapConfigs;\n} & MockValueConfig<Model>;\n\nexport const slice = <\n\tModel extends prismicT.CustomTypeModelSlice = prismicT.CustomTypeModelSlice,\n>(\n\tconfig: MockSliceValueConfig<Model> = {},\n): ModelValue<Model> => {\n\tconst faker = createFaker(config.seed);\n\n\tconst model = config.model || modelGen.slice({ seed: config.seed });\n\n\tconst sliceType = config.type ?? generateFieldId({ seed: config.seed });\n\tconst sliceLabel =\n\t\tconfig.label !== undefined\n\t\t\t? config.label\n\t\t\t: changeCase.capitalCase(faker.words(faker.range(1, 2)));\n\n\tconst itemsCount =\n\t\tObject.keys(model.repeat).length > 0\n\t\t\t? config.itemsCount ?? faker.range(1, 6)\n\t\t\t: 0;\n\n\treturn {\n\t\tslice_type: sliceType,\n\t\tslice_label: sliceLabel,\n\t\tprimary: valueForModelMap({\n\t\t\tseed: config.seed,\n\t\t\tmap: model[\"non-repeat\"],\n\t\t\tconfigs: config.primaryFieldConfigs,\n\t\t}),\n\t\titems: Array(itemsCount)\n\t\t\t.fill(undefined)\n\t\t\t.map(() => {\n\t\t\t\treturn valueForModelMap({\n\t\t\t\t\tseed: config.seed,\n\t\t\t\t\tmap: model.repeat,\n\t\t\t\t\tconfigs: config.itemsFieldConfigs,\n\t\t\t\t});\n\t\t\t}),\n\t} as ModelValue<Model>;\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { MockValueConfig, ModelValue } from \"../types\";\n\nimport { createFaker } from \"../lib/createFaker\";\nimport { generateFieldId } from \"../lib/generateFieldId\";\nimport {\n\tvalueForModelMap,\n\tValueForModelMapConfigs,\n} from \"../lib/valueForModelMap\";\n\nimport * as modelGen from \"../model\";\n\nexport type MockSharedSliceVariationValueConfig<\n\tModel extends prismicT.SharedSliceModelVariation = prismicT.SharedSliceModelVariation,\n> = {\n\ttype?: string;\n\tlabel?: string;\n\titemsCount?: number;\n\tprimaryFieldConfigs?: ValueForModelMapConfigs;\n\titemsFieldConfigs?: ValueForModelMapConfigs;\n} & MockValueConfig<Model>;\n\nexport const sharedSliceVariation = <\n\tModel extends prismicT.SharedSliceModelVariation = prismicT.SharedSliceModelVariation,\n>(\n\tconfig: MockSharedSliceVariationValueConfig<Model> = {},\n): ModelValue<Model> => {\n\tconst faker = createFaker(config.seed);\n\n\tconst model =\n\t\tconfig.model || modelGen.sharedSliceVariation({ seed: config.seed });\n\n\tconst sliceType = config.type ?? generateFieldId({ seed: config.seed });\n\n\tconst itemsCount =\n\t\tObject.keys(model.items).length > 0\n\t\t\t? config.itemsCount ?? faker.range(1, 6)\n\t\t\t: 0;\n\n\treturn {\n\t\tslice_type: sliceType,\n\t\tslice_label: null,\n\t\tvariation: model.id,\n\t\tversion: faker.hash(7),\n\t\tprimary: valueForModelMap({\n\t\t\tseed: config.seed,\n\t\t\tmap: model.primary,\n\t\t\tconfigs: config.primaryFieldConfigs,\n\t\t}),\n\t\titems: Array(itemsCount)\n\t\t\t.fill(undefined)\n\t\t\t.map(() => {\n\t\t\t\treturn valueForModelMap({\n\t\t\t\t\tseed: config.seed,\n\t\t\t\t\tmap: model.items,\n\t\t\t\t\tconfigs: config.itemsFieldConfigs,\n\t\t\t\t});\n\t\t\t}),\n\t} as ModelValue<Model>;\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueConfig, ModelValue } from \"../types\";\n\nimport * as modelGen from \"../model\";\nimport {\n\tsharedSliceVariation,\n\tMockSharedSliceVariationValueConfig,\n} from \"./sharedSliceVariation\";\n\nexport type MockSharedSliceValueConfig<\n\tModel extends prismicT.SharedSliceModel = prismicT.SharedSliceModel,\n> = Pick<\n\tMockSharedSliceVariationValueConfig,\n\t\"itemsCount\" | \"primaryFieldConfigs\" | \"itemsFieldConfigs\"\n> &\n\tMockValueConfig<Model>;\n\nexport const sharedSlice = <\n\tModel extends prismicT.SharedSliceModel = prismicT.SharedSliceModel,\n>(\n\tconfig: MockSharedSliceValueConfig<Model> = {},\n): ModelValue<Model> => {\n\tconst faker = createFaker(config.seed);\n\n\tconst model = config.model || modelGen.sharedSlice({ seed: config.seed });\n\tconst variationModel = faker.randomElement(model.variations);\n\n\treturn sharedSliceVariation({\n\t\tseed: config.seed,\n\t\tmodel: variationModel,\n\t\titemsCount: config.itemsCount,\n\t\ttype: model.id,\n\t\tprimaryFieldConfigs: config.primaryFieldConfigs,\n\t\titemsFieldConfigs: config.itemsFieldConfigs,\n\t}) as ModelValue<Model>;\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\nimport { ValueForModelMapConfigs } from \"../lib/valueForModelMap\";\n\nimport { MockValueConfig, MockValueStateConfig, ModelValue } from \"../types\";\n\nimport * as modelGen from \"../model\";\n\nimport { slice } from \"./slice\";\nimport { sharedSlice } from \"./sharedSlice\";\n\nexport type MockSliceZoneValueConfig<\n\tModel extends prismicT.CustomTypeModelSliceZoneField = prismicT.CustomTypeModelSliceZoneField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\tsharedSliceModels?: prismicT.SharedSliceModel[];\n\titemsCount?: State extends \"empty\" ? 0 : number;\n\tprimaryFieldConfigs?: ValueForModelMapConfigs;\n\titemsFieldConfigs?: ValueForModelMapConfigs;\n} & MockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\nexport const sliceZone = <\n\tModel extends prismicT.CustomTypeModelSliceZoneField = prismicT.CustomTypeModelSliceZoneField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n>(\n\tconfig: MockSliceZoneValueConfig<Model, State> = {},\n): ModelValue<Model, State> => {\n\tif (config.state === \"empty\") {\n\t\treturn [] as ModelValue<Model, State>;\n\t} else {\n\t\tconst faker = createFaker(config.seed);\n\n\t\tconst model = config.model || modelGen.sliceZone({ seed: config.seed });\n\n\t\tif (Object.keys(model.config.choices).length > 0) {\n\t\t\tconst itemsCount = config.itemsCount ?? faker.range(1, 6);\n\n\t\t\treturn Array(itemsCount)\n\t\t\t\t.fill(undefined)\n\t\t\t\t.map(() => {\n\t\t\t\t\tconst choices = Object.entries(model.config.choices);\n\t\t\t\t\tconst [choiceType, choiceModel] = faker.randomElement(choices);\n\n\t\t\t\t\tconst choiceLabels = model.config.labels[choiceType] || [];\n\t\t\t\t\tconst choiceLabel = faker.randomElement(choiceLabels);\n\n\t\t\t\t\tswitch (choiceModel.type) {\n\t\t\t\t\t\tcase prismicT.CustomTypeModelSliceType.Slice: {\n\t\t\t\t\t\t\treturn slice({\n\t\t\t\t\t\t\t\tseed: config.seed,\n\t\t\t\t\t\t\t\tmodel: choiceModel,\n\t\t\t\t\t\t\t\ttype: choiceType,\n\t\t\t\t\t\t\t\tlabel: choiceLabel ? choiceLabel.name : null,\n\t\t\t\t\t\t\t\tprimaryFieldConfigs: config.primaryFieldConfigs,\n\t\t\t\t\t\t\t\titemsFieldConfigs: config.itemsFieldConfigs,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcase prismicT.CustomTypeModelSliceType.SharedSlice: {\n\t\t\t\t\t\t\tconst sharedSliceModel = config.sharedSliceModels?.find(\n\t\t\t\t\t\t\t\t(sharedSliceModel) => sharedSliceModel.id === choiceType,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (sharedSliceModel) {\n\t\t\t\t\t\t\t\treturn sharedSlice({\n\t\t\t\t\t\t\t\t\tseed: config.seed,\n\t\t\t\t\t\t\t\t\tmodel: sharedSliceModel,\n\t\t\t\t\t\t\t\t\tprimaryFieldConfigs: config.primaryFieldConfigs,\n\t\t\t\t\t\t\t\t\titemsFieldConfigs: config.itemsFieldConfigs,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.filter(\n\t\t\t\t\t(slice): slice is NonNullable<typeof slice> => slice !== undefined,\n\t\t\t\t) as ModelValue<Model, State>;\n\t\t} else {\n\t\t\treturn [] as unknown as ModelValue<Model, State>;\n\t\t}\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { MockValueConfig, MockValueStateConfig } from \"../types\";\n\nimport { heading, MockRichTextHeadingValueConfig } from \"./richText/heading\";\n\nexport type MockTitleValueConfig<\n\tModel extends prismicT.CustomTypeModelTitleField = prismicT.CustomTypeModelTitleField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\tpattern?: MockRichTextHeadingValueConfig[\"pattern\"];\n} & MockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\nexport type MockTitleValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.TitleField<State>;\n\nexport const title = <\n\tModel extends prismicT.CustomTypeModelTitleField = prismicT.CustomTypeModelTitleField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n>(\n\tconfig: MockTitleValueConfig<Model, State> = {},\n): MockTitleValue<State> => {\n\tif (config.state === \"empty\") {\n\t\treturn [] as MockTitleValue<State>;\n\t} else {\n\t\treturn [\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\theading({\n\t\t\t\tseed: config.seed,\n\t\t\t\tmodel: config.model,\n\t\t\t\tpattern: config.pattern,\n\t\t\t})!,\n\t\t] as MockTitleValue<State>;\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueConfig } from \"../types\";\n\nexport type MockUIDValueConfig<\n\tModel extends prismicT.CustomTypeModelUIDField = prismicT.CustomTypeModelUIDField,\n> = MockValueConfig<Model>;\n\nexport const uid = (\n\tconfig: MockUIDValueConfig = {},\n): NonNullable<prismicT.PrismicDocument[\"uid\"]> => {\n\tconst faker = createFaker(config.seed);\n\n\treturn changeCase.snakeCase(faker.words(faker.range(1, 3)));\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\nimport { MockRestApiConfig } from \"../types\";\nimport { timestamp } from \"../value\";\n\nexport type MockRestApiRefConfig<IsScheduled extends boolean = false> = {\n\tisMasterRef?: boolean;\n\tisScheduled?: IsScheduled;\n} & MockRestApiConfig;\n\nexport type MockRestApiRefValue<IsScheduled extends boolean = false> = Omit<\n\tprismicT.Ref,\n\t\"scheduledAt\"\n> &\n\t(IsScheduled extends true\n\t\t? { scheduledAt: string }\n\t\t: { scheduledAt?: never });\n\nexport const ref = <IsScheduled extends boolean = false>(\n\tconfig: MockRestApiRefConfig<IsScheduled> = {},\n): MockRestApiRefValue<IsScheduled> => {\n\tconst faker = createFaker(config.seed);\n\n\tconst value: prismicT.Ref = {\n\t\tid: faker.hash(16),\n\t\tref: faker.hash(16),\n\t\tisMasterRef: config.isMasterRef ?? false,\n\t\tlabel: config.isMasterRef\n\t\t\t? \"Master\"\n\t\t\t: changeCase.capitalCase(faker.words(faker.range(1, 3))),\n\t};\n\n\tif (config.isScheduled) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tvalue.scheduledAt = timestamp({ seed: config.seed })!;\n\t}\n\n\treturn value as MockRestApiRefValue<IsScheduled>;\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\nimport { generateTags } from \"../lib/generateTags\";\n\nimport { MockRestApiConfig } from \"../types\";\nimport { ref } from \"./ref\";\n\nexport type MockRestApiRepositoryConfig = {\n\tcustomTypeModels?: prismicT.CustomTypeModel[];\n\twithReleases?: boolean;\n} & MockRestApiConfig;\n\nexport const repository = (\n\tconfig: MockRestApiRepositoryConfig = {},\n): prismicT.Repository => {\n\tconst faker = createFaker(config.seed);\n\n\tconst types = (config.customTypeModels || []).reduce((acc, model) => {\n\t\tacc[model.id] = model.label;\n\n\t\treturn acc;\n\t}, {} as prismicT.Repository[\"types\"]);\n\n\treturn {\n\t\trefs: [\n\t\t\tref({ seed: config.seed, isMasterRef: true }),\n\t\t\t...(config.withReleases\n\t\t\t\t? [ref({ seed: config.seed }), ref({ seed: config.seed })]\n\t\t\t\t: []),\n\t\t],\n\t\tintegrationFieldsRef: ref({ seed: config.seed }).ref,\n\t\ttypes,\n\t\tlanguages: [\n\t\t\t{\n\t\t\t\tid: faker.word(),\n\t\t\t\tname: changeCase.capitalCase(faker.word()),\n\t\t\t},\n\t\t],\n\t\ttags: generateTags({\n\t\t\tseed: config.seed,\n\t\t\tmin: 1,\n\t\t\tmax: 10,\n\t\t}),\n\t\tforms: {},\n\t\tlicense: \"All Rights Reserved\",\n\t\tversion: faker.hash(7),\n\t\tbookmarks: {},\n\t\texperiments: {},\n\t\toauth_token: faker.url(),\n\t\toauth_initiate: faker.url(),\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockRestApiConfig } from \"../types\";\n\nexport type MockRestApiQueryConfig<\n\tDocument extends prismicT.PrismicDocument = prismicT.PrismicDocument,\n> = {\n\tdocuments?: Document[];\n\tpage?: number;\n\tpageSize?: number;\n} & MockRestApiConfig;\n\nexport const query = <\n\tDocument extends prismicT.PrismicDocument = prismicT.PrismicDocument,\n>(\n\tconfig: MockRestApiQueryConfig<Document> = {},\n): prismicT.Query<Document> => {\n\tconst faker = createFaker(config.seed);\n\n\tconst documents = config.documents || [];\n\tconst page = Math.max(1, config.page ?? 1);\n\tconst pageSize = Math.min(100, Math.max(1, config.pageSize ?? 100));\n\tconst totalPages = Math.ceil(documents.length / pageSize);\n\tconst results = documents.slice((page - 1) * pageSize, page * pageSize);\n\n\treturn {\n\t\tpage,\n\t\tnext_page: page < totalPages ? faker.url() : null,\n\t\tprev_page: page > 1 ? faker.url() : null,\n\t\ttotal_pages: totalPages,\n\t\tresults_size: results.length,\n\t\tresults_per_page: pageSize,\n\t\ttotal_results_size: documents.length,\n\t\tresults,\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { generateTags } from \"../lib/generateTags\";\n\nimport { MockRestApiConfig } from \"../types\";\n\nexport type MockRestApiTagsConfig = MockRestApiConfig;\n\nexport const tags = (config: MockRestApiTagsConfig = {}): prismicT.Tags => {\n\treturn generateTags({\n\t\tseed: config.seed,\n\t\tmin: 1,\n\t\tmax: 10,\n\t});\n};\n"],"names":["Rand","changeCase","boolean","prismicT","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.integrationFields","value.uid","value.group","value.sliceZone","color","contentRelationship","customType","date","embed","geoPoint","group","image","integrationFields","keyText","link","linkToMedia","number","richText","select","sharedSlice","sharedSliceVariation","slice","sliceZone","timestamp","title","uid","modelGen.customType","modelGen.contentRelationship","documentGen","dataSet","modelGen.group","modelGen.image","modelGen.link","patterns","modelGen.title","modelGen.richText","modelGen.select","modelGen.slice","modelGen.sharedSliceVariation","modelGen.sharedSlice","modelGen.sliceZone"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/lib/lorem.ts","../src/lib/createFaker.ts","../src/lib/generateTags.ts","../src/value/boolean.ts","../src/lib/valueForModel.ts","../src/lib/valueForModelMap.ts","../src/model/boolean.ts","../src/model/color.ts","../src/model/contentRelationship.ts","../src/model/customType.ts","../src/model/date.ts","../src/model/embed.ts","../src/model/geoPoint.ts","../src/model/group.ts","../src/model/image.ts","../src/model/integrationFields.ts","../src/model/keyText.ts","../src/model/link.ts","../src/model/linkToMedia.ts","../src/model/number.ts","../src/model/richText.ts","../src/model/select.ts","../src/model/sharedSlice.ts","../src/model/sharedSliceChoice.ts","../src/lib/getMockImageData.ts","../src/model/sharedSliceVariation.ts","../src/model/slice.ts","../src/model/sliceZone.ts","../src/model/timestamp.ts","../src/model/title.ts","../src/model/uid.ts","../src/lib/generateFieldId.ts","../src/model/buildMockGroupFieldMap.ts","../src/model/createModelMockFactory.ts","../src/value/timestamp.ts","../src/lib/buildAlternativeLanguage.ts","../src/value/customType.ts","../src/value/color.ts","../src/lib/buildContentRelationshipField.ts","../src/lib/generateCustomTypeId.ts","../src/value/contentRelationship.ts","../src/value/date.ts","../src/lib/buildEmbedField.ts","../src/lib/getMockEmbedData.ts","../src/value/embed.ts","../src/value/geoPoint.ts","../src/value/group.ts","../src/lib/buildImageFieldImage.ts","../src/value/image.ts","../src/value/integrationFields.ts","../src/value/keyText.ts","../src/value/linkToMedia.ts","../src/value/link.ts","../src/value/number.ts","../src/value/richText/heading.ts","../src/value/richText/paragraph.ts","../src/value/richText/preformatted.ts","../src/value/richText/list.ts","../src/value/richText/oList.ts","../src/value/richText/image.ts","../src/value/richText/embed.ts","../src/value/richText/index.ts","../src/value/select.ts","../src/value/slice.ts","../src/value/sharedSliceVariation.ts","../src/value/sharedSlice.ts","../src/value/sliceZone.ts","../src/value/title.ts","../src/value/uid.ts","../src/api/ref.ts","../src/api/repository.ts","../src/api/query.ts","../src/api/tags.ts","../src/value/createValueMockFactory.ts","../src/api/createAPIMockFactory.ts","../src/createMockFactory.ts"],"sourcesContent":["/**\n * The following code is a modified version of fast-lorem-ipsum from Amit Gupta.\n * The changes are made to support starting the return value from a configurable\n * word offset.\n *\n * https://github.com/amitguptagwl/fast-lorem-ipsum/tree/7f836ee59a23cc75e7ca5b1a1747ea888eab31c7\n *\n * MIT License\n *\n * Copyright (c) 2017 Amit Gupta\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nconst wordsString =\n\t\"lorem ipsum dolor sit amet, consectetur adipiscing elit ut aliquam, purus sit amet luctus venenatis, lectus magna fringilla urna, porttitor rhoncus dolor purus non enim praesent elementum facilisis leo, vel fringilla est ullamcorper eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis eu volutpat odio facilisis mauris sit amet massa vitae tortor condimentum lacinia quis vel eros donec ac odio tempor orci dapibus ultrices in iaculis nunc sed augue lacus, viverra vitae congue eu, consequat ac felis donec et odio pellentesque diam volutpat commodo sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium vulputate sapien nec sagittis aliquam malesuada bibendum arcu vitae elementum curabitur vitae nunc sed velit dignissim sodales ut eu sem integer vitae justo eget magna fermentum iaculis eu non diam phasellus vestibulum lorem sed risus ultricies tristique nulla aliquet enim tortor, at auctor urna nunc id cursus metus aliquam eleifend mi in nulla posuere sollicitudin aliquam ultrices sagittis orci, a scelerisque purus semper eget duis at tellus at urna condimentum mattis pellentesque id nibh tortor, id aliquet lectus proin nibh nisl, condimentum id venenatis a, condimentum vitae sapien pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas sed tempus, urna et pharetra pharetra, massa massa ultricies mi, quis hendrerit dolor magna eget est lorem ipsum dolor sit amet, consectetur adipiscing elit pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas integer eget aliquet nibh praesent tristique magna sit amet purus gravida quis blandit turpis cursus in hac habitasse platea dictumst quisque sagittis, purus sit amet volutpat consequat, mauris nunc congue nisi, vitae suscipit tellus mauris a diam maecenas sed enim ut sem viverra aliquet eget sit amet tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra, magna ac placerat vestibulum, lectus mauris ultrices eros, in cursus turpis massa tincidunt dui ut ornare lectus sit amet est placerat in egestas erat imperdiet sed euismod nisi porta lorem mollis aliquam ut porttitor leo a diam sollicitudin tempor id eu nisl nunc mi ipsum, faucibus vitae aliquet nec, ullamcorper sit amet risus nullam eget felis eget nunc lobortis mattis aliquam faucibus purus in massa tempor nec feugiat nisl pretium fusce id velit ut tortor pretium viverra suspendisse potenti nullam ac tortor vitae purus faucibus ornare suspendisse sed nisi lacus, sed viverra tellus in hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at augue eget arcu dictum varius duis at consectetur lorem donec massa sapien, faucibus et molestie ac, feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi tincidunt ornare massa, eget egestas purus viverra accumsan in nisl nisi, scelerisque eu ultrices vitae, auctor eu augue ut lectus arcu, bibendum at varius vel, pharetra vel turpis nunc eget lorem dolor, sed viverra ipsum nunc aliquet bibendum enim, facilisis gravida neque convallis a cras semper auctor neque, vitae tempus quam pellentesque nec nam aliquam sem et tortor consequat id porta nibh venenatis cras sed felis eget velit aliquet sagittis id consectetur purus ut faucibus pulvinar elementum integer enim neque, volutpat ac tincidunt vitae, semper quis lectus nulla at volutpat diam ut venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci porta non pulvinar neque laoreet suspendisse interdum consectetur libero, id faucibus nisl tincidunt eget nullam non nisi est, sit amet facilisis magna etiam tempor, orci eu lobortis elementum, nibh tellus molestie nunc, non blandit massa enim nec dui nunc mattis enim ut tellus elementum sagittis vitae et leo duis ut diam quam nulla porttitor massa id neque aliquam vestibulum morbi blandit cursus risus, at ultrices mi tempus imperdiet nulla malesuada pellentesque elit eget gravida cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc vel risus commodo viverra maecenas accumsan, lacus vel facilisis volutpat, est velit egestas dui, id ornare arcu odio ut sem nulla pharetra diam sit amet nisl suscipit adipiscing bibendum est ultricies integer quis auctor elit sed vulputate mi sit amet mauris commodo quis imperdiet massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin libero nunc, consequat interdum varius sit amet, mattis vulputate enim nulla aliquet porttitor lacus, luctus accumsan tortor posuere ac ut consequat semper viverra nam libero justo, laoreet sit amet cursus sit amet, dictum sit amet justo donec enim diam, vulputate ut pharetra sit amet, aliquam id diam maecenas ultricies mi eget mauris pharetra et ultrices neque ornare aenean euismod elementum nisi, quis eleifend quam adipiscing vitae proin sagittis, nisl rhoncus mattis rhoncus, urna neque viverra justo, nec ultrices dui sapien eget mi proin sed libero enim, sed faucibus turpis in eu mi bibendum neque egestas congue quisque egestas diam in arcu cursus euismod quis viverra nibh cras pulvinar mattis nunc, sed blandit libero volutpat sed cras ornare arcu dui vivamus arcu felis, bibendum ut tristique et, egestas quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim, sit amet venenatis urna cursus eget nunc scelerisque viverra mauris, in aliquam sem fringilla ut morbi tincidunt augue interdum velit euismod in pellentesque massa placerat duis ultricies lacus sed turpis tincidunt id aliquet risus feugiat in ante metus, dictum at tempor commodo, ullamcorper a lacus vestibulum sed arcu non odio euismod lacinia at quis risus sed vulputate odio ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat velit, scelerisque in dictum non, consectetur a erat nam at lectus urna duis convallis convallis tellus, id interdum velit laoreet id donec ultrices tincidunt arcu, non sodales neque sodales ut etiam sit amet nisl purus, in mollis nunc sed id semper risus in hendrerit gravida rutrum quisque non tellus orci, ac auctor augue mauris augue neque, gravida in fermentum et, sollicitudin ac orci phasellus egestas tellus rutrum tellus pellentesque eu tincidunt tortor aliquam nulla facilisi cras fermentum, odio eu feugiat pretium, nibh ipsum consequat nisl, vel pretium lectus quam id leo in vitae turpis massa sed elementum tempus egestas sed sed risus pretium quam vulputate dignissim suspendisse in est ante in nibh mauris, cursus mattis molestie a, iaculis at erat pellentesque adipiscing commodo elit, at imperdiet dui accumsan sit amet nulla facilisi morbi tempus iaculis urna, id volutpat lacus laoreet non curabitur gravida arcu ac tortor dignissim convallis aenean et tortor at risus viverra adipiscing at in tellus integer feugiat scelerisque varius morbi enim nunc, faucibus a pellentesque sit amet, porttitor eget dolor morbi non arcu risus, quis varius quam quisque id diam vel quam elementum pulvinar etiam non quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit amet, consectetur adipiscing elit duis tristique sollicitudin nibh sit amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas maecenas pharetra convallis posuere morbi leo urna, molestie at elementum eu, facilisis sed odio morbi quis commodo odio aenean sed adipiscing diam donec adipiscing tristique risus nec feugiat in fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida hendrerit lectus a molestie\";\n\nexport const loremWords = wordsString.split(\" \");\n\n/**\n * Returns \"Lorem ipsum\" text of a specified length.\n *\n * @example\n *\n * ```ts\n * lorem(\"100w\"); // 100 words\n * lorem(\"200c\"); // 200 characters\n * ```\n *\n * @param length - Length of the returned text in the form of `${number}w` or\n * `${number}c`. `w` means words, `c` means characters.\n *\n * @returns Lorem ipsum text.\n */\nexport const lorem = (length: `${number}w` | `${number}c`, wordOffset = 0) => {\n\tconst count = parseInt(length.substring(0, length.length - 1));\n\tconst countType = length.charAt(length.length - 1);\n\n\tif (!isNaN(count) && (countType === \"w\" || countType === \"c\")) {\n\t\t// Build a list of indicies for each space in the list of\n\t\t// words. Only do this on the first call of `lorem`. The list\n\t\t// is cached to a property on `lorem` itself.\n\t\tif (!lorem.spaceIndices.length) {\n\t\t\tlet startIndex = -1;\n\t\t\tdo {\n\t\t\t\tconst index = wordsString.indexOf(\" \", startIndex + 1);\n\n\t\t\t\tlorem.spaceIndices.push(index);\n\n\t\t\t\tstartIndex = index;\n\t\t\t} while (startIndex !== -1);\n\t\t}\n\n\t\tif (countType === \"c\") {\n\t\t\treturn wordsString.substring(0, count);\n\t\t} else {\n\t\t\tlet sentence = \"\";\n\n\t\t\tconst startSpaceIndex =\n\t\t\t\tlorem.spaceIndices[(wordOffset % lorem.spaceIndices.length) - 1];\n\n\t\t\tconst endSpaceIndex =\n\t\t\t\tlorem.spaceIndices[\n\t\t\t\t\t(((wordOffset % lorem.spaceIndices.length) + count) %\n\t\t\t\t\t\tlorem.spaceIndices.length) -\n\t\t\t\t\t\t1\n\t\t\t\t];\n\n\t\t\tif (\n\t\t\t\tcount + (wordOffset % lorem.spaceIndices.length) >\n\t\t\t\tlorem.spaceIndices.length\n\t\t\t) {\n\t\t\t\tsentence += wordsString.substring(startSpaceIndex + 1) + \" \";\n\n\t\t\t\tconst wraparoundCounts =\n\t\t\t\t\tMath.floor(count / lorem.spaceIndices.length) - 1;\n\t\t\t\tfor (let i = 0; i < wraparoundCounts; i++) {\n\t\t\t\t\tsentence += wordsString + \" \";\n\t\t\t\t}\n\n\t\t\t\tsentence += wordsString.substring(0, endSpaceIndex);\n\t\t\t} else {\n\t\t\t\tsentence = wordsString.substring(startSpaceIndex + 1, endSpaceIndex);\n\t\t\t}\n\n\t\t\tif (sentence.charAt(sentence.length - 1) === \",\") {\n\t\t\t\treturn sentence.substring(0, sentence.length - 1);\n\t\t\t} else {\n\t\t\t\treturn sentence.substring(0, sentence.length);\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow new Error(\"Length must be of the form `${number}w` or `${number}c`\");\n};\nlorem.spaceIndices = [] as number[];\n","import Rand from \"rand-seed\";\n\nimport { Seed } from \"../types\";\n\nimport { lorem, loremWords } from \"./lorem\";\n\nexport const createFaker = (seed: Seed): Faker => {\n\treturn new Faker(seed);\n};\n\nconst DAY_MS = 1000 * 60 * 60 * 24;\nconst YEAR_MS = DAY_MS * 365;\nconst YEAR_2022_MS = 52 * (YEAR_MS + DAY_MS / 4);\n\nexport class Faker {\n\tseed: Seed;\n\n\tprivate rand: Rand;\n\n\tconstructor(seed: Seed) {\n\t\tthis.seed = seed;\n\n\t\tthis.rand = new Rand(seed.toString());\n\t}\n\n\tboolean(): boolean {\n\t\treturn this.random() >= 0.5;\n\t}\n\n\trandom(): number {\n\t\treturn this.rand.next();\n\t}\n\n\trandomElement<T>(elements: readonly T[]): T {\n\t\treturn elements[this.range(0, elements.length)];\n\t}\n\n\trandomElements<T>(elements: readonly T[]): T[] {\n\t\tconst alwaysInclude = this.randomElement(elements);\n\n\t\treturn elements.filter(\n\t\t\t(element) => element === alwaysInclude || this.boolean(),\n\t\t);\n\t}\n\n\trange(min: number, max: number): number {\n\t\treturn Math.floor(this.rangeFloat(Math.ceil(min), Math.floor(max)));\n\t}\n\n\trangeFloat(min: number, max: number): number {\n\t\treturn this.random() * (max - min) + min;\n\t}\n\n\twords(length: number, wordOffset = this.range(0, loremWords.length)): string {\n\t\treturn lorem(`${length}w`, wordOffset);\n\t}\n\n\tword(): string {\n\t\treturn this.randomElement(loremWords);\n\t}\n\n\tlorem(\n\t\tlength: Parameters<typeof lorem>[0],\n\t\twordOffset = this.range(0, loremWords.length),\n\t): string {\n\t\treturn lorem(length, wordOffset);\n\t}\n\n\turl(): string {\n\t\treturn `https://${this.word()}.example`;\n\t}\n\n\thexColor(): string {\n\t\treturn `#${this.hash(6)}`;\n\t}\n\n\thash(length: number): string {\n\t\tlet hash = \"\";\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst chars = this.boolean() ? \"abcdef\" : \"0123456789\";\n\n\t\t\thash += chars[this.range(0, chars.length)];\n\t\t}\n\n\t\treturn hash;\n\t}\n\n\tdate(): Date {\n\t\treturn new Date(YEAR_2022_MS + this.range(-YEAR_MS * 3, YEAR_MS * 3));\n\t}\n\n\tdateAfter(date: Date): Date {\n\t\tconst timestamp = date.getTime();\n\n\t\treturn new Date(this.range(timestamp, timestamp + YEAR_MS * 3));\n\t}\n\n\tdateBefore(date: Date): Date {\n\t\tconst timestamp = date.getTime();\n\n\t\treturn new Date(this.range(timestamp - YEAR_MS * 3, timestamp));\n\t}\n\n\tdateBetween(min: Date, max: Date): Date {\n\t\treturn new Date(this.range(min.getTime(), max.getTime()));\n\t}\n}\n","import * as changeCase from \"change-case\";\n\nimport { createFaker, Faker } from \"../lib/createFaker\";\n\nimport { Seed } from \"../types\";\n\ntype GenerateTagsConfig = {\n\tmin?: number;\n\tmax?: number;\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 generateTags = (config: GenerateTagsConfig): string[] => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn Array.from(\n\t\t{ length: faker.range(config.min ?? 0, config.max ?? 2) },\n\t\t() => changeCase.capitalCase(faker.words(faker.range(1, 3))),\n\t);\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueConfig } from \"../types\";\n\nexport type MockBooleanValueConfig<\n\tModel extends prismicT.CustomTypeModelBooleanField = prismicT.CustomTypeModelBooleanField,\n> = MockValueConfig<Model>;\n\nexport const boolean = <Model extends prismicT.CustomTypeModelBooleanField>(\n\tconfig: MockBooleanValueConfig<Model>,\n): prismicT.BooleanField => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn faker.boolean();\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { MockValueConfigForModel, ModelValue, Seed } from \"../types\";\nimport * as value from \"../value\";\n\nimport { createFaker, Faker } from \"./createFaker\";\n\ntype ValueForModelConfig<Model extends prismicT.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 prismicT.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 prismicT.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 prismicT.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 prismicT.CustomTypeModelFieldType.Link: {\n\t\t\tswitch (model.config?.select) {\n\t\t\t\tcase prismicT.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 prismicT.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 prismicT.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 prismicT.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 prismicT.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 prismicT.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 prismicT.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 prismicT.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 prismicT.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 prismicT.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 prismicT.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 prismicT.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 prismicT.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 prismicT.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 prismicT.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 prismicT.CustomTypeModelFieldType.IntegrationFields: {\n\t\t\treturn value.integrationFields({\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 prismicT.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 prismicT.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 prismicT.CustomTypeModelFieldType.LegacySlices:\n\t\tcase prismicT.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","import * as prismicT from \"@prismicio/types\";\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\tMockIntegrationFieldsValueConfig,\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 prismicT.CustomTypeModelField>(\n\tmodel: Model,\n): keyof ValueForModelMapConfigs => {\n\tswitch (model.type) {\n\t\tcase prismicT.CustomTypeModelFieldType.Boolean:\n\t\t\treturn \"boolean\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.Color:\n\t\t\treturn \"color\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.Date:\n\t\t\treturn \"date\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.Embed:\n\t\t\treturn \"embed\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.GeoPoint:\n\t\t\treturn \"geoPoint\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.Group:\n\t\t\treturn \"group\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.Image:\n\t\t\treturn \"image\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.Link: {\n\t\t\tswitch (model.config?.select) {\n\t\t\t\tcase prismicT.CustomTypeModelLinkSelectType.Document:\n\t\t\t\t\treturn \"contentRelationship\";\n\t\t\t\tcase prismicT.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 prismicT.CustomTypeModelFieldType.Number:\n\t\t\treturn \"number\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.Select:\n\t\t\treturn \"select\";\n\n\t\tcase prismicT.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 prismicT.CustomTypeModelFieldType.Text:\n\t\t\treturn \"keyText\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.Timestamp:\n\t\t\treturn \"timestamp\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.UID:\n\t\t\treturn \"uid\";\n\n\t\tcase prismicT.CustomTypeModelFieldType.IntegrationFields:\n\t\t\treturn \"integrationFields\";\n\n\t\tcase prismicT.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\tintegrationFields?: MockIntegrationFieldsValueConfig;\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, prismicT.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, prismicT.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 prismicT.CustomTypeModelField,\n\t\t\tconfig: fieldConfig,\n\t\t}) as ModelValue<typeof fieldModel>;\n\t}\n\n\treturn result;\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockBooleanModelConfig = MockModelConfig;\n\nexport function boolean(\n\tconfig: MockBooleanModelConfig,\n): prismicT.CustomTypeModelBooleanField {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Boolean,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t},\n\t};\n}\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockColorModelConfig = MockModelConfig;\n\nexport const color = (\n\tconfig: MockColorModelConfig,\n): prismicT.CustomTypeModelColorField => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Color,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockContentRelationshipModelConfig<\n\tCustomTypeIDs extends string = string,\n\tTags extends string = string,\n> = {\n\tcustomTypeIDs?: readonly CustomTypeIDs[];\n\ttags?: readonly Tags[];\n} & MockModelConfig;\n\nexport const contentRelationship = <\n\tCustomTypeIDs extends string,\n\tTags extends string,\n>(\n\tconfig: MockContentRelationshipModelConfig<CustomTypeIDs, Tags>,\n): prismicT.CustomTypeModelContentRelationshipField<CustomTypeIDs, Tags> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Link,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t\tselect: prismicT.CustomTypeModelLinkSelectType.Document,\n\t\t\tcustomtypes: config.customTypeIDs,\n\t\t\ttags: config.tags,\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockCustomTypeModelConfig<\n\tDefinition extends\n\t\t| prismicT.CustomTypeModelTab\n\t\t| prismicT.CustomTypeModelDefinition =\n\t\t| prismicT.CustomTypeModelTab\n\t\t| prismicT.CustomTypeModelDefinition,\n> = {\n\tid?: string;\n\tlabel?: string;\n\tstatus?: boolean;\n\trepeatable?: boolean;\n} & (\n\t| {\n\t\t\tfields?: Definition;\n\t\t\ttabs?: never;\n\t }\n\t| {\n\t\t\ttabs?: Definition;\n\t\t\tfields?: never;\n\t }\n) &\n\tMockModelConfig;\n\ntype MockCustomTypeModel<\n\tDefinition extends\n\t\t| prismicT.CustomTypeModelTab\n\t\t| prismicT.CustomTypeModelDefinition,\n> = Definition extends prismicT.CustomTypeModelTab\n\t? prismicT.CustomTypeModel<string, Record<\"Main\", Definition>>\n\t: Definition extends prismicT.CustomTypeModelDefinition\n\t? prismicT.CustomTypeModel<string, Definition>\n\t: never;\n\nexport const customType = <\n\tDefinition extends\n\t\t| prismicT.CustomTypeModelTab\n\t\t| prismicT.CustomTypeModelDefinition,\n>(\n\tconfig: MockCustomTypeModelConfig<Definition>,\n): MockCustomTypeModel<Definition> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tlet label: string =\n\t\tconfig.label || changeCase.capitalCase(faker.words(faker.range(1, 2)));\n\tlet id: string = config.id || changeCase.snakeCase(label);\n\n\tif (config.id && !config.label) {\n\t\tlabel = changeCase.capitalCase(config.id);\n\t} else if (config.label && !config.label) {\n\t\tid = changeCase.snakeCase(config.label);\n\t}\n\n\tlet json = {} as MockCustomTypeModel<Definition>[\"json\"];\n\n\tif (\"fields\" in config && config.fields) {\n\t\tjson = { Main: config.fields } as typeof json;\n\t} else if (\"tabs\" in config && config.tabs) {\n\t\tjson = config.tabs as typeof json;\n\t}\n\n\treturn {\n\t\tid,\n\t\tlabel,\n\t\tstatus: config.status ?? faker.boolean(),\n\t\trepeatable: config.repeatable ?? faker.boolean(),\n\t\tjson,\n\t} as MockCustomTypeModel<Definition>;\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockDateModelConfig = MockModelConfig;\n\nexport const date = (\n\tconfig: MockDateModelConfig,\n): prismicT.CustomTypeModelDateField => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Date,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockEmbedModelConfig = MockModelConfig;\n\nexport const embed = (\n\tconfig: MockEmbedModelConfig,\n): prismicT.CustomTypeModelEmbedField => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Embed,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockGeoPointModelConfig = MockModelConfig;\n\nexport const geoPoint = (\n\tconfig: MockGeoPointModelConfig,\n): prismicT.CustomTypeModelGeoPointField => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.GeoPoint,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { GroupFieldModelMap, MockModelConfig } from \"../types\";\n\nexport type MockGroupModelConfig<Fields extends GroupFieldModelMap> = {\n\tfields?: Fields;\n} & MockModelConfig;\n\nexport function group<Fields extends GroupFieldModelMap>(\n\tconfig: MockGroupModelConfig<Fields>,\n): prismicT.CustomTypeModelGroupField<Fields> {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Group,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tfields: config.fields || ({} as Fields),\n\t\t},\n\t};\n}\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockImageModelConfig<ThumbnailNames extends string = string> = {\n\twithConstraint?: boolean;\n\tthumbnailNames?: readonly ThumbnailNames[];\n} & MockModelConfig;\n\nexport const image = <ThumbnailNames extends string = string>(\n\tconfig: MockImageModelConfig<ThumbnailNames>,\n): prismicT.CustomTypeModelImageField<ThumbnailNames> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst thumbnails = (config.thumbnailNames || []).map((name) => {\n\t\treturn {\n\t\t\tname,\n\t\t\twidth: faker.range(500, 2000),\n\t\t\theight: faker.range(500, 2000),\n\t\t};\n\t});\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Image,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tconstraint: {\n\t\t\t\twidth: config.withConstraint ? faker.range(500, 2000) : null,\n\t\t\t\theight: config.withConstraint ? faker.range(500, 2000) : null,\n\t\t\t},\n\t\t\tthumbnails,\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockIntegrationFieldsModelConfig = {\n\tcatalog?: string;\n} & MockModelConfig;\n\nexport const integrationFields = (\n\tconfig: MockIntegrationFieldsModelConfig,\n): prismicT.CustomTypeModelIntegrationFieldsField => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.IntegrationFields,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tcatalog: config.catalog || changeCase.snakeCase(faker.words(2)),\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockKeyTextModelConfig = MockModelConfig;\n\nexport const keyText = (\n\tconfig: MockKeyTextModelConfig,\n): prismicT.CustomTypeModelKeyTextField => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Text,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockLinkModel<AllowTargetBlank extends boolean = boolean> =\n\tprismicT.CustomTypeModelLinkField & {\n\t\tconfig: AllowTargetBlank extends true\n\t\t\t? {\n\t\t\t\t\tallowTargetBlank: true;\n\t\t\t }\n\t\t\t: {\n\t\t\t\t\tallowTargetBlank?: undefined;\n\t\t\t };\n\t};\n\nexport type MockLinkModelConfig<AllowTargetBlank extends boolean = boolean> = {\n\tallowTargetBlank?: AllowTargetBlank;\n} & MockModelConfig;\n\nexport const link = <AllowTargetBlank extends boolean = boolean>(\n\tconfig: MockLinkModelConfig<AllowTargetBlank>,\n): MockLinkModel<AllowTargetBlank> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Link,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t\tselect: null,\n\t\t\tallowTargetBlank:\n\t\t\t\t(\"allowTargetBlank\" in config\n\t\t\t\t\t? config.allowTargetBlank\n\t\t\t\t\t: faker.boolean()) || undefined,\n\t\t},\n\t} as MockLinkModel<AllowTargetBlank>;\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockLinkToMediaModelConfig = MockModelConfig;\n\nexport const linkToMedia = (\n\tconfig: MockLinkToMediaModelConfig,\n): prismicT.CustomTypeModelLinkToMediaField => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Link,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t\tselect: prismicT.CustomTypeModelLinkSelectType.Media,\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockNumberModelConfig = MockModelConfig;\n\nexport const number = (\n\tconfig: MockNumberModelConfig,\n): prismicT.CustomTypeModelNumberField => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Number,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockRichTextModelConfig<\n\tWithMultipleBlocks extends boolean = boolean,\n> = {\n\twithMultipleBlocks?: WithMultipleBlocks;\n} & MockModelConfig;\n\nexport const richText = <WithMultipleBlocks extends boolean = boolean>(\n\tconfig: MockRichTextModelConfig<WithMultipleBlocks>,\n): WithMultipleBlocks extends true\n\t? prismicT.CustomTypeModelRichTextMultiField\n\t: prismicT.CustomTypeModelRichTextSingleField => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst blockTypes = faker\n\t\t.randomElements([\n\t\t\tprismicT.RichTextNodeType.heading1,\n\t\t\tprismicT.RichTextNodeType.heading2,\n\t\t\tprismicT.RichTextNodeType.heading3,\n\t\t\tprismicT.RichTextNodeType.heading4,\n\t\t\tprismicT.RichTextNodeType.heading5,\n\t\t\tprismicT.RichTextNodeType.heading6,\n\t\t\tprismicT.RichTextNodeType.paragraph,\n\t\t\tprismicT.RichTextNodeType.preformatted,\n\t\t\tprismicT.RichTextNodeType.strong,\n\t\t\tprismicT.RichTextNodeType.em,\n\t\t\tprismicT.RichTextNodeType.listItem,\n\t\t\tprismicT.RichTextNodeType.oListItem,\n\t\t\tprismicT.RichTextNodeType.image,\n\t\t\tprismicT.RichTextNodeType.embed,\n\t\t\tprismicT.RichTextNodeType.hyperlink,\n\t\t])\n\t\t.join(\",\");\n\n\tconst blockTypeConfig =\n\t\tconfig.withMultipleBlocks ?? faker.boolean()\n\t\t\t? { multi: blockTypes }\n\t\t\t: { single: blockTypes };\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.StructuredText,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t\tallowTargetBlank: faker.boolean() ? true : undefined,\n\t\t\t...blockTypeConfig,\n\t\t},\n\t} as WithMultipleBlocks extends true\n\t\t? prismicT.CustomTypeModelRichTextMultiField\n\t\t: prismicT.CustomTypeModelRichTextSingleField;\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockSelectModelConfig<\n\tOption extends string = string,\n\tDefaultOption extends Option = Option,\n> = {\n\toptions?: Option[];\n\tdefaultValue?: DefaultOption;\n} & MockModelConfig;\n\nexport const select = <Option extends string, DefaultOption extends Option>(\n\tconfig: MockSelectModelConfig<Option, DefaultOption>,\n): prismicT.CustomTypeModelSelectField<Option, DefaultOption> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Select,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t\toptions: config.options || [],\n\t\t\tdefault_value: config.defaultValue || undefined,\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockSharedSliceModelConfig<\n\tVariation extends prismicT.SharedSliceModelVariation,\n> = {\n\tid?: string;\n\tname?: string;\n\tvariations?: Variation[];\n} & MockModelConfig;\n\nexport const sharedSlice = <\n\tVariation extends prismicT.SharedSliceModelVariation,\n>(\n\tconfig: MockSharedSliceModelConfig<Variation>,\n): prismicT.SharedSliceModel<string, Variation> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tlet name: string =\n\t\tconfig.name || changeCase.capitalCase(faker.words(faker.range(1, 2)));\n\tlet id: string = config.id || changeCase.snakeCase(name);\n\n\tif (config.id && !config.name) {\n\t\tname = changeCase.pascalCase(config.id);\n\t} else if (config.name && !config.name) {\n\t\tid = changeCase.snakeCase(config.name);\n\t}\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelSliceType.SharedSlice,\n\t\tid,\n\t\tname,\n\t\tdescription: changeCase.sentenceCase(faker.words(faker.range(5, 10))),\n\t\tvariations: config.variations || ([] as Variation[]),\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\n\nexport const sharedSliceChoice = (): prismicT.CustomTypeModelSharedSlice => {\n\treturn {\n\t\ttype: prismicT.CustomTypeModelSliceType.SharedSlice,\n\t};\n};\n","import { createFaker, Faker } from \"../lib/createFaker\";\n\nimport { MockImageData, Seed } from \"../types\";\n\nconst dataSet: MockImageData[] = [\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1604537529428-15bcbeecfe4d\",\n\t\twidth: 4240,\n\t\theight: 2832,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05\",\n\t\twidth: 7372,\n\t\theight: 4392,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1441974231531-c6227db76b6e\",\n\t\twidth: 2560,\n\t\theight: 1705,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1418065460487-3e41a6c84dc5\",\n\t\twidth: 2200,\n\t\theight: 1467,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1426604966848-d7adac402bff\",\n\t\twidth: 5616,\n\t\theight: 3744,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1604537466608-109fa2f16c3b\",\n\t\twidth: 4240,\n\t\theight: 2832,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1497436072909-60f360e1d4b1\",\n\t\twidth: 2560,\n\t\theight: 1440,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/reserve/HgZuGu3gSD6db21T3lxm_San%20Zenone.jpg\",\n\t\twidth: 6373,\n\t\theight: 4253,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1504198266287-1659872e6590\",\n\t\twidth: 4272,\n\t\theight: 2848,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1470770903676-69b98201ea1c\",\n\t\twidth: 4554,\n\t\theight: 3036,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1587502537745-84b86da1204f\",\n\t\twidth: 6550,\n\t\theight: 4367,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1431794062232-2a99a5431c6c\",\n\t\twidth: 6000,\n\t\theight: 4000,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1446329813274-7c9036bd9a1f\",\n\t\twidth: 6000,\n\t\theight: 4000,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1504567961542-e24d9439a724\",\n\t\twidth: 4608,\n\t\theight: 3456,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1444464666168-49d633b86797\",\n\t\twidth: 4844,\n\t\theight: 3234,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1553531384-397c80973a0b\",\n\t\twidth: 4335,\n\t\theight: 6502,\n\t},\n];\n\ntype GetMockImageDataConfig =\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\nexport const getMockImageData = (\n\tconfig: GetMockImageDataConfig,\n): MockImageData => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn faker.randomElement(dataSet);\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\nimport { getMockImageData } from \"../lib/getMockImageData\";\n\nimport { GroupFieldModelMap, MockModelConfig } from \"../types\";\n\nexport type MockSharedSliceVariationModelConfig<\n\tID extends string = string,\n\tPrimaryFields extends GroupFieldModelMap = GroupFieldModelMap,\n\tItemsFields extends GroupFieldModelMap = GroupFieldModelMap,\n> = {\n\tid?: ID;\n\tname?: string;\n\tprimaryFields?: PrimaryFields;\n\titemsFields?: ItemsFields;\n} & MockModelConfig;\n\nexport const sharedSliceVariation = <\n\tID extends string,\n\tPrimaryFields extends GroupFieldModelMap,\n\tItemsFields extends GroupFieldModelMap,\n>(\n\tconfig: MockSharedSliceVariationModelConfig<ID, PrimaryFields, ItemsFields>,\n): prismicT.SharedSliceModelVariation<ID, PrimaryFields, ItemsFields> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tlet name: string =\n\t\tconfig.name || changeCase.capitalCase(faker.words(faker.range(1, 2)));\n\tlet id: ID = config.id || (changeCase.snakeCase(name) as ID);\n\n\tif (config.id && !config.name) {\n\t\tname = changeCase.pascalCase(config.id);\n\t} else if (config.name && !config.name) {\n\t\tid = changeCase.snakeCase(config.name) as ID;\n\t}\n\n\tconst imageData = getMockImageData({ faker });\n\n\treturn {\n\t\tid,\n\t\tname,\n\t\tdescription: changeCase.sentenceCase(faker.words(faker.range(5, 10))),\n\t\tdocURL: faker.url(),\n\t\tversion: faker.hash(7),\n\t\tprimary: config.primaryFields || ({} as PrimaryFields),\n\t\titems: config.itemsFields || ({} as ItemsFields),\n\t\timageUrl: imageData.url,\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { GroupFieldModelMap, MockModelConfig } from \"../types\";\n\nexport type MockSliceModelConfig<\n\tNonRepeatFields extends GroupFieldModelMap = GroupFieldModelMap,\n\tRepeatFields extends GroupFieldModelMap = GroupFieldModelMap,\n> = {\n\tnonRepeatFields?: NonRepeatFields;\n\trepeatFields?: RepeatFields;\n} & MockModelConfig;\n\nexport const slice = <\n\tNonRepeatFields extends GroupFieldModelMap,\n\tRepeatFields extends GroupFieldModelMap,\n>(\n\tconfig: MockSliceModelConfig<NonRepeatFields, RepeatFields>,\n): prismicT.CustomTypeModelSlice<NonRepeatFields, RepeatFields> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelSliceType.Slice,\n\t\ticon: changeCase.snakeCase(faker.word()),\n\t\tdisplay: faker.boolean()\n\t\t\t? prismicT.CustomTypeModelSliceDisplay.Grid\n\t\t\t: prismicT.CustomTypeModelSliceDisplay.List,\n\t\tfieldset: changeCase.capitalCase(faker.words(2)),\n\t\tdescription: changeCase.sentenceCase(faker.words(faker.range(5, 10))),\n\t\trepeat: config.repeatFields || ({} as RepeatFields),\n\t\t\"non-repeat\": config.nonRepeatFields || ({} as NonRepeatFields),\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockSliceZoneModelConfig<\n\tSlices extends Record<\n\t\tstring,\n\t\tprismicT.CustomTypeModelSlice | prismicT.CustomTypeModelSharedSlice\n\t> = Record<\n\t\tstring,\n\t\tprismicT.CustomTypeModelSlice | prismicT.CustomTypeModelSharedSlice\n\t>,\n> = {\n\tchoices?: Slices;\n} & MockModelConfig;\n\nexport const sliceZone = <\n\tSlices extends Record<\n\t\tstring,\n\t\tprismicT.CustomTypeModelSlice | prismicT.CustomTypeModelSharedSlice\n\t>,\n>(\n\tconfig: MockSliceZoneModelConfig<Slices>,\n): prismicT.CustomTypeModelSliceZoneField<Slices> => {\n\tconst labels = {} as NonNullable<\n\t\tNonNullable<\n\t\t\tprismicT.CustomTypeModelSliceZoneField<Slices>[\"config\"]\n\t\t>[\"labels\"]\n\t>;\n\n\tfor (const choiceId in config.choices) {\n\t\tconst choice = config.choices[choiceId];\n\n\t\tif (choice.type === prismicT.CustomTypeModelSliceType.Slice) {\n\t\t\tlabels[choiceId as unknown as keyof typeof labels] = [];\n\t\t}\n\t}\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Slices,\n\t\tfieldset: \"Slice zone\",\n\t\tconfig: {\n\t\t\tlabels,\n\t\t\tchoices: config.choices || ({} as Slices),\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockTimestampModelConfig = MockModelConfig;\n\nexport const timestamp = (\n\tconfig: MockTimestampModelConfig,\n): prismicT.CustomTypeModelTimestampField => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.Timestamp,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockTitleModelConfig = MockModelConfig;\n\nexport const title = (\n\tconfig: MockTitleModelConfig,\n): prismicT.CustomTypeModelTitleField => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst single = faker\n\t\t.randomElements([\n\t\t\t\"heading1\",\n\t\t\t\"heading2\",\n\t\t\t\"heading3\",\n\t\t\t\"heading4\",\n\t\t\t\"heading5\",\n\t\t\t\"heading6\",\n\t\t])\n\t\t.join(\",\");\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.StructuredText,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t\tsingle,\n\t\t\tallowTargetBlank: faker.boolean() || undefined,\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockUIDModelConfig = MockModelConfig;\n\nexport const uid = (\n\tconfig: MockUIDModelConfig,\n): prismicT.CustomTypeModelUIDField => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.UID,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.word()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.words(3)),\n\t\t},\n\t};\n};\n","import * as changeCase from \"change-case\";\n\nimport { createFaker, Faker } from \"../lib/createFaker\";\n\nimport { Seed } from \"../types\";\n\ntype GenerateFieldIdConfig =\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\nexport const generateFieldId = (config: GenerateFieldIdConfig): string => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn changeCase.snakeCase(faker.words(faker.range(1, 3)));\n};\n","import { GroupFieldModelMap, MockModelConfig, ValueOf } from \"../types\";\n\nimport { boolean } from \"../model/boolean\";\nimport { color } from \"../model/color\";\nimport { contentRelationship } from \"../model/contentRelationship\";\nimport { date } from \"../model/date\";\nimport { embed } from \"../model/embed\";\nimport { geoPoint } from \"../model/geoPoint\";\nimport { image } from \"../model/image\";\nimport { integrationFields } from \"../model/integrationFields\";\nimport { keyText } from \"../model/keyText\";\nimport { link } from \"../model/link\";\nimport { linkToMedia } from \"../model/linkToMedia\";\nimport { number } from \"../model/number\";\nimport { richText } from \"../model/richText\";\nimport { select } from \"../model/select\";\nimport { timestamp } from \"../model/timestamp\";\nimport { title } from \"../model/title\";\n\nimport { createFaker } from \"../lib/createFaker\";\nimport { generateFieldId } from \"../lib/generateFieldId\";\n\nconst mockModelFns = {\n\tboolean,\n\tcolor,\n\tcontentRelationship,\n\tdate,\n\tembed,\n\tgeoPoint,\n\timage,\n\tintegrationFields,\n\tkeyText,\n\tlink,\n\tlinkToMedia,\n\tnumber,\n\trichText,\n\tselect,\n\ttimestamp,\n\ttitle,\n};\n\nexport type BuildMockGroupFieldMapConfig = MockModelConfig;\n\nexport const buildMockGroupFieldMap = (\n\tconfig: BuildMockGroupFieldMapConfig,\n): GroupFieldModelMap => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst fields: GroupFieldModelMap = {};\n\n\tconst fieldTypes = faker.randomElements(\n\t\tObject.keys(mockModelFns) as (keyof typeof mockModelFns)[],\n\t);\n\n\tfor (const fieldType of fieldTypes) {\n\t\tconst fieldId = generateFieldId({ faker });\n\t\tconst mockModelFn = mockModelFns[fieldType] as (\n\t\t\tconfig: MockModelConfig,\n\t\t) => ValueOf<GroupFieldModelMap>;\n\n\t\tfields[fieldId] = mockModelFn({ faker });\n\t}\n\n\treturn fields;\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker, Faker } from \"../lib/createFaker\";\n\nimport { GroupFieldModelMap, Seed, WithoutFakerConfig } from \"../types\";\n\nimport { boolean, MockBooleanModelConfig } from \"./boolean\";\nimport {\n\tbuildMockGroupFieldMap,\n\tBuildMockGroupFieldMapConfig,\n} from \"./buildMockGroupFieldMap\";\nimport { color, MockColorModelConfig } from \"./color\";\nimport {\n\tcontentRelationship,\n\tMockContentRelationshipModelConfig,\n} from \"./contentRelationship\";\nimport { customType, MockCustomTypeModelConfig } from \"./customType\";\nimport { date, MockDateModelConfig } from \"./date\";\nimport { embed, MockEmbedModelConfig } from \"./embed\";\nimport { geoPoint, MockGeoPointModelConfig } from \"./geoPoint\";\nimport { group, MockGroupModelConfig } from \"./group\";\nimport { image, MockImageModelConfig } from \"./image\";\nimport {\n\tintegrationFields,\n\tMockIntegrationFieldsModelConfig,\n} from \"./integrationFields\";\nimport { keyText, MockKeyTextModelConfig } from \"./keyText\";\nimport { link, MockLinkModelConfig } from \"./link\";\nimport { linkToMedia, MockLinkToMediaModelConfig } from \"./linkToMedia\";\nimport { number, MockNumberModelConfig } from \"./number\";\nimport { richText, MockRichTextModelConfig } from \"./richText\";\nimport { select, MockSelectModelConfig } from \"./select\";\nimport { sharedSlice, MockSharedSliceModelConfig } from \"./sharedSlice\";\nimport { sharedSliceChoice } from \"./sharedSliceChoice\";\nimport {\n\tsharedSliceVariation,\n\tMockSharedSliceVariationModelConfig,\n} from \"./sharedSliceVariation\";\nimport { slice, MockSliceModelConfig } from \"./slice\";\nimport { sliceZone, MockSliceZoneModelConfig } from \"./sliceZone\";\nimport { timestamp, MockTimestampModelConfig } from \"./timestamp\";\nimport { title, MockTitleModelConfig } from \"./title\";\nimport { uid, MockUIDModelConfig } from \"./uid\";\n\nexport const createModelMockFactory = (\n\t...args: ConstructorParameters<typeof ModelMockFactory>\n): ModelMockFactory => {\n\treturn new ModelMockFactory(...args);\n};\n\ntype ModelMockFactoryConfig =\n\t| {\n\t\t\tseed: Seed;\n\t }\n\t| {\n\t\t\tfaker: Faker;\n\t };\n\nexport class ModelMockFactory {\n\tprivate faker: Faker;\n\n\tconstructor(config: ModelMockFactoryConfig) {\n\t\tthis.faker = \"faker\" in config ? config.faker : createFaker(config.seed);\n\t}\n\n\tget seed() {\n\t\treturn this.faker.seed;\n\t}\n\n\tbuildMockGroupFieldMap(\n\t\tconfig?: WithoutFakerConfig<BuildMockGroupFieldMapConfig>,\n\t) {\n\t\treturn buildMockGroupFieldMap({ ...config, faker: this.faker });\n\t}\n\n\tboolean(config?: WithoutFakerConfig<MockBooleanModelConfig>) {\n\t\treturn boolean({ ...config, faker: this.faker });\n\t}\n\n\tcolor(config?: WithoutFakerConfig<MockColorModelConfig>) {\n\t\treturn color({ ...config, faker: this.faker });\n\t}\n\n\tcontentRelationship<CustomTypeIDs extends string, Tags extends string>(\n\t\tconfig?: WithoutFakerConfig<\n\t\t\tMockContentRelationshipModelConfig<CustomTypeIDs, Tags>\n\t\t>,\n\t) {\n\t\treturn contentRelationship({ ...config, faker: this.faker });\n\t}\n\n\tcustomType<\n\t\tDefinition extends\n\t\t\t| prismicT.CustomTypeModelTab\n\t\t\t| prismicT.CustomTypeModelDefinition,\n\t>(config?: WithoutFakerConfig<MockCustomTypeModelConfig<Definition>>) {\n\t\treturn customType({ ...config, faker: this.faker });\n\t}\n\n\tdate(config?: WithoutFakerConfig<MockDateModelConfig>) {\n\t\treturn date({ ...config, faker: this.faker });\n\t}\n\n\tembed(config?: WithoutFakerConfig<MockEmbedModelConfig>) {\n\t\treturn embed({ ...config, faker: this.faker });\n\t}\n\n\tgeoPoint(config?: WithoutFakerConfig<MockGeoPointModelConfig>) {\n\t\treturn geoPoint({ ...config, faker: this.faker });\n\t}\n\n\tgroup<Fields extends GroupFieldModelMap>(\n\t\tconfig?: WithoutFakerConfig<MockGroupModelConfig<Fields>>,\n\t) {\n\t\treturn group({ ...config, faker: this.faker });\n\t}\n\n\timage<ThumbnailNames extends string = string>(\n\t\tconfig?: WithoutFakerConfig<MockImageModelConfig<ThumbnailNames>>,\n\t) {\n\t\treturn image({ ...config, faker: this.faker });\n\t}\n\n\tintegrationFields(\n\t\tconfig?: WithoutFakerConfig<MockIntegrationFieldsModelConfig>,\n\t) {\n\t\treturn integrationFields({ ...config, faker: this.faker });\n\t}\n\n\tkeyText(config?: WithoutFakerConfig<MockKeyTextModelConfig>) {\n\t\treturn keyText({ ...config, faker: this.faker });\n\t}\n\n\tlink<AllowTargetBlank extends boolean = boolean>(\n\t\tconfig?: WithoutFakerConfig<MockLinkModelConfig<AllowTargetBlank>>,\n\t) {\n\t\treturn link({ ...config, faker: this.faker });\n\t}\n\n\tlinkToMedia(config?: WithoutFakerConfig<MockLinkToMediaModelConfig>) {\n\t\treturn linkToMedia({ ...config, faker: this.faker });\n\t}\n\n\tnumber(config?: WithoutFakerConfig<MockNumberModelConfig>) {\n\t\treturn number({ ...config, faker: this.faker });\n\t}\n\n\trichText<WithMultipleBlocks extends boolean = boolean>(\n\t\tconfig?: WithoutFakerConfig<MockRichTextModelConfig<WithMultipleBlocks>>,\n\t) {\n\t\treturn richText({ ...config, faker: this.faker });\n\t}\n\n\tselect<Option extends string, DefaultOption extends Option>(\n\t\tconfig?: WithoutFakerConfig<MockSelectModelConfig<Option, DefaultOption>>,\n\t) {\n\t\treturn select({ ...config, faker: this.faker });\n\t}\n\n\tsharedSlice<Variation extends prismicT.SharedSliceModelVariation>(\n\t\tconfig?: WithoutFakerConfig<MockSharedSliceModelConfig<Variation>>,\n\t) {\n\t\treturn sharedSlice({ ...config, faker: this.faker });\n\t}\n\n\tsharedSliceChoice() {\n\t\treturn sharedSliceChoice();\n\t}\n\n\tsharedSliceVariation<\n\t\tID extends string,\n\t\tPrimaryFields extends GroupFieldModelMap,\n\t\tItemsFields extends GroupFieldModelMap,\n\t>(\n\t\tconfig?: WithoutFakerConfig<\n\t\t\tMockSharedSliceVariationModelConfig<ID, PrimaryFields, ItemsFields>\n\t\t>,\n\t) {\n\t\treturn sharedSliceVariation({ ...config, faker: this.faker });\n\t}\n\n\tslice<\n\t\tNonRepeatFields extends GroupFieldModelMap,\n\t\tRepeatFields extends GroupFieldModelMap,\n\t>(\n\t\tconfig?: WithoutFakerConfig<\n\t\t\tMockSliceModelConfig<NonRepeatFields, RepeatFields>\n\t\t>,\n\t) {\n\t\treturn slice({ ...config, faker: this.faker });\n\t}\n\n\tsliceZone<\n\t\tSlices extends Record<\n\t\t\tstring,\n\t\t\tprismicT.CustomTypeModelSlice | prismicT.CustomTypeModelSharedSlice\n\t\t>,\n\t>(config?: WithoutFakerConfig<MockSliceZoneModelConfig<Slices>>) {\n\t\treturn sliceZone({ ...config, faker: this.faker });\n\t}\n\n\ttimestamp(config?: WithoutFakerConfig<MockTimestampModelConfig>) {\n\t\treturn timestamp({ ...config, faker: this.faker });\n\t}\n\n\ttitle(config?: WithoutFakerConfig<MockTitleModelConfig>) {\n\t\treturn title({ ...config, faker: this.faker });\n\t}\n\n\tuid(config?: WithoutFakerConfig<MockUIDModelConfig>) {\n\t\treturn uid({ ...config, faker: this.faker });\n\t}\n}\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nexport type MockTimestampValueConfig<\n\tModel extends prismicT.CustomTypeModelTimestampField = prismicT.CustomTypeModelTimestampField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\tafter?: Date;\n\tbefore?: Date;\n} & MockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\nexport type MockTimestampValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.TimestampField<State>;\n\nexport const timestamp = <\n\tModel extends prismicT.CustomTypeModelTimestampField = prismicT.CustomTypeModelTimestampField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockTimestampValueConfig<Model, State>,\n): MockTimestampValue<State> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tif (config.state === \"empty\") {\n\t\treturn null as MockTimestampValue<State>;\n\t} else {\n\t\tlet date: Date;\n\n\t\t// Working with Date objects produces non-deterministic values;\n\t\t// machines can return different values due to differing\n\t\t// timezones and other unknown factors. To get around this, we\n\t\t// can can remove time from the given values and only use their dates.\n\t\tconst after = config.after\n\t\t\t? new Date(config.after.toISOString().split(\"T\")[0])\n\t\t\t: undefined;\n\t\tconst before = config.before\n\t\t\t? new Date(config.before.toISOString().split(\"T\")[0])\n\t\t\t: undefined;\n\n\t\tif (after && before) {\n\t\t\tdate = faker.dateBetween(after, before);\n\t\t} else if (after) {\n\t\t\tdate = faker.dateAfter(after);\n\t\t} else if (before) {\n\t\t\tdate = faker.dateBefore(before);\n\t\t} else {\n\t\t\tdate = faker.date();\n\t\t}\n\n\t\treturn date.toISOString() as MockTimestampValue<State>;\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\n\ntype BuildEmbedFieldConfig<Document extends prismicT.PrismicDocument> = {\n\tdocument: Document;\n};\n\nexport const buildAlternativeLanguage = <\n\tDocument extends prismicT.PrismicDocument,\n>(\n\tconfig: BuildEmbedFieldConfig<Document>,\n): prismicT.AlternateLanguage<Document[\"type\"], Document[\"lang\"]> => {\n\treturn {\n\t\tid: config.document.id,\n\t\ttype: config.document.type,\n\t\tlang: config.document.lang,\n\t\tuid: config.document.uid || undefined,\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\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 prismicT.CustomTypeModel = prismicT.CustomTypeModel,\n> = {\n\twithURL?: boolean;\n\talternateLanguages?: prismicT.PrismicDocument[];\n\tconfigs?: ValueForModelMapConfigs;\n} & MockValueConfig<Model>;\n\nexport const customType = <\n\tModel extends prismicT.CustomTypeModel = prismicT.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 prismicT.CustomTypeModelTab;\n\n\tconst dataFieldModelsMap: prismicT.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 !== prismicT.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 === prismicT.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 ? changeCase.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 prismicT.PrismicDocument[\"slugs\"],\n\t\tlinked_documents: [] as prismicT.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","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nexport type MockColorValueConfig<\n\tModel extends prismicT.CustomTypeModelColorField = prismicT.CustomTypeModelColorField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = MockValueConfig<Model> & MockValueStateConfig<State>;\n\nexport type MockColorValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.ColorField<State>;\n\nexport const color = <\n\tModel extends prismicT.CustomTypeModelColorField = prismicT.CustomTypeModelColorField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockColorValueConfig<Model, State>,\n): MockColorValue<State> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn (\n\t\tconfig.state === \"empty\" ? null : faker.hexColor().toUpperCase()\n\t) as MockColorValue<State>;\n};\n","import * as prismicT from \"@prismicio/types\";\n\ntype BuildEmbedFieldConfig<Document extends prismicT.PrismicDocument> = {\n\tdocument: Document;\n};\n\nexport const buildContentRelationshipField = <\n\tDocument extends prismicT.PrismicDocument,\n>(\n\tconfig: BuildEmbedFieldConfig<Document>,\n): prismicT.RelationField<\n\tDocument[\"type\"],\n\tDocument[\"lang\"],\n\tnever,\n\t\"filled\"\n> => {\n\treturn {\n\t\tlink_type: prismicT.LinkType.Document,\n\t\tid: config.document.id,\n\t\tuid: config.document.uid || undefined,\n\t\ttype: config.document.type,\n\t\ttags: config.document.tags,\n\t\tlang: config.document.lang,\n\t\turl: config.document.url || undefined,\n\t\tslug: config.document.slugs[0],\n\t\tisBroken: false,\n\t};\n};\n","import * as changeCase from \"change-case\";\n\nimport { createFaker, Faker } from \"../lib/createFaker\";\n\nimport { Seed } from \"../types\";\n\ntype GenerateFieldIdConfig =\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\nexport const generateCustomTypeId = (config: GenerateFieldIdConfig): string => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn changeCase.snakeCase(faker.words(faker.range(1, 3)));\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { buildContentRelationshipField } from \"../lib/buildContentRelationshipField\";\nimport { createFaker } from \"../lib/createFaker\";\nimport { generateCustomTypeId } from \"../lib/generateCustomTypeId\";\nimport { generateTags } from \"../lib/generateTags\";\n\nimport {\n\tMockValueStateConfig,\n\tMockValueConfig,\n\tIterableElement,\n} from \"../types\";\n\nimport * as modelGen from \"../model\";\n\nimport { document as documentGen } from \"./document\";\n\nexport type MockContentRelationshipValueConfig<\n\tModel extends prismicT.CustomTypeModelContentRelationshipField = prismicT.CustomTypeModelContentRelationshipField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\t/**\n\t * A list of potential documents to which the field can be linked.\n\t */\n\tlinkableDocuments?: prismicT.PrismicDocument[];\n} & MockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\ntype MockContentRelationshipValue<\n\tModel extends prismicT.CustomTypeModelContentRelationshipField = prismicT.CustomTypeModelContentRelationshipField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.RelationField<\n\tIterableElement<NonNullable<Model[\"config\"]>[\"customtypes\"]>,\n\tstring,\n\tnever,\n\tState\n>;\n\nexport const contentRelationship = <\n\tModel extends prismicT.CustomTypeModelContentRelationshipField = prismicT.CustomTypeModelContentRelationshipField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockContentRelationshipValueConfig<Model, State>,\n): MockContentRelationshipValue<Model, State> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tif (config.state === \"empty\") {\n\t\treturn {\n\t\t\tlink_type: prismicT.LinkType.Document,\n\t\t} as MockContentRelationshipValue<Model, State>;\n\t} else {\n\t\tconst model = config.model || modelGen.contentRelationship({ faker });\n\n\t\tconst linkableDocuments = config.linkableDocuments\n\t\t\t? config.linkableDocuments.filter(\n\t\t\t\t\t(\n\t\t\t\t\t\tdocument,\n\t\t\t\t\t): document is prismicT.PrismicDocument<\n\t\t\t\t\t\tnever,\n\t\t\t\t\t\tNonNullable<NonNullable<Model[\"config\"]>[\"customtypes\"]>[number]\n\t\t\t\t\t> => {\n\t\t\t\t\t\tlet shouldKeep = true;\n\n\t\t\t\t\t\tif (model.config?.customtypes) {\n\t\t\t\t\t\t\tshouldKeep =\n\t\t\t\t\t\t\t\tshouldKeep && model.config.customtypes.includes(document.type);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (model.config?.tags) {\n\t\t\t\t\t\t\tshouldKeep =\n\t\t\t\t\t\t\t\tshouldKeep &&\n\t\t\t\t\t\t\t\tmodel.config.tags.some((tag) => document.tags.includes(tag));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn shouldKeep;\n\t\t\t\t\t},\n\t\t\t )\n\t\t\t: [\n\t\t\t\t\t{\n\t\t\t\t\t\t...documentGen({ faker }),\n\t\t\t\t\t\ttype: model.config?.customtypes\n\t\t\t\t\t\t\t? faker.randomElement(model.config.customtypes)\n\t\t\t\t\t\t\t: generateCustomTypeId({ faker }),\n\t\t\t\t\t\ttags: model.config?.tags\n\t\t\t\t\t\t\t? faker.randomElements(model.config.tags)\n\t\t\t\t\t\t\t: generateTags({ faker }),\n\t\t\t\t\t} as prismicT.PrismicDocument<\n\t\t\t\t\t\tnever,\n\t\t\t\t\t\tNonNullable<NonNullable<Model[\"config\"]>[\"customtypes\"]>[number]\n\t\t\t\t\t>,\n\t\t\t ];\n\n\t\tconst document = faker.randomElement(linkableDocuments);\n\n\t\tif (!document) {\n\t\t\tthrow new Error(\"A linkable document could not be found.\");\n\t\t}\n\n\t\treturn buildContentRelationshipField({\n\t\t\tdocument,\n\t\t}) as unknown as MockContentRelationshipValue<Model, State>;\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nimport { MockTimestampValueConfig, timestamp } from \"./timestamp\";\n\nexport type MockDateValueConfig<\n\tModel extends prismicT.CustomTypeModelDateField = prismicT.CustomTypeModelDateField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = Pick<MockTimestampValueConfig, \"after\" | \"before\"> &\n\tMockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\nexport type MockDateValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.DateField<State>;\n\nexport const date = <\n\tModel extends prismicT.CustomTypeModelDateField = prismicT.CustomTypeModelDateField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockDateValueConfig<Model, State>,\n): MockDateValue<State> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn (\n\t\tconfig.state === \"empty\"\n\t\t\t? null\n\t\t\t: timestamp({\n\t\t\t\t\tfaker,\n\t\t\t\t\tafter: config.after,\n\t\t\t\t\tbefore: config.before,\n\t\t\t\t\tstate: \"filled\",\n\t\t\t }).split(\"T\")[0]\n\t) as MockDateValue<State>;\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker, Faker } from \"../lib/createFaker\";\n\nimport { Seed } from \"../types\";\n\ntype BuildEmbedFieldConfig<\n\tData extends prismicT.AnyOEmbed = prismicT.AnyOEmbed,\n> = {\n\turl?: string;\n\thtml?: string;\n\tdata: Data;\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 buildEmbedField = <\n\tData extends prismicT.AnyOEmbed = prismicT.AnyOEmbed,\n>(\n\tconfig: BuildEmbedFieldConfig<Data>,\n): prismicT.EmbedField<Data, \"filled\"> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn {\n\t\tembed_url: config.url ?? faker.url(),\n\t\thtml: `<div>embed html</div>`,\n\t\t...config.data,\n\t} as prismicT.EmbedField<Data, \"filled\">;\n};\n","import { createFaker, Faker } from \"../lib/createFaker\";\n\nimport { MockEmbedData, Seed } from \"../types\";\n\nconst dataSet: MockEmbedData[] = [\n\t{\n\t\tversion: \"1.0\",\n\t\ttype: \"video\",\n\t\tembed_url: \"https://www.youtube.com/embed/fiOwHYFkUz0\",\n\t\tthumbnail_url: \"https://i.ytimg.com/vi/fiOwHYFkUz0/hqdefault.jpg\",\n\t\tthumbnail_height: 360,\n\t\tthumbnail_width: 480,\n\t\thtml: '<iframe width=\"200\" height=\"113\" src=\"https://www.youtube.com/embed/fiOwHYFkUz0?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>',\n\t\twidth: 200,\n\t\theight: 113,\n\t},\n\t{\n\t\tversion: \"1.0\",\n\t\ttype: \"video\",\n\t\tembed_url: \"https://www.youtube.com/embed/c-ATzcy6VkI\",\n\t\tthumbnail_url: \"https://i.ytimg.com/vi/c-ATzcy6VkI/hqdefault.jpg\",\n\t\tthumbnail_height: 360,\n\t\tthumbnail_width: 480,\n\t\thtml: '<iframe width=\"200\" height=\"113\" src=\"https://www.youtube.com/embed/c-ATzcy6VkI?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>',\n\t\twidth: 200,\n\t\theight: 113,\n\t},\n\t{\n\t\tversion: \"1.0\",\n\t\ttype: \"video\",\n\t\tembed_url: \"https://www.youtube.com/watch?v=fiOwHYFkUz0\",\n\t\tthumbnail_url: \"https://i.ytimg.com/vi/iewZXv94XGY/hqdefault.jpg\",\n\t\tthumbnail_height: 360,\n\t\tthumbnail_width: 480,\n\t\thtml: '<iframe width=\"200\" height=\"113\" src=\"https://www.youtube.com/embed/iewZXv94XGY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>',\n\t\twidth: 200,\n\t\theight: 113,\n\t},\n\t{\n\t\tversion: \"1.0\",\n\t\ttype: \"rich\",\n\t\tembed_url: \"https://twitter.com/prismicio/status/1356293316158095361\",\n\t\tthumbnail_url: null,\n\t\tthumbnail_height: null,\n\t\tthumbnail_width: null,\n\t\thtml: '<blockquote class=\"twitter-tweet\"><p lang=\"en\" dir=\"ltr\">Gatsby is a popular choice for Prismic users and we work hard on delivering a CMS that plays to its strengths.<br><br>But, what makes <a href=\"https://twitter.com/GatsbyJS?ref_src=twsrc%5Etfw\">@GatsbyJS</a> so popular?<br><br>Here are some of <a href=\"https://twitter.com/mxstbr?ref_src=twsrc%5Etfw\">@mxstbr</a>'s thoughts on Gatsby's success and how they're improving developer experience.<a href=\"https://t.co/ZjCPvsWWUD\">https://t.co/ZjCPvsWWUD</a> <a href=\"https://t.co/EQqzJpeNKl\">pic.twitter.com/EQqzJpeNKl</a></p>— Prismic (@prismicio) <a href=\"https://twitter.com/prismicio/status/1356293316158095361?ref_src=twsrc%5Etfw\">February 1, 2021</a></blockquote>\\n<script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>\\n',\n\t\twidth: 200,\n\t\theight: 113,\n\t},\n\t{\n\t\ttype: \"rich\",\n\t\tversion: \"1.0\",\n\t\tembed_url: \"https://twitter.com/timbenniks/status/1304146886832594944\",\n\t\tthumbnail_url: null,\n\t\tthumbnail_width: null,\n\t\tthumbnail_height: null,\n\t\thtml: '<blockquote class=\"twitter-tweet\"><p lang=\"en\" dir=\"ltr\">I’ve been diving deep on <a href=\"https://twitter.com/prismicio?ref_src=twsrc%5Etfw\">@prismicio</a> <a href=\"https://twitter.com/hashtag/slicemachine?src=hash&ref_src=twsrc%5Etfw\">#slicemachine</a> today. I made all my own components and I used custom slices. It works like a charm with <a href=\"https://twitter.com/nuxt_js?ref_src=twsrc%5Etfw\">@nuxt_js</a>. Also: I’m coding with this view. <a href=\"https://t.co/F0I8X9gz39\">pic.twitter.com/F0I8X9gz39</a></p>— Tim Benniks (@timbenniks) <a href=\"https://twitter.com/timbenniks/status/1304146886832594944?ref_src=twsrc%5Etfw\">September 10, 2020</a></blockquote>\\n<script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>\\n',\n\t\twidth: 200,\n\t\theight: 113,\n\t},\n\t{\n\t\tversion: \"1.0\",\n\t\ttype: \"rich\",\n\t\tembed_url: \"https://twitter.com/prismicio/status/1354112310252630016\",\n\t\tthumbnail_url: null,\n\t\tthumbnail_width: null,\n\t\tthumbnail_height: null,\n\t\thtml: '<blockquote class=\"twitter-tweet\"><p lang=\"en\" dir=\"ltr\">We're launching a new <a href=\"https://twitter.com/hashtag/SliceContest?src=hash&ref_src=twsrc%5Etfw\">#SliceContest</a> tomorrow along with Slice Machine upgrades.<br><br>Want to know more? Join us at tomorrow's Product Meet-up👇<a href=\"https://t.co/prYSypiAvB\">https://t.co/prYSypiAvB</a><br><br>We can't tell you any further details for now, but here's a sneak peek at the prizes👀 <a href=\"https://t.co/fV1eoGlEBh\">pic.twitter.com/fV1eoGlEBh</a></p>— Prismic (@prismicio) <a href=\"https://twitter.com/prismicio/status/1354112310252630016?ref_src=twsrc%5Etfw\">January 26, 2021</a></blockquote>\\n<script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>\\n',\n\t\twidth: 200,\n\t\theight: 113,\n\t},\n\t{\n\t\tversion: \"1.0\",\n\t\ttype: \"rich\",\n\t\tembed_url: \"https://twitter.com/prismicio/status/1354835716430319617\",\n\t\tthumbnail_url: null,\n\t\tthumbnail_width: null,\n\t\tthumbnail_height: null,\n\t\thtml: '<blockquote class=\"twitter-tweet\"><p lang=\"en\" dir=\"ltr\">Does anyone want to create a wildly popular website for discussing 'Wall Street Bets' using Prismic?<br><br>It may or may not have to look a lot like <a href=\"https://twitter.com/hashtag/reddit?src=hash&ref_src=twsrc%5Etfw\">#reddit</a> and we won't make it private.<br><br>Just asking for some friends...</p>— Prismic (@prismicio) <a href=\"https://twitter.com/prismicio/status/1354835716430319617?ref_src=twsrc%5Etfw\">January 28, 2021</a></blockquote>\\n<script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>\\n',\n\t\twidth: 200,\n\t\theight: 113,\n\t},\n];\ntype GetMockEmbedDataConfig =\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\nexport const getMockEmbedData = (\n\tconfig: GetMockEmbedDataConfig,\n): MockEmbedData => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn faker.randomElement(dataSet);\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { buildEmbedField } from \"../lib/buildEmbedField\";\nimport { createFaker } from \"../lib/createFaker\";\nimport { getMockEmbedData } from \"../lib/getMockEmbedData\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nexport type MockEmbedValueConfig<\n\tModel extends prismicT.CustomTypeModelEmbedField = prismicT.CustomTypeModelEmbedField,\n\tData extends prismicT.AnyOEmbed = prismicT.AnyOEmbed,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\turl?: string;\n\thtml?: string;\n\tdata?: Data;\n} & MockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\nexport type MockEmbedValue<\n\tData extends prismicT.AnyOEmbed = prismicT.AnyOEmbed,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.EmbedField<Data, State>;\n\nexport const embed = <\n\tModel extends prismicT.CustomTypeModelEmbedField = prismicT.CustomTypeModelEmbedField,\n\tData extends prismicT.AnyOEmbed = prismicT.AnyOEmbed,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockEmbedValueConfig<Model, Data, State>,\n): MockEmbedValue<Data, State> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst data = config.data ?? getMockEmbedData({ faker });\n\n\treturn (\n\t\tconfig.state === \"empty\"\n\t\t\t? {}\n\t\t\t: buildEmbedField({\n\t\t\t\t\tfaker,\n\t\t\t\t\turl: config.url ?? (\"embed_url\" in data ? data.embed_url : undefined),\n\t\t\t\t\thtml: config.html ?? (\"html\" in data ? data.html : undefined),\n\t\t\t\t\tdata,\n\t\t\t })\n\t) as MockEmbedValue<Data, State>;\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nexport type MockGeoPointValueConfig<\n\tModel extends prismicT.CustomTypeModelGeoPointField = prismicT.CustomTypeModelGeoPointField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = MockValueConfig<Model> & MockValueStateConfig<State>;\n\nexport type MockGeoPointValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.GeoPointField<State>;\n\nexport const geoPoint = <\n\tModel extends prismicT.CustomTypeModelGeoPointField = prismicT.CustomTypeModelGeoPointField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockGeoPointValueConfig<Model, State>,\n): MockGeoPointValue<State> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn (\n\t\tconfig.state === \"empty\"\n\t\t\t? {}\n\t\t\t: {\n\t\t\t\t\tlongitude: faker.rangeFloat(-180, 180),\n\t\t\t\t\tlatitude: faker.rangeFloat(-90, 90),\n\t\t\t }\n\t) as MockGeoPointValue<State>;\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\nimport {\n\tvalueForModelMap,\n\tValueForModelMapConfigs,\n} from \"../lib/valueForModelMap\";\n\nimport { MockValueConfig, MockValueStateConfig, ModelValue } from \"../types\";\n\nimport * as modelGen from \"../model\";\n\nexport type MockGroupValueConfig<\n\tModel extends prismicT.CustomTypeModelGroupField = prismicT.CustomTypeModelGroupField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\titemsCount?: State extends \"empty\" ? 0 : number;\n\tconfigs?: ValueForModelMapConfigs;\n} & MockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\nexport type MockGroupValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.DateField<State>;\n\nexport const group = <\n\tModel extends prismicT.CustomTypeModelGroupField = prismicT.CustomTypeModelGroupField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockGroupValueConfig<Model, State>,\n): ModelValue<Model, State> => {\n\tif (config.state === \"empty\") {\n\t\treturn [] as ModelValue<Model, State>;\n\t} else {\n\t\tconst faker = config.faker || createFaker(config.seed);\n\n\t\tconst model = config.model || modelGen.group({ faker });\n\n\t\tconst itemsCount = config.itemsCount ?? faker.range(1, 6);\n\n\t\treturn Array(itemsCount)\n\t\t\t.fill(undefined)\n\t\t\t.map(() => {\n\t\t\t\treturn valueForModelMap({\n\t\t\t\t\tfaker,\n\t\t\t\t\tmap: model.config?.fields || {},\n\t\t\t\t\tconfigs: config.configs,\n\t\t\t\t});\n\t\t\t}) as ModelValue<Model, State>;\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker, Faker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockImageData, Seed } from \"../types\";\n\ntype BuildImageFieldConfig<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\timageData: MockImageData;\n\tconstraint?: NonNullable<\n\t\tprismicT.CustomTypeModelImageField[\"config\"]\n\t>[\"constraint\"];\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\tPick<MockValueStateConfig<State>, \"state\">;\n\nexport const buildImageFieldImage = <\n\tState extends prismicT.FieldState = prismicT.FieldState,\n>(\n\tconfig: BuildImageFieldConfig<State>,\n): prismicT.ImageFieldImage<State> => {\n\tif (config.state === \"empty\") {\n\t\treturn {\n\t\t\turl: null,\n\t\t\tdimensions: null,\n\t\t\talt: null,\n\t\t\tcopyright: null,\n\t\t} as prismicT.ImageFieldImage<State>;\n\t} else {\n\t\tconst faker = config.faker || createFaker(config.seed);\n\n\t\tconst url = new URL(config.imageData.url);\n\n\t\tconst dimensions = {\n\t\t\twidth: config.constraint?.width ?? config.imageData.width,\n\t\t\theight: config.constraint?.height ?? config.imageData.height,\n\t\t};\n\n\t\turl.searchParams.set(\"w\", dimensions.width.toString());\n\t\turl.searchParams.set(\"h\", dimensions.height.toString());\n\t\turl.searchParams.set(\"fit\", \"crop\");\n\n\t\treturn {\n\t\t\turl: url.toString(),\n\t\t\tdimensions,\n\t\t\talt: changeCase.sentenceCase(faker.words(faker.range(5, 15))),\n\t\t\tcopyright: changeCase.sentenceCase(faker.words(faker.range(5, 15))),\n\t\t} as prismicT.ImageFieldImage<State>;\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { buildImageFieldImage } from \"../lib/buildImageFieldImage\";\nimport { createFaker } from \"../lib/createFaker\";\nimport { getMockImageData } from \"../lib/getMockImageData\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nimport * as modelGen from \"../model\";\n\nexport type MockImageValueConfig<\n\tModel extends prismicT.CustomTypeModelImageField = prismicT.CustomTypeModelImageField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = MockValueConfig<Model> & MockValueStateConfig<State>;\n\nexport type MockImageValue<\n\tModel extends prismicT.CustomTypeModelImageField = prismicT.CustomTypeModelImageField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.ImageField<\n\tNonNullable<NonNullable<Model[\"config\"]>[\"thumbnails\"]>[number][\"name\"],\n\tState\n>;\n\nexport const image = <\n\tModel extends prismicT.CustomTypeModelImageField = prismicT.CustomTypeModelImageField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockImageValueConfig<Model, State>,\n): MockImageValue<Model, State> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst model = config.model || modelGen.image({ faker });\n\tconst imageData = getMockImageData({ faker });\n\n\tconst value = buildImageFieldImage({\n\t\tfaker,\n\t\timageData,\n\t\tconstraint: model.config?.constraint,\n\t\tstate: config.state,\n\t}) as MockImageValue<Model, State>;\n\n\tif (model.config?.thumbnails) {\n\t\tfor (const thumbnail of model.config.thumbnails) {\n\t\t\t// TODO: Resolve the following type error\n\t\t\t// @ts-expect-error - Unsure how to fix this type mismatch\n\t\t\tvalue[thumbnail.name as keyof typeof value] = buildImageFieldImage({\n\t\t\t\tfaker,\n\t\t\t\timageData,\n\t\t\t\tconstraint: {\n\t\t\t\t\twidth: thumbnail.width,\n\t\t\t\t\theight: thumbnail.height,\n\t\t\t\t},\n\t\t\t\tstate: config.state,\n\t\t\t});\n\t\t}\n\t}\n\n\treturn value;\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nexport type MockIntegrationFieldsValueConfig<\n\tModel extends prismicT.CustomTypeModelIntegrationFieldsField = prismicT.CustomTypeModelIntegrationFieldsField,\n\tData extends Record<string, unknown> = Record<string, unknown>,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\tdata?: Data;\n} & MockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\nexport type MockIntegrationFieldsValue<\n\tData extends Record<string, unknown> = Record<string, unknown>,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.IntegrationFields<Data, State>;\n\nexport const integrationFields = <\n\tModel extends prismicT.CustomTypeModelIntegrationFieldsField = prismicT.CustomTypeModelIntegrationFieldsField,\n\tData extends Record<string, unknown> = Record<string, unknown>,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockIntegrationFieldsValueConfig<Model, Data, State>,\n): MockIntegrationFieldsValue<Data, State> => {\n\tconst data = config.data ?? {};\n\n\treturn (config.state === \"empty\" ? null : data) as MockIntegrationFieldsValue<\n\t\tData,\n\t\tState\n\t>;\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nexport type MockKeyTextValueConfig<\n\tModel extends prismicT.CustomTypeModelKeyTextField = prismicT.CustomTypeModelKeyTextField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = MockValueConfig<Model> & MockValueStateConfig<State>;\n\nexport type MockKeyTextValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.KeyTextField<State>;\n\nexport const keyText = <\n\tModel extends prismicT.CustomTypeModelKeyTextField = prismicT.CustomTypeModelKeyTextField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockKeyTextValueConfig<Model, State>,\n): MockKeyTextValue<State> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn (\n\t\tconfig.state === \"empty\" ? null : changeCase.sentenceCase(faker.words(3))\n\t) as MockKeyTextValue<State>;\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nexport type MockLinkToMediaValueConfig<\n\tModel extends prismicT.CustomTypeModelLinkToMediaField = prismicT.CustomTypeModelLinkToMediaField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = MockValueConfig<Model> & MockValueStateConfig<State>;\n\ntype MockLinkToMediaValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.LinkToMediaField<State>;\n\nexport const linkToMedia = <\n\tModel extends prismicT.CustomTypeModelLinkToMediaField = prismicT.CustomTypeModelLinkToMediaField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockLinkToMediaValueConfig<Model, State>,\n): MockLinkToMediaValue<State> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tif (config.state === \"empty\") {\n\t\treturn {\n\t\t\tlink_type: prismicT.LinkType.Media,\n\t\t} as MockLinkToMediaValue<State>;\n\t} else {\n\t\treturn {\n\t\t\tlink_type: prismicT.LinkType.Media,\n\t\t\tname: `${changeCase.snakeCase(faker.words(faker.range(1, 2)))}.example`,\n\t\t\tkind: changeCase.snakeCase(faker.word()),\n\t\t\turl: faker.url(),\n\t\t\tsize: faker.range(500, 3000).toString(),\n\t\t\theight: faker.range(500, 3000).toString(),\n\t\t\twidth: faker.range(500, 3000).toString(),\n\t\t} as MockLinkToMediaValue<State>;\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nimport * as modelGen from \"../model\";\n\nimport { contentRelationship } from \"./contentRelationship\";\nimport { linkToMedia } from \"./linkToMedia\";\n\nexport type MockLinkValueConfig<\n\tLinkType extends typeof prismicT.LinkType[keyof typeof prismicT.LinkType] = typeof prismicT.LinkType[keyof typeof prismicT.LinkType],\n\tModel extends prismicT.CustomTypeModelLinkField = prismicT.CustomTypeModelLinkField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\ttype?: LinkType;\n\twithTargetBlank?: NonNullable<\n\t\tModel[\"config\"]\n\t>[\"allowTargetBlank\"] extends undefined\n\t\t? false\n\t\t: boolean;\n\t/**\n\t * A list of potential documents to which the field can be linked.\n\t */\n\tlinkableDocuments?: LinkType extends typeof prismicT.LinkType.Document\n\t\t? prismicT.PrismicDocument[]\n\t\t: never;\n} & MockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\ntype MockLinkValue<\n\tLinkType extends typeof prismicT.LinkType[keyof typeof prismicT.LinkType] = typeof prismicT.LinkType[keyof typeof prismicT.LinkType],\n\tState extends prismicT.FieldState = \"filled\",\n> = State extends \"empty\"\n\t? prismicT.EmptyLinkField<LinkType>\n\t: LinkType extends typeof prismicT.LinkType.Web\n\t? prismicT.FilledLinkToWebField\n\t: LinkType extends typeof prismicT.LinkType.Media\n\t? prismicT.FilledLinkToMediaField\n\t: LinkType extends typeof prismicT.LinkType.Document\n\t? prismicT.FilledLinkToDocumentField\n\t: never;\n\nexport const link = <\n\tLinkType extends typeof prismicT.LinkType[keyof typeof prismicT.LinkType] = typeof prismicT.LinkType[keyof typeof prismicT.LinkType],\n\tModel extends prismicT.CustomTypeModelLinkField = prismicT.CustomTypeModelLinkField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockLinkValueConfig<LinkType, Model, State>,\n): MockLinkValue<LinkType, State> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst type =\n\t\tconfig.type ||\n\t\tfaker.randomElement([\n\t\t\tprismicT.LinkType.Web,\n\t\t\tprismicT.LinkType.Document,\n\t\t\tprismicT.LinkType.Media,\n\t\t]);\n\n\tif (config.state === \"empty\") {\n\t\treturn {\n\t\t\tlink_type: type,\n\t\t} as MockLinkValue<LinkType, State>;\n\t} else {\n\t\tswitch (type) {\n\t\t\tcase prismicT.LinkType.Document: {\n\t\t\t\treturn contentRelationship({\n\t\t\t\t\tfaker,\n\t\t\t\t\tstate: config.state,\n\t\t\t\t\tlinkableDocuments: config.linkableDocuments,\n\t\t\t\t}) as unknown as MockLinkValue<LinkType, State>;\n\t\t\t}\n\n\t\t\tcase prismicT.LinkType.Media: {\n\t\t\t\treturn linkToMedia({\n\t\t\t\t\tfaker,\n\t\t\t\t\tstate: config.state,\n\t\t\t\t}) as MockLinkValue<LinkType, State>;\n\t\t\t}\n\n\t\t\tcase prismicT.LinkType.Web:\n\t\t\tdefault: {\n\t\t\t\tconst model = config.model || modelGen.link({ faker });\n\n\t\t\t\treturn {\n\t\t\t\t\tlink_type: prismicT.LinkType.Web,\n\t\t\t\t\turl: faker.url(),\n\t\t\t\t\ttarget:\n\t\t\t\t\t\tconfig.withTargetBlank ??\n\t\t\t\t\t\t(model.config?.allowTargetBlank && faker.boolean())\n\t\t\t\t\t\t\t? \"_blank\"\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t} as MockLinkValue<LinkType, State>;\n\t\t\t}\n\t\t}\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nexport type MockNumberValueConfig<\n\tModel extends prismicT.CustomTypeModelNumberField = prismicT.CustomTypeModelNumberField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = MockValueConfig<Model> & MockValueStateConfig<State>;\n\nexport type MockNumberValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.NumberField<State>;\n\nexport const number = <\n\tModel extends prismicT.CustomTypeModelNumberField = prismicT.CustomTypeModelNumberField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockNumberValueConfig<Model, State>,\n): MockNumberValue<State> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn (\n\t\tconfig.state === \"empty\" ? null : faker.range(1, 100)\n\t) as MockNumberValue<State>;\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../../lib/createFaker\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\nimport * as modelGen from \"../../model\";\n\ntype RichTextNodeTitleType =\n\t| typeof prismicT.RichTextNodeType.heading1\n\t| typeof prismicT.RichTextNodeType.heading2\n\t| typeof prismicT.RichTextNodeType.heading3\n\t| typeof prismicT.RichTextNodeType.heading4\n\t| typeof prismicT.RichTextNodeType.heading5\n\t| typeof prismicT.RichTextNodeType.heading6;\n\ntype RTHeadingNode =\n\t| prismicT.RTHeading1Node\n\t| prismicT.RTHeading2Node\n\t| prismicT.RTHeading3Node\n\t| prismicT.RTHeading4Node\n\t| prismicT.RTHeading5Node\n\t| prismicT.RTHeading6Node;\n\nconst patterns = {\n\tshort: {\n\t\tminWords: 1,\n\t\tmaxWords: 3,\n\t},\n\tmedium: {\n\t\tminWords: 3,\n\t\tmaxWords: 6,\n\t},\n\tlong: {\n\t\tminWords: 6,\n\t\tmaxWords: 12,\n\t},\n} as const;\n\nexport type MockRichTextHeadingValueConfig = {\n\tpattern?: keyof typeof patterns;\n} & MockRichTextValueConfig;\n\nconst headingNoteTypes = [\n\tprismicT.RichTextNodeType.heading1,\n\tprismicT.RichTextNodeType.heading2,\n\tprismicT.RichTextNodeType.heading3,\n\tprismicT.RichTextNodeType.heading4,\n\tprismicT.RichTextNodeType.heading5,\n\tprismicT.RichTextNodeType.heading6,\n];\n\nexport const heading = (\n\tconfig: MockRichTextHeadingValueConfig,\n): RTHeadingNode | undefined => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst model = config.model || modelGen.title({ faker });\n\n\tlet types: RichTextNodeTitleType[] = [];\n\tif (model.config) {\n\t\tif (\"single\" in model.config && model.config.single) {\n\t\t\ttypes = model.config.single\n\t\t\t\t.split(\",\")\n\t\t\t\t.filter((type): type is RichTextNodeTitleType =>\n\t\t\t\t\theadingNoteTypes.includes(type as RichTextNodeTitleType),\n\t\t\t\t);\n\t\t} else if (\"multi\" in model.config && model.config.multi) {\n\t\t\ttypes = model.config.multi\n\t\t\t\t.split(\",\")\n\t\t\t\t.filter((type): type is RichTextNodeTitleType =>\n\t\t\t\t\theadingNoteTypes.includes(type as RichTextNodeTitleType),\n\t\t\t\t);\n\t\t}\n\t}\n\n\tconst type = faker.randomElement(types);\n\n\tif (type) {\n\t\tconst patternKey =\n\t\t\tconfig.pattern ||\n\t\t\tfaker.randomElement(Object.keys(patterns) as (keyof typeof patterns)[]);\n\t\tconst pattern = patterns[patternKey];\n\n\t\treturn {\n\t\t\ttype,\n\t\t\ttext: changeCase.capitalCase(\n\t\t\t\tfaker.words(faker.range(pattern.minWords, pattern.maxWords)),\n\t\t\t),\n\t\t\tspans: [],\n\t\t};\n\t} else {\n\t\treturn undefined;\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../../lib/createFaker\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\nconst patterns = {\n\tshort: {\n\t\tsentenceCount: 2,\n\t},\n\tmedium: {\n\t\tsentenceCount: 6,\n\t},\n\tlong: {\n\t\tsentenceCount: 12,\n\t},\n} as const;\n\ntype MockRichTextParagraphValueConfig = {\n\tpattern?: keyof typeof patterns;\n} & MockRichTextValueConfig;\n\nexport const paragraph = (\n\tconfig: MockRichTextParagraphValueConfig,\n): prismicT.RTParagraphNode | undefined => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst patternKey =\n\t\tconfig.pattern ||\n\t\tfaker.randomElement(Object.keys(patterns) as (keyof typeof patterns)[]);\n\tconst pattern = patterns[patternKey];\n\n\tconst text = Array.from(\n\t\t{ length: pattern.sentenceCount },\n\t\t() => changeCase.sentenceCase(faker.words(faker.range(5, 15))) + \".\",\n\t).join(\" \");\n\n\treturn {\n\t\ttype: prismicT.RichTextNodeType.paragraph,\n\t\ttext,\n\t\tspans: [],\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../../lib/createFaker\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\nconst patterns = {\n\tshort: {\n\t\tsentenceCount: 2,\n\t},\n\tmedium: {\n\t\tsentenceCount: 6,\n\t},\n\tlong: {\n\t\tsentenceCount: 12,\n\t},\n} as const;\n\ntype MockRichTextPreformattedValueConfig = {\n\tpattern?: keyof typeof patterns;\n} & MockRichTextValueConfig;\n\nexport const preformatted = (\n\tconfig: MockRichTextPreformattedValueConfig,\n): prismicT.RTPreformattedNode | undefined => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst patternKey =\n\t\tconfig.pattern ||\n\t\tfaker.randomElement(Object.keys(patterns) as (keyof typeof patterns)[]);\n\tconst pattern = patterns[patternKey];\n\n\t// TODO: Use code, not lorem ipsum.\n\tconst text = Array.from(\n\t\t{ length: pattern.sentenceCount },\n\t\t() => changeCase.sentenceCase(faker.words(faker.range(5, 15))) + \".\",\n\t).join(\" \");\n\n\treturn {\n\t\ttype: prismicT.RichTextNodeType.preformatted,\n\t\ttext,\n\t\tspans: [],\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../../lib/createFaker\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\nconst patterns = {\n\tshort: {\n\t\tminItems: 1,\n\t\tmaxItems: 3,\n\t},\n\tmedium: {\n\t\tminItems: 3,\n\t\tmaxItems: 6,\n\t},\n\tlong: {\n\t\tminItems: 6,\n\t\tmaxItems: 12,\n\t},\n} as const;\n\ntype MockRichTextListValueConfig = {\n\tpattern?: keyof typeof patterns;\n} & MockRichTextValueConfig;\n\nexport const list = (\n\tconfig: MockRichTextListValueConfig,\n): prismicT.RTListItemNode[] | undefined => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst patternKey =\n\t\tconfig.pattern ||\n\t\tfaker.randomElement(Object.keys(patterns) as (keyof typeof patterns)[]);\n\tconst pattern = patterns[patternKey];\n\n\tconst itemsCount = faker.range(pattern.minItems, pattern.maxItems);\n\n\treturn Array(itemsCount)\n\t\t.fill(undefined)\n\t\t.map(() => {\n\t\t\treturn {\n\t\t\t\ttype: prismicT.RichTextNodeType.listItem,\n\t\t\t\ttext: changeCase.sentenceCase(faker.words(faker.range(5, 15))),\n\t\t\t\tspans: [],\n\t\t\t};\n\t\t});\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../../lib/createFaker\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\nconst patterns = {\n\tshort: {\n\t\tminItems: 1,\n\t\tmaxItems: 3,\n\t},\n\tmedium: {\n\t\tminItems: 3,\n\t\tmaxItems: 6,\n\t},\n\tlong: {\n\t\tminItems: 6,\n\t\tmaxItems: 12,\n\t},\n} as const;\n\ntype MockRichTextOListValueConfig = {\n\tpattern?: keyof typeof patterns;\n} & MockRichTextValueConfig;\n\nexport const oList = (\n\tconfig: MockRichTextOListValueConfig,\n): prismicT.RTOListItemNode[] | undefined => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst patternKey =\n\t\tconfig.pattern ||\n\t\tfaker.randomElement(Object.keys(patterns) as (keyof typeof patterns)[]);\n\tconst pattern = patterns[patternKey];\n\n\tconst itemsCount = faker.range(pattern.minItems, pattern.maxItems);\n\n\treturn Array(itemsCount)\n\t\t.fill(undefined)\n\t\t.map(() => {\n\t\t\treturn {\n\t\t\t\ttype: prismicT.RichTextNodeType.oListItem,\n\t\t\t\ttext: changeCase.sentenceCase(faker.words(faker.range(5, 15))),\n\t\t\t\tspans: [],\n\t\t\t};\n\t\t});\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { buildImageFieldImage } from \"../../lib/buildImageFieldImage\";\nimport { createFaker } from \"../../lib/createFaker\";\nimport { getMockImageData } from \"../../lib/getMockImageData\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\ntype MockRichTextImageValueConfig = MockRichTextValueConfig;\n\nexport const image = (\n\tconfig: MockRichTextImageValueConfig,\n): prismicT.RTImageNode | undefined => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst imageData = getMockImageData({ faker });\n\tconst imageField = buildImageFieldImage({\n\t\tfaker,\n\t\timageData,\n\t\tstate: \"filled\",\n\t});\n\n\treturn {\n\t\ttype: prismicT.RichTextNodeType.image,\n\t\talt: imageField.alt,\n\t\turl: imageField.url,\n\t\tcopyright: imageField.copyright,\n\t\tdimensions: imageField.dimensions,\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { buildEmbedField } from \"../../lib/buildEmbedField\";\nimport { createFaker } from \"../../lib/createFaker\";\nimport { getMockEmbedData } from \"../../lib/getMockEmbedData\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\ntype MockRichTextEmbedValueConfig = MockRichTextValueConfig;\n\nexport const embed = (\n\tconfig: MockRichTextEmbedValueConfig,\n): prismicT.RTEmbedNode | undefined => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst data = getMockEmbedData({ faker });\n\tconst embedField = buildEmbedField({ faker, data });\n\n\treturn {\n\t\ttype: prismicT.RichTextNodeType.embed,\n\t\toembed: embedField,\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../../lib/createFaker\";\n\nimport {\n\tMockRichTextValueConfig as BaseMockRichTextValueConfig,\n\tMockValueStateConfig,\n} from \"../../types\";\n\nimport * as modelGen from \"../../model\";\nimport { heading } from \"./heading\";\nimport { paragraph } from \"./paragraph\";\nimport { preformatted } from \"./preformatted\";\nimport { list } from \"./list\";\nimport { oList } from \"./oList\";\nimport { image } from \"./image\";\nimport { embed } from \"./embed\";\n\nconst patterns = {\n\tshort: {\n\t\tblockCountMin: 1,\n\t\tblockCountMax: 2,\n\t},\n\tmedium: {\n\t\tblockCountMin: 2,\n\t\tblockCountMax: 4,\n\t},\n\tlong: {\n\t\tblockCountMin: 4,\n\t\tblockCountMax: 8,\n\t},\n} as const;\n\nconst generators = {\n\t[prismicT.RichTextNodeType.heading1]: heading,\n\t[prismicT.RichTextNodeType.heading2]: heading,\n\t[prismicT.RichTextNodeType.heading3]: heading,\n\t[prismicT.RichTextNodeType.heading4]: heading,\n\t[prismicT.RichTextNodeType.heading5]: heading,\n\t[prismicT.RichTextNodeType.heading6]: heading,\n\t[prismicT.RichTextNodeType.paragraph]: paragraph,\n\t[prismicT.RichTextNodeType.preformatted]: preformatted,\n\t[prismicT.RichTextNodeType.listItem]: list,\n\t[prismicT.RichTextNodeType.oListItem]: oList,\n\t[prismicT.RichTextNodeType.image]: image,\n\t[prismicT.RichTextNodeType.embed]: embed,\n};\n\nexport type MockRichTextValueConfig<\n\tModel extends prismicT.CustomTypeModelRichTextField = prismicT.CustomTypeModelRichTextField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\tpattern?: keyof typeof patterns;\n} & BaseMockRichTextValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\nexport type MockRichTextValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.RichTextField<State>;\n\nexport const richText = <\n\tModel extends prismicT.CustomTypeModelRichTextField = prismicT.CustomTypeModelRichTextField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n>(\n\tconfig: MockRichTextValueConfig<Model, State>,\n): MockRichTextValue<State> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tif (config.state === \"empty\") {\n\t\treturn [] as MockRichTextValue<State>;\n\t} else {\n\t\tconst model =\n\t\t\tconfig.model ||\n\t\t\tmodelGen.richText({\n\t\t\t\tfaker,\n\t\t\t\twithMultipleBlocks: true,\n\t\t\t});\n\t\tconst supportsMultipleBlocks = model.config && \"multi\" in model.config;\n\n\t\tlet types: prismicT.RTNode[\"type\"][] = [];\n\t\tif (model.config) {\n\t\t\tif (\"multi\" in model.config && model.config.multi) {\n\t\t\t\ttypes = model.config.multi\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.filter((type): type is prismicT.RTNode[\"type\"] =>\n\t\t\t\t\t\tObject.keys(generators).includes(type),\n\t\t\t\t\t);\n\t\t\t} else if (\"single\" in model.config && model.config.single) {\n\t\t\t\ttypes = model.config.single\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.filter((type): type is prismicT.RTNode[\"type\"] =>\n\t\t\t\t\t\tObject.keys(generators).includes(type),\n\t\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (types.length > 0) {\n\t\t\tconst patternKey =\n\t\t\t\tconfig.pattern ||\n\t\t\t\tfaker.randomElement(Object.keys(patterns) as (keyof typeof patterns)[]);\n\t\t\tconst pattern = patterns[patternKey];\n\n\t\t\tconst blockCount = supportsMultipleBlocks\n\t\t\t\t? faker.range(pattern.blockCountMin, pattern.blockCountMax)\n\t\t\t\t: 1;\n\n\t\t\treturn Array(blockCount)\n\t\t\t\t.fill(undefined)\n\t\t\t\t.map(() => {\n\t\t\t\t\tconst type = faker.randomElement(types);\n\t\t\t\t\tconst generator = generators[type];\n\n\t\t\t\t\treturn generator({ faker, model });\n\t\t\t\t})\n\t\t\t\t.flat()\n\t\t\t\t.filter((block): block is prismicT.RTNode => block !== undefined)\n\t\t\t\t.slice(0, blockCount) as MockRichTextValue<State>;\n\t\t} else {\n\t\t\treturn [] as MockRichTextValue<State>;\n\t\t}\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nimport * as modelGen from \"../model\";\n\nexport type MockSelectValueConfig<\n\tModel extends prismicT.CustomTypeModelSelectField = prismicT.CustomTypeModelSelectField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = MockValueConfig<Model> & MockValueStateConfig<State>;\n\nexport type MockSelectValue<\n\tModel extends prismicT.CustomTypeModelSelectField = prismicT.CustomTypeModelSelectField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.SelectField<\n\tNonNullable<NonNullable<Model[\"config\"]>[\"options\"]>[number],\n\tState\n>;\n\nexport const select = <\n\tModel extends prismicT.CustomTypeModelSelectField = prismicT.CustomTypeModelSelectField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockSelectValueConfig<Model, State>,\n): MockSelectValue<Model, State> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst model = config.model || modelGen.select({ faker });\n\tconst defaultValue = model.config?.default_value;\n\tconst options = model.config?.options || [];\n\n\tif (config.state === \"empty\") {\n\t\treturn null as MockSelectValue<Model, State>;\n\t} else {\n\t\treturn (\n\t\t\ttypeof defaultValue === \"string\" && faker.boolean()\n\t\t\t\t? defaultValue\n\t\t\t\t: faker.randomElement(options)\n\t\t) as MockSelectValue<Model, State>;\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { MockValueConfig, ModelValue } from \"../types\";\n\nimport { createFaker } from \"../lib/createFaker\";\nimport { generateFieldId } from \"../lib/generateFieldId\";\nimport {\n\tvalueForModelMap,\n\tValueForModelMapConfigs,\n} from \"../lib/valueForModelMap\";\n\nimport * as modelGen from \"../model\";\n\nexport type MockSliceValueConfig<\n\tModel extends prismicT.CustomTypeModelSlice = prismicT.CustomTypeModelSlice,\n> = {\n\ttype?: string;\n\tlabel?: string | null;\n\titemsCount?: number;\n\tprimaryFieldConfigs?: ValueForModelMapConfigs;\n\titemsFieldConfigs?: ValueForModelMapConfigs;\n} & MockValueConfig<Model>;\n\nexport const slice = <\n\tModel extends prismicT.CustomTypeModelSlice = prismicT.CustomTypeModelSlice,\n>(\n\tconfig: MockSliceValueConfig<Model>,\n): ModelValue<Model> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst model = config.model || modelGen.slice({ faker });\n\n\tconst sliceType = config.type ?? generateFieldId({ faker });\n\tconst sliceLabel =\n\t\tconfig.label !== undefined\n\t\t\t? config.label\n\t\t\t: changeCase.capitalCase(faker.words(faker.range(1, 2)));\n\n\tconst itemsCount =\n\t\tmodel.repeat && Object.keys(model.repeat).length > 0\n\t\t\t? config.itemsCount ?? faker.range(1, 6)\n\t\t\t: 0;\n\n\treturn {\n\t\tslice_type: sliceType,\n\t\tslice_label: sliceLabel,\n\t\tprimary: valueForModelMap({\n\t\t\tfaker,\n\t\t\tmap: model[\"non-repeat\"] || {},\n\t\t\tconfigs: config.primaryFieldConfigs,\n\t\t}),\n\t\titems: Array(itemsCount)\n\t\t\t.fill(undefined)\n\t\t\t.map(() => {\n\t\t\t\treturn valueForModelMap({\n\t\t\t\t\tfaker,\n\t\t\t\t\tmap: model.repeat || {},\n\t\t\t\t\tconfigs: config.itemsFieldConfigs,\n\t\t\t\t});\n\t\t\t}),\n\t} as ModelValue<Model>;\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { MockValueConfig, ModelValue } from \"../types\";\n\nimport { createFaker } from \"../lib/createFaker\";\nimport { generateFieldId } from \"../lib/generateFieldId\";\nimport {\n\tvalueForModelMap,\n\tValueForModelMapConfigs,\n} from \"../lib/valueForModelMap\";\n\nimport * as modelGen from \"../model\";\n\nexport type MockSharedSliceVariationValueConfig<\n\tModel extends prismicT.SharedSliceModelVariation = prismicT.SharedSliceModelVariation,\n> = {\n\ttype?: string;\n\tlabel?: string;\n\titemsCount?: number;\n\tprimaryFieldConfigs?: ValueForModelMapConfigs;\n\titemsFieldConfigs?: ValueForModelMapConfigs;\n} & MockValueConfig<Model>;\n\nexport const sharedSliceVariation = <\n\tModel extends prismicT.SharedSliceModelVariation = prismicT.SharedSliceModelVariation,\n>(\n\tconfig: MockSharedSliceVariationValueConfig<Model>,\n): ModelValue<Model> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst model = config.model || modelGen.sharedSliceVariation({ faker });\n\n\tconst sliceType = config.type ?? generateFieldId({ faker });\n\n\tconst itemsCount =\n\t\tmodel.items && Object.keys(model.items).length > 0\n\t\t\t? config.itemsCount ?? faker.range(1, 6)\n\t\t\t: 0;\n\n\treturn {\n\t\tslice_type: sliceType,\n\t\tslice_label: null,\n\t\tvariation: model.id,\n\t\tversion: faker.hash(7),\n\t\tprimary: valueForModelMap({\n\t\t\tfaker,\n\t\t\tmap: model.primary || {},\n\t\t\tconfigs: config.primaryFieldConfigs,\n\t\t}),\n\t\titems: Array(itemsCount)\n\t\t\t.fill(undefined)\n\t\t\t.map(() => {\n\t\t\t\treturn valueForModelMap({\n\t\t\t\t\tfaker,\n\t\t\t\t\tmap: model.items || {},\n\t\t\t\t\tconfigs: config.itemsFieldConfigs,\n\t\t\t\t});\n\t\t\t}),\n\t} as ModelValue<Model>;\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueConfig, ModelValue } from \"../types\";\n\nimport * as modelGen from \"../model\";\nimport {\n\tsharedSliceVariation,\n\tMockSharedSliceVariationValueConfig,\n} from \"./sharedSliceVariation\";\n\nexport type MockSharedSliceValueConfig<\n\tModel extends prismicT.SharedSliceModel = prismicT.SharedSliceModel,\n> = Pick<\n\tMockSharedSliceVariationValueConfig,\n\t\"itemsCount\" | \"primaryFieldConfigs\" | \"itemsFieldConfigs\"\n> &\n\tMockValueConfig<Model>;\n\nexport const sharedSlice = <\n\tModel extends prismicT.SharedSliceModel = prismicT.SharedSliceModel,\n>(\n\tconfig: MockSharedSliceValueConfig<Model>,\n): ModelValue<Model> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst model = config.model || modelGen.sharedSlice({ faker });\n\tconst variationModel = faker.randomElement(model.variations);\n\n\treturn sharedSliceVariation({\n\t\tfaker,\n\t\tmodel: variationModel,\n\t\titemsCount: config.itemsCount,\n\t\ttype: model.id,\n\t\tprimaryFieldConfigs: config.primaryFieldConfigs,\n\t\titemsFieldConfigs: config.itemsFieldConfigs,\n\t}) as ModelValue<Model>;\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\nimport { ValueForModelMapConfigs } from \"../lib/valueForModelMap\";\n\nimport { MockValueConfig, MockValueStateConfig, ModelValue } from \"../types\";\n\nimport * as modelGen from \"../model\";\n\nimport { slice } from \"./slice\";\nimport { sharedSlice } from \"./sharedSlice\";\n\nexport type MockSliceZoneValueConfig<\n\tModel extends prismicT.CustomTypeModelSliceZoneField = prismicT.CustomTypeModelSliceZoneField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\tsharedSliceModels?: prismicT.SharedSliceModel[];\n\titemsCount?: State extends \"empty\" ? 0 : number;\n\tprimaryFieldConfigs?: ValueForModelMapConfigs;\n\titemsFieldConfigs?: ValueForModelMapConfigs;\n} & MockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\nexport const sliceZone = <\n\tModel extends prismicT.CustomTypeModelSliceZoneField = prismicT.CustomTypeModelSliceZoneField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n>(\n\tconfig: MockSliceZoneValueConfig<Model, State>,\n): ModelValue<Model, State> => {\n\tif (config.state === \"empty\") {\n\t\treturn [] as ModelValue<Model, State>;\n\t} else {\n\t\tconst faker = config.faker || createFaker(config.seed);\n\n\t\tconst model = config.model || modelGen.sliceZone({ faker });\n\n\t\tif (model.config?.choices && Object.keys(model.config.choices).length > 0) {\n\t\t\tconst itemsCount = config.itemsCount ?? faker.range(1, 6);\n\n\t\t\treturn Array(itemsCount)\n\t\t\t\t.fill(undefined)\n\t\t\t\t.map(() => {\n\t\t\t\t\tconst choices =\n\t\t\t\t\t\t(model.config?.choices && Object.entries(model.config.choices)) ||\n\t\t\t\t\t\t[];\n\t\t\t\t\tconst [choiceType, choiceModel] = faker.randomElement(choices);\n\n\t\t\t\t\tconst choiceLabels = model.config?.labels?.[choiceType] || [];\n\t\t\t\t\tconst choiceLabel = faker.randomElement(choiceLabels);\n\n\t\t\t\t\tswitch (choiceModel.type) {\n\t\t\t\t\t\tcase prismicT.CustomTypeModelSliceType.Slice: {\n\t\t\t\t\t\t\treturn slice({\n\t\t\t\t\t\t\t\tfaker,\n\t\t\t\t\t\t\t\tmodel: choiceModel,\n\t\t\t\t\t\t\t\ttype: choiceType,\n\t\t\t\t\t\t\t\tlabel: choiceLabel ? choiceLabel.name : null,\n\t\t\t\t\t\t\t\tprimaryFieldConfigs: config.primaryFieldConfigs,\n\t\t\t\t\t\t\t\titemsFieldConfigs: config.itemsFieldConfigs,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcase prismicT.CustomTypeModelSliceType.SharedSlice: {\n\t\t\t\t\t\t\tconst sharedSliceModel = config.sharedSliceModels?.find(\n\t\t\t\t\t\t\t\t(sharedSliceModel) => sharedSliceModel.id === choiceType,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (sharedSliceModel) {\n\t\t\t\t\t\t\t\treturn sharedSlice({\n\t\t\t\t\t\t\t\t\tfaker,\n\t\t\t\t\t\t\t\t\tmodel: sharedSliceModel,\n\t\t\t\t\t\t\t\t\tprimaryFieldConfigs: config.primaryFieldConfigs,\n\t\t\t\t\t\t\t\t\titemsFieldConfigs: config.itemsFieldConfigs,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.filter(\n\t\t\t\t\t(slice): slice is NonNullable<typeof slice> => slice !== undefined,\n\t\t\t\t) as ModelValue<Model, State>;\n\t\t} else {\n\t\t\treturn [] as unknown as ModelValue<Model, State>;\n\t\t}\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueConfig, MockValueStateConfig } from \"../types\";\n\nimport { heading, MockRichTextHeadingValueConfig } from \"./richText/heading\";\n\nexport type MockTitleValueConfig<\n\tModel extends prismicT.CustomTypeModelTitleField = prismicT.CustomTypeModelTitleField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\tpattern?: MockRichTextHeadingValueConfig[\"pattern\"];\n} & MockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\nexport type MockTitleValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.TitleField<State>;\n\nexport const title = <\n\tModel extends prismicT.CustomTypeModelTitleField = prismicT.CustomTypeModelTitleField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockTitleValueConfig<Model, State>,\n): MockTitleValue<State> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tif (config.state === \"empty\") {\n\t\treturn [] as MockTitleValue<State>;\n\t} else {\n\t\treturn [\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\theading({\n\t\t\t\tfaker,\n\t\t\t\tmodel: config.model,\n\t\t\t\tpattern: config.pattern,\n\t\t\t})!,\n\t\t] as MockTitleValue<State>;\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueConfig } from \"../types\";\n\nexport type MockUIDValueConfig<\n\tModel extends prismicT.CustomTypeModelUIDField = prismicT.CustomTypeModelUIDField,\n> = MockValueConfig<Model>;\n\nexport const uid = <\n\tModel extends prismicT.CustomTypeModelUIDField = prismicT.CustomTypeModelUIDField,\n>(\n\tconfig: MockUIDValueConfig<Model>,\n): NonNullable<prismicT.PrismicDocument[\"uid\"]> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn changeCase.snakeCase(faker.words(faker.range(1, 3)));\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\nimport { MockRestApiConfig } from \"../types\";\nimport { timestamp } from \"../value\";\n\nexport type MockRestApiRefConfig<IsScheduled extends boolean = false> = {\n\tisMasterRef?: boolean;\n\tisScheduled?: IsScheduled;\n} & MockRestApiConfig;\n\nexport type MockRestApiRefValue<IsScheduled extends boolean = false> = Omit<\n\tprismicT.Ref,\n\t\"scheduledAt\"\n> &\n\t(IsScheduled extends true\n\t\t? { scheduledAt: string }\n\t\t: { scheduledAt?: never });\n\nexport const ref = <IsScheduled extends boolean = false>(\n\tconfig: MockRestApiRefConfig<IsScheduled>,\n): MockRestApiRefValue<IsScheduled> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst value: prismicT.Ref = {\n\t\tid: faker.hash(16),\n\t\tref: faker.hash(16),\n\t\tisMasterRef: config.isMasterRef ?? false,\n\t\tlabel: config.isMasterRef\n\t\t\t? \"Master\"\n\t\t\t: changeCase.capitalCase(faker.words(faker.range(1, 3))),\n\t};\n\n\tif (config.isScheduled) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tvalue.scheduledAt = timestamp({ faker })!;\n\t}\n\n\treturn value as MockRestApiRefValue<IsScheduled>;\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\nimport { generateTags } from \"../lib/generateTags\";\n\nimport { MockRestApiConfig } from \"../types\";\nimport { ref } from \"./ref\";\n\nexport type MockRestApiRepositoryConfig = {\n\tcustomTypeModels?: prismicT.CustomTypeModel[];\n\twithReleases?: boolean;\n} & MockRestApiConfig;\n\nexport const repository = (\n\tconfig: MockRestApiRepositoryConfig,\n): prismicT.Repository => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst types = (config.customTypeModels || []).reduce((acc, model) => {\n\t\tacc[model.id] = model.label || model.id;\n\n\t\treturn acc;\n\t}, {} as prismicT.Repository[\"types\"]);\n\n\treturn {\n\t\trefs: [\n\t\t\tref({ faker, isMasterRef: true }),\n\t\t\t...(config.withReleases ? [ref({ faker }), ref({ faker })] : []),\n\t\t],\n\t\tintegrationFieldsRef: ref({ faker }).ref,\n\t\ttypes,\n\t\tlanguages: [\n\t\t\t{\n\t\t\t\tid: faker.word(),\n\t\t\t\tname: changeCase.capitalCase(faker.word()),\n\t\t\t},\n\t\t],\n\t\ttags: generateTags({\n\t\t\tfaker,\n\t\t\tmin: 1,\n\t\t\tmax: 10,\n\t\t}),\n\t\tforms: {},\n\t\tlicense: \"All Rights Reserved\",\n\t\tversion: faker.hash(7),\n\t\tbookmarks: {},\n\t\texperiments: {},\n\t\toauth_token: faker.url(),\n\t\toauth_initiate: faker.url(),\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockRestApiConfig } from \"../types\";\n\nexport type MockRestApiQueryConfig<\n\tDocument extends prismicT.PrismicDocument = prismicT.PrismicDocument,\n> = {\n\tdocuments?: Document[];\n\tpage?: number;\n\tpageSize?: number;\n} & MockRestApiConfig;\n\nexport const query = <\n\tDocument extends prismicT.PrismicDocument = prismicT.PrismicDocument,\n>(\n\tconfig: MockRestApiQueryConfig<Document>,\n): prismicT.Query<Document> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tconst documents = config.documents || [];\n\tconst page = Math.max(1, config.page ?? 1);\n\tconst pageSize = Math.min(100, Math.max(1, config.pageSize ?? 100));\n\tconst totalPages = Math.ceil(documents.length / pageSize);\n\tconst results = documents.slice((page - 1) * pageSize, page * pageSize);\n\n\treturn {\n\t\tpage,\n\t\tnext_page: page < totalPages ? faker.url() : null,\n\t\tprev_page: page > 1 ? faker.url() : null,\n\t\ttotal_pages: totalPages,\n\t\tresults_size: results.length,\n\t\tresults_per_page: pageSize,\n\t\ttotal_results_size: documents.length,\n\t\tresults,\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\nimport { generateTags } from \"../lib/generateTags\";\n\nimport { MockRestApiConfig } from \"../types\";\n\nexport type MockRestApiTagsConfig = MockRestApiConfig;\n\nexport const tags = (config: MockRestApiTagsConfig): prismicT.Tags => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\treturn generateTags({\n\t\tfaker,\n\t\tmin: 1,\n\t\tmax: 10,\n\t});\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker, Faker } from \"../lib/createFaker\";\n\nimport { Seed, WithoutFakerConfig } from \"../types\";\n\nimport { boolean, MockBooleanValueConfig } from \"./boolean\";\nimport { color, MockColorValueConfig } from \"./color\";\nimport {\n\tcontentRelationship,\n\tMockContentRelationshipValueConfig,\n} from \"./contentRelationship\";\nimport { customType, MockCustomTypeValueConfig } from \"./customType\";\nimport { date, MockDateValueConfig } from \"./date\";\nimport { document, MockDocumentValueConfig } from \"./document\";\nimport { embed, MockEmbedValueConfig } from \"./embed\";\nimport { geoPoint, MockGeoPointValueConfig } from \"./geoPoint\";\nimport { group, MockGroupValueConfig } from \"./group\";\nimport { image, MockImageValueConfig } from \"./image\";\nimport {\n\tintegrationFields,\n\tMockIntegrationFieldsValueConfig,\n} from \"./integrationFields\";\nimport { keyText, MockKeyTextValueConfig } from \"./keyText\";\nimport { link, MockLinkValueConfig } from \"./link\";\nimport { linkToMedia, MockLinkToMediaValueConfig } from \"./linkToMedia\";\nimport { number, MockNumberValueConfig } from \"./number\";\nimport { richText, MockRichTextValueConfig } from \"./richText\";\nimport { select, MockSelectValueConfig } from \"./select\";\nimport { sharedSlice, MockSharedSliceValueConfig } from \"./sharedSlice\";\nimport {\n\tsharedSliceVariation,\n\tMockSharedSliceVariationValueConfig,\n} from \"./sharedSliceVariation\";\nimport { slice, MockSliceValueConfig } from \"./slice\";\nimport { sliceZone, MockSliceZoneValueConfig } from \"./sliceZone\";\nimport { timestamp, MockTimestampValueConfig } from \"./timestamp\";\nimport { title, MockTitleValueConfig } from \"./title\";\nimport { uid, MockUIDValueConfig } from \"./uid\";\n\nexport const createValueMockFactory = (\n\t...args: ConstructorParameters<typeof ValueMockFactory>\n): ValueMockFactory => {\n\treturn new ValueMockFactory(...args);\n};\n\ntype ValueMockFactoryConfig =\n\t| {\n\t\t\tseed: Seed;\n\t }\n\t| {\n\t\t\tfaker: Faker;\n\t };\n\nexport class ValueMockFactory {\n\tprivate faker: Faker;\n\n\tconstructor(config: ValueMockFactoryConfig) {\n\t\tthis.faker = \"faker\" in config ? config.faker : createFaker(config.seed);\n\t}\n\n\tget seed() {\n\t\treturn this.faker.seed;\n\t}\n\n\tboolean<Model extends prismicT.CustomTypeModelBooleanField>(\n\t\tconfig?: WithoutFakerConfig<MockBooleanValueConfig<Model>>,\n\t) {\n\t\treturn boolean({ ...config, faker: this.faker });\n\t}\n\n\tcolor<\n\t\tModel extends prismicT.CustomTypeModelColorField = prismicT.CustomTypeModelColorField,\n\t\tState extends prismicT.FieldState = \"filled\",\n\t>(config?: WithoutFakerConfig<MockColorValueConfig<Model, State>>) {\n\t\treturn color({ ...config, faker: this.faker });\n\t}\n\n\tcontentRelationship<\n\t\tModel extends prismicT.CustomTypeModelContentRelationshipField = prismicT.CustomTypeModelContentRelationshipField,\n\t\tState extends prismicT.FieldState = \"filled\",\n\t>(\n\t\tconfig?: WithoutFakerConfig<\n\t\t\tMockContentRelationshipValueConfig<Model, State>\n\t\t>,\n\t) {\n\t\treturn contentRelationship({ ...config, faker: this.faker });\n\t}\n\n\tcustomType<Model extends prismicT.CustomTypeModel = prismicT.CustomTypeModel>(\n\t\tconfig?: WithoutFakerConfig<MockCustomTypeValueConfig<Model>>,\n\t) {\n\t\treturn customType({ ...config, faker: this.faker });\n\t}\n\n\tdate<\n\t\tModel extends prismicT.CustomTypeModelDateField = prismicT.CustomTypeModelDateField,\n\t\tState extends prismicT.FieldState = \"filled\",\n\t>(config?: WithoutFakerConfig<MockDateValueConfig<Model, State>>) {\n\t\treturn date({ ...config, faker: this.faker });\n\t}\n\n\tdocument<Model extends prismicT.CustomTypeModel = prismicT.CustomTypeModel>(\n\t\tconfig?: WithoutFakerConfig<MockDocumentValueConfig<Model>>,\n\t) {\n\t\treturn document({ ...config, faker: this.faker });\n\t}\n\n\tembed<\n\t\tModel extends prismicT.CustomTypeModelEmbedField = prismicT.CustomTypeModelEmbedField,\n\t\tData extends prismicT.AnyOEmbed = prismicT.AnyOEmbed,\n\t\tState extends prismicT.FieldState = \"filled\",\n\t>(config?: WithoutFakerConfig<MockEmbedValueConfig<Model, Data, State>>) {\n\t\treturn embed({ ...config, faker: this.faker });\n\t}\n\n\tgeoPoint<\n\t\tModel extends prismicT.CustomTypeModelGeoPointField = prismicT.CustomTypeModelGeoPointField,\n\t\tState extends prismicT.FieldState = \"filled\",\n\t>(config?: WithoutFakerConfig<MockGeoPointValueConfig<Model, State>>) {\n\t\treturn geoPoint({ ...config, faker: this.faker });\n\t}\n\n\tgroup<\n\t\tModel extends prismicT.CustomTypeModelGroupField = prismicT.CustomTypeModelGroupField,\n\t\tState extends prismicT.FieldState = \"filled\",\n\t>(config?: WithoutFakerConfig<MockGroupValueConfig<Model, State>>) {\n\t\treturn group({ ...config, faker: this.faker });\n\t}\n\n\timage<\n\t\tModel extends prismicT.CustomTypeModelImageField = prismicT.CustomTypeModelImageField,\n\t\tState extends prismicT.FieldState = \"filled\",\n\t>(config?: WithoutFakerConfig<MockImageValueConfig<Model, State>>) {\n\t\treturn image({ ...config, faker: this.faker });\n\t}\n\n\tintegrationFields<\n\t\tModel extends prismicT.CustomTypeModelIntegrationFieldsField = prismicT.CustomTypeModelIntegrationFieldsField,\n\t\tData extends Record<string, unknown> = Record<string, unknown>,\n\t\tState extends prismicT.FieldState = \"filled\",\n\t>(\n\t\tconfig?: WithoutFakerConfig<\n\t\t\tMockIntegrationFieldsValueConfig<Model, Data, State>\n\t\t>,\n\t) {\n\t\treturn integrationFields({ ...config, faker: this.faker });\n\t}\n\n\tkeyText<\n\t\tModel extends prismicT.CustomTypeModelKeyTextField = prismicT.CustomTypeModelKeyTextField,\n\t\tState extends prismicT.FieldState = \"filled\",\n\t>(config?: WithoutFakerConfig<MockKeyTextValueConfig<Model, State>>) {\n\t\treturn keyText({ ...config, faker: this.faker });\n\t}\n\n\tlink<\n\t\tLinkType extends typeof prismicT.LinkType[keyof typeof prismicT.LinkType] = typeof prismicT.LinkType[keyof typeof prismicT.LinkType],\n\t\tModel extends prismicT.CustomTypeModelLinkField = prismicT.CustomTypeModelLinkField,\n\t\tState extends prismicT.FieldState = \"filled\",\n\t>(config?: WithoutFakerConfig<MockLinkValueConfig<LinkType, Model, State>>) {\n\t\treturn link({ ...config, faker: this.faker });\n\t}\n\n\tlinkToMedia<\n\t\tModel extends prismicT.CustomTypeModelLinkToMediaField = prismicT.CustomTypeModelLinkToMediaField,\n\t\tState extends prismicT.FieldState = \"filled\",\n\t>(config?: WithoutFakerConfig<MockLinkToMediaValueConfig<Model, State>>) {\n\t\treturn linkToMedia({ ...config, faker: this.faker });\n\t}\n\n\tnumber<\n\t\tModel extends prismicT.CustomTypeModelNumberField = prismicT.CustomTypeModelNumberField,\n\t\tState extends prismicT.FieldState = \"filled\",\n\t>(config?: WithoutFakerConfig<MockNumberValueConfig<Model, State>>) {\n\t\treturn number({ ...config, faker: this.faker });\n\t}\n\n\tselect<\n\t\tModel extends prismicT.CustomTypeModelSelectField = prismicT.CustomTypeModelSelectField,\n\t\tState extends prismicT.FieldState = \"filled\",\n\t>(config?: WithoutFakerConfig<MockSelectValueConfig<Model, State>>) {\n\t\treturn select({ ...config, faker: this.faker });\n\t}\n\n\tsharedSlice<\n\t\tModel extends prismicT.SharedSliceModel = prismicT.SharedSliceModel,\n\t>(config?: WithoutFakerConfig<MockSharedSliceValueConfig<Model>>) {\n\t\treturn sharedSlice({ ...config, faker: this.faker });\n\t}\n\n\tsharedSliceVariation<\n\t\tModel extends prismicT.SharedSliceModelVariation = prismicT.SharedSliceModelVariation,\n\t>(config?: WithoutFakerConfig<MockSharedSliceVariationValueConfig<Model>>) {\n\t\treturn sharedSliceVariation({ ...config, faker: this.faker });\n\t}\n\n\tslice<\n\t\tModel extends prismicT.CustomTypeModelSlice = prismicT.CustomTypeModelSlice,\n\t>(config?: WithoutFakerConfig<MockSliceValueConfig<Model>>) {\n\t\treturn slice({ ...config, faker: this.faker });\n\t}\n\n\tsliceZone<\n\t\tModel extends prismicT.CustomTypeModelSliceZoneField = prismicT.CustomTypeModelSliceZoneField,\n\t\tState extends prismicT.FieldState = \"filled\",\n\t>(config?: WithoutFakerConfig<MockSliceZoneValueConfig<Model, State>>) {\n\t\treturn sliceZone({ ...config, faker: this.faker });\n\t}\n\n\ttimestamp<\n\t\tModel extends prismicT.CustomTypeModelTimestampField = prismicT.CustomTypeModelTimestampField,\n\t\tState extends prismicT.FieldState = \"filled\",\n\t>(config?: WithoutFakerConfig<MockTimestampValueConfig<Model, State>>) {\n\t\treturn timestamp({ ...config, faker: this.faker });\n\t}\n\n\ttitle<\n\t\tModel extends prismicT.CustomTypeModelTitleField = prismicT.CustomTypeModelTitleField,\n\t\tState extends prismicT.FieldState = \"filled\",\n\t>(config?: WithoutFakerConfig<MockTitleValueConfig<Model, State>>) {\n\t\treturn title({ ...config, faker: this.faker });\n\t}\n\n\tuid<\n\t\tModel extends prismicT.CustomTypeModelUIDField = prismicT.CustomTypeModelUIDField,\n\t>(config?: WithoutFakerConfig<MockUIDValueConfig<Model>>) {\n\t\treturn uid({ ...config, faker: this.faker });\n\t}\n\n\trichText<\n\t\tModel extends prismicT.CustomTypeModelRichTextField = prismicT.CustomTypeModelRichTextField,\n\t>(config?: WithoutFakerConfig<MockRichTextValueConfig<Model>>) {\n\t\treturn richText({ ...config, faker: this.faker });\n\t}\n}\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker, Faker } from \"../lib/createFaker\";\n\nimport { Seed, WithoutFakerConfig } from \"../types\";\n\nimport { query, MockRestApiQueryConfig } from \"./query\";\nimport { ref, MockRestApiRefConfig } from \"./ref\";\nimport { repository, MockRestApiRepositoryConfig } from \"./repository\";\nimport { tags, MockRestApiTagsConfig } from \"./tags\";\n\nexport const createAPIMockFactory = (\n\t...args: ConstructorParameters<typeof APIMockFactory>\n): APIMockFactory => {\n\treturn new APIMockFactory(...args);\n};\n\ntype APIMockFactoryConfig =\n\t| {\n\t\t\tseed: Seed;\n\t }\n\t| {\n\t\t\tfaker: Faker;\n\t };\n\nexport class APIMockFactory {\n\tprivate faker: Faker;\n\n\tconstructor(config: APIMockFactoryConfig) {\n\t\tthis.faker = \"faker\" in config ? config.faker : createFaker(config.seed);\n\t}\n\n\tget seed() {\n\t\treturn this.faker.seed;\n\t}\n\n\tquery<Document extends prismicT.PrismicDocument = prismicT.PrismicDocument>(\n\t\tconfig?: WithoutFakerConfig<MockRestApiQueryConfig<Document>>,\n\t) {\n\t\treturn query({ ...config, faker: this.faker });\n\t}\n\n\tref<IsScheduled extends boolean = false>(\n\t\tconfig?: WithoutFakerConfig<MockRestApiRefConfig<IsScheduled>>,\n\t) {\n\t\treturn ref({ ...config, faker: this.faker });\n\t}\n\n\trepository(config?: WithoutFakerConfig<MockRestApiRepositoryConfig>) {\n\t\treturn repository({ ...config, faker: this.faker });\n\t}\n\n\ttags(config?: WithoutFakerConfig<MockRestApiTagsConfig>) {\n\t\treturn tags({ ...config, faker: this.faker });\n\t}\n}\n","import { createFaker, Faker } from \"./lib/createFaker\";\n\nimport { Seed } from \"./types\";\n\nimport {\n\tcreateModelMockFactory,\n\tModelMockFactory,\n} from \"./model/createModelMockFactory\";\nimport {\n\tcreateValueMockFactory,\n\tValueMockFactory,\n} from \"./value/createValueMockFactory\";\nimport {\n\tcreateAPIMockFactory,\n\tAPIMockFactory,\n} from \"./api/createAPIMockFactory\";\n\nexport const createMockFactory = (\n\t...args: ConstructorParameters<typeof MockFactory>\n): MockFactory => {\n\treturn new MockFactory(...args);\n};\n\ntype PrismicMockConfig =\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\nexport class MockFactory {\n\tprivate faker: Faker;\n\n\tapi: APIMockFactory;\n\tmodel: ModelMockFactory;\n\tvalue: ValueMockFactory;\n\n\tconstructor(config: PrismicMockConfig) {\n\t\tthis.faker = config.faker || createFaker(config.seed);\n\n\t\tthis.api = createAPIMockFactory({ faker: this.faker });\n\t\tthis.model = createModelMockFactory({ faker: this.faker });\n\t\tthis.value = createValueMockFactory({ faker: this.faker });\n\t}\n\n\tget seed() {\n\t\treturn this.faker.seed;\n\t}\n}\n"],"names":["Rand","changeCase","boolean","prismicT","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.integrationFields","value.uid","value.group","value.sliceZone","color","contentRelationship","customType","date","embed","geoPoint","image","integrationFields","keyText","link","linkToMedia","number","richText","select","sharedSlice","dataSet","sharedSliceVariation","slice","sliceZone","timestamp","title","uid","group","modelGen.customType","modelGen.contentRelationship","documentGen","modelGen.group","modelGen.image","modelGen.link","patterns","modelGen.title","modelGen.richText","modelGen.select","modelGen.slice","modelGen.sharedSliceVariation","modelGen.sharedSlice","modelGen.sliceZone","document"],"mappings":"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"}
|