prismic-ts-codegen 0.0.7 → 0.1.2
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/bin/cli.mjs +164 -150
- package/dist/index.cjs +163 -149
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +164 -150
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
- package/src/constants.ts +2 -1
- package/src/lib/addInterfacePropertiesForFields.ts +170 -152
- package/src/lib/addTypeAliasForSharedSlice.ts +2 -2
- package/src/lib/buildFieldDocs.ts +2 -1
- package/src/lib/getFieldDocumentationURL.ts +4 -2
- package/src/lib/getHumanReadableFieldType.ts +8 -2
- package/src/lib/getHumanReadableModelName.ts +12 -10
- package/src/lib/hasOwnProperty.ts +15 -0
- package/src/lib/isCustomTypeModelField.ts +1 -6
- package/src/lib/isCustomTypeModelSlice.ts +8 -3
- package/src/lib/isSharedSliceModel.ts +9 -2
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/constants.ts","../src/lib/isCustomTypeModelField.ts","../src/lib/isCustomTypeModelSlice.ts","../src/lib/isSharedSliceModel.ts","../src/lib/getAPIIDPath.ts","../src/lib/getFieldDocumentationURL.ts","../src/lib/isCustomTypeModel.ts","../src/lib/getHumanReadableModelName.ts","../src/lib/getHumanReadableFieldPath.ts","../src/lib/getHumanReadableFieldType.ts","../src/lib/writeFieldDocsDescription.ts","../src/lib/buildFieldDocs.ts","../src/lib/pascalCase.ts","../src/lib/buildSharedSliceInterfaceName.ts","../src/lib/addInterfacePropertiesForFields.ts","../src/lib/addTypeAliasForCustomType.ts","../src/lib/addTypeAliasForSharedSlice.ts","../src/lib/getSourceFileText.ts","../src/generateTypes.ts"],"sourcesContent":["import type { CustomTypeModelFieldType } from \"@prismicio/types\";\nimport { stripIndent } from \"common-tags\";\n\nexport const BLANK_LINE_IDENTIFIER = \"// ___BLANK_LINE_TO_BE_REPLACED___\";\n\nexport const NON_EDITABLE_FILE_HEADER = stripIndent`\n\t// Code generated by prismic-ts-codegen. DO NOT EDIT.\n\t${BLANK_LINE_IDENTIFIER}\n`;\n\nexport const CUSTOM_TYPES_DOCUMENTATION_URL =\n\t\"https://prismic.io/docs/core-concepts/custom-types\";\n\nexport const SHARED_SLICES_DOCUMENTATION_URL =\n\t\"https://prismic.io/docs/core-concepts/reusing-slices\";\n\nexport const FIELD_DOCUMENTATION_URLS: Record<\n\tkeyof typeof CustomTypeModelFieldType,\n\tstring\n> = {\n\tUID: \"https://prismic.io/docs/core-concepts/uid\",\n\tBoolean: \"https://prismic.io/docs/core-concepts/boolean\",\n\tColor: \"https://prismic.io/docs/core-concepts/color\",\n\tDate: \"https://prismic.io/docs/core-concepts/date\",\n\tTimestamp: \"https://prismic.io/docs/core-concepts/timestamp\",\n\tNumber: \"https://prismic.io/docs/core-concepts/number\",\n\tText: \"https://prismic.io/docs/core-concepts/key-text\",\n\tSelect: \"https://prismic.io/docs/core-concepts/select\",\n\tStructuredText: \"https://prismic.io/docs/core-concepts/rich-text-title\",\n\tImage: \"https://prismic.io/docs/core-concepts/image\",\n\tLink: \"https://prismic.io/docs/core-concepts/link-content-relationship\",\n\tEmbed: \"https://prismic.io/docs/core-concepts/embed\",\n\tGeoPoint: \"https://prismic.io/docs/core-concepts/geopoint\",\n\tGroup: \"https://prismic.io/docs/core-concepts/group\",\n\tIntegrationFields: \"https://prismic.io/docs/core-concepts/integration-fields\",\n\tSlices: \"https://prismic.io/docs/core-concepts/slices\",\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\n\nexport const isCustomTypeModelField = (\n\tmodel: unknown,\n): model is CustomTypeModelField => {\n\treturn (\n\t\ttypeof model === \"object\" &&\n\t\tmodel !== null &&\n\t\t\"type\" in model &&\n\t\t\"config\" in model\n\t);\n};\n","import type { CustomTypeModelSlice } from \"@prismicio/types\";\n\nexport const isCustomTypeModelSlice = (\n\tmodel: unknown,\n): model is CustomTypeModelSlice => {\n\treturn (\n\t\ttypeof model === \"object\" &&\n\t\tmodel !== null &&\n\t\t\"non-repeat\" in model &&\n\t\t\"repeat\" in model\n\t);\n};\n","import type { SharedSliceModel } from \"@prismicio/types\";\n\nexport const isSharedSliceModel = (\n\tmodel: unknown,\n): model is SharedSliceModel => {\n\treturn typeof model === \"object\" && model !== null && \"variations\" in model;\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport { CustomTypeModelFieldType } from \"@prismicio/types\";\n\nimport { PathElement } from \"../types\";\nimport { isCustomTypeModelField } from \"./isCustomTypeModelField\";\nimport { isCustomTypeModelSlice } from \"./isCustomTypeModelSlice\";\nimport { isSharedSliceModel } from \"./isSharedSliceModel\";\n\ntype GetAPIIDPathConfig = {\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n};\n\nexport const getAPIIDPath = (config: GetAPIIDPathConfig): string => {\n\treturn config.path\n\t\t.map((element, i) => {\n\t\t\tif (\n\t\t\t\tisCustomTypeModelField(element.model) &&\n\t\t\t\t(element.model.type === CustomTypeModelFieldType.Group ||\n\t\t\t\t\telement.model.type === CustomTypeModelFieldType.Slices)\n\t\t\t) {\n\t\t\t\treturn `${element.id}[]`;\n\t\t\t} else {\n\t\t\t\tif (element.id === \"items\") {\n\t\t\t\t\tconst previousElement = config.path[i - 1];\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tisCustomTypeModelSlice(previousElement.model) ||\n\t\t\t\t\t\tisSharedSliceModel(previousElement.model)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn `${element.id}[]`;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn element.id;\n\t\t\t}\n\t\t})\n\t\t.join(\".\");\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\n\nimport { FIELD_DOCUMENTATION_URLS } from \"../constants\";\n\ntype GetFieldDocumentationURLConfig = {\n\tmodel: CustomTypeModelField;\n};\n\nexport const getFieldDocumentationURL = (\n\tconfig: GetFieldDocumentationURLConfig,\n): string => {\n\treturn FIELD_DOCUMENTATION_URLS[config.model.type];\n};\n","import type { CustomTypeModel } from \"@prismicio/types\";\n\nexport const isCustomTypeModel = (model: unknown): model is CustomTypeModel => {\n\treturn typeof model === \"object\" && model !== null && \"json\" in model;\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\n\nimport { isCustomTypeModel } from \"./isCustomTypeModel\";\nimport { isCustomTypeModelField } from \"./isCustomTypeModelField\";\nimport { isCustomTypeModelSlice } from \"./isCustomTypeModelSlice\";\nimport { isSharedSliceModel } from \"./isSharedSliceModel\";\n\ntype GetModelHumanNameConfig = {\n\tid: string;\n\tmodel:\n\t\t| CustomTypeModel\n\t\t| SharedSliceModel\n\t\t| CustomTypeModelField\n\t\t| CustomTypeModelSlice;\n};\n\nexport const getHumanReadableModelName = (\n\tconfig: GetModelHumanNameConfig,\n): string => {\n\tif (isCustomTypeModel(config.model)) {\n\t\treturn config.model.label;\n\t} else if (isSharedSliceModel(config.model)) {\n\t\treturn config.model.name;\n\t} else if (\n\t\tisCustomTypeModelField(config.model) &&\n\t\t\"label\" in config.model.config\n\t) {\n\t\treturn config.model.config.label;\n\t} else if (isCustomTypeModelSlice(config.model)) {\n\t\treturn config.model.fieldset;\n\t} else {\n\t\t// Slice Zone\n\t\treturn `Slice Zone (\\`${config.id}\\`)`;\n\t}\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\n\nimport { PathElement } from \"../types\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\n\ntype GetHumanReadableFieldPathConfig = {\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n};\n\nexport const getHumanReadableFieldPath = (\n\tconfig: GetHumanReadableFieldPathConfig,\n): string => {\n\treturn config.path\n\t\t.map((element) => {\n\t\t\tif (element.label) {\n\t\t\t\treturn element.label;\n\t\t\t} else if (element.model) {\n\t\t\t\treturn getHumanReadableModelName({\n\t\t\t\t\tid: element.id,\n\t\t\t\t\tmodel: element.model,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn element.id;\n\t\t\t}\n\t\t})\n\t\t.join(\" → \");\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\nimport { CustomTypeModelLinkSelectType } from \"@prismicio/types\";\n\ntype GetFieldHumanReadableTypeConfig = {\n\tmodel: CustomTypeModelField;\n};\n\nexport const getHumanReadableFieldType = (\n\tconfig: GetFieldHumanReadableTypeConfig,\n): string => {\n\tswitch (config.model.type) {\n\t\tcase \"StructuredText\": {\n\t\t\tconst isTitleField =\n\t\t\t\t\"single\" in config.model.config &&\n\t\t\t\tconfig.model.config.single\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.every((blockType) => /heading/.test(blockType));\n\n\t\t\treturn isTitleField ? \"Title\" : \"Rich Text\";\n\t\t}\n\n\t\tcase \"IntegrationFields\": {\n\t\t\treturn `Integration Fields (Catalog: \\`${config.model.config.catalog}\\`)`;\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tswitch (config.model.config.select) {\n\t\t\t\tcase CustomTypeModelLinkSelectType.Document: {\n\t\t\t\t\treturn \"Content Relationship\";\n\t\t\t\t}\n\n\t\t\t\tcase CustomTypeModelLinkSelectType.Media: {\n\t\t\t\t\treturn \"Link to Media\";\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\treturn \"Link\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\treturn \"Slice Zone\";\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn config.model.type;\n\t\t}\n\t}\n};\n","import type { CodeBlockWriter } from \"ts-morph\";\n\ntype BuildFieldDocsConfig = {\n\twriter: CodeBlockWriter;\n\tdescription?: string;\n\tfieldType?: string;\n\tdefaultValue?: string | boolean;\n\tplaceholder?: string;\n\tapiIDPath?: string;\n\ttabName?: string;\n\tdocumentationURL?: string;\n};\n\nexport const writeFieldDocsDescription = (\n\tconfig: BuildFieldDocsConfig,\n): void => {\n\tif (config.description) {\n\t\tconfig.writer.writeLine(config.description);\n\t}\n\n\tconfig.writer.blankLineIfLastNot();\n\n\tif (config.fieldType) {\n\t\tconfig.writer.writeLine(`- **Field Type**: ${config.fieldType}`);\n\t}\n\n\tif (config.placeholder) {\n\t\tconfig.writer.writeLine(`- **Placeholder**: ${config.placeholder}`);\n\t}\n\n\tif (config.defaultValue !== undefined) {\n\t\tconst stringifiedDefaultValue =\n\t\t\ttypeof config.defaultValue === \"boolean\"\n\t\t\t\t? `${config.defaultValue}`\n\t\t\t\t: config.defaultValue;\n\n\t\tconfig.writer.writeLine(`- **Default Value**: ${stringifiedDefaultValue}`);\n\t}\n\n\tif (config.apiIDPath) {\n\t\tconfig.writer.writeLine(`- **API ID Path**: ${config.apiIDPath}`);\n\t}\n\n\tif (config.tabName) {\n\t\tconfig.writer.writeLine(`- **Tab**: ${config.tabName}`);\n\t}\n\n\tif (config.documentationURL) {\n\t\tconfig.writer.writeLine(`- **Documentation**: ${config.documentationURL}`);\n\t}\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport type { JSDocableNodeStructure } from \"ts-morph\";\n\nimport { PathElement } from \"../types\";\nimport { getAPIIDPath } from \"./getAPIIDPath\";\nimport { getFieldDocumentationURL } from \"./getFieldDocumentationURL\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { getHumanReadableFieldType } from \"./getHumanReadableFieldType\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\nimport { writeFieldDocsDescription } from \"./writeFieldDocsDescription\";\n\ntype BuildFieldDocsConfig = {\n\tid: string;\n\tmodel: CustomTypeModelField;\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n\ttabName?: string;\n};\n\nexport const buildFieldDocs = (\n\tconfig: BuildFieldDocsConfig,\n): NonNullable<JSDocableNodeStructure[\"docs\"]> => {\n\treturn [\n\t\t{\n\t\t\tdescription: (writer) => {\n\t\t\t\tconst name = getHumanReadableModelName({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t});\n\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\tpath: config.path,\n\t\t\t\t});\n\n\t\t\t\tconst fieldType = getHumanReadableFieldType({\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t});\n\n\t\t\t\tconst placeholder =\n\t\t\t\t\t\"placeholder\" in config.model.config &&\n\t\t\t\t\tconfig.model.config.placeholder\n\t\t\t\t\t\t? config.model.config.placeholder\n\t\t\t\t\t\t: `*None*`;\n\n\t\t\t\tconst defaultValue =\n\t\t\t\t\t\"default_value\" in config.model.config\n\t\t\t\t\t\t? config.model.config.default_value\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\tconst apiIDPath = getAPIIDPath({\n\t\t\t\t\tpath: [...config.path, { id: config.id, model: config.model }],\n\t\t\t\t});\n\n\t\t\t\twriteFieldDocsDescription({\n\t\t\t\t\twriter,\n\t\t\t\t\tdescription: `${name} field in *${humanReadablePath}*`,\n\t\t\t\t\tfieldType,\n\t\t\t\t\tplaceholder,\n\t\t\t\t\tdefaultValue,\n\t\t\t\t\tapiIDPath,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\tdocumentationURL: getFieldDocumentationURL({ model: config.model }),\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t];\n};\n","import {\n\tpascalCase as pascalCaseBase,\n\tpascalCaseTransformMerge,\n} from \"pascal-case\";\n\nexport const pascalCase = (input: string): string =>\n\tpascalCaseBase(input, {\n\t\ttransform: pascalCaseTransformMerge,\n\t});\n","import { pascalCase } from \"./pascalCase\";\n\ntype BuildSharedSliceInterfaceNameConfig = {\n\tid: string;\n};\n\nexport const buildSharedSliceInterfaceName = (\n\tconfig: BuildSharedSliceInterfaceNameConfig,\n): string => {\n\treturn pascalCase(`${config.id} Slice`);\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport {\n\tCustomTypeModelSliceType,\n\tCustomTypeModelLinkSelectType,\n} from \"@prismicio/types\";\nimport type { InterfaceDeclaration, SourceFile } from \"ts-morph\";\n\nimport { FieldConfigs, PathElement } from \"../types\";\nimport { buildFieldDocs } from \"./buildFieldDocs\";\nimport { buildSharedSliceInterfaceName } from \"./buildSharedSliceInterfaceName\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { pascalCase } from \"./pascalCase\";\n\ntype AddInterfacePropertyFromFieldConfig = {\n\tid: string;\n\tmodel: CustomTypeModelField;\n\tinterface: InterfaceDeclaration;\n\tsourceFile: SourceFile;\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n\tfieldConfigs: FieldConfigs;\n\ttabName?: string;\n};\n\nconst addInterfacePropertyForField = (\n\tconfig: AddInterfacePropertyFromFieldConfig,\n) => {\n\tswitch (config.model.type) {\n\t\tcase \"UID\": {\n\t\t\t// UID fields are not included in Data.\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Boolean\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.BooleanField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Color\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.ColorField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Date\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.DateField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Embed\": {\n\t\t\tconst providerTypes: string[] = [];\n\n\t\t\tif (config.fieldConfigs.embed?.providerTypes) {\n\t\t\t\tfor (const providerType in config.fieldConfigs.embed?.providerTypes) {\n\t\t\t\t\tconst configuredProviderType =\n\t\t\t\t\t\tconfig.fieldConfigs.embed?.providerTypes[providerType];\n\n\t\t\t\t\tproviderTypes.push(\n\t\t\t\t\t\t`({ provider_name: \"${providerType}\" } & ${configuredProviderType})`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype:\n\t\t\t\t\tproviderTypes.length > 0\n\t\t\t\t\t\t? `prismicT.EmbedField<prismicT.AnyOEmbed & prismicT.OEmbedExtra & (${providerTypes.join(\n\t\t\t\t\t\t\t\t\" | \",\n\t\t\t\t\t\t )})>`\n\t\t\t\t\t\t: \"prismicT.EmbedField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"GeoPoint\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.GeoPointField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Image\": {\n\t\t\tif (config.model.config.thumbnails.length > 0) {\n\t\t\t\tconst thumbnailNames = config.model.config.thumbnails\n\t\t\t\t\t.map((thumbnail) => `\"${thumbnail.name}\"`)\n\t\t\t\t\t.join(\" | \");\n\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismicT.ImageField<${thumbnailNames}>`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismicT.ImageField<null>\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"IntegrationFields\": {\n\t\t\tconst catalogType =\n\t\t\t\tconfig.fieldConfigs.integrationFields?.catalogTypes?.[\n\t\t\t\t\tconfig.model.config.catalog\n\t\t\t\t];\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: catalogType\n\t\t\t\t\t? `prismicT.IntegrationFields<${catalogType}>`\n\t\t\t\t\t: \"prismicT.IntegrationFields\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tswitch (config.model.config.select) {\n\t\t\t\tcase CustomTypeModelLinkSelectType.Document: {\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\tconfig.model.config.customtypes &&\n\t\t\t\t\t\t\tconfig.model.config.customtypes.length > 0\n\t\t\t\t\t\t\t\t? `prismicT.RelationField<${config.model.config.customtypes\n\t\t\t\t\t\t\t\t\t\t.map((type) => `\"${type}\"`)\n\t\t\t\t\t\t\t\t\t\t.join(\" | \")}>`\n\t\t\t\t\t\t\t\t: \"prismicT.RelationField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CustomTypeModelLinkSelectType.Media: {\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype: \"prismicT.LinkToMediaField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype: \"prismicT.LinkField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Number\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.NumberField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"StructuredText\": {\n\t\t\tconst isTitleField =\n\t\t\t\t\"single\" in config.model.config &&\n\t\t\t\tconfig.model.config.single\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.every((blockType) => /heading/.test(blockType));\n\n\t\t\tif (isTitleField) {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismicT.TitleField\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismicT.RichTextField\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Select\": {\n\t\t\tconst options = config.model.config.options\n\t\t\t\t.map((option) => `\"${option}\"`)\n\t\t\t\t.join(\" | \");\n\t\t\tconst hasDefault = Boolean(config.model.config.default_value);\n\n\t\t\tif (hasDefault) {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismicT.SelectField<${options}, \"filled\">`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismicT.SelectField<${options}>`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Text\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.KeyTextField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Timestamp\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.TimestampField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Group\": {\n\t\t\tconst itemInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} Item`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tisExported: true,\n\t\t\t});\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tinterface: itemInterface,\n\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\tfields: config.model.config.fields,\n\t\t\t\tpath: [\n\t\t\t\t\t...config.path,\n\t\t\t\t\t{\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t});\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: `prismicT.GroupField<Simplify<${itemInterface.getName()}>>`,\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\tconst choiceInterfaceNames: string[] = [];\n\n\t\t\tfor (const choiceId in config.model.config.choices) {\n\t\t\t\tconst choice = config.model.config.choices[choiceId];\n\n\t\t\t\tif (choice.type === CustomTypeModelSliceType.SharedSlice) {\n\t\t\t\t\tchoiceInterfaceNames.push(\n\t\t\t\t\t\tbuildSharedSliceInterfaceName({ id: choiceId }),\n\t\t\t\t\t);\n\t\t\t\t} else if (choice.type === CustomTypeModelSliceType.Slice) {\n\t\t\t\t\tlet primaryInterface: InterfaceDeclaration | undefined;\n\t\t\t\t\tif (Object.keys(choice[\"non-repeat\"]).length > 0) {\n\t\t\t\t\t\tprimaryInterface = config.sourceFile.addInterface({\n\t\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice Primary`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tdocs: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\twriter.writeLine(`Primary content in ${humanReadablePath}`);\n\t\t\t\t\t\t\t\t\t},\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\taddInterfacePropertiesForFields({\n\t\t\t\t\t\t\tinterface: primaryInterface,\n\t\t\t\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\t\t\t\tfields: choice[\"non-repeat\"],\n\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tlet itemInterface: InterfaceDeclaration | undefined;\n\t\t\t\t\tif (Object.keys(choice.repeat).length > 0) {\n\t\t\t\t\t\titemInterface = config.sourceFile.addInterface({\n\t\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice Item`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tdocs: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tisExported: true,\n\t\t\t\t\t\t});\n\t\t\t\t\t\taddInterfacePropertiesForFields({\n\t\t\t\t\t\t\tinterface: itemInterface,\n\t\t\t\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\t\t\t\tfields: choice.repeat,\n\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconst sliceType = config.sourceFile.addTypeAlias({\n\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice`,\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttype: `prismicT.Slice<\"${choiceId}\", ${\n\t\t\t\t\t\t\tprimaryInterface\n\t\t\t\t\t\t\t\t? `Simplify<${primaryInterface.getName()}>`\n\t\t\t\t\t\t\t\t: \"Record<string, never>\"\n\t\t\t\t\t\t}, ${\n\t\t\t\t\t\t\titemInterface ? `Simplify<${itemInterface.getName()}>` : \"never\"\n\t\t\t\t\t\t}>`,\n\t\t\t\t\t\tisExported: true,\n\t\t\t\t\t});\n\n\t\t\t\t\tchoiceInterfaceNames.push(sliceType.getName());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst slicesType = config.sourceFile.addTypeAlias({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} Slice`,\n\t\t\t\t),\n\t\t\t\ttype:\n\t\t\t\t\tchoiceInterfaceNames.length > 0\n\t\t\t\t\t\t? choiceInterfaceNames.join(\" | \")\n\t\t\t\t\t\t: \"never\",\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Slice for *${humanReadablePath}*`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: `prismicT.SliceZone<${slicesType.getName()}>`,\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"unknown\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\t\t}\n\t}\n};\n\ntype AddInterfacePropertiesForFieldsConfig = Omit<\n\tAddInterfacePropertyFromFieldConfig,\n\t\"id\" | \"model\"\n> & {\n\tfields: Record<string, AddInterfacePropertyFromFieldConfig[\"model\"]>;\n\ttabName?: string;\n};\n\nexport const addInterfacePropertiesForFields = (\n\tconfig: AddInterfacePropertiesForFieldsConfig,\n) => {\n\tfor (const name in config.fields) {\n\t\taddInterfacePropertyForField({\n\t\t\t...config,\n\t\t\tid: name.includes(\"-\") ? `\"${name}\"` : name,\n\t\t\tmodel: config.fields[name],\n\t\t\ttabName: config.tabName,\n\t\t});\n\t}\n};\n","import type { CustomTypeModel, CustomTypeModelField } from \"@prismicio/types\";\nimport type {\n\tSourceFile,\n\tTypeAliasDeclaration,\n\tInterfaceDeclaration,\n} from \"ts-morph\";\nimport { CUSTOM_TYPES_DOCUMENTATION_URL } from \"../constants\";\nimport { FieldConfigs } from \"../types\";\n\nimport { addInterfacePropertiesForFields } from \"./addInterfacePropertiesForFields\";\nimport { pascalCase } from \"./pascalCase\";\n\nconst collectCustomTypeFields = (\n\tmodel: CustomTypeModel,\n): Record<string, CustomTypeModelField> => {\n\treturn Object.assign({}, ...Object.values(model.json));\n};\n\ntype AddTypeAliasForCustomTypeConfig = {\n\tmodel: CustomTypeModel;\n\tsourceFile: SourceFile;\n\tlocaleIDs: string[];\n\tfieldConfigs: FieldConfigs;\n};\n\nexport const addTypeAliasForCustomType = ({\n\tmodel,\n\tsourceFile,\n\tlocaleIDs,\n\tfieldConfigs,\n}: AddTypeAliasForCustomTypeConfig): TypeAliasDeclaration => {\n\tconst { uid: uidField, ...fields } = collectCustomTypeFields(model);\n\tconst hasDataFields = Object.keys(fields).length > 0;\n\tconst hasUIDField = Boolean(uidField);\n\n\tlet dataInterface: InterfaceDeclaration | TypeAliasDeclaration;\n\tif (hasDataFields) {\n\t\tdataInterface = sourceFile.addInterface({\n\t\t\tname: pascalCase(`${model.id} Document Data`),\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: `Content for ${model.label} documents`,\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\n\t\tfor (const tabName in model.json) {\n\t\t\t// This is destructured to ensure the UID field is\n\t\t\t// ignored.\n\t\t\tconst { uid: _uidField, ...tabFields } = model.json[tabName];\n\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tfields: tabFields,\n\t\t\t\tinterface: dataInterface,\n\t\t\t\tsourceFile: sourceFile,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: model.id,\n\t\t\t\t\t\tmodel: model,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs,\n\t\t\t\ttabName,\n\t\t\t});\n\t\t}\n\t} else {\n\t\tdataInterface = sourceFile.addTypeAlias({\n\t\t\tname: pascalCase(`${model.id} Document Data`),\n\t\t\ttype: `Record<string, never>`,\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: `Content for ${model.label} documents`,\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t}\n\n\treturn sourceFile.addTypeAlias({\n\t\tname: pascalCase(`${model.id} Document`),\n\t\ttypeParameters: [\n\t\t\t{\n\t\t\t\tname: \"Lang\",\n\t\t\t\tconstraint: \"string\",\n\t\t\t\tdefault:\n\t\t\t\t\tlocaleIDs.length > 0\n\t\t\t\t\t\t? localeIDs.map((localeID) => `\"${localeID}\"`).join(\" | \")\n\t\t\t\t\t\t: \"string\",\n\t\t\t},\n\t\t],\n\t\ttype: hasUIDField\n\t\t\t? `prismicT.PrismicDocumentWithUID<Simplify<${dataInterface.getName()}>, \"${\n\t\t\t\t\tmodel.id\n\t\t\t }\", Lang>`\n\t\t\t: `prismicT.PrismicDocumentWithoutUID<Simplify<${dataInterface.getName()}>, \"${\n\t\t\t\t\tmodel.id\n\t\t\t }\", Lang>`,\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\twriter.writeLine(`${model.label} document from Prismic`);\n\t\t\t\t\twriter.blankLine();\n\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${model.id}\\``);\n\t\t\t\t\twriter.writeLine(`- **Repeatable**: \\`${model.repeatable}\\``);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Documentation**: ${CUSTOM_TYPES_DOCUMENTATION_URL}`,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\ttags: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttagName: \"typeParam\",\n\t\t\t\t\t\ttext: \"Lang - Language API ID of the document.\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tisExported: true,\n\t});\n};\n","import type { SharedSliceModel } from \"@prismicio/types\";\nimport type {\n\tInterfaceDeclaration,\n\tSourceFile,\n\tTypeAliasDeclaration,\n} from \"ts-morph\";\n\nimport { addInterfacePropertiesForFields } from \"./addInterfacePropertiesForFields\";\nimport { buildSharedSliceInterfaceName } from \"./buildSharedSliceInterfaceName\";\nimport { pascalCase } from \"./pascalCase\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { SHARED_SLICES_DOCUMENTATION_URL } from \"../constants\";\nimport { FieldConfigs } from \"../types\";\n\ntype AddTypeAliasForSharedSliceConfig = {\n\tmodel: SharedSliceModel;\n\tsourceFile: SourceFile;\n\tfieldConfigs: FieldConfigs;\n};\n\nexport const addTypeAliasForSharedSlice = (\n\tconfig: AddTypeAliasForSharedSliceConfig,\n): TypeAliasDeclaration => {\n\tconst variationTypeNames: string[] = [];\n\n\tfor (const variation of config.model.variations) {\n\t\tlet primaryInterface: InterfaceDeclaration | undefined;\n\t\tif (Object.keys(variation.primary).length > 0) {\n\t\t\tprimaryInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${buildSharedSliceInterfaceName({ id: config.model.id })} ${\n\t\t\t\t\t\tvariation.id\n\t\t\t\t\t} Primary`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Primary content in ${humanReadablePath}`);\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\taddInterfacePropertiesForFields({\n\t\t\t\tinterface: primaryInterface,\n\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\tfields: variation.primary,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t});\n\t\t}\n\n\t\tlet itemInterface: InterfaceDeclaration | undefined;\n\t\tif (Object.keys(variation.items).length > 0) {\n\t\t\titemInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${buildSharedSliceInterfaceName({ id: config.model.id })} ${\n\t\t\t\t\t\tvariation.id\n\t\t\t\t\t} Item`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tisExported: true,\n\t\t\t});\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tinterface: itemInterface,\n\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\tfields: variation.items,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t});\n\t\t}\n\n\t\tconst variationType = config.sourceFile.addTypeAlias({\n\t\t\tname: pascalCase(\n\t\t\t\t`${buildSharedSliceInterfaceName({\n\t\t\t\t\tid: config.model.id,\n\t\t\t\t})} ${variation.id}`,\n\t\t\t),\n\t\t\ttype: `prismicT.SharedSliceVariation<\"${variation.id}\", ${\n\t\t\t\tprimaryInterface\n\t\t\t\t\t? `Simplify<${primaryInterface.getName()}>`\n\t\t\t\t\t: \"Record<string, never>\"\n\t\t\t}, ${itemInterface ? `Simplify<${itemInterface.getName()}>` : \"never\"}>`,\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t\t`${variation.name} variation for ${config.model.name} Slice`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\twriter.blankLine();\n\t\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${variation.id}\\``);\n\t\t\t\t\t\twriter.writeLine(`- **Description**: \\`${variation.description}\\``);\n\t\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t\t`- **Documentation**: ${SHARED_SLICES_DOCUMENTATION_URL}`,\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\tisExported: true,\n\t\t});\n\n\t\tvariationTypeNames.push(variationType.getName());\n\t}\n\n\tconst variationsType = config.sourceFile.addTypeAlias({\n\t\tname: pascalCase(`${config.model.id} Slice Variation`),\n\t\ttype:\n\t\t\tvariationTypeNames.length > 0 ? variationTypeNames.join(\" | \") : \"never\",\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\n\t\t\t\t\twriter.writeLine(`Slice variation for *${humanReadablePath}*`);\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t});\n\n\treturn config.sourceFile.addTypeAlias({\n\t\tname: pascalCase(\n\t\t\tbuildSharedSliceInterfaceName({\n\t\t\t\tid: config.model.id,\n\t\t\t}),\n\t\t),\n\t\ttype: `prismicT.SharedSlice<\"${\n\t\t\tconfig.model.id\n\t\t}\", ${variationsType.getName()}>`,\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\twriter.writeLine(`${config.model.name} Shared Slice`);\n\t\t\t\t\twriter.blankLine();\n\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${config.model.id}\\``);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Description**: \\`${config.model.description}\\``,\n\t\t\t\t\t);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Documentation**: ${SHARED_SLICES_DOCUMENTATION_URL}`,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tisExported: true,\n\t});\n};\n","import * as tsm from \"ts-morph\";\n// import prettier from \"prettier\";\n\nimport { BLANK_LINE_IDENTIFIER } from \"../constants\";\n\nexport const getSourceFileText = (sourceFile: tsm.SourceFile): string => {\n\tconst text = sourceFile\n\t\t.print()\n\t\t.replace(new RegExp(BLANK_LINE_IDENTIFIER, \"g\"), \"\");\n\n\treturn text;\n\n\t// return prettier.format(text, { parser: \"typescript\" });\n};\n","import { Project, ModuleDeclarationKind } from \"ts-morph\";\nimport type { CustomTypeModel, SharedSliceModel } from \"@prismicio/types\";\n\nimport { BLANK_LINE_IDENTIFIER, NON_EDITABLE_FILE_HEADER } from \"./constants\";\nimport { addTypeAliasForCustomType } from \"./lib/addTypeAliasForCustomType\";\nimport { addTypeAliasForSharedSlice } from \"./lib/addTypeAliasForSharedSlice\";\nimport { getSourceFileText } from \"./lib/getSourceFileText\";\nimport { FieldConfigs } from \"./types\";\nimport { pascalCase } from \"./lib/pascalCase\";\n\nexport type GenerateTypesConfig = {\n\tcustomTypeModels?: CustomTypeModel[];\n\tsharedSliceModels?: SharedSliceModel[];\n\tlocaleIDs?: string[];\n\tfieldConfigs?: FieldConfigs;\n\tclientIntegration?: {\n\t\tincludeCreateClientInterface?: boolean;\n\t};\n};\n\nexport const generateTypes = (config: GenerateTypesConfig = {}) => {\n\tconst project = new Project({\n\t\tuseInMemoryFileSystem: true,\n\t});\n\n\tconst sourceFile = project.createSourceFile(\"types.d.ts\");\n\n\tsourceFile.addImportDeclaration({\n\t\tmoduleSpecifier: \"@prismicio/types\",\n\t\tnamespaceImport: \"prismicT\",\n\t\tisTypeOnly: true,\n\t\tleadingTrivia: NON_EDITABLE_FILE_HEADER,\n\t});\n\n\tsourceFile.addStatements(BLANK_LINE_IDENTIFIER);\n\n\tsourceFile.addTypeAlias({\n\t\tname: \"Simplify\",\n\t\ttypeParameters: [\n\t\t\t{\n\t\t\t\tname: \"T\",\n\t\t\t},\n\t\t],\n\t\ttype: `{ [KeyType in keyof T]: T[KeyType] }`,\n\t});\n\n\tif (config.customTypeModels) {\n\t\tfor (const model of config.customTypeModels) {\n\t\t\taddTypeAliasForCustomType({\n\t\t\t\tmodel,\n\t\t\t\tsourceFile,\n\t\t\t\tlocaleIDs: config.localeIDs || [],\n\t\t\t\tfieldConfigs: config.fieldConfigs || {},\n\t\t\t});\n\t\t}\n\n\t\tif (config.customTypeModels.length > 0) {\n\t\t\tsourceFile.addTypeAlias({\n\t\t\t\tname: \"AllDocumentTypes\",\n\t\t\t\ttype: config.customTypeModels\n\t\t\t\t\t.map((customTypeModel) =>\n\t\t\t\t\t\tpascalCase(`${customTypeModel.id} Document`),\n\t\t\t\t\t)\n\t\t\t\t\t.join(\" | \"),\n\t\t\t\tisExported: true,\n\t\t\t});\n\t\t}\n\t}\n\n\tif (config.sharedSliceModels) {\n\t\tfor (const model of config.sharedSliceModels) {\n\t\t\taddTypeAliasForSharedSlice({\n\t\t\t\tmodel,\n\t\t\t\tsourceFile,\n\t\t\t\tfieldConfigs: config.fieldConfigs || {},\n\t\t\t});\n\t\t}\n\t}\n\n\tif (config.clientIntegration?.includeCreateClientInterface) {\n\t\tsourceFile.addImportDeclaration({\n\t\t\tmoduleSpecifier: \"@prismicio/client\",\n\t\t\tnamespaceImport: \"prismic\",\n\t\t\tisTypeOnly: true,\n\t\t});\n\n\t\tconst clientModuleDeclaration = sourceFile.addModule({\n\t\t\tname: '\"@prismicio/client\"',\n\t\t\thasDeclareKeyword: true,\n\t\t\tdeclarationKind: ModuleDeclarationKind.Module,\n\t\t});\n\n\t\tclientModuleDeclaration.addInterface({\n\t\t\tname: \"CreateClient\",\n\t\t\tcallSignatures: [\n\t\t\t\t{\n\t\t\t\t\tparameters: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"repositoryNameOrEndpoint\",\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"options\",\n\t\t\t\t\t\t\ttype: \"prismic.ClientConfig\",\n\t\t\t\t\t\t\thasQuestionToken: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\treturnType:\n\t\t\t\t\t\t(config.customTypeModels?.length || 0) > 0\n\t\t\t\t\t\t\t? \"prismic.Client<AllDocumentTypes>\"\n\t\t\t\t\t\t\t: \"prismic.Client\",\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t}\n\n\treturn getSourceFileText(sourceFile);\n};\n"],"names":["stripIndent","CustomTypeModelFieldType","CustomTypeModelLinkSelectType","pascalCaseBase","pascalCaseTransformMerge","CustomTypeModelSliceType","Project","ModuleDeclarationKind"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/constants.ts","../src/lib/isCustomTypeModelField.ts","../src/lib/hasOwnProperty.ts","../src/lib/isCustomTypeModelSlice.ts","../src/lib/isSharedSliceModel.ts","../src/lib/getAPIIDPath.ts","../src/lib/getFieldDocumentationURL.ts","../src/lib/isCustomTypeModel.ts","../src/lib/getHumanReadableModelName.ts","../src/lib/getHumanReadableFieldPath.ts","../src/lib/getHumanReadableFieldType.ts","../src/lib/writeFieldDocsDescription.ts","../src/lib/buildFieldDocs.ts","../src/lib/pascalCase.ts","../src/lib/buildSharedSliceInterfaceName.ts","../src/lib/addInterfacePropertiesForFields.ts","../src/lib/addTypeAliasForCustomType.ts","../src/lib/addTypeAliasForSharedSlice.ts","../src/lib/getSourceFileText.ts","../src/generateTypes.ts"],"sourcesContent":["import type { CustomTypeModelFieldType } from \"@prismicio/types\";\nimport { stripIndent } from \"common-tags\";\n\nexport const BLANK_LINE_IDENTIFIER = \"// ___BLANK_LINE_TO_BE_REPLACED___\";\n\nexport const NON_EDITABLE_FILE_HEADER = stripIndent`\n\t// Code generated by prismic-ts-codegen. DO NOT EDIT.\n\t${BLANK_LINE_IDENTIFIER}\n`;\n\nexport const CUSTOM_TYPES_DOCUMENTATION_URL =\n\t\"https://prismic.io/docs/core-concepts/custom-types\";\n\nexport const SHARED_SLICES_DOCUMENTATION_URL =\n\t\"https://prismic.io/docs/core-concepts/reusing-slices\";\n\nexport const FIELD_DOCUMENTATION_URLS: Record<\n\tExclude<keyof typeof CustomTypeModelFieldType, \"Range\" | \"Separator\">,\n\tstring\n> = {\n\tUID: \"https://prismic.io/docs/core-concepts/uid\",\n\tBoolean: \"https://prismic.io/docs/core-concepts/boolean\",\n\tColor: \"https://prismic.io/docs/core-concepts/color\",\n\tDate: \"https://prismic.io/docs/core-concepts/date\",\n\tTimestamp: \"https://prismic.io/docs/core-concepts/timestamp\",\n\tNumber: \"https://prismic.io/docs/core-concepts/number\",\n\tText: \"https://prismic.io/docs/core-concepts/key-text\",\n\tSelect: \"https://prismic.io/docs/core-concepts/select\",\n\tStructuredText: \"https://prismic.io/docs/core-concepts/rich-text-title\",\n\tImage: \"https://prismic.io/docs/core-concepts/image\",\n\tLink: \"https://prismic.io/docs/core-concepts/link-content-relationship\",\n\tEmbed: \"https://prismic.io/docs/core-concepts/embed\",\n\tGeoPoint: \"https://prismic.io/docs/core-concepts/geopoint\",\n\tGroup: \"https://prismic.io/docs/core-concepts/group\",\n\tIntegrationFields: \"https://prismic.io/docs/core-concepts/integration-fields\",\n\tSlices: \"https://prismic.io/docs/core-concepts/slices\",\n\tLegacySlices: \"https://prismic.io/docs/core-concepts/slices\",\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\n\nexport const isCustomTypeModelField = (\n\tmodel: unknown,\n): model is CustomTypeModelField => {\n\treturn typeof model === \"object\" && model !== null && \"type\" in model;\n};\n","/**\n * Determines if an object contains a given property. It augments the provided\n * object's type to include the property.\n *\n * @remarks\n * This function is only necessary because TypeScript does not narrow a type\n * after using the `in` operator on `object`.\n * @returns `true` if `obj` contains a `prop` property, `false` otherwise.\n */\nexport const hasOwnProperty = <X extends object, Y extends PropertyKey>(\n\tobj: X,\n\tprop: Y,\n): obj is X & Record<Y, unknown> => {\n\treturn obj.hasOwnProperty(prop);\n};\n","import {\n\tCustomTypeModelSlice,\n\tCustomTypeModelSliceType,\n} from \"@prismicio/types\";\n\nimport { hasOwnProperty } from \"./hasOwnProperty\";\n\nexport const isCustomTypeModelSlice = (\n\tmodel: unknown,\n): model is CustomTypeModelSlice => {\n\treturn (\n\t\ttypeof model === \"object\" &&\n\t\tmodel !== null &&\n\t\thasOwnProperty(model, \"type\") &&\n\t\tmodel.type === CustomTypeModelSliceType.Slice\n\t);\n};\n","import { CustomTypeModelSliceType, SharedSliceModel } from \"@prismicio/types\";\n\nimport { hasOwnProperty } from \"./hasOwnProperty\";\n\nexport const isSharedSliceModel = (\n\tmodel: unknown,\n): model is SharedSliceModel => {\n\treturn (\n\t\ttypeof model === \"object\" &&\n\t\tmodel !== null &&\n\t\thasOwnProperty(model, \"type\") &&\n\t\tmodel.type === CustomTypeModelSliceType.SharedSlice\n\t);\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport { CustomTypeModelFieldType } from \"@prismicio/types\";\n\nimport { PathElement } from \"../types\";\nimport { isCustomTypeModelField } from \"./isCustomTypeModelField\";\nimport { isCustomTypeModelSlice } from \"./isCustomTypeModelSlice\";\nimport { isSharedSliceModel } from \"./isSharedSliceModel\";\n\ntype GetAPIIDPathConfig = {\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n};\n\nexport const getAPIIDPath = (config: GetAPIIDPathConfig): string => {\n\treturn config.path\n\t\t.map((element, i) => {\n\t\t\tif (\n\t\t\t\tisCustomTypeModelField(element.model) &&\n\t\t\t\t(element.model.type === CustomTypeModelFieldType.Group ||\n\t\t\t\t\telement.model.type === CustomTypeModelFieldType.Slices)\n\t\t\t) {\n\t\t\t\treturn `${element.id}[]`;\n\t\t\t} else {\n\t\t\t\tif (element.id === \"items\") {\n\t\t\t\t\tconst previousElement = config.path[i - 1];\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tisCustomTypeModelSlice(previousElement.model) ||\n\t\t\t\t\t\tisSharedSliceModel(previousElement.model)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn `${element.id}[]`;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn element.id;\n\t\t\t}\n\t\t})\n\t\t.join(\".\");\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\n\nimport { FIELD_DOCUMENTATION_URLS } from \"../constants\";\n\ntype GetFieldDocumentationURLConfig = {\n\tmodel: CustomTypeModelField;\n};\n\nexport const getFieldDocumentationURL = (\n\tconfig: GetFieldDocumentationURLConfig,\n): string | undefined => {\n\treturn FIELD_DOCUMENTATION_URLS[\n\t\tconfig.model.type as keyof typeof FIELD_DOCUMENTATION_URLS\n\t];\n};\n","import type { CustomTypeModel } from \"@prismicio/types\";\n\nexport const isCustomTypeModel = (model: unknown): model is CustomTypeModel => {\n\treturn typeof model === \"object\" && model !== null && \"json\" in model;\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\n\nimport { isCustomTypeModel } from \"./isCustomTypeModel\";\nimport { isCustomTypeModelField } from \"./isCustomTypeModelField\";\nimport { isCustomTypeModelSlice } from \"./isCustomTypeModelSlice\";\nimport { isSharedSliceModel } from \"./isSharedSliceModel\";\n\ntype GetModelHumanNameConfig = {\n\tid: string;\n\tmodel:\n\t\t| CustomTypeModel\n\t\t| SharedSliceModel\n\t\t| CustomTypeModelField\n\t\t| CustomTypeModelSlice;\n};\n\nexport const getHumanReadableModelName = (\n\tconfig: GetModelHumanNameConfig,\n): string => {\n\tif (isCustomTypeModel(config.model)) {\n\t\treturn config.model.label || config.model.id;\n\t} else if (isSharedSliceModel(config.model)) {\n\t\treturn config.model.name;\n\t} else if (isCustomTypeModelField(config.model)) {\n\t\tif (config.model.config && \"label\" in config.model.config) {\n\t\t\t// Non-Slice Zone fields\n\t\t\treturn config.model.config.label || config.id;\n\t\t} else if (config.model.config && \"fieldset\" in config.model) {\n\t\t\t// Slice Zone\n\t\t\treturn config.model.fieldset || config.id;\n\t\t}\n\t} else if (isCustomTypeModelSlice(config.model)) {\n\t\treturn config.model.fieldset || config.id;\n\t}\n\n\treturn `\\`${config.id}\\``;\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\n\nimport { PathElement } from \"../types\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\n\ntype GetHumanReadableFieldPathConfig = {\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n};\n\nexport const getHumanReadableFieldPath = (\n\tconfig: GetHumanReadableFieldPathConfig,\n): string => {\n\treturn config.path\n\t\t.map((element) => {\n\t\t\tif (element.label) {\n\t\t\t\treturn element.label;\n\t\t\t} else if (element.model) {\n\t\t\t\treturn getHumanReadableModelName({\n\t\t\t\t\tid: element.id,\n\t\t\t\t\tmodel: element.model,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn element.id;\n\t\t\t}\n\t\t})\n\t\t.join(\" → \");\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\nimport { CustomTypeModelLinkSelectType } from \"@prismicio/types\";\n\ntype GetFieldHumanReadableTypeConfig = {\n\tmodel: CustomTypeModelField;\n};\n\nexport const getHumanReadableFieldType = (\n\tconfig: GetFieldHumanReadableTypeConfig,\n): string => {\n\tswitch (config.model.type) {\n\t\tcase \"StructuredText\": {\n\t\t\tconst isTitleField =\n\t\t\t\tconfig.model.config &&\n\t\t\t\t\"single\" in config.model.config &&\n\t\t\t\tconfig.model.config.single &&\n\t\t\t\tconfig.model.config.single\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.every((blockType) => /heading/.test(blockType));\n\n\t\t\treturn isTitleField ? \"Title\" : \"Rich Text\";\n\t\t}\n\n\t\tcase \"IntegrationFields\": {\n\t\t\tconst catalog = config.model.config?.catalog;\n\n\t\t\treturn `Integration Fields (Catalog: ${\n\t\t\t\tcatalog ? `\\`${catalog}\\`` : \"*unknown*\"\n\t\t\t})`;\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tswitch (config.model.config?.select) {\n\t\t\t\tcase CustomTypeModelLinkSelectType.Document: {\n\t\t\t\t\treturn \"Content Relationship\";\n\t\t\t\t}\n\n\t\t\t\tcase CustomTypeModelLinkSelectType.Media: {\n\t\t\t\t\treturn \"Link to Media\";\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\treturn \"Link\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\treturn \"Slice Zone\";\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn config.model.type;\n\t\t}\n\t}\n};\n","import type { CodeBlockWriter } from \"ts-morph\";\n\ntype BuildFieldDocsConfig = {\n\twriter: CodeBlockWriter;\n\tdescription?: string;\n\tfieldType?: string;\n\tdefaultValue?: string | boolean;\n\tplaceholder?: string;\n\tapiIDPath?: string;\n\ttabName?: string;\n\tdocumentationURL?: string;\n};\n\nexport const writeFieldDocsDescription = (\n\tconfig: BuildFieldDocsConfig,\n): void => {\n\tif (config.description) {\n\t\tconfig.writer.writeLine(config.description);\n\t}\n\n\tconfig.writer.blankLineIfLastNot();\n\n\tif (config.fieldType) {\n\t\tconfig.writer.writeLine(`- **Field Type**: ${config.fieldType}`);\n\t}\n\n\tif (config.placeholder) {\n\t\tconfig.writer.writeLine(`- **Placeholder**: ${config.placeholder}`);\n\t}\n\n\tif (config.defaultValue !== undefined) {\n\t\tconst stringifiedDefaultValue =\n\t\t\ttypeof config.defaultValue === \"boolean\"\n\t\t\t\t? `${config.defaultValue}`\n\t\t\t\t: config.defaultValue;\n\n\t\tconfig.writer.writeLine(`- **Default Value**: ${stringifiedDefaultValue}`);\n\t}\n\n\tif (config.apiIDPath) {\n\t\tconfig.writer.writeLine(`- **API ID Path**: ${config.apiIDPath}`);\n\t}\n\n\tif (config.tabName) {\n\t\tconfig.writer.writeLine(`- **Tab**: ${config.tabName}`);\n\t}\n\n\tif (config.documentationURL) {\n\t\tconfig.writer.writeLine(`- **Documentation**: ${config.documentationURL}`);\n\t}\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport type { JSDocableNodeStructure } from \"ts-morph\";\n\nimport { PathElement } from \"../types\";\nimport { getAPIIDPath } from \"./getAPIIDPath\";\nimport { getFieldDocumentationURL } from \"./getFieldDocumentationURL\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { getHumanReadableFieldType } from \"./getHumanReadableFieldType\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\nimport { writeFieldDocsDescription } from \"./writeFieldDocsDescription\";\n\ntype BuildFieldDocsConfig = {\n\tid: string;\n\tmodel: CustomTypeModelField;\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n\ttabName?: string;\n};\n\nexport const buildFieldDocs = (\n\tconfig: BuildFieldDocsConfig,\n): NonNullable<JSDocableNodeStructure[\"docs\"]> => {\n\treturn [\n\t\t{\n\t\t\tdescription: (writer) => {\n\t\t\t\tconst name = getHumanReadableModelName({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t});\n\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\tpath: config.path,\n\t\t\t\t});\n\n\t\t\t\tconst fieldType = getHumanReadableFieldType({\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t});\n\n\t\t\t\tconst placeholder =\n\t\t\t\t\tconfig.model.config &&\n\t\t\t\t\t\"placeholder\" in config.model.config &&\n\t\t\t\t\tconfig.model.config.placeholder\n\t\t\t\t\t\t? config.model.config.placeholder\n\t\t\t\t\t\t: `*None*`;\n\n\t\t\t\tconst defaultValue =\n\t\t\t\t\tconfig.model.config && \"default_value\" in config.model.config\n\t\t\t\t\t\t? config.model.config.default_value\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\tconst apiIDPath = getAPIIDPath({\n\t\t\t\t\tpath: [...config.path, { id: config.id, model: config.model }],\n\t\t\t\t});\n\n\t\t\t\twriteFieldDocsDescription({\n\t\t\t\t\twriter,\n\t\t\t\t\tdescription: `${name} field in *${humanReadablePath}*`,\n\t\t\t\t\tfieldType,\n\t\t\t\t\tplaceholder,\n\t\t\t\t\tdefaultValue,\n\t\t\t\t\tapiIDPath,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\tdocumentationURL: getFieldDocumentationURL({ model: config.model }),\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t];\n};\n","import {\n\tpascalCase as pascalCaseBase,\n\tpascalCaseTransformMerge,\n} from \"pascal-case\";\n\nexport const pascalCase = (input: string): string =>\n\tpascalCaseBase(input, {\n\t\ttransform: pascalCaseTransformMerge,\n\t});\n","import { pascalCase } from \"./pascalCase\";\n\ntype BuildSharedSliceInterfaceNameConfig = {\n\tid: string;\n};\n\nexport const buildSharedSliceInterfaceName = (\n\tconfig: BuildSharedSliceInterfaceNameConfig,\n): string => {\n\treturn pascalCase(`${config.id} Slice`);\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport {\n\tCustomTypeModelSliceType,\n\tCustomTypeModelLinkSelectType,\n} from \"@prismicio/types\";\nimport type { InterfaceDeclaration, SourceFile } from \"ts-morph\";\n\nimport { FieldConfigs, PathElement } from \"../types\";\nimport { buildFieldDocs } from \"./buildFieldDocs\";\nimport { buildSharedSliceInterfaceName } from \"./buildSharedSliceInterfaceName\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { pascalCase } from \"./pascalCase\";\n\ntype AddInterfacePropertyFromFieldConfig = {\n\tid: string;\n\tmodel: CustomTypeModelField;\n\tinterface: InterfaceDeclaration;\n\tsourceFile: SourceFile;\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n\tfieldConfigs: FieldConfigs;\n\ttabName?: string;\n};\n\nconst addInterfacePropertyForField = (\n\tconfig: AddInterfacePropertyFromFieldConfig,\n) => {\n\tswitch (config.model.type) {\n\t\tcase \"UID\": {\n\t\t\t// UID fields are not included in Data.\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Boolean\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.BooleanField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Color\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.ColorField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Date\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.DateField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Embed\": {\n\t\t\tconst providerTypes: string[] = [];\n\n\t\t\tif (config.fieldConfigs.embed?.providerTypes) {\n\t\t\t\tfor (const providerType in config.fieldConfigs.embed?.providerTypes) {\n\t\t\t\t\tconst configuredProviderType =\n\t\t\t\t\t\tconfig.fieldConfigs.embed?.providerTypes[providerType];\n\n\t\t\t\t\tproviderTypes.push(\n\t\t\t\t\t\t`({ provider_name: \"${providerType}\" } & ${configuredProviderType})`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype:\n\t\t\t\t\tproviderTypes.length > 0\n\t\t\t\t\t\t? `prismicT.EmbedField<prismicT.AnyOEmbed & prismicT.OEmbedExtra & (${providerTypes.join(\n\t\t\t\t\t\t\t\t\" | \",\n\t\t\t\t\t\t )})>`\n\t\t\t\t\t\t: \"prismicT.EmbedField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"GeoPoint\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.GeoPointField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Image\": {\n\t\t\tif (\n\t\t\t\tconfig.model.config?.thumbnails &&\n\t\t\t\tconfig.model.config.thumbnails.length > 0\n\t\t\t) {\n\t\t\t\tconst thumbnailNames = config.model.config.thumbnails\n\t\t\t\t\t.map((thumbnail) => `\"${thumbnail.name}\"`)\n\t\t\t\t\t.join(\" | \");\n\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismicT.ImageField<${thumbnailNames}>`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismicT.ImageField<never>\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"IntegrationFields\": {\n\t\t\tconst catalogType = config.model.config?.catalog\n\t\t\t\t? config.fieldConfigs.integrationFields?.catalogTypes?.[\n\t\t\t\t\t\tconfig.model.config.catalog\n\t\t\t\t ]\n\t\t\t\t: undefined;\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: catalogType\n\t\t\t\t\t? `prismicT.IntegrationFields<${catalogType}>`\n\t\t\t\t\t: \"prismicT.IntegrationFields\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tswitch (config.model.config?.select) {\n\t\t\t\tcase CustomTypeModelLinkSelectType.Document: {\n\t\t\t\t\tconfig.model.config;\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\t\"customtypes\" in config.model.config &&\n\t\t\t\t\t\t\tconfig.model.config.customtypes &&\n\t\t\t\t\t\t\tconfig.model.config.customtypes.length > 0\n\t\t\t\t\t\t\t\t? `prismicT.RelationField<${config.model.config.customtypes\n\t\t\t\t\t\t\t\t\t\t.map((type) => `\"${type}\"`)\n\t\t\t\t\t\t\t\t\t\t.join(\" | \")}>`\n\t\t\t\t\t\t\t\t: \"prismicT.RelationField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CustomTypeModelLinkSelectType.Media: {\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype: \"prismicT.LinkToMediaField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype: \"prismicT.LinkField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Number\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.NumberField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"StructuredText\": {\n\t\t\tconst isTitleField =\n\t\t\t\tconfig.model.config &&\n\t\t\t\t\"single\" in config.model.config &&\n\t\t\t\tconfig.model.config.single &&\n\t\t\t\tconfig.model.config.single\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.every((blockType) => /heading/.test(blockType));\n\n\t\t\tif (isTitleField) {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismicT.TitleField\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismicT.RichTextField\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Select\": {\n\t\t\tconst options = config.model.config?.options\n\t\t\t\t?.map((option) => `\"${option}\"`)\n\t\t\t\t.join(\" | \");\n\t\t\tconst hasDefault = Boolean(config.model.config?.default_value);\n\n\t\t\tif (hasDefault) {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismicT.SelectField<${options || \"string\"}, \"filled\">`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismicT.SelectField<${options}>`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Text\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.KeyTextField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Timestamp\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.TimestampField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Group\": {\n\t\t\tconst itemInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} Item`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tisExported: true,\n\t\t\t});\n\n\t\t\tif (config.model.config?.fields) {\n\t\t\t\taddInterfacePropertiesForFields({\n\t\t\t\t\tinterface: itemInterface,\n\t\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\t\tfields: config.model.config.fields,\n\t\t\t\t\tpath: [\n\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: `prismicT.GroupField<Simplify<${itemInterface.getName()}>>`,\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\tconst choiceInterfaceNames: string[] = [];\n\n\t\t\tif (config.model.config?.choices) {\n\t\t\t\tfor (const choiceId in config.model.config.choices) {\n\t\t\t\t\tconst choice = config.model.config.choices[choiceId];\n\n\t\t\t\t\tif (choice.type === CustomTypeModelSliceType.SharedSlice) {\n\t\t\t\t\t\tchoiceInterfaceNames.push(\n\t\t\t\t\t\t\tbuildSharedSliceInterfaceName({ id: choiceId }),\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (choice.type === CustomTypeModelSliceType.Slice) {\n\t\t\t\t\t\tlet primaryInterface: InterfaceDeclaration | undefined;\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tchoice[\"non-repeat\"] &&\n\t\t\t\t\t\t\tObject.keys(choice[\"non-repeat\"]).length > 0\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tprimaryInterface = config.sourceFile.addInterface({\n\t\t\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice Primary`,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tdocs: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t\t\t\t\t\t\t`Primary content in ${humanReadablePath}`,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\taddInterfacePropertiesForFields({\n\t\t\t\t\t\t\t\tinterface: primaryInterface,\n\t\t\t\t\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\t\t\t\t\tfields: choice[\"non-repeat\"],\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet itemInterface: InterfaceDeclaration | undefined;\n\t\t\t\t\t\tif (choice.repeat && Object.keys(choice.repeat).length > 0) {\n\t\t\t\t\t\t\titemInterface = config.sourceFile.addInterface({\n\t\t\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice Item`,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tdocs: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tisExported: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\taddInterfacePropertiesForFields({\n\t\t\t\t\t\t\t\tinterface: itemInterface,\n\t\t\t\t\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\t\t\t\t\tfields: choice.repeat,\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst sliceType = config.sourceFile.addTypeAlias({\n\t\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\ttype: `prismicT.Slice<\"${choiceId}\", ${\n\t\t\t\t\t\t\t\tprimaryInterface\n\t\t\t\t\t\t\t\t\t? `Simplify<${primaryInterface.getName()}>`\n\t\t\t\t\t\t\t\t\t: \"Record<string, never>\"\n\t\t\t\t\t\t\t}, ${\n\t\t\t\t\t\t\t\titemInterface ? `Simplify<${itemInterface.getName()}>` : \"never\"\n\t\t\t\t\t\t\t}>`,\n\t\t\t\t\t\t\tisExported: true,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tchoiceInterfaceNames.push(sliceType.getName());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst slicesType = config.sourceFile.addTypeAlias({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} Slice`,\n\t\t\t\t),\n\t\t\t\ttype:\n\t\t\t\t\tchoiceInterfaceNames.length > 0\n\t\t\t\t\t\t? choiceInterfaceNames.join(\" | \")\n\t\t\t\t\t\t: \"never\",\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Slice for *${humanReadablePath}*`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: `prismicT.SliceZone<${slicesType.getName()}>`,\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"unknown\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\t\t}\n\t}\n};\n\ntype AddInterfacePropertiesForFieldsConfig = Omit<\n\tAddInterfacePropertyFromFieldConfig,\n\t\"id\" | \"model\"\n> & {\n\tfields: Record<string, AddInterfacePropertyFromFieldConfig[\"model\"]>;\n\ttabName?: string;\n};\n\nexport const addInterfacePropertiesForFields = (\n\tconfig: AddInterfacePropertiesForFieldsConfig,\n) => {\n\tfor (const name in config.fields) {\n\t\taddInterfacePropertyForField({\n\t\t\t...config,\n\t\t\tid: name.includes(\"-\") || /^[0-9]/.test(name) ? `\"${name}\"` : name,\n\t\t\tmodel: config.fields[name],\n\t\t\ttabName: config.tabName,\n\t\t});\n\t}\n};\n","import type { CustomTypeModel, CustomTypeModelField } from \"@prismicio/types\";\nimport type {\n\tSourceFile,\n\tTypeAliasDeclaration,\n\tInterfaceDeclaration,\n} from \"ts-morph\";\nimport { CUSTOM_TYPES_DOCUMENTATION_URL } from \"../constants\";\nimport { FieldConfigs } from \"../types\";\n\nimport { addInterfacePropertiesForFields } from \"./addInterfacePropertiesForFields\";\nimport { pascalCase } from \"./pascalCase\";\n\nconst collectCustomTypeFields = (\n\tmodel: CustomTypeModel,\n): Record<string, CustomTypeModelField> => {\n\treturn Object.assign({}, ...Object.values(model.json));\n};\n\ntype AddTypeAliasForCustomTypeConfig = {\n\tmodel: CustomTypeModel;\n\tsourceFile: SourceFile;\n\tlocaleIDs: string[];\n\tfieldConfigs: FieldConfigs;\n};\n\nexport const addTypeAliasForCustomType = ({\n\tmodel,\n\tsourceFile,\n\tlocaleIDs,\n\tfieldConfigs,\n}: AddTypeAliasForCustomTypeConfig): TypeAliasDeclaration => {\n\tconst { uid: uidField, ...fields } = collectCustomTypeFields(model);\n\tconst hasDataFields = Object.keys(fields).length > 0;\n\tconst hasUIDField = Boolean(uidField);\n\n\tlet dataInterface: InterfaceDeclaration | TypeAliasDeclaration;\n\tif (hasDataFields) {\n\t\tdataInterface = sourceFile.addInterface({\n\t\t\tname: pascalCase(`${model.id} Document Data`),\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: `Content for ${model.label} documents`,\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\n\t\tfor (const tabName in model.json) {\n\t\t\t// This is destructured to ensure the UID field is\n\t\t\t// ignored.\n\t\t\tconst { uid: _uidField, ...tabFields } = model.json[tabName];\n\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tfields: tabFields,\n\t\t\t\tinterface: dataInterface,\n\t\t\t\tsourceFile: sourceFile,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: model.id,\n\t\t\t\t\t\tmodel: model,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs,\n\t\t\t\ttabName,\n\t\t\t});\n\t\t}\n\t} else {\n\t\tdataInterface = sourceFile.addTypeAlias({\n\t\t\tname: pascalCase(`${model.id} Document Data`),\n\t\t\ttype: `Record<string, never>`,\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: `Content for ${model.label} documents`,\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t}\n\n\treturn sourceFile.addTypeAlias({\n\t\tname: pascalCase(`${model.id} Document`),\n\t\ttypeParameters: [\n\t\t\t{\n\t\t\t\tname: \"Lang\",\n\t\t\t\tconstraint: \"string\",\n\t\t\t\tdefault:\n\t\t\t\t\tlocaleIDs.length > 0\n\t\t\t\t\t\t? localeIDs.map((localeID) => `\"${localeID}\"`).join(\" | \")\n\t\t\t\t\t\t: \"string\",\n\t\t\t},\n\t\t],\n\t\ttype: hasUIDField\n\t\t\t? `prismicT.PrismicDocumentWithUID<Simplify<${dataInterface.getName()}>, \"${\n\t\t\t\t\tmodel.id\n\t\t\t }\", Lang>`\n\t\t\t: `prismicT.PrismicDocumentWithoutUID<Simplify<${dataInterface.getName()}>, \"${\n\t\t\t\t\tmodel.id\n\t\t\t }\", Lang>`,\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\twriter.writeLine(`${model.label} document from Prismic`);\n\t\t\t\t\twriter.blankLine();\n\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${model.id}\\``);\n\t\t\t\t\twriter.writeLine(`- **Repeatable**: \\`${model.repeatable}\\``);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Documentation**: ${CUSTOM_TYPES_DOCUMENTATION_URL}`,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\ttags: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttagName: \"typeParam\",\n\t\t\t\t\t\ttext: \"Lang - Language API ID of the document.\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tisExported: true,\n\t});\n};\n","import type { SharedSliceModel } from \"@prismicio/types\";\nimport type {\n\tInterfaceDeclaration,\n\tSourceFile,\n\tTypeAliasDeclaration,\n} from \"ts-morph\";\n\nimport { addInterfacePropertiesForFields } from \"./addInterfacePropertiesForFields\";\nimport { buildSharedSliceInterfaceName } from \"./buildSharedSliceInterfaceName\";\nimport { pascalCase } from \"./pascalCase\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { SHARED_SLICES_DOCUMENTATION_URL } from \"../constants\";\nimport { FieldConfigs } from \"../types\";\n\ntype AddTypeAliasForSharedSliceConfig = {\n\tmodel: SharedSliceModel;\n\tsourceFile: SourceFile;\n\tfieldConfigs: FieldConfigs;\n};\n\nexport const addTypeAliasForSharedSlice = (\n\tconfig: AddTypeAliasForSharedSliceConfig,\n): TypeAliasDeclaration => {\n\tconst variationTypeNames: string[] = [];\n\n\tfor (const variation of config.model.variations) {\n\t\tlet primaryInterface: InterfaceDeclaration | undefined;\n\t\tif (variation.primary && Object.keys(variation.primary).length > 0) {\n\t\t\tprimaryInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${buildSharedSliceInterfaceName({ id: config.model.id })} ${\n\t\t\t\t\t\tvariation.id\n\t\t\t\t\t} Primary`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Primary content in ${humanReadablePath}`);\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\taddInterfacePropertiesForFields({\n\t\t\t\tinterface: primaryInterface,\n\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\tfields: variation.primary,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t});\n\t\t}\n\n\t\tlet itemInterface: InterfaceDeclaration | undefined;\n\t\tif (variation.items && Object.keys(variation.items).length > 0) {\n\t\t\titemInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${buildSharedSliceInterfaceName({ id: config.model.id })} ${\n\t\t\t\t\t\tvariation.id\n\t\t\t\t\t} Item`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tisExported: true,\n\t\t\t});\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tinterface: itemInterface,\n\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\tfields: variation.items,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t});\n\t\t}\n\n\t\tconst variationType = config.sourceFile.addTypeAlias({\n\t\t\tname: pascalCase(\n\t\t\t\t`${buildSharedSliceInterfaceName({\n\t\t\t\t\tid: config.model.id,\n\t\t\t\t})} ${variation.id}`,\n\t\t\t),\n\t\t\ttype: `prismicT.SharedSliceVariation<\"${variation.id}\", ${\n\t\t\t\tprimaryInterface\n\t\t\t\t\t? `Simplify<${primaryInterface.getName()}>`\n\t\t\t\t\t: \"Record<string, never>\"\n\t\t\t}, ${itemInterface ? `Simplify<${itemInterface.getName()}>` : \"never\"}>`,\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t\t`${variation.name} variation for ${config.model.name} Slice`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\twriter.blankLine();\n\t\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${variation.id}\\``);\n\t\t\t\t\t\twriter.writeLine(`- **Description**: \\`${variation.description}\\``);\n\t\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t\t`- **Documentation**: ${SHARED_SLICES_DOCUMENTATION_URL}`,\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\tisExported: true,\n\t\t});\n\n\t\tvariationTypeNames.push(variationType.getName());\n\t}\n\n\tconst variationsType = config.sourceFile.addTypeAlias({\n\t\tname: pascalCase(`${config.model.id} Slice Variation`),\n\t\ttype:\n\t\t\tvariationTypeNames.length > 0 ? variationTypeNames.join(\" | \") : \"never\",\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\n\t\t\t\t\twriter.writeLine(`Slice variation for *${humanReadablePath}*`);\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t});\n\n\treturn config.sourceFile.addTypeAlias({\n\t\tname: pascalCase(\n\t\t\tbuildSharedSliceInterfaceName({\n\t\t\t\tid: config.model.id,\n\t\t\t}),\n\t\t),\n\t\ttype: `prismicT.SharedSlice<\"${\n\t\t\tconfig.model.id\n\t\t}\", ${variationsType.getName()}>`,\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\twriter.writeLine(`${config.model.name} Shared Slice`);\n\t\t\t\t\twriter.blankLine();\n\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${config.model.id}\\``);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Description**: \\`${config.model.description}\\``,\n\t\t\t\t\t);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Documentation**: ${SHARED_SLICES_DOCUMENTATION_URL}`,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tisExported: true,\n\t});\n};\n","import * as tsm from \"ts-morph\";\n// import prettier from \"prettier\";\n\nimport { BLANK_LINE_IDENTIFIER } from \"../constants\";\n\nexport const getSourceFileText = (sourceFile: tsm.SourceFile): string => {\n\tconst text = sourceFile\n\t\t.print()\n\t\t.replace(new RegExp(BLANK_LINE_IDENTIFIER, \"g\"), \"\");\n\n\treturn text;\n\n\t// return prettier.format(text, { parser: \"typescript\" });\n};\n","import { Project, ModuleDeclarationKind } from \"ts-morph\";\nimport type { CustomTypeModel, SharedSliceModel } from \"@prismicio/types\";\n\nimport { BLANK_LINE_IDENTIFIER, NON_EDITABLE_FILE_HEADER } from \"./constants\";\nimport { addTypeAliasForCustomType } from \"./lib/addTypeAliasForCustomType\";\nimport { addTypeAliasForSharedSlice } from \"./lib/addTypeAliasForSharedSlice\";\nimport { getSourceFileText } from \"./lib/getSourceFileText\";\nimport { FieldConfigs } from \"./types\";\nimport { pascalCase } from \"./lib/pascalCase\";\n\nexport type GenerateTypesConfig = {\n\tcustomTypeModels?: CustomTypeModel[];\n\tsharedSliceModels?: SharedSliceModel[];\n\tlocaleIDs?: string[];\n\tfieldConfigs?: FieldConfigs;\n\tclientIntegration?: {\n\t\tincludeCreateClientInterface?: boolean;\n\t};\n};\n\nexport const generateTypes = (config: GenerateTypesConfig = {}) => {\n\tconst project = new Project({\n\t\tuseInMemoryFileSystem: true,\n\t});\n\n\tconst sourceFile = project.createSourceFile(\"types.d.ts\");\n\n\tsourceFile.addImportDeclaration({\n\t\tmoduleSpecifier: \"@prismicio/types\",\n\t\tnamespaceImport: \"prismicT\",\n\t\tisTypeOnly: true,\n\t\tleadingTrivia: NON_EDITABLE_FILE_HEADER,\n\t});\n\n\tsourceFile.addStatements(BLANK_LINE_IDENTIFIER);\n\n\tsourceFile.addTypeAlias({\n\t\tname: \"Simplify\",\n\t\ttypeParameters: [\n\t\t\t{\n\t\t\t\tname: \"T\",\n\t\t\t},\n\t\t],\n\t\ttype: `{ [KeyType in keyof T]: T[KeyType] }`,\n\t});\n\n\tif (config.customTypeModels) {\n\t\tfor (const model of config.customTypeModels) {\n\t\t\taddTypeAliasForCustomType({\n\t\t\t\tmodel,\n\t\t\t\tsourceFile,\n\t\t\t\tlocaleIDs: config.localeIDs || [],\n\t\t\t\tfieldConfigs: config.fieldConfigs || {},\n\t\t\t});\n\t\t}\n\n\t\tif (config.customTypeModels.length > 0) {\n\t\t\tsourceFile.addTypeAlias({\n\t\t\t\tname: \"AllDocumentTypes\",\n\t\t\t\ttype: config.customTypeModels\n\t\t\t\t\t.map((customTypeModel) =>\n\t\t\t\t\t\tpascalCase(`${customTypeModel.id} Document`),\n\t\t\t\t\t)\n\t\t\t\t\t.join(\" | \"),\n\t\t\t\tisExported: true,\n\t\t\t});\n\t\t}\n\t}\n\n\tif (config.sharedSliceModels) {\n\t\tfor (const model of config.sharedSliceModels) {\n\t\t\taddTypeAliasForSharedSlice({\n\t\t\t\tmodel,\n\t\t\t\tsourceFile,\n\t\t\t\tfieldConfigs: config.fieldConfigs || {},\n\t\t\t});\n\t\t}\n\t}\n\n\tif (config.clientIntegration?.includeCreateClientInterface) {\n\t\tsourceFile.addImportDeclaration({\n\t\t\tmoduleSpecifier: \"@prismicio/client\",\n\t\t\tnamespaceImport: \"prismic\",\n\t\t\tisTypeOnly: true,\n\t\t});\n\n\t\tconst clientModuleDeclaration = sourceFile.addModule({\n\t\t\tname: '\"@prismicio/client\"',\n\t\t\thasDeclareKeyword: true,\n\t\t\tdeclarationKind: ModuleDeclarationKind.Module,\n\t\t});\n\n\t\tclientModuleDeclaration.addInterface({\n\t\t\tname: \"CreateClient\",\n\t\t\tcallSignatures: [\n\t\t\t\t{\n\t\t\t\t\tparameters: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"repositoryNameOrEndpoint\",\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"options\",\n\t\t\t\t\t\t\ttype: \"prismic.ClientConfig\",\n\t\t\t\t\t\t\thasQuestionToken: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\treturnType:\n\t\t\t\t\t\t(config.customTypeModels?.length || 0) > 0\n\t\t\t\t\t\t\t? \"prismic.Client<AllDocumentTypes>\"\n\t\t\t\t\t\t\t: \"prismic.Client\",\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t}\n\n\treturn getSourceFileText(sourceFile);\n};\n"],"names":["stripIndent","CustomTypeModelSliceType","CustomTypeModelFieldType","CustomTypeModelLinkSelectType","pascalCaseBase","pascalCaseTransformMerge","Project","ModuleDeclarationKind"],"mappings":"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"}
|