@prismicio/mock 0.0.7 → 0.0.8
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/index.cjs +65 -53
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +27 -25
- package/dist/index.js +65 -53
- package/dist/index.js.map +1 -1
- package/dist/model/index.cjs +1 -1
- package/dist/model/index.cjs.map +1 -1
- package/dist/model/index.d.ts +3 -1
- package/dist/model/index.js +1 -1
- package/dist/model/index.js.map +1 -1
- package/dist/value/index.cjs +64 -52
- package/dist/value/index.cjs.map +1 -1
- package/dist/value/index.d.ts +21 -21
- package/dist/value/index.js +64 -52
- package/dist/value/index.js.map +1 -1
- package/package.json +1 -1
- package/src/model/integrationFields.ts +4 -2
- package/src/types.ts +99 -83
- package/src/value/group.ts +35 -24
- package/src/value/sliceZone.ts +56 -49
- package/src/value/title.ts +26 -13
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/constants.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","import * as fakerStatic from \"faker\";\n// @ts-expect-error - Missing .d.ts\nimport * as fakerLocaleEN from \"faker/lib/locales/en/index.js\";\n// @ts-expect-error - Missing .d.ts\nimport Faker from \"faker/lib/index.js\";\n\nimport { FAKER_SEED } from \"../constants\";\n\nexport const createFaker = (seed = FAKER_SEED): typeof fakerStatic => {\n\tlet normalizedSeed: number | number[];\n\tif (typeof seed === \"string\") {\n\t\tnormalizedSeed = seed.split(\"\").map((char) => char.charCodeAt(0));\n\t} else {\n\t\tnormalizedSeed = seed;\n\t}\n\n\tconst cacheKey = JSON.stringify(normalizedSeed);\n\n\tif (createFaker.cache[cacheKey]) {\n\t\treturn createFaker.cache[cacheKey];\n\t}\n\n\tconst fakerInstance = new Faker();\n\tfakerInstance.locales[\"en\"] = fakerLocaleEN;\n\tfakerInstance.seed(normalizedSeed);\n\n\tcreateFaker.cache[cacheKey] = fakerInstance;\n\n\treturn fakerInstance;\n};\ncreateFaker.cache = {} as Record<string, typeof fakerStatic>;\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(\n\t\tfaker.datatype.number({\n\t\t\tmin: config.min ?? 0,\n\t\t\tmax: config.max ?? 2,\n\t\t}),\n\t)\n\t\t.fill(undefined)\n\t\t.map(() =>\n\t\t\tchangeCase.capitalCase(\n\t\t\t\tfaker.lorem.words(faker.datatype.number({ min: 1, max: 3 })),\n\t\t\t),\n\t\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.datatype.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.company.bsNoun()),\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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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.company.bsNoun());\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.datatype.boolean(),\n\t\trepeatable: config.repeatable ?? faker.datatype.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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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.company.bsNoun()),\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.company.bsNoun()),\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.datatype.number({ min: 500, max: 2000 }),\n\t\t\theight: faker.datatype.number({ min: 500, max: 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.company.bsNoun()),\n\t\t\tconstraint: {\n\t\t\t\twidth: config.withConstraint\n\t\t\t\t\t? faker.datatype.number({ min: 500, max: 2000 })\n\t\t\t\t\t: null,\n\t\t\t\theight: config.withConstraint\n\t\t\t\t\t? faker.datatype.number({ min: 500, max: 2000 })\n\t\t\t\t\t: 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 = 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.company.bsNoun()),\n\t\t\tcatalog: changeCase.snakeCase(faker.lorem.words(4)),\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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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.datatype.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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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.random\n\t\t.arrayElements([\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.datatype.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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.words(3)),\n\t\t\tallowTargetBlank: faker.datatype.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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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.company.bsNoun());\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: faker.lorem.sentence(),\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.company.bsNoun());\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: faker.lorem.sentence(),\n\t\tdocURL: faker.internet.url(),\n\t\tversion: faker.git.shortSha(),\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.company.bsNoun()),\n\t\tdisplay: faker.datatype.boolean()\n\t\t\t? prismicT.CustomTypeModelSliceDisplay.Grid\n\t\t\t: prismicT.CustomTypeModelSliceDisplay.List,\n\t\tfieldset: changeCase.capitalCase(faker.lorem.words()),\n\t\tdescription: faker.lorem.sentence(),\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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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.random\n\t\t.arrayElements([\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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.words(3)),\n\t\t\tsingle,\n\t\t\tallowTargetBlank: faker.datatype.boolean() ? true : 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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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(\n\t\tfaker.lorem.words(faker.datatype.number({ min: 1, max: 3 })),\n\t);\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.random.arrayElements(\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\t// Faker seems to have problems accepting parameters for `faker.date.between`\n\t// if the parameters are too precise. We can get around this by only using\n\t// generated dates, not timestamps.\n\tconst after =\n\t\tconfig.after ||\n\t\tfaker.date.past(20, new Date(\"2021-03-07\")).toISOString().split(\"T\")[0];\n\tconst before =\n\t\tconfig.before ||\n\t\tfaker.date.future(20, new Date(\"2021-03-07\")).toISOString().split(\"T\")[0];\n\n\treturn (\n\t\tconfig.state === \"empty\"\n\t\t\t? null\n\t\t\t: faker.date.between(after, before).toISOString()\n\t) as MockTimestampValue<State>;\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.git.shortSha(),\n\t\tuid: hasUID ? changeCase.snakeCase(faker.lorem.words(2)) : null,\n\t\turl: withURL ? faker.internet.url() : null,\n\t\thref: faker.internet.url(),\n\t\tlang: faker.lorem.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.internet.color().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.company.bsNoun());\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.random.arrayElement(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.random.arrayElements(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.random.arrayElement(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\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockEmbedData, MockValueConfig } from \"../types\";\n\ntype BuildEmbedFieldConfig = {\n\tembedData: MockEmbedData;\n} & Pick<MockValueConfig, \"seed\">;\n\nexport const buildEmbedField = (\n\tconfig: BuildEmbedFieldConfig,\n): prismicT.EmbedField<false> => {\n\tconst faker = createFaker(config.seed);\n\n\treturn {\n\t\ttype: faker.datatype.boolean()\n\t\t\t? prismicT.EmbedType.Link\n\t\t\t: prismicT.EmbedType.Rich,\n\t\turl: config.embedData.url,\n\t\thtml: config.embedData.html,\n\t\ttitle: changeCase.capitalCase(faker.lorem.words(3)),\n\t\tversion: faker.datatype\n\t\t\t.number({ min: 1, max: 3, precision: 10 })\n\t\t\t.toString(),\n\t\tcache_age: faker.datatype.number(),\n\t\tembed_url: config.embedData.embed_url,\n\t\tauthor_url: faker.internet.url(),\n\t\tauthor_name: faker.company.companyName(),\n\t\tprovider_name: faker.company.companyName(),\n\t\tthumbnail_width: config.embedData.thumbnail_width,\n\t\tthumbnail_height: config.embedData.thumbnail_height,\n\t\tthumbnail_url: config.embedData.thumbnail_url,\n\t\twidth: faker.datatype.number({ min: 200, max: 500 }),\n\t\theight: faker.datatype.number({ min: 200, max: 500 }),\n\t};\n};\n","import { createFaker } from \"../lib/createFaker\";\n\nimport { MockEmbedData, MockValueConfig } from \"../types\";\n\nconst dataSet: MockEmbedData[] = [\n\t{\n\t\turl: \"https://www.youtube.com/watch?v=fiOwHYFkUz0\",\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},\n\t{\n\t\turl: \"https://www.youtube.com/watch?v=c-ATzcy6VkI\",\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},\n\t{\n\t\turl: \"https://www.youtube.com/watch?v=iewZXv94XGY\",\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},\n\t{\n\t\turl: \"https://twitter.com/prismicio/status/1356293316158095361\",\n\t\tembed_url: \"https://www.youtube.com/watch?v=iewZXv94XGY\",\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},\n\t{\n\t\turl: \"https://twitter.com/timbenniks/status/1304146886832594944\",\n\t\tthumbnail_url: null,\n\t\tthumbnail_width: null,\n\t\tthumbnail_height: null,\n\t\tembed_url: \"https://twitter.com/timbenniks/status/1304146886832594944\",\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},\n\t{\n\t\turl: \"https://twitter.com/prismicio/status/1354112310252630016\",\n\t\tthumbnail_url: null,\n\t\tthumbnail_width: null,\n\t\tthumbnail_height: null,\n\t\tembed_url: \"https://twitter.com/prismicio/status/1354112310252630016\",\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},\n\t{\n\t\turl: \"https://twitter.com/prismicio/status/1354835716430319617\",\n\t\tthumbnail_url: null,\n\t\tthumbnail_width: null,\n\t\tthumbnail_height: null,\n\t\tembed_url: \"https://twitter.com/prismicio/status/1354835716430319617\",\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},\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.random.arrayElement(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\tState extends prismicT.FieldState = prismicT.FieldState,\n> = MockValueConfig<Model> & MockValueStateConfig<State>;\n\nexport type MockEmbedValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.EmbedField<prismicT.AnyOEmbed & prismicT.OEmbedExtra, State>;\n\nexport const embed = <\n\tModel extends prismicT.CustomTypeModelEmbedField = prismicT.CustomTypeModelEmbedField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockEmbedValueConfig<Model, State> = {},\n): MockEmbedValue<State> => {\n\tconst embedData = getMockEmbedData({ seed: config.seed });\n\n\treturn (\n\t\tconfig.state === \"empty\"\n\t\t\t? {}\n\t\t\t: buildEmbedField({ seed: config.seed, embedData })\n\t) as MockEmbedValue<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\tconst coordinates = faker.address.nearbyGPSCoordinate();\n\n\treturn (\n\t\tconfig.state === \"empty\"\n\t\t\t? {}\n\t\t\t: {\n\t\t\t\t\tlongitude: Number.parseFloat(coordinates[0]),\n\t\t\t\t\tlatitude: Number.parseFloat(coordinates[1]),\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, ModelValue } from \"../types\";\n\nimport * as modelGen from \"../model\";\n\nexport type MockGroupValueConfig<\n\tModel extends prismicT.CustomTypeModelGroupField = prismicT.CustomTypeModelGroupField,\n> = {\n\titemsCount?: number;\n\tconfigs?: ValueForModelMapConfigs;\n} & MockValueConfig<Model>;\n\nexport const group = <\n\tModel extends prismicT.CustomTypeModelGroupField = prismicT.CustomTypeModelGroupField,\n>(\n\tconfig: MockGroupValueConfig<Model> = {},\n): ModelValue<Model> => {\n\tconst faker = createFaker(config.seed);\n\n\tconst model = config.model || modelGen.group({ seed: config.seed });\n\n\tconst itemsCount =\n\t\tconfig.itemsCount ??\n\t\tfaker.datatype.number({\n\t\t\tmin: 1,\n\t\t\tmax: 6,\n\t\t});\n\n\treturn Array(itemsCount)\n\t\t.fill(undefined)\n\t\t.map(() => {\n\t\t\treturn valueForModelMap({\n\t\t\t\tseed: config.seed,\n\t\t\t\tmap: model.config.fields,\n\t\t\t\tconfigs: config.configs,\n\t\t\t});\n\t\t}) as ModelValue<Model>;\n};\n","import * as prismicT from \"@prismicio/types\";\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: faker.lorem.sentence(),\n\t\t\tcopyright: faker.lorem.sentence(),\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.random.arrayElement(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.git.shortSha(),\n\t\t\t\t\ttitle: changeCase.capitalCase(faker.lorem.words(3)),\n\t\t\t\t\tdescription: faker.lorem.sentence(),\n\t\t\t\t\timage_url: imageData.url,\n\t\t\t\t\tlast_update: faker.date.past(20, new Date(\"2021-03-07\")).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\"\n\t\t\t? null\n\t\t\t: changeCase.sentenceCase(faker.lorem.words(3))\n\t) as MockKeyTextValue<State>;\n};\n","import * as prismicT from \"@prismicio/types\";\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: faker.system.commonFileName(),\n\t\t\tkind: faker.system.commonFileType(),\n\t\t\turl: faker.internet.url(),\n\t\t\tsize: faker.datatype.number().toString(),\n\t\t\theight: faker.datatype.number().toString(),\n\t\t\twidth: faker.datatype.number().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.random.arrayElement([\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.internet.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.datatype.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.datatype.number()\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.random.arrayElement(types);\n\n\tif (type) {\n\t\tconst patternKey =\n\t\t\tconfig.pattern ||\n\t\t\tfaker.random.arrayElement(\n\t\t\t\tObject.keys(patterns) as (keyof typeof patterns)[],\n\t\t\t);\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.lorem.words(\n\t\t\t\t\tfaker.datatype.number({\n\t\t\t\t\t\tmin: pattern.minWords,\n\t\t\t\t\t\tmax: pattern.maxWords,\n\t\t\t\t\t}),\n\t\t\t\t),\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\";\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.random.arrayElement(\n\t\t\tObject.keys(patterns) as (keyof typeof patterns)[],\n\t\t);\n\tconst pattern = patterns[patternKey];\n\n\treturn {\n\t\ttype: prismicT.RichTextNodeType.paragraph,\n\t\ttext: faker.lorem.paragraph(pattern.sentenceCount),\n\t\tspans: [],\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\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.random.arrayElement(\n\t\t\tObject.keys(patterns) as (keyof typeof patterns)[],\n\t\t);\n\tconst pattern = patterns[patternKey];\n\n\treturn {\n\t\ttype: prismicT.RichTextNodeType.preformatted,\n\t\t// TODO: Use code, not lorem ipsum.\n\t\ttext: faker.lorem.paragraph(pattern.sentenceCount),\n\t\tspans: [],\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\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.random.arrayElement(\n\t\t\tObject.keys(patterns) as (keyof typeof patterns)[],\n\t\t);\n\tconst pattern = patterns[patternKey];\n\n\tconst itemsCount = faker.datatype.number({\n\t\tmin: pattern.minItems,\n\t\tmax: pattern.maxItems,\n\t});\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: faker.lorem.sentence(),\n\t\t\t\tspans: [],\n\t\t\t};\n\t\t});\n};\n","import * as prismicT from \"@prismicio/types\";\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.random.arrayElement(\n\t\t\tObject.keys(patterns) as (keyof typeof patterns)[],\n\t\t);\n\tconst pattern = patterns[patternKey];\n\n\tconst itemsCount = faker.datatype.number({\n\t\tmin: pattern.minItems,\n\t\tmax: pattern.maxItems,\n\t});\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: faker.lorem.sentence(),\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: false,\n\t});\n\n\treturn {\n\t\ttype: prismicT.RichTextNodeType.image,\n\t\talt: imageField.alt,\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\turl: imageField.url!,\n\t\tcopyright: imageField.copyright,\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\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 embedData = getMockEmbedData({ seed: config.seed });\n\tconst embedField = buildEmbedField({ seed: config.seed, embedData });\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.random.arrayElement(\n\t\t\t\tObject.keys(patterns) as (keyof typeof patterns)[],\n\t\t\t);\n\t\tconst pattern = patterns[patternKey];\n\n\t\tconst blockCount = supportsMultipleBlocks\n\t\t\t? faker.datatype.number({\n\t\t\t\t\tmin: pattern.blockCountMin,\n\t\t\t\t\tmax: pattern.blockCountMax,\n\t\t\t })\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.random.arrayElement(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.datatype.boolean()\n\t\t\t\t? defaultValue\n\t\t\t\t: faker.random.arrayElement(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.company.bsNoun());\n\n\tconst itemsCount =\n\t\tObject.keys(model.repeat).length > 0\n\t\t\t? config.itemsCount ??\n\t\t\t faker.datatype.number({\n\t\t\t\t\tmin: 1,\n\t\t\t\t\tmax: 6,\n\t\t\t })\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 ??\n\t\t\t faker.datatype.number({\n\t\t\t\t\tmin: 1,\n\t\t\t\t\tmax: 6,\n\t\t\t })\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.git.shortSha(),\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.random.arrayElement(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, 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> = {\n\tsharedSliceModels?: prismicT.SharedSliceModel[];\n\titemsCount?: number;\n\tprimaryFieldConfigs?: ValueForModelMapConfigs;\n\titemsFieldConfigs?: ValueForModelMapConfigs;\n} & MockValueConfig<Model>;\n\nexport const sliceZone = <\n\tModel extends prismicT.CustomTypeModelSliceZoneField = prismicT.CustomTypeModelSliceZoneField,\n>(\n\tconfig: MockSliceZoneValueConfig<Model> = {},\n): ModelValue<Model> => {\n\tconst faker = createFaker(config.seed);\n\n\tconst model = config.model || modelGen.sliceZone({ seed: config.seed });\n\n\tif (Object.keys(model.config.choices).length > 0) {\n\t\tconst itemsCount =\n\t\t\tconfig.itemsCount ??\n\t\t\tfaker.datatype.number({\n\t\t\t\tmin: 1,\n\t\t\t\tmax: 6,\n\t\t\t});\n\n\t\treturn Array(itemsCount)\n\t\t\t.fill(undefined)\n\t\t\t.map(() => {\n\t\t\t\tconst choices = Object.entries(model.config.choices);\n\t\t\t\tconst [choiceType, choiceModel] = faker.random.arrayElement(choices);\n\n\t\t\t\tconst choiceLabels = model.config.labels[choiceType] || [];\n\t\t\t\tconst choiceLabel = faker.random.arrayElement(choiceLabels);\n\n\t\t\t\tswitch (choiceModel.type) {\n\t\t\t\t\tcase prismicT.CustomTypeModelSliceType.Slice: {\n\t\t\t\t\t\treturn slice({\n\t\t\t\t\t\t\tseed: config.seed,\n\t\t\t\t\t\t\tmodel: choiceModel,\n\t\t\t\t\t\t\ttype: choiceType,\n\t\t\t\t\t\t\tlabel: choiceLabel ? choiceLabel.name : null,\n\t\t\t\t\t\t\tprimaryFieldConfigs: config.primaryFieldConfigs,\n\t\t\t\t\t\t\titemsFieldConfigs: config.itemsFieldConfigs,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tcase prismicT.CustomTypeModelSliceType.SharedSlice: {\n\t\t\t\t\t\tconst sharedSliceModel = config.sharedSliceModels?.find(\n\t\t\t\t\t\t\t(sharedSliceModel) => sharedSliceModel.id === choiceType,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (sharedSliceModel) {\n\t\t\t\t\t\t\treturn sharedSlice({\n\t\t\t\t\t\t\t\tseed: config.seed,\n\t\t\t\t\t\t\t\tmodel: sharedSliceModel,\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\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t.filter(\n\t\t\t\t(slice): slice is prismicT.Slice | prismicT.SharedSlice =>\n\t\t\t\t\tslice !== undefined,\n\t\t\t) as ModelValue<Model>;\n\t} else {\n\t\treturn [] as unknown as ModelValue<Model>;\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { MockValueConfig } from \"../types\";\n\nimport { heading, MockRichTextHeadingValueConfig } from \"./richText/heading\";\n\nexport type MockTitleValueConfig<\n\tModel extends prismicT.CustomTypeModelTitleField = prismicT.CustomTypeModelTitleField,\n> = {\n\tpattern?: MockRichTextHeadingValueConfig[\"pattern\"];\n} & MockValueConfig<Model>;\n\nexport const title = (\n\tconfig: MockTitleValueConfig = {},\n): prismicT.TitleField => {\n\treturn [\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\theading({\n\t\t\tseed: config.seed,\n\t\t\tmodel: config.model,\n\t\t\tpattern: config.pattern,\n\t\t})!,\n\t] as prismicT.TitleField;\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.lorem.words(2));\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.git.shortSha(),\n\t\tref: faker.git.shortSha(),\n\t\tisMasterRef: config.isMasterRef ?? false,\n\t\tlabel: config.isMasterRef\n\t\t\t? \"Master\"\n\t\t\t: changeCase.capitalCase(faker.company.bsNoun()),\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.lorem.word(),\n\t\t\t\tname: changeCase.capitalCase(faker.lorem.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.git.shortSha(),\n\t\tbookmarks: {},\n\t\texperiments: {},\n\t\toauth_token: faker.internet.url(),\n\t\toauth_initiate: faker.internet.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.internet.url() : null,\n\t\tprev_page: page > 1 ? faker.internet.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":["boolean","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.js","sources":["../src/constants.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","import * as fakerStatic from \"faker\";\n// @ts-expect-error - Missing .d.ts\nimport * as fakerLocaleEN from \"faker/lib/locales/en/index.js\";\n// @ts-expect-error - Missing .d.ts\nimport Faker from \"faker/lib/index.js\";\n\nimport { FAKER_SEED } from \"../constants\";\n\nexport const createFaker = (seed = FAKER_SEED): typeof fakerStatic => {\n\tlet normalizedSeed: number | number[];\n\tif (typeof seed === \"string\") {\n\t\tnormalizedSeed = seed.split(\"\").map((char) => char.charCodeAt(0));\n\t} else {\n\t\tnormalizedSeed = seed;\n\t}\n\n\tconst cacheKey = JSON.stringify(normalizedSeed);\n\n\tif (createFaker.cache[cacheKey]) {\n\t\treturn createFaker.cache[cacheKey];\n\t}\n\n\tconst fakerInstance = new Faker();\n\tfakerInstance.locales[\"en\"] = fakerLocaleEN;\n\tfakerInstance.seed(normalizedSeed);\n\n\tcreateFaker.cache[cacheKey] = fakerInstance;\n\n\treturn fakerInstance;\n};\ncreateFaker.cache = {} as Record<string, typeof fakerStatic>;\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(\n\t\tfaker.datatype.number({\n\t\t\tmin: config.min ?? 0,\n\t\t\tmax: config.max ?? 2,\n\t\t}),\n\t)\n\t\t.fill(undefined)\n\t\t.map(() =>\n\t\t\tchangeCase.capitalCase(\n\t\t\t\tfaker.lorem.words(faker.datatype.number({ min: 1, max: 3 })),\n\t\t\t),\n\t\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.datatype.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.company.bsNoun()),\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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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.company.bsNoun());\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.datatype.boolean(),\n\t\trepeatable: config.repeatable ?? faker.datatype.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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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.company.bsNoun()),\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.company.bsNoun()),\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.datatype.number({ min: 500, max: 2000 }),\n\t\t\theight: faker.datatype.number({ min: 500, max: 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.company.bsNoun()),\n\t\t\tconstraint: {\n\t\t\t\twidth: config.withConstraint\n\t\t\t\t\t? faker.datatype.number({ min: 500, max: 2000 })\n\t\t\t\t\t: null,\n\t\t\t\theight: config.withConstraint\n\t\t\t\t\t? faker.datatype.number({ min: 500, max: 2000 })\n\t\t\t\t\t: 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.company.bsNoun()),\n\t\t\tcatalog: config.catalog || changeCase.snakeCase(faker.lorem.words(4)),\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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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.datatype.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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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.random\n\t\t.arrayElements([\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.datatype.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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.words(3)),\n\t\t\tallowTargetBlank: faker.datatype.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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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.company.bsNoun());\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: faker.lorem.sentence(),\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.company.bsNoun());\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: faker.lorem.sentence(),\n\t\tdocURL: faker.internet.url(),\n\t\tversion: faker.git.shortSha(),\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.company.bsNoun()),\n\t\tdisplay: faker.datatype.boolean()\n\t\t\t? prismicT.CustomTypeModelSliceDisplay.Grid\n\t\t\t: prismicT.CustomTypeModelSliceDisplay.List,\n\t\tfieldset: changeCase.capitalCase(faker.lorem.words()),\n\t\tdescription: faker.lorem.sentence(),\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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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.random\n\t\t.arrayElements([\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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.words(3)),\n\t\t\tsingle,\n\t\t\tallowTargetBlank: faker.datatype.boolean() ? true : 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.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.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(\n\t\tfaker.lorem.words(faker.datatype.number({ min: 1, max: 3 })),\n\t);\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.random.arrayElements(\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\t// Faker seems to have problems accepting parameters for `faker.date.between`\n\t// if the parameters are too precise. We can get around this by only using\n\t// generated dates, not timestamps.\n\tconst after =\n\t\tconfig.after ||\n\t\tfaker.date.past(20, new Date(\"2021-03-07\")).toISOString().split(\"T\")[0];\n\tconst before =\n\t\tconfig.before ||\n\t\tfaker.date.future(20, new Date(\"2021-03-07\")).toISOString().split(\"T\")[0];\n\n\treturn (\n\t\tconfig.state === \"empty\"\n\t\t\t? null\n\t\t\t: faker.date.between(after, before).toISOString()\n\t) as MockTimestampValue<State>;\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.git.shortSha(),\n\t\tuid: hasUID ? changeCase.snakeCase(faker.lorem.words(2)) : null,\n\t\turl: withURL ? faker.internet.url() : null,\n\t\thref: faker.internet.url(),\n\t\tlang: faker.lorem.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.internet.color().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.company.bsNoun());\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.random.arrayElement(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.random.arrayElements(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.random.arrayElement(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\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockEmbedData, MockValueConfig } from \"../types\";\n\ntype BuildEmbedFieldConfig = {\n\tembedData: MockEmbedData;\n} & Pick<MockValueConfig, \"seed\">;\n\nexport const buildEmbedField = (\n\tconfig: BuildEmbedFieldConfig,\n): prismicT.EmbedField<false> => {\n\tconst faker = createFaker(config.seed);\n\n\treturn {\n\t\ttype: faker.datatype.boolean()\n\t\t\t? prismicT.EmbedType.Link\n\t\t\t: prismicT.EmbedType.Rich,\n\t\turl: config.embedData.url,\n\t\thtml: config.embedData.html,\n\t\ttitle: changeCase.capitalCase(faker.lorem.words(3)),\n\t\tversion: faker.datatype\n\t\t\t.number({ min: 1, max: 3, precision: 10 })\n\t\t\t.toString(),\n\t\tcache_age: faker.datatype.number(),\n\t\tembed_url: config.embedData.embed_url,\n\t\tauthor_url: faker.internet.url(),\n\t\tauthor_name: faker.company.companyName(),\n\t\tprovider_name: faker.company.companyName(),\n\t\tthumbnail_width: config.embedData.thumbnail_width,\n\t\tthumbnail_height: config.embedData.thumbnail_height,\n\t\tthumbnail_url: config.embedData.thumbnail_url,\n\t\twidth: faker.datatype.number({ min: 200, max: 500 }),\n\t\theight: faker.datatype.number({ min: 200, max: 500 }),\n\t};\n};\n","import { createFaker } from \"../lib/createFaker\";\n\nimport { MockEmbedData, MockValueConfig } from \"../types\";\n\nconst dataSet: MockEmbedData[] = [\n\t{\n\t\turl: \"https://www.youtube.com/watch?v=fiOwHYFkUz0\",\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},\n\t{\n\t\turl: \"https://www.youtube.com/watch?v=c-ATzcy6VkI\",\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},\n\t{\n\t\turl: \"https://www.youtube.com/watch?v=iewZXv94XGY\",\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},\n\t{\n\t\turl: \"https://twitter.com/prismicio/status/1356293316158095361\",\n\t\tembed_url: \"https://www.youtube.com/watch?v=iewZXv94XGY\",\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},\n\t{\n\t\turl: \"https://twitter.com/timbenniks/status/1304146886832594944\",\n\t\tthumbnail_url: null,\n\t\tthumbnail_width: null,\n\t\tthumbnail_height: null,\n\t\tembed_url: \"https://twitter.com/timbenniks/status/1304146886832594944\",\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},\n\t{\n\t\turl: \"https://twitter.com/prismicio/status/1354112310252630016\",\n\t\tthumbnail_url: null,\n\t\tthumbnail_width: null,\n\t\tthumbnail_height: null,\n\t\tembed_url: \"https://twitter.com/prismicio/status/1354112310252630016\",\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},\n\t{\n\t\turl: \"https://twitter.com/prismicio/status/1354835716430319617\",\n\t\tthumbnail_url: null,\n\t\tthumbnail_width: null,\n\t\tthumbnail_height: null,\n\t\tembed_url: \"https://twitter.com/prismicio/status/1354835716430319617\",\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},\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.random.arrayElement(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\tState extends prismicT.FieldState = prismicT.FieldState,\n> = MockValueConfig<Model> & MockValueStateConfig<State>;\n\nexport type MockEmbedValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.EmbedField<prismicT.AnyOEmbed & prismicT.OEmbedExtra, State>;\n\nexport const embed = <\n\tModel extends prismicT.CustomTypeModelEmbedField = prismicT.CustomTypeModelEmbedField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockEmbedValueConfig<Model, State> = {},\n): MockEmbedValue<State> => {\n\tconst embedData = getMockEmbedData({ seed: config.seed });\n\n\treturn (\n\t\tconfig.state === \"empty\"\n\t\t\t? {}\n\t\t\t: buildEmbedField({ seed: config.seed, embedData })\n\t) as MockEmbedValue<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\tconst coordinates = faker.address.nearbyGPSCoordinate();\n\n\treturn (\n\t\tconfig.state === \"empty\"\n\t\t\t? {}\n\t\t\t: {\n\t\t\t\t\tlongitude: Number.parseFloat(coordinates[0]),\n\t\t\t\t\tlatitude: Number.parseFloat(coordinates[1]),\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 =\n\t\t\tconfig.itemsCount ??\n\t\t\tfaker.datatype.number({\n\t\t\t\tmin: 1,\n\t\t\t\tmax: 6,\n\t\t\t});\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\";\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: faker.lorem.sentence(),\n\t\t\tcopyright: faker.lorem.sentence(),\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.random.arrayElement(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.git.shortSha(),\n\t\t\t\t\ttitle: changeCase.capitalCase(faker.lorem.words(3)),\n\t\t\t\t\tdescription: faker.lorem.sentence(),\n\t\t\t\t\timage_url: imageData.url,\n\t\t\t\t\tlast_update: faker.date.past(20, new Date(\"2021-03-07\")).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\"\n\t\t\t? null\n\t\t\t: changeCase.sentenceCase(faker.lorem.words(3))\n\t) as MockKeyTextValue<State>;\n};\n","import * as prismicT from \"@prismicio/types\";\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: faker.system.commonFileName(),\n\t\t\tkind: faker.system.commonFileType(),\n\t\t\turl: faker.internet.url(),\n\t\t\tsize: faker.datatype.number().toString(),\n\t\t\theight: faker.datatype.number().toString(),\n\t\t\twidth: faker.datatype.number().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.random.arrayElement([\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.internet.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.datatype.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.datatype.number()\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.random.arrayElement(types);\n\n\tif (type) {\n\t\tconst patternKey =\n\t\t\tconfig.pattern ||\n\t\t\tfaker.random.arrayElement(\n\t\t\t\tObject.keys(patterns) as (keyof typeof patterns)[],\n\t\t\t);\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.lorem.words(\n\t\t\t\t\tfaker.datatype.number({\n\t\t\t\t\t\tmin: pattern.minWords,\n\t\t\t\t\t\tmax: pattern.maxWords,\n\t\t\t\t\t}),\n\t\t\t\t),\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\";\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.random.arrayElement(\n\t\t\tObject.keys(patterns) as (keyof typeof patterns)[],\n\t\t);\n\tconst pattern = patterns[patternKey];\n\n\treturn {\n\t\ttype: prismicT.RichTextNodeType.paragraph,\n\t\ttext: faker.lorem.paragraph(pattern.sentenceCount),\n\t\tspans: [],\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\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.random.arrayElement(\n\t\t\tObject.keys(patterns) as (keyof typeof patterns)[],\n\t\t);\n\tconst pattern = patterns[patternKey];\n\n\treturn {\n\t\ttype: prismicT.RichTextNodeType.preformatted,\n\t\t// TODO: Use code, not lorem ipsum.\n\t\ttext: faker.lorem.paragraph(pattern.sentenceCount),\n\t\tspans: [],\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\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.random.arrayElement(\n\t\t\tObject.keys(patterns) as (keyof typeof patterns)[],\n\t\t);\n\tconst pattern = patterns[patternKey];\n\n\tconst itemsCount = faker.datatype.number({\n\t\tmin: pattern.minItems,\n\t\tmax: pattern.maxItems,\n\t});\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: faker.lorem.sentence(),\n\t\t\t\tspans: [],\n\t\t\t};\n\t\t});\n};\n","import * as prismicT from \"@prismicio/types\";\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.random.arrayElement(\n\t\t\tObject.keys(patterns) as (keyof typeof patterns)[],\n\t\t);\n\tconst pattern = patterns[patternKey];\n\n\tconst itemsCount = faker.datatype.number({\n\t\tmin: pattern.minItems,\n\t\tmax: pattern.maxItems,\n\t});\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: faker.lorem.sentence(),\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: false,\n\t});\n\n\treturn {\n\t\ttype: prismicT.RichTextNodeType.image,\n\t\talt: imageField.alt,\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\turl: imageField.url!,\n\t\tcopyright: imageField.copyright,\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\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 embedData = getMockEmbedData({ seed: config.seed });\n\tconst embedField = buildEmbedField({ seed: config.seed, embedData });\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.random.arrayElement(\n\t\t\t\tObject.keys(patterns) as (keyof typeof patterns)[],\n\t\t\t);\n\t\tconst pattern = patterns[patternKey];\n\n\t\tconst blockCount = supportsMultipleBlocks\n\t\t\t? faker.datatype.number({\n\t\t\t\t\tmin: pattern.blockCountMin,\n\t\t\t\t\tmax: pattern.blockCountMax,\n\t\t\t })\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.random.arrayElement(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.datatype.boolean()\n\t\t\t\t? defaultValue\n\t\t\t\t: faker.random.arrayElement(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.company.bsNoun());\n\n\tconst itemsCount =\n\t\tObject.keys(model.repeat).length > 0\n\t\t\t? config.itemsCount ??\n\t\t\t faker.datatype.number({\n\t\t\t\t\tmin: 1,\n\t\t\t\t\tmax: 6,\n\t\t\t })\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 ??\n\t\t\t faker.datatype.number({\n\t\t\t\t\tmin: 1,\n\t\t\t\t\tmax: 6,\n\t\t\t })\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.git.shortSha(),\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.random.arrayElement(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 =\n\t\t\t\tconfig.itemsCount ??\n\t\t\t\tfaker.datatype.number({\n\t\t\t\t\tmin: 1,\n\t\t\t\t\tmax: 6,\n\t\t\t\t});\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.random.arrayElement(choices);\n\n\t\t\t\t\tconst choiceLabels = model.config.labels[choiceType] || [];\n\t\t\t\t\tconst choiceLabel = faker.random.arrayElement(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 prismicT.Slice | prismicT.SharedSlice =>\n\t\t\t\t\t\tslice !== 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.lorem.words(2));\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.git.shortSha(),\n\t\tref: faker.git.shortSha(),\n\t\tisMasterRef: config.isMasterRef ?? false,\n\t\tlabel: config.isMasterRef\n\t\t\t? \"Master\"\n\t\t\t: changeCase.capitalCase(faker.company.bsNoun()),\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.lorem.word(),\n\t\t\t\tname: changeCase.capitalCase(faker.lorem.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.git.shortSha(),\n\t\tbookmarks: {},\n\t\texperiments: {},\n\t\toauth_token: faker.internet.url(),\n\t\toauth_initiate: faker.internet.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.internet.url() : null,\n\t\tprev_page: page > 1 ? faker.internet.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":["boolean","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":";;;;;MAEa,aAAmB;;MCMnB,cAAc,CAAC,OAAO,eAAmC;AACrE,MAAI;AACJ,MAAI,OAAO,SAAS,UAAU;AAC7B,qBAAiB,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,WAAW;AAAA,SACxD;AACN,qBAAiB;AAAA;AAGlB,QAAM,WAAW,KAAK,UAAU;AAEhC,MAAI,YAAY,MAAM,WAAW;AAChC,WAAO,YAAY,MAAM;AAAA;AAG1B,QAAM,gBAAgB,IAAI;AAC1B,gBAAc,QAAQ,QAAQ;AAC9B,gBAAc,KAAK;AAEnB,cAAY,MAAM,YAAY;AAE9B,SAAO;AAAA;AAER,YAAY,QAAQ;;MCnBP,eAAe,CAAC,WAAyC;AAXtE;AAYC,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO,MACN,MAAM,SAAS,OAAO;AAAA,IACrB,KAAK,aAAO,QAAP,YAAc;AAAA,IACnB,KAAK,aAAO,QAAP,YAAc;AAAA,MAGnB,KAAK,QACL,IAAI,MACJ,WAAW,YACV,MAAM,MAAM,MAAM,MAAM,SAAS,OAAO,EAAE,KAAK,GAAG,KAAK;AAAA;;MCb9CA,YAAU,CAGtB,SAAwC,OACb;AAC3B,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO,MAAM,SAAS;AAAA;;MCFV,gBAAgB,CAC5B,WACuB;AACvB,QAAM,QAAQ,OAAO;AAErB,UAAQ,MAAM;AAAA,SACR,SAAS,yBAAyB,SAAS;AAC/C,aAAOC,UAAc;AAAA,QACpB,MAAM,OAAO;AAAA,QACb;AAAA,WACG,OAAO;AAAA;AAAA;AAAA,SAIP,SAAS,yBAAyB,OAAO;AAC7C,aAAOC,MAAY;AAAA,QAClB,MAAM,OAAO;AAAA,QACb;AAAA,WACG,OAAO;AAAA;AAAA;AAAA,SAIP,SAAS,yBAAyB,MAAM;AAC5C,cAAQ,MAAM,OAAO;AAAA,aACf,SAAS,8BAA8B,UAAU;AACrD,iBAAOC,oBAA0B;AAAA,YAChC,MAAM,OAAO;AAAA,YACb;AAAA,eACG,OAAO;AAAA;AAAA;AAAA,aAIP,SAAS,8BAA8B,OAAO;AAClD,iBAAOC,YAAkB;AAAA,YACxB,MAAM,OAAO;AAAA,YACb;AAAA,eACG,OAAO;AAAA;AAAA;AAAA,iBAIH;AACR,iBAAOC,KAAW;AAAA,YACjB,MAAM,OAAO;AAAA,YACb;AAAA,eACG,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,SAMT,SAAS,yBAAyB,MAAM;AAC5C,aAAOC,KAAW;AAAA,QACjB,MAAM,OAAO;AAAA,QACb;AAAA,WACG,OAAO;AAAA;AAAA;AAAA,SAIP,SAAS,yBAAyB,OAAO;AAC7C,aAAOC,QAAY;AAAA,QAClB,MAAM,OAAO;AAAA,QACb;AAAA,WACG,OAAO;AAAA;AAAA;AAAA,SAIP,SAAS,yBAAyB,UAAU;AAChD,aAAOC,SAAe;AAAA,QACrB,MAAM,OAAO;AAAA,QACb;AAAA,WACG,OAAO;AAAA;AAAA;AAAA,SAIP,SAAS,yBAAyB,OAAO;AAC7C,aAAOC,QAAY;AAAA,QAClB,MAAM,OAAO;AAAA,QACb;AAAA,WACG,OAAO;AAAA;AAAA;AAAA,SAIP,SAAS,yBAAyB,MAAM;AAC5C,aAAOC,QAAc;AAAA,QACpB,MAAM,OAAO;AAAA,QACb;AAAA,WACG,OAAO;AAAA;AAAA;AAAA,SAIP,SAAS,yBAAyB,QAAQ;AAC9C,aAAOC,OAAa;AAAA,QACnB,MAAM,OAAO;AAAA,QACb;AAAA,WACG,OAAO;AAAA;AAAA;AAAA,SAIP,SAAS,yBAAyB,QAAQ;AAC9C,aAAOC,OAAa;AAAA,QACnB,MAAM,OAAO;AAAA,QACb;AAAA,WACG,OAAO;AAAA;AAAA;AAAA,SAIP,SAAS,yBAAyB,WAAW;AACjD,aAAOC,UAAgB;AAAA,QACtB,MAAM,OAAO;AAAA,QACb;AAAA,WACG,OAAO;AAAA;AAAA;AAAA,SAIP,SAAS,yBAAyB,gBAAgB;AACtD,UACC,YAAY,MAAM,UAClB,MAAM,OAAO,OACX,MAAM,KACN,MAAM,CAAC,YAAY,eAAe,KAAK,QAAQ,UAChD;AACD,eAAOC,MAAY;AAAA,UAClB,MAAM,OAAO;AAAA,UACb;AAAA,aACG,OAAO;AAAA;AAAA,aAEL;AACN,eAAOC,SAAe;AAAA,UACrB,MAAM,OAAO;AAAA,UACb;AAAA,aACG,OAAO;AAAA;AAAA;AAAA;AAAA,SAKR,SAAS,yBAAyB,mBAAmB;AACzD,aAAOC,kBAAwB;AAAA,QAC9B,MAAM,OAAO;AAAA,QACb;AAAA,WACG,OAAO;AAAA;AAAA;AAAA,SAIP,SAAS,yBAAyB,KAAK;AAC3C,aAAOC,IAAU;AAAA,QAChB,MAAM,OAAO;AAAA,QACb;AAAA,WACG,OAAO;AAAA;AAAA;AAAA,SAIP,SAAS,yBAAyB,OAAO;AAC7C,aAAOC,MAAY;AAAA,QAClB,MAAM,OAAO;AAAA,QACb;AAAA,WACG,OAAO;AAAA;AAAA;AAAA,SAIP,SAAS,yBAAyB,QAAQ;AAC9C,aAAOC,UAAgB;AAAA,QACtB,MAAM,OAAO;AAAA,QACb;AAAA,WACG,OAAO;AAAA;AAAA;AAAA;AAAA;;ACvJd,MAAM,qBAAqB,CAC1B,UACmC;AACnC,UAAQ,MAAM;AAAA,SACR,SAAS,yBAAyB;AACtC,aAAO;AAAA,SAEH,SAAS,yBAAyB;AACtC,aAAO;AAAA,SAEH,SAAS,yBAAyB;AACtC,aAAO;AAAA,SAEH,SAAS,yBAAyB;AACtC,aAAO;AAAA,SAEH,SAAS,yBAAyB;AACtC,aAAO;AAAA,SAEH,SAAS,yBAAyB;AACtC,aAAO;AAAA,SAEH,SAAS,yBAAyB;AACtC,aAAO;AAAA,SAEH,SAAS,yBAAyB,MAAM;AAC5C,cAAQ,MAAM,OAAO;AAAA,aACf,SAAS,8BAA8B;AAC3C,iBAAO;AAAA,aACH,SAAS,8BAA8B;AAC3C,iBAAO;AAAA;AAEP,iBAAO;AAAA;AAAA;AAAA,SAIL,SAAS,yBAAyB;AACtC,aAAO;AAAA,SAEH,SAAS,yBAAyB;AACtC,aAAO;AAAA,SAEH,SAAS,yBAAyB,gBAAgB;AACtD,UACC,YAAY,MAAM,UAClB,MAAM,OAAO,OACX,MAAM,KACN,MAAM,CAAC,YAAY,eAAe,KAAK,QAAQ,UAChD;AACD,eAAO;AAAA,aACD;AACN,eAAO;AAAA;AAAA;AAAA,SAIJ,SAAS,yBAAyB;AACtC,aAAO;AAAA,SAEH,SAAS,yBAAyB;AACtC,aAAO;AAAA,SAEH,SAAS,yBAAyB;AACtC,aAAO;AAAA,SAEH,SAAS,yBAAyB;AACtC,aAAO;AAAA,SAEH,SAAS,yBAAyB;AACtC,aAAO;AAAA;AAAA;MAiCG,mBAAmB,CAG/B,WAC6B;AApI9B;AAqIC,QAAM,SAAS;AAEf,aAAW,WAAW,OAAO,KAAK;AACjC,UAAM,aAAa,OAAO,IAAI;AAC9B,UAAM,kBAAkB,mBAAmB;AAC3C,UAAM,cAAc,aAAO,YAAP,mBAAiB;AAErC,WAAO,WAAW,cAAc;AAAA,MAC/B,MAAM,OAAO;AAAA,MACb,OAAO;AAAA,MACP,QAAQ;AAAA;AAAA;AAIV,SAAO;AAAA;;MC1IK,UAAU,CACtB,SAAiC,OACS;AAC1C,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC,QAAQ;AAAA,MACP,OAAO,WAAW,YAAY,MAAM,QAAQ;AAAA;AAAA;AAAA;;MCRlCC,UAAQ,CACpB,SAA+B,OACS;AACxC,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC,QAAQ;AAAA,MACP,OAAO,WAAW,YAAY,MAAM,QAAQ;AAAA,MAC5C,aAAa,WAAW,aAAa,MAAM,MAAM,MAAM;AAAA;AAAA;AAAA;;MCH7CC,wBAAsB,CAIlC,SAAkE,OACS;AAC3E,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC,QAAQ;AAAA,MACP,OAAO,WAAW,YAAY,MAAM,QAAQ;AAAA,MAC5C,aAAa,WAAW,aAAa,MAAM,MAAM,MAAM;AAAA,MACvD,QAAQ,SAAS,8BAA8B;AAAA,MAC/C,aAAa,OAAO;AAAA,MACpB,MAAM,OAAO;AAAA;AAAA;AAAA;;MCUHC,eAAa,CAKzB,SAAgD,OACX;AA9CtC;AA+CC,QAAM,QAAQ,YAAY,OAAO;AAEjC,MAAI,QACH,OAAO,SAAS,WAAW,YAAY,MAAM,QAAQ;AACtD,MAAI,KAAa,OAAO,MAAM,WAAW,UAAU;AAEnD,MAAI,OAAO,MAAM,CAAC,OAAO,OAAO;AAC/B,YAAQ,WAAW,YAAY,OAAO;AAAA,aAC5B,OAAO,SAAS,CAAC,OAAO,OAAO;AACzC,SAAK,WAAW,UAAU,OAAO;AAAA;AAGlC,MAAI,OAAO;AAEX,MAAI,YAAY,UAAU,OAAO,QAAQ;AACxC,WAAO,EAAE,MAAM,OAAO;AAAA,aACZ,UAAU,UAAU,OAAO,MAAM;AAC3C,WAAO,OAAO;AAAA;AAGf,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA,QAAQ,aAAO,WAAP,YAAiB,MAAM,SAAS;AAAA,IACxC,YAAY,aAAO,eAAP,YAAqB,MAAM,SAAS;AAAA,IAChD;AAAA;AAAA;;MC/DWC,SAAO,CACnB,SAA8B,OACS;AACvC,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC,QAAQ;AAAA,MACP,OAAO,WAAW,YAAY,MAAM,QAAQ;AAAA,MAC5C,aAAa,WAAW,aAAa,MAAM,MAAM,MAAM;AAAA;AAAA;AAAA;;MCT7CC,UAAQ,CACpB,SAA+B,OACS;AACxC,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC,QAAQ;AAAA,MACP,OAAO,WAAW,YAAY,MAAM,QAAQ;AAAA,MAC5C,aAAa,WAAW,aAAa,MAAM,MAAM,MAAM;AAAA;AAAA;AAAA;;MCT7CC,aAAW,CACvB,SAAkC,OACS;AAC3C,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC,QAAQ;AAAA,MACP,OAAO,WAAW,YAAY,MAAM,QAAQ;AAAA;AAAA;AAAA;;MCNlCC,UAAQ,CACpB,SAAuC,OACS;AAChD,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC,QAAQ;AAAA,MACP,OAAO,WAAW,YAAY,MAAM,QAAQ;AAAA,MAC5C,QAAQ,OAAO,UAAW;AAAA;AAAA;AAAA;;MCRhBC,UAAQ,CACpB,SAA+C,OACS;AACxD,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,aAAc,QAAO,kBAAkB,IAAI,IAAI,CAAC,SAAS;AAC9D,WAAO;AAAA,MACN;AAAA,MACA,OAAO,MAAM,SAAS,OAAO,EAAE,KAAK,KAAK,KAAK;AAAA,MAC9C,QAAQ,MAAM,SAAS,OAAO,EAAE,KAAK,KAAK,KAAK;AAAA;AAAA;AAIjD,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC,QAAQ;AAAA,MACP,OAAO,WAAW,YAAY,MAAM,QAAQ;AAAA,MAC5C,YAAY;AAAA,QACX,OAAO,OAAO,iBACX,MAAM,SAAS,OAAO,EAAE,KAAK,KAAK,KAAK,SACvC;AAAA,QACH,QAAQ,OAAO,iBACZ,MAAM,SAAS,OAAO,EAAE,KAAK,KAAK,KAAK,SACvC;AAAA;AAAA,MAEJ;AAAA;AAAA;AAAA;;MC1BUC,sBAAoB,CAChC,SAA2C,OACS;AACpD,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC,QAAQ;AAAA,MACP,OAAO,WAAW,YAAY,MAAM,QAAQ;AAAA,MAC5C,SAAS,OAAO,WAAW,WAAW,UAAU,MAAM,MAAM,MAAM;AAAA;AAAA;AAAA;;MCXxDC,YAAU,CACtB,SAAiC,OACS;AAC1C,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC,QAAQ;AAAA,MACP,OAAO,WAAW,YAAY,MAAM,QAAQ;AAAA,MAC5C,aAAa,WAAW,aAAa,MAAM,MAAM,MAAM;AAAA;AAAA;AAAA;;MCI7CC,SAAO,CACnB,SAAgD,OACX;AACrC,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC,QAAQ;AAAA,MACP,OAAO,WAAW,YAAY,MAAM,QAAQ;AAAA,MAC5C,aAAa,WAAW,aAAa,MAAM,MAAM,MAAM;AAAA,MACvD,QAAQ;AAAA,MACR,kBACE,uBAAsB,SACpB,OAAO,mBACP,MAAM,SAAS,cAAc;AAAA;AAAA;AAAA;;MC3BvBC,gBAAc,CAC1B,SAAqC,OACS;AAC9C,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC,QAAQ;AAAA,MACP,OAAO,WAAW,YAAY,MAAM,QAAQ;AAAA,MAC5C,aAAa,WAAW,aAAa,MAAM,MAAM,MAAM;AAAA,MACvD,QAAQ,SAAS,8BAA8B;AAAA;AAAA;AAAA;;MCVrCC,WAAS,CACrB,SAAgC,OACS;AACzC,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC,QAAQ;AAAA,MACP,OAAO,WAAW,YAAY,MAAM,QAAQ;AAAA,MAC5C,aAAa,WAAW,aAAa,MAAM,MAAM,MAAM;AAAA;AAAA;AAAA;;MCL7CC,aAAW,CACvB,SAAsD,OAGL;AAjBlD;AAkBC,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,aAAa,MAAM,OACvB,cAAc;AAAA,IACd,SAAS,iBAAiB;AAAA,IAC1B,SAAS,iBAAiB;AAAA,IAC1B,SAAS,iBAAiB;AAAA,IAC1B,SAAS,iBAAiB;AAAA,IAC1B,SAAS,iBAAiB;AAAA,IAC1B,SAAS,iBAAiB;AAAA,IAC1B,SAAS,iBAAiB;AAAA,IAC1B,SAAS,iBAAiB;AAAA,IAC1B,SAAS,iBAAiB;AAAA,IAC1B,SAAS,iBAAiB;AAAA,IAC1B,SAAS,iBAAiB;AAAA,IAC1B,SAAS,iBAAiB;AAAA,IAC1B,SAAS,iBAAiB;AAAA,IAC1B,SAAS,iBAAiB;AAAA,IAC1B,SAAS,iBAAiB;AAAA,KAE1B,KAAK;AAEP,QAAM,kBACL,cAAO,uBAAP,YAA6B,MAAM,SAAS,aACzC,EAAE,OAAO,eACT,EAAE,QAAQ;AAEd,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC,QAAQ;AAAA,MACP,OAAO,WAAW,YAAY,MAAM,QAAQ;AAAA,MAC5C,aAAa,WAAW,aAAa,MAAM,MAAM,MAAM;AAAA,MACvD,kBAAkB,MAAM,SAAS,YAAY,OAAO;AAAA,SACjD;AAAA;AAAA;AAAA;;MCpCOC,WAAS,CACrB,SAAuD,OACS;AAChE,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC,QAAQ;AAAA,MACP,OAAO,WAAW,YAAY,MAAM,QAAQ;AAAA,MAC5C,aAAa,WAAW,aAAa,MAAM,MAAM,MAAM;AAAA,MACvD,SAAS,OAAO,WAAW;AAAA,MAC3B,eAAe,OAAO,gBAAgB;AAAA;AAAA;AAAA;;MCX5BC,gBAAc,CAG1B,SAAgD,OACE;AAClD,QAAM,QAAQ,YAAY,OAAO;AAEjC,MAAI,OACH,OAAO,QAAQ,WAAW,YAAY,MAAM,QAAQ;AACrD,MAAI,KAAa,OAAO,MAAM,WAAW,UAAU;AAEnD,MAAI,OAAO,MAAM,CAAC,OAAO,MAAM;AAC9B,WAAO,WAAW,WAAW,OAAO;AAAA,aAC1B,OAAO,QAAQ,CAAC,OAAO,MAAM;AACvC,SAAK,WAAW,UAAU,OAAO;AAAA;AAGlC,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC;AAAA,IACA;AAAA,IACA,aAAa,MAAM,MAAM;AAAA,IACzB,YAAY,OAAO,cAAe;AAAA;AAAA;;MCnCvB,oBAAoB,MAA2C;AAC3E,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA;AAAA;;MCc7BC,yBAAuB,CAKnC,SAII,OACoE;AACxE,QAAM,QAAQ,YAAY,OAAO;AAEjC,MAAI,OACH,OAAO,QAAQ,WAAW,YAAY,MAAM,QAAQ;AACrD,MAAI,KAAS,OAAO,MAAO,WAAW,UAAU;AAEhD,MAAI,OAAO,MAAM,CAAC,OAAO,MAAM;AAC9B,WAAO,WAAW,WAAW,OAAO;AAAA,aAC1B,OAAO,QAAQ,CAAC,OAAO,MAAM;AACvC,SAAK,WAAW,UAAU,OAAO;AAAA;AAGlC,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA,aAAa,MAAM,MAAM;AAAA,IACzB,QAAQ,MAAM,SAAS;AAAA,IACvB,SAAS,MAAM,IAAI;AAAA,IACnB,SAAS,OAAO,iBAAkB;AAAA,IAClC,OAAO,OAAO,eAAgB;AAAA;AAAA;;MCjCnBC,UAAQ,CAIpB,SAA8D,OACI;AAClE,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC,MAAM,WAAW,UAAU,MAAM,QAAQ;AAAA,IACzC,SAAS,MAAM,SAAS,YACrB,SAAS,4BAA4B,OACrC,SAAS,4BAA4B;AAAA,IACxC,UAAU,WAAW,YAAY,MAAM,MAAM;AAAA,IAC7C,aAAa,MAAM,MAAM;AAAA,IACzB,QAAQ,OAAO,gBAAiB;AAAA,IAChC,cAAc,OAAO,mBAAoB;AAAA;AAAA;;MChB9BC,cAAY,CAMxB,SAA2C,OACS;AACpD,QAAM,SACL;AAED,aAAW,YAAY,OAAO,SAAS;AACtC,UAAM,SAAS,OAAO,QAAQ;AAE9B,QAAI,OAAO,SAAS,SAAS,yBAAyB,OAAO;AAC5D,aAAO,YAA8C;AAAA;AAAA;AAIvD,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC,UAAU;AAAA,IACV,QAAQ;AAAA,MACP;AAAA,MACA,SAAS,OAAO,WAAY;AAAA;AAAA;AAAA;;MC/BlBC,cAAY,CACxB,SAAmC,OACS;AAC5C,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC,QAAQ;AAAA,MACP,OAAO,WAAW,YAAY,MAAM,QAAQ;AAAA,MAC5C,aAAa,WAAW,aAAa,MAAM,MAAM,MAAM;AAAA;AAAA;AAAA;;MCT7CC,UAAQ,CACpB,SAA+B,OACS;AACxC,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,SAAS,MAAM,OACnB,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,KAEA,KAAK;AAEP,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC,QAAQ;AAAA,MACP,OAAO,WAAW,YAAY,MAAM,QAAQ;AAAA,MAC5C,aAAa,WAAW,aAAa,MAAM,MAAM,MAAM;AAAA,MACvD;AAAA,MACA,kBAAkB,MAAM,SAAS,YAAY,OAAO;AAAA;AAAA;AAAA;;MCtB1CC,QAAM,CAClB,SAA6B,OACS;AACtC,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO;AAAA,IACN,MAAM,SAAS,yBAAyB;AAAA,IACxC,QAAQ;AAAA,MACP,OAAO,WAAW,YAAY,MAAM,QAAQ;AAAA,MAC5C,aAAa,WAAW,aAAa,MAAM,MAAM,MAAM;AAAA;AAAA;AAAA;;MCV7C,kBAAkB,CAAC,WAA0C;AACzE,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO,WAAW,UACjB,MAAM,MAAM,MAAM,MAAM,SAAS,OAAO,EAAE,KAAK,GAAG,KAAK;AAAA;;ACUzD,MAAM,eAAe;AAAA,EACpB;AAAA,SACArB;AAAA,uBACAC;AAAA,QACAE;AAAA,SACAC;AAAA,YACAC;AAAA,SACAE;AAAA,qBACAC;AAAA,WACAC;AAAA,QACAC;AAAA,eACAC;AAAA,UACAC;AAAA,YACAC;AAAA,UACAC;AAAA,aACAK;AAAA,SACAC;AAAA;MAKY,yBAAyB,CACrC,SAAuC,OACf;AACxB,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,SAA6B;AAEnC,QAAM,aAAa,MAAM,OAAO,cAC/B,OAAO,KAAK;AAGb,aAAW,aAAa,YAAY;AACnC,UAAM,UAAU,gBAAgB,EAAE,MAAM,OAAO;AAC/C,UAAM,cAAc,aAAa;AAIjC,WAAO,WAAW,YAAY,EAAE,MAAM,OAAO;AAAA;AAG9C,SAAO;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MC5CK,YAAY,CAIxB,SAAiD,OAClB;AAC/B,QAAM,QAAQ,YAAY,OAAO;AAKjC,QAAM,QACL,OAAO,SACP,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,eAAe,cAAc,MAAM,KAAK;AACtE,QAAM,SACL,OAAO,UACP,MAAM,KAAK,OAAO,IAAI,IAAI,KAAK,eAAe,cAAc,MAAM,KAAK;AAExE,SACC,OAAO,UAAU,UACd,OACA,MAAM,KAAK,QAAQ,OAAO,QAAQ;AAAA;;MClC1B,2BAA2B,CAGvC,WACoE;AACpE,SAAO;AAAA,IACN,IAAI,OAAO,SAAS;AAAA,IACpB,MAAM,OAAO,SAAS;AAAA,IACtB,MAAM,OAAO,SAAS;AAAA,IACtB,KAAK,OAAO,SAAS,OAAO;AAAA;AAAA;;MCUjB,aAAa,CAGzB,SAA2C,OACpB;AA7BxB;AA8BC,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,QAAQ,OAAO,SAASE,aAAoB,EAAE,MAAM,OAAO;AAEjE,QAAM,iBAAiB,OAAO,OAC7B,IACA,GAAG,OAAO,OAAO,MAAM;AAGxB,QAAM,qBAAkD;AACxD,aAAW,OAAO,gBAAgB;AACjC,UAAM,aAAa,eAAe;AAIlC,QAAI,WAAW,SAAS,SAAS,yBAAyB,KAAK;AAC9D,yBAAmB,OAAO;AAAA;AAAA;AAI5B,QAAM,SAAS,OAAO,OAAO,gBAAgB,KAC5C,CAAC,eAAe,WAAW,SAAS,SAAS,yBAAyB;AAGvE,QAAM,UAAU,aAAO,YAAP,YAAkB;AAElC,QAAM,qBAAsB,QAAO,sBAAsB,IAAI,IAC5D,CAAC,8BACA,yBAAyB;AAAA,IACxB,UAAU;AAAA;AAIb,SAAO;AAAA,IACN,MAAM,MAAM;AAAA,IACZ,IAAI,MAAM,IAAI;AAAA,IACd,KAAK,SAAS,WAAW,UAAU,MAAM,MAAM,MAAM,MAAM;AAAA,IAC3D,KAAK,UAAU,MAAM,SAAS,QAAQ;AAAA,IACtC,MAAM,MAAM,SAAS;AAAA,IACrB,MAAM,MAAM,MAAM;AAAA,IAClB,MAAM,aAAa,EAAE,MAAM,OAAO;AAAA,IAClC,OAAO;AAAA,IACP,kBAAkB;AAAA,IAClB,qBAAqB;AAAA,IACrB,wBAAwB,UAAU,EAAE,MAAM,OAAO;AAAA,IACjD,uBAAuB,UAAU,EAAE,MAAM,OAAO;AAAA,IAChD,MAAM,iBAAiB;AAAA,MACtB,MAAM,OAAO;AAAA,MACb,KAAK;AAAA,MACL,SAAS,OAAO;AAAA;AAAA;AAAA;;MChEN,QAAQ,CAIpB,SAA6C,OAClB;AAC3B,QAAM,QAAQ,YAAY,OAAO;AAEjC,SACC,OAAO,UAAU,UAAU,OAAO,MAAM,SAAS,QAAQ;AAAA;;MClB9C,gCAAgC,CAG5C,WAMI;AACJ,SAAO;AAAA,IACN,WAAW,SAAS,SAAS;AAAA,IAC7B,IAAI,OAAO,SAAS;AAAA,IACpB,KAAK,OAAO,SAAS,OAAO;AAAA,IAC5B,MAAM,OAAO,SAAS;AAAA,IACtB,MAAM,OAAO,SAAS;AAAA,IACtB,MAAM,OAAO,SAAS;AAAA,IACtB,KAAK,OAAO,SAAS,OAAO;AAAA,IAC5B,MAAM,OAAO,SAAS,MAAM;AAAA,IAC5B,UAAU;AAAA;AAAA;;MCjBC,uBAAuB,CAAC,WAA0C;AAC9E,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO,WAAW,UAAU,MAAM,QAAQ;AAAA;;MCuB9B,sBAAsB,CAIlC,SAA2D,OACX;AAChD,QAAM,QAAQ,YAAY,OAAO;AAEjC,MAAI,OAAO,UAAU,SAAS;AAC7B,WAAO;AAAA,MACN,WAAW,SAAS,SAAS;AAAA;AAAA,SAExB;AACN,UAAM,QACL,OAAO,SAASC,sBAA6B,EAAE,MAAM,OAAO;AAE7D,UAAM,oBAAoB,OAAO,oBAC9B,OAAO,kBAAkB,OACzB,CACC,cAII;AACJ,UAAI,aAAa;AAEjB,UAAI,MAAM,OAAO,aAAa;AAC7B,qBACC,cAAc,MAAM,OAAO,YAAY,SAAS,UAAS;AAAA;AAG3D,UAAI,MAAM,OAAO,MAAM;AACtB,qBACC,cACA,MAAM,OAAO,KAAK,KAAK,CAAC,QAAQ,UAAS,KAAK,SAAS;AAAA;AAGzD,aAAO;AAAA,SAGR;AAAA,MACA;AAAA,WACIC,WAAY,EAAE,MAAM,OAAO;AAAA,QAC9B,MAAM,MAAM,OAAO,cAChB,MAAM,OAAO,aAAa,MAAM,OAAO,eACvC,qBAAqB,EAAE,MAAM,OAAO;AAAA,QACvC,MAAM,MAAM,OAAO,OAChB,MAAM,OAAO,cAAc,MAAM,OAAO,QACxC,aAAa,EAAE,MAAM,OAAO;AAAA;AAAA;AAOnC,UAAM,WAAW,MAAM,OAAO,aAAa;AAE3C,QAAI,CAAC,UAAU;AACd,YAAM,IAAI,MAAM;AAAA;AAGjB,WAAO,8BAA8B;AAAA,MACpC;AAAA;AAAA;AAAA;;MC/EU,OAAO,CAInB,SAA4C,OAClB;AAC1B,SACC,OAAO,UAAU,UACd,OACA,UAAU;AAAA,IACV,MAAM,OAAO;AAAA,IACb,OAAO,OAAO;AAAA,IACd,QAAQ,OAAO;AAAA,IACf,OAAO;AAAA,KACJ,MAAM,KAAK;AAAA;;MCpBN,kBAAkB,CAC9B,WACgC;AAChC,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO;AAAA,IACN,MAAM,MAAM,SAAS,YAClB,SAAS,UAAU,OACnB,SAAS,UAAU;AAAA,IACtB,KAAK,OAAO,UAAU;AAAA,IACtB,MAAM,OAAO,UAAU;AAAA,IACvB,OAAO,WAAW,YAAY,MAAM,MAAM,MAAM;AAAA,IAChD,SAAS,MAAM,SACb,OAAO,EAAE,KAAK,GAAG,KAAK,GAAG,WAAW,MACpC;AAAA,IACF,WAAW,MAAM,SAAS;AAAA,IAC1B,WAAW,OAAO,UAAU;AAAA,IAC5B,YAAY,MAAM,SAAS;AAAA,IAC3B,aAAa,MAAM,QAAQ;AAAA,IAC3B,eAAe,MAAM,QAAQ;AAAA,IAC7B,iBAAiB,OAAO,UAAU;AAAA,IAClC,kBAAkB,OAAO,UAAU;AAAA,IACnC,eAAe,OAAO,UAAU;AAAA,IAChC,OAAO,MAAM,SAAS,OAAO,EAAE,KAAK,KAAK,KAAK;AAAA,IAC9C,QAAQ,MAAM,SAAS,OAAO,EAAE,KAAK,KAAK,KAAK;AAAA;AAAA;;AC/BjD,MAAMC,YAA2B;AAAA,EAChC;AAAA,IACC,KAAK;AAAA,IACL,WAAW;AAAA,IACX,eAAe;AAAA,IACf,kBAAkB;AAAA,IAClB,iBAAiB;AAAA,IACjB,MAAM;AAAA;AAAA,EAEP;AAAA,IACC,KAAK;AAAA,IACL,WAAW;AAAA,IACX,eAAe;AAAA,IACf,kBAAkB;AAAA,IAClB,iBAAiB;AAAA,IACjB,MAAM;AAAA;AAAA,EAEP;AAAA,IACC,KAAK;AAAA,IACL,WAAW;AAAA,IACX,eAAe;AAAA,IACf,kBAAkB;AAAA,IAClB,iBAAiB;AAAA,IACjB,MAAM;AAAA;AAAA,EAEP;AAAA,IACC,KAAK;AAAA,IACL,WAAW;AAAA,IACX,eAAe;AAAA,IACf,kBAAkB;AAAA,IAClB,iBAAiB;AAAA,IACjB,MAAM;AAAA;AAAA,EAEP;AAAA,IACC,KAAK;AAAA,IACL,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,WAAW;AAAA,IACX,MAAM;AAAA;AAAA,EAEP;AAAA,IACC,KAAK;AAAA,IACL,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,WAAW;AAAA,IACX,MAAM;AAAA;AAAA,EAEP;AAAA,IACC,KAAK;AAAA,IACL,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,WAAW;AAAA,IACX,MAAM;AAAA;AAAA;MAKK,mBAAmB,CAC/B,WACmB;AACnB,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO,MAAM,OAAO,aAAaA;AAAA;;MCrDrBrB,UAAQ,CAIpB,SAA6C,OAClB;AAC3B,QAAM,YAAY,iBAAiB,EAAE,MAAM,OAAO;AAElD,SACC,OAAO,UAAU,UACd,KACA,gBAAgB,EAAE,MAAM,OAAO,MAAM;AAAA;;MCZ7B,WAAW,CAIvB,SAAgD,OAClB;AAC9B,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,cAAc,MAAM,QAAQ;AAElC,SACC,OAAO,UAAU,UACd,KACA;AAAA,IACA,WAAW,OAAO,WAAW,YAAY;AAAA,IACzC,UAAU,OAAO,WAAW,YAAY;AAAA;AAAA;;MCLhC,QAAQ,CAIpB,SAA6C,OACf;AA9B/B;AA+BC,MAAI,OAAO,UAAU,SAAS;AAC7B,WAAO;AAAA,SACD;AACN,UAAM,QAAQ,YAAY,OAAO;AAEjC,UAAM,QAAQ,OAAO,SAASsB,QAAe,EAAE,MAAM,OAAO;AAE5D,UAAM,aACL,aAAO,eAAP,YACA,MAAM,SAAS,OAAO;AAAA,MACrB,KAAK;AAAA,MACL,KAAK;AAAA;AAGP,WAAO,MAAM,YACX,KAAK,QACL,IAAI,MAAM;AACV,aAAO,iBAAiB;AAAA,QACvB,MAAM,OAAO;AAAA,QACb,KAAK,MAAM,OAAO;AAAA,QAClB,SAAS,OAAO;AAAA;AAAA;AAAA;AAAA;;MCrCR,uBAAuB,CAGnC,WACqC;AAlBtC;AAmBC,MAAI,OAAO,UAAU,SAAS;AAC7B,WAAO;AAAA,MACN,KAAK;AAAA,MACL,YAAY;AAAA,MACZ,KAAK;AAAA,MACL,WAAW;AAAA;AAAA,SAEN;AACN,UAAM,QAAQ,YAAY,OAAO;AAEjC,UAAM,MAAM,IAAI,IAAI,OAAO,UAAU;AAErC,UAAM,aAAa;AAAA,MAClB,OAAO,mBAAO,eAAP,mBAAmB,UAAnB,YAA4B,OAAO,UAAU;AAAA,MACpD,QAAQ,mBAAO,eAAP,mBAAmB,WAAnB,YAA6B,OAAO,UAAU;AAAA;AAGvD,QAAI,aAAa,IAAI,KAAK,WAAW,MAAM;AAC3C,QAAI,aAAa,IAAI,KAAK,WAAW,OAAO;AAC5C,QAAI,aAAa,IAAI,OAAO;AAE5B,WAAO;AAAA,MACN,KAAK,IAAI;AAAA,MACT;AAAA,MACA,KAAK,MAAM,MAAM;AAAA,MACjB,WAAW,MAAM,MAAM;AAAA;AAAA;AAAA;;ACxC1B,MAAM,UAA2B;AAAA,EAChC;AAAA,IACC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA;AAAA,EAET;AAAA,IACC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA;AAAA,EAET;AAAA,IACC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA;AAAA,EAET;AAAA,IACC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA;AAAA,EAET;AAAA,IACC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA;AAAA,EAET;AAAA,IACC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA;AAAA,EAET;AAAA,IACC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA;AAAA,EAET;AAAA,IACC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA;AAAA,EAET;AAAA,IACC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA;AAAA,EAET;AAAA,IACC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA;AAAA,EAET;AAAA,IACC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA;AAAA,EAET;AAAA,IACC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA;AAAA,EAET;AAAA,IACC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA;AAAA,EAET;AAAA,IACC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA;AAAA,EAET;AAAA,IACC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA;AAAA,EAET;AAAA,IACC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA;AAAA;MAMG,mBAAmB,CAC/B,WACmB;AACnB,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO,MAAM,OAAO,aAAa;AAAA;;MC3ErBnB,UAAQ,CAIpB,SAA6C,OACX;AAClC,QAAM,QAAQ,OAAO,SAASoB,QAAe,EAAE,MAAM,OAAO;AAC5D,QAAM,YAAY,iBAAiB,EAAE,MAAM,OAAO;AAElD,QAAM,QAAQ,qBAAqB;AAAA,IAClC,MAAM,OAAO;AAAA,IACb;AAAA,IACA,YAAY,MAAM,OAAO;AAAA,IACzB,OAAO,OAAO;AAAA;AAGf,aAAW,aAAa,MAAM,OAAO,YAAY;AAGhD,UAAM,UAAU,QAA8B,qBAAqB;AAAA,MAClE,MAAM,OAAO;AAAA,MACb;AAAA,MACA,YAAY;AAAA,QACX,OAAO,UAAU;AAAA,QACjB,QAAQ,UAAU;AAAA;AAAA,MAEnB,OAAO,OAAO;AAAA;AAAA;AAIhB,SAAO;AAAA;;MC3BK,oBAAoB,CAKhC,SAA+D,OAClB;AAC7C,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,YAAY,iBAAiB,EAAE,MAAM,OAAO;AAElD,SACC,OAAO,UAAU,UACd,OACA;AAAA,IACA,IAAI,MAAM,IAAI;AAAA,IACd,OAAO,WAAW,YAAY,MAAM,MAAM,MAAM;AAAA,IAChD,aAAa,MAAM,MAAM;AAAA,IACzB,WAAW,UAAU;AAAA,IACrB,aAAa,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,eAAe;AAAA,IACzD,MAAM,OAAO;AAAA;AAAA;;MC1BL,UAAU,CAItB,SAA+C,OAClB;AAC7B,QAAM,QAAQ,YAAY,OAAO;AAEjC,SACC,OAAO,UAAU,UACd,OACA,WAAW,aAAa,MAAM,MAAM,MAAM;AAAA;;MCZlC,cAAc,CAI1B,SAAmD,OAClB;AACjC,QAAM,QAAQ,YAAY,OAAO;AAEjC,MAAI,OAAO,UAAU,SAAS;AAC7B,WAAO;AAAA,MACN,WAAW,SAAS,SAAS;AAAA;AAAA,SAExB;AACN,WAAO;AAAA,MACN,WAAW,SAAS,SAAS;AAAA,MAC7B,MAAM,MAAM,OAAO;AAAA,MACnB,MAAM,MAAM,OAAO;AAAA,MACnB,KAAK,MAAM,SAAS;AAAA,MACpB,MAAM,MAAM,SAAS,SAAS;AAAA,MAC9B,QAAQ,MAAM,SAAS,SAAS;AAAA,MAChC,OAAO,MAAM,SAAS,SAAS;AAAA;AAAA;AAAA;;MCOrB,OAAO,CAKnB,SAAsD,OAClB;AAhDrC;AAiDC,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,OACL,OAAO,QACP,MAAM,OAAO,aAAa;AAAA,IACzB,SAAS,SAAS;AAAA,IAClB,SAAS,SAAS;AAAA,IAClB,SAAS,SAAS;AAAA;AAGpB,MAAI,OAAO,UAAU,SAAS;AAC7B,WAAO;AAAA,MACN,WAAW;AAAA;AAAA,SAEN;AACN,YAAQ;AAAA,WACF,SAAS,SAAS,UAAU;AAChC,eAAO,oBAAoB;AAAA,UAC1B,MAAM,OAAO;AAAA,UACb,OAAO,OAAO;AAAA,UACd,mBAAmB,OAAO;AAAA;AAAA;AAAA,WAIvB,SAAS,SAAS,OAAO;AAC7B,eAAO,YAAY;AAAA,UAClB,MAAM,OAAO;AAAA,UACb,OAAO,OAAO;AAAA;AAAA;AAAA,WAIX,SAAS,SAAS;AAAA,eACd;AACR,cAAM,QAAQ,OAAO,SAASC,OAAc,EAAE,MAAM,OAAO;AAE3D,eAAO;AAAA,UACN,WAAW,SAAS,SAAS;AAAA,UAC7B,KAAK,MAAM,SAAS;AAAA,UACpB,QACC,cAAO,oBAAP,YACC,MAAM,OAAO,oBAAoB,MAAM,SAAS,aAC9C,WACA;AAAA;AAAA;AAAA;AAAA;AAAA;;MC5EI,SAAS,CAIrB,SAA8C,OAClB;AAC5B,QAAM,QAAQ,YAAY,OAAO;AAEjC,SACC,OAAO,UAAU,UAAU,OAAO,MAAM,SAAS;AAAA;;ACCnD,MAAMC,aAAW;AAAA,EAChB,OAAO;AAAA,IACN,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEX,QAAQ;AAAA,IACP,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEX,MAAM;AAAA,IACL,UAAU;AAAA,IACV,UAAU;AAAA;AAAA;MAQC,UAAU,CACtB,SAAyC,OACV;AAC/B,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,QAAQ,OAAO,SAASC,QAAe,EAAE,MAAM,OAAO;AAE5D,QAAM,QACL,aAAY,MAAM,SAAS,MAAM,OAAO,SAAS,MAAM,OAAO,OAE7D,MAAM,KACN,OAAO,CAAC,UACR;AAAA,IACC,SAAS,iBAAiB;AAAA,IAC1B,SAAS,iBAAiB;AAAA,IAC1B,SAAS,iBAAiB;AAAA,IAC1B,SAAS,iBAAiB;AAAA,IAC1B,SAAS,iBAAiB;AAAA,IAC1B,SAAS,iBAAiB;AAAA,IACzB,SAAS;AAEb,QAAM,OAAO,MAAM,OAAO,aAAa;AAEvC,MAAI,MAAM;AACT,UAAM,aACL,OAAO,WACP,MAAM,OAAO,aACZ,OAAO,KAAKD;AAEd,UAAM,UAAUA,WAAS;AAEzB,WAAO;AAAA,MACN;AAAA,MACA,MAAM,WAAW,YAChB,MAAM,MAAM,MACX,MAAM,SAAS,OAAO;AAAA,QACrB,KAAK,QAAQ;AAAA,QACb,KAAK,QAAQ;AAAA;AAAA,MAIhB,OAAO;AAAA;AAAA,SAEF;AACN,WAAO;AAAA;AAAA;;AClFT,MAAMA,aAAW;AAAA,EAChB,OAAO;AAAA,IACN,eAAe;AAAA;AAAA,EAEhB,QAAQ;AAAA,IACP,eAAe;AAAA;AAAA,EAEhB,MAAM;AAAA,IACL,eAAe;AAAA;AAAA;MAQJ,YAAY,CACxB,SAA2C,OACD;AAC1C,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,aACL,OAAO,WACP,MAAM,OAAO,aACZ,OAAO,KAAKA;AAEd,QAAM,UAAUA,WAAS;AAEzB,SAAO;AAAA,IACN,MAAM,SAAS,iBAAiB;AAAA,IAChC,MAAM,MAAM,MAAM,UAAU,QAAQ;AAAA,IACpC,OAAO;AAAA;AAAA;;AC/BT,MAAMA,aAAW;AAAA,EAChB,OAAO;AAAA,IACN,eAAe;AAAA;AAAA,EAEhB,QAAQ;AAAA,IACP,eAAe;AAAA;AAAA,EAEhB,MAAM;AAAA,IACL,eAAe;AAAA;AAAA;MAQJ,eAAe,CAC3B,SAA8C,OACD;AAC7C,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,aACL,OAAO,WACP,MAAM,OAAO,aACZ,OAAO,KAAKA;AAEd,QAAM,UAAUA,WAAS;AAEzB,SAAO;AAAA,IACN,MAAM,SAAS,iBAAiB;AAAA,IAEhC,MAAM,MAAM,MAAM,UAAU,QAAQ;AAAA,IACpC,OAAO;AAAA;AAAA;;AChCT,MAAMA,aAAW;AAAA,EAChB,OAAO;AAAA,IACN,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEX,QAAQ;AAAA,IACP,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEX,MAAM;AAAA,IACL,UAAU;AAAA,IACV,UAAU;AAAA;AAAA;MAQC,OAAO,CACnB,SAAsC,OACK;AAC3C,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,aACL,OAAO,WACP,MAAM,OAAO,aACZ,OAAO,KAAKA;AAEd,QAAM,UAAUA,WAAS;AAEzB,QAAM,aAAa,MAAM,SAAS,OAAO;AAAA,IACxC,KAAK,QAAQ;AAAA,IACb,KAAK,QAAQ;AAAA;AAGd,SAAO,MAAM,YACX,KAAK,QACL,IAAI,MAAM;AACV,WAAO;AAAA,MACN,MAAM,SAAS,iBAAiB;AAAA,MAChC,MAAM,MAAM,MAAM;AAAA,MAClB,OAAO;AAAA;AAAA;AAAA;;AC1CX,MAAMA,aAAW;AAAA,EAChB,OAAO;AAAA,IACN,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEX,QAAQ;AAAA,IACP,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEX,MAAM;AAAA,IACL,UAAU;AAAA,IACV,UAAU;AAAA;AAAA;MAQC,QAAQ,CACpB,SAAuC,OACK;AAC5C,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,aACL,OAAO,WACP,MAAM,OAAO,aACZ,OAAO,KAAKA;AAEd,QAAM,UAAUA,WAAS;AAEzB,QAAM,aAAa,MAAM,SAAS,OAAO;AAAA,IACxC,KAAK,QAAQ;AAAA,IACb,KAAK,QAAQ;AAAA;AAGd,SAAO,MAAM,YACX,KAAK,QACL,IAAI,MAAM;AACV,WAAO;AAAA,MACN,MAAM,SAAS,iBAAiB;AAAA,MAChC,MAAM,MAAM,MAAM;AAAA,MAClB,OAAO;AAAA;AAAA;AAAA;;MCvCE,QAAQ,CACpB,SAAuC,OACD;AACtC,QAAM,YAAY,iBAAiB,EAAE,MAAM,OAAO;AAClD,QAAM,aAAa,qBAAqB;AAAA,IACvC,MAAM,OAAO;AAAA,IACb;AAAA,IACA,OAAO;AAAA;AAGR,SAAO;AAAA,IACN,MAAM,SAAS,iBAAiB;AAAA,IAChC,KAAK,WAAW;AAAA,IAEhB,KAAK,WAAW;AAAA,IAChB,WAAW,WAAW;AAAA,IAEtB,YAAY,WAAW;AAAA;AAAA;;MCjBZ,QAAQ,CACpB,SAAuC,OACD;AACtC,QAAM,YAAY,iBAAiB,EAAE,MAAM,OAAO;AAClD,QAAM,aAAa,gBAAgB,EAAE,MAAM,OAAO,MAAM;AAExD,SAAO;AAAA,IACN,MAAM,SAAS,iBAAiB;AAAA,IAChC,QAAQ;AAAA;AAAA;;ACFV,MAAM,WAAW;AAAA,EAChB,OAAO;AAAA,IACN,eAAe;AAAA,IACf,eAAe;AAAA;AAAA,EAEhB,QAAQ;AAAA,IACP,eAAe;AAAA,IACf,eAAe;AAAA;AAAA,EAEhB,MAAM;AAAA,IACL,eAAe;AAAA,IACf,eAAe;AAAA;AAAA;AAQjB,MAAM,aAAa;AAAA,GACjB,SAAS,iBAAiB,WAAW;AAAA,GACrC,SAAS,iBAAiB,WAAW;AAAA,GACrC,SAAS,iBAAiB,WAAW;AAAA,GACrC,SAAS,iBAAiB,WAAW;AAAA,GACrC,SAAS,iBAAiB,WAAW;AAAA,GACrC,SAAS,iBAAiB,WAAW;AAAA,GACrC,SAAS,iBAAiB,YAAY;AAAA,GACtC,SAAS,iBAAiB,eAAe;AAAA,GACzC,SAAS,iBAAiB,WAAW;AAAA,GACrC,SAAS,iBAAiB,YAAY;AAAA,GACtC,SAAS,iBAAiB,QAAQ;AAAA,GAClC,SAAS,iBAAiB,QAAQ;AAAA;MAGvB,WAAW,CACvB,SAAkC,OACN;AAC5B,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,QACL,OAAO,SACPE,WAAkB;AAAA,IACjB,MAAM,OAAO;AAAA,IACb,oBAAoB;AAAA;AAEtB,QAAM,yBAAyB,WAAW,MAAM;AAChD,QAAM,QACL,YAAW,MAAM,SAAS,MAAM,OAAO,QAAQ,MAAM,OAAO,QAE3D,MAAM,KACN,OAAO,CAAC,SACR,OAAO,KAAK,YAAY,SAAS;AAGnC,MAAI,MAAM,SAAS,GAAG;AACrB,UAAM,aACL,OAAO,WACP,MAAM,OAAO,aACZ,OAAO,KAAK;AAEd,UAAM,UAAU,SAAS;AAEzB,UAAM,aAAa,yBAChB,MAAM,SAAS,OAAO;AAAA,MACtB,KAAK,QAAQ;AAAA,MACb,KAAK,QAAQ;AAAA,SAEb;AAEH,WAAO,MAAM,YACX,KAAK,QACL,IAAI,MAAM;AACV,YAAM,OAAO,MAAM,OAAO,aAAa;AACvC,YAAM,YAAY,WAAW;AAE7B,aAAO,UAAU,EAAE,MAAM,OAAO,MAAM;AAAA,OAEtC,OACA,OAAO,CAAC,UAAoC,UAAU,QACtD,MAAM,GAAG;AAAA,SACL;AACN,WAAO;AAAA;AAAA;;MC9EI,SAAS,CAIrB,SAA8C,OACX;AACnC,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,QAAQ,OAAO,SAASC,SAAgB,EAAE,MAAM,OAAO;AAC7D,QAAM,eAAe,MAAM,OAAO;AAElC,MAAI,OAAO,UAAU,SAAS;AAC7B,WAAO;AAAA,SACD;AACN,WACC,OAAO,iBAAiB,YAAY,MAAM,SAAS,YAChD,eACA,MAAM,OAAO,aAAa,MAAM,OAAO;AAAA;AAAA;;MCXhC,QAAQ,CAGpB,SAAsC,OACf;AA5BxB;AA6BC,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,QAAQ,OAAO,SAASC,QAAe,EAAE,MAAM,OAAO;AAE5D,QAAM,YAAY,aAAO,SAAP,YAAe,gBAAgB,EAAE,MAAM,OAAO;AAChE,QAAM,aACL,OAAO,UAAU,SACd,OAAO,QACP,WAAW,YAAY,MAAM,QAAQ;AAEzC,QAAM,aACL,OAAO,KAAK,MAAM,QAAQ,SAAS,IAChC,aAAO,eAAP,YACA,MAAM,SAAS,OAAO;AAAA,IACtB,KAAK;AAAA,IACL,KAAK;AAAA,OAEL;AAEJ,SAAO;AAAA,IACN,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS,iBAAiB;AAAA,MACzB,MAAM,OAAO;AAAA,MACb,KAAK,MAAM;AAAA,MACX,SAAS,OAAO;AAAA;AAAA,IAEjB,OAAO,MAAM,YACX,KAAK,QACL,IAAI,MAAM;AACV,aAAO,iBAAiB;AAAA,QACvB,MAAM,OAAO;AAAA,QACb,KAAK,MAAM;AAAA,QACX,SAAS,OAAO;AAAA;AAAA;AAAA;AAAA;;MCvCR,uBAAuB,CAGnC,SAAqD,OAC9B;AA3BxB;AA4BC,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,QACL,OAAO,SAASC,uBAA8B,EAAE,MAAM,OAAO;AAE9D,QAAM,YAAY,aAAO,SAAP,YAAe,gBAAgB,EAAE,MAAM,OAAO;AAEhE,QAAM,aACL,OAAO,KAAK,MAAM,OAAO,SAAS,IAC/B,aAAO,eAAP,YACA,MAAM,SAAS,OAAO;AAAA,IACtB,KAAK;AAAA,IACL,KAAK;AAAA,OAEL;AAEJ,SAAO;AAAA,IACN,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,WAAW,MAAM;AAAA,IACjB,SAAS,MAAM,IAAI;AAAA,IACnB,SAAS,iBAAiB;AAAA,MACzB,MAAM,OAAO;AAAA,MACb,KAAK,MAAM;AAAA,MACX,SAAS,OAAO;AAAA;AAAA,IAEjB,OAAO,MAAM,YACX,KAAK,QACL,IAAI,MAAM;AACV,aAAO,iBAAiB;AAAA,QACvB,MAAM,OAAO;AAAA,QACb,KAAK,MAAM;AAAA,QACX,SAAS,OAAO;AAAA;AAAA;AAAA;AAAA;;MCxCR,cAAc,CAG1B,SAA4C,OACrB;AACvB,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,QAAQ,OAAO,SAASC,cAAqB,EAAE,MAAM,OAAO;AAClE,QAAM,iBAAiB,MAAM,OAAO,aAAa,MAAM;AAEvD,SAAO,qBAAqB;AAAA,IAC3B,MAAM,OAAO;AAAA,IACb,OAAO;AAAA,IACP,YAAY,OAAO;AAAA,IACnB,MAAM,MAAM;AAAA,IACZ,qBAAqB,OAAO;AAAA,IAC5B,mBAAmB,OAAO;AAAA;AAAA;;MCbf,YAAY,CAIxB,SAAiD,OACnB;AA5B/B;AA6BC,MAAI,OAAO,UAAU,SAAS;AAC7B,WAAO;AAAA,SACD;AACN,UAAM,QAAQ,YAAY,OAAO;AAEjC,UAAM,QAAQ,OAAO,SAASC,YAAmB,EAAE,MAAM,OAAO;AAEhE,QAAI,OAAO,KAAK,MAAM,OAAO,SAAS,SAAS,GAAG;AACjD,YAAM,aACL,aAAO,eAAP,YACA,MAAM,SAAS,OAAO;AAAA,QACrB,KAAK;AAAA,QACL,KAAK;AAAA;AAGP,aAAO,MAAM,YACX,KAAK,QACL,IAAI,MAAM;AA9Cf;AA+CK,cAAM,UAAU,OAAO,QAAQ,MAAM,OAAO;AAC5C,cAAM,CAAC,YAAY,eAAe,MAAM,OAAO,aAAa;AAE5D,cAAM,eAAe,MAAM,OAAO,OAAO,eAAe;AACxD,cAAM,cAAc,MAAM,OAAO,aAAa;AAE9C,gBAAQ,YAAY;AAAA,eACd,SAAS,yBAAyB,OAAO;AAC7C,mBAAO,MAAM;AAAA,cACZ,MAAM,OAAO;AAAA,cACb,OAAO;AAAA,cACP,MAAM;AAAA,cACN,OAAO,cAAc,YAAY,OAAO;AAAA,cACxC,qBAAqB,OAAO;AAAA,cAC5B,mBAAmB,OAAO;AAAA;AAAA;AAAA,eAIvB,SAAS,yBAAyB,aAAa;AACnD,kBAAM,mBAAmB,cAAO,sBAAP,oBAA0B,KAClD,CAAC,sBAAqB,kBAAiB,OAAO;AAG/C,gBAAI,kBAAkB;AACrB,qBAAO,YAAY;AAAA,gBAClB,MAAM,OAAO;AAAA,gBACb,OAAO;AAAA,gBACP,qBAAqB,OAAO;AAAA,gBAC5B,mBAAmB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,SAM9B,OACA,CAAC,WACA,WAAU;AAAA,WAEP;AACN,aAAO;AAAA;AAAA;AAAA;;MCpEG,QAAQ,CAIpB,SAA6C,OAClB;AAC3B,MAAI,OAAO,UAAU,SAAS;AAC7B,WAAO;AAAA,SACD;AACN,WAAO;AAAA,MAEN,QAAQ;AAAA,QACP,MAAM,OAAO;AAAA,QACb,OAAO,OAAO;AAAA,QACd,SAAS,OAAO;AAAA;AAAA;AAAA;AAAA;;MCrBP,MAAM,CAClB,SAA6B,OACqB;AAClD,QAAM,QAAQ,YAAY,OAAO;AAEjC,SAAO,WAAW,UAAU,MAAM,MAAM,MAAM;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCIlC,MAAM,CAClB,SAA4C,OACN;AAtBvC;AAuBC,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,QAAsB;AAAA,IAC3B,IAAI,MAAM,IAAI;AAAA,IACd,KAAK,MAAM,IAAI;AAAA,IACf,aAAa,aAAO,gBAAP,YAAsB;AAAA,IACnC,OAAO,OAAO,cACX,WACA,WAAW,YAAY,MAAM,QAAQ;AAAA;AAGzC,MAAI,OAAO,aAAa;AAEvB,UAAM,cAAc,UAAU,EAAE,MAAM,OAAO;AAAA;AAG9C,SAAO;AAAA;;MCzBK,aAAa,CACzB,SAAsC,OACb;AACzB,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,QAAS,QAAO,oBAAoB,IAAI,OAAO,CAAC,KAAK,UAAU;AACpE,QAAI,MAAM,MAAM,MAAM;AAEtB,WAAO;AAAA,KACL;AAEH,SAAO;AAAA,IACN,MAAM;AAAA,MACL,IAAI,EAAE,MAAM,OAAO,MAAM,aAAa;AAAA,MACtC,GAAI,OAAO,eACR,CAAC,IAAI,EAAE,MAAM,OAAO,SAAS,IAAI,EAAE,MAAM,OAAO,WAChD;AAAA;AAAA,IAEJ,sBAAsB,IAAI,EAAE,MAAM,OAAO,QAAQ;AAAA,IACjD;AAAA,IACA,WAAW;AAAA,MACV;AAAA,QACC,IAAI,MAAM,MAAM;AAAA,QAChB,MAAM,WAAW,YAAY,MAAM,MAAM;AAAA;AAAA;AAAA,IAG3C,MAAM,aAAa;AAAA,MAClB,MAAM,OAAO;AAAA,MACb,KAAK;AAAA,MACL,KAAK;AAAA;AAAA,IAEN,OAAO;AAAA,IACP,SAAS;AAAA,IACT,SAAS,MAAM,IAAI;AAAA,IACnB,WAAW;AAAA,IACX,aAAa;AAAA,IACb,aAAa,MAAM,SAAS;AAAA,IAC5B,gBAAgB,MAAM,SAAS;AAAA;AAAA;;MCrCpB,QAAQ,CAGpB,SAA2C,OACb;AAlB/B;AAmBC,QAAM,QAAQ,YAAY,OAAO;AAEjC,QAAM,YAAY,OAAO,aAAa;AACtC,QAAM,OAAO,KAAK,IAAI,GAAG,aAAO,SAAP,YAAe;AACxC,QAAM,WAAW,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,aAAO,aAAP,YAAmB;AAC9D,QAAM,aAAa,KAAK,KAAK,UAAU,SAAS;AAChD,QAAM,UAAU,UAAU,MAAO,QAAO,KAAK,UAAU,OAAO;AAE9D,SAAO;AAAA,IACN;AAAA,IACA,WAAW,OAAO,aAAa,MAAM,SAAS,QAAQ;AAAA,IACtD,WAAW,OAAO,IAAI,MAAM,SAAS,QAAQ;AAAA,IAC7C,aAAa;AAAA,IACb,cAAc,QAAQ;AAAA,IACtB,kBAAkB;AAAA,IAClB,oBAAoB,UAAU;AAAA,IAC9B;AAAA;AAAA;;MC3BW,OAAO,CAAC,SAAgC,OAAsB;AAC1E,SAAO,aAAa;AAAA,IACnB,MAAM,OAAO;AAAA,IACb,KAAK;AAAA,IACL,KAAK;AAAA;AAAA;;;;;;;;;;;;"}
|