prismic-ts-codegen 0.1.5 → 0.1.6

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 CHANGED
@@ -734,7 +734,7 @@ const addInterfacePropertiesForFields = (config) => {
734
734
  for (const name in config.fields) {
735
735
  addInterfacePropertyForField({
736
736
  ...config,
737
- id: name.includes("-") || /^[0-9]/.test(name) ? `"${name}"` : name,
737
+ id: name.includes("-") || name.includes(":") || /^[0-9]/.test(name) ? `"${name}"` : name,
738
738
  model: config.fields[name],
739
739
  tabName: config.tabName
740
740
  });
package/dist/index.cjs CHANGED
@@ -726,7 +726,7 @@ const addInterfacePropertiesForFields = (config) => {
726
726
  for (const name in config.fields) {
727
727
  addInterfacePropertyForField({
728
728
  ...config,
729
- id: name.includes("-") || /^[0-9]/.test(name) ? `"${name}"` : name,
729
+ id: name.includes("-") || name.includes(":") || /^[0-9]/.test(name) ? `"${name}"` : name,
730
730
  model: config.fields[name],
731
731
  tabName: config.tabName
732
732
  });
@@ -1 +1 @@
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/buildSharedSliceInterfaceNamePart.ts","../src/lib/buildTypeName.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\";\n\nexport const BLANK_LINE_IDENTIFIER = \"// ___BLANK_LINE_TO_BE_REPLACED___\";\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 BuildSharedSliceInterfaceNamePartConfig = {\n\tid: string;\n};\n\nexport const buildSharedSliceInterfaceNamePart = (\n\tconfig: BuildSharedSliceInterfaceNamePartConfig,\n): string => {\n\treturn pascalCase(`${config.id} Slice`);\n};\n","import { pascalCase } from \"./pascalCase\";\n\nexport const buildTypeName = (...parts: string[]) => {\n\tlet name = pascalCase(parts.filter(Boolean).join(\" \"));\n\n\tif (/^[0-9]/.test(name) ? \"_\" : \"\") {\n\t\tname = `_${name}`;\n\t}\n\n\treturn name;\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\";\n\nimport { buildFieldDocs } from \"./buildFieldDocs\";\nimport { buildSharedSliceInterfaceNamePart } from \"./buildSharedSliceInterfaceNamePart\";\nimport { buildTypeName } from \"./buildTypeName\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\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: buildTypeName(\n\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\"Document\",\n\t\t\t\t\t\"Data\",\n\t\t\t\t\tconfig.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...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\tbuildSharedSliceInterfaceNamePart({ 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: buildTypeName(\n\t\t\t\t\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\t\t\t\t\"Document\",\n\t\t\t\t\t\t\t\t\t\"Data\",\n\t\t\t\t\t\t\t\t\tconfig.id,\n\t\t\t\t\t\t\t\t\tchoiceId,\n\t\t\t\t\t\t\t\t\t\"Slice\",\n\t\t\t\t\t\t\t\t\t\"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: buildTypeName(\n\t\t\t\t\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\t\t\t\t\"Document\",\n\t\t\t\t\t\t\t\t\t\"Data\",\n\t\t\t\t\t\t\t\t\tconfig.id,\n\t\t\t\t\t\t\t\t\tchoiceId,\n\t\t\t\t\t\t\t\t\t\"Slice\",\n\t\t\t\t\t\t\t\t\t\"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: buildTypeName(\n\t\t\t\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\t\t\t\"Document\",\n\t\t\t\t\t\t\t\t\"Data\",\n\t\t\t\t\t\t\t\tconfig.id,\n\t\t\t\t\t\t\t\tchoiceId,\n\t\t\t\t\t\t\t\t\"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: buildTypeName(\n\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\"Document\",\n\t\t\t\t\t\"Data\",\n\t\t\t\t\tconfig.id,\n\t\t\t\t\t\"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 { buildTypeName } from \"./buildTypeName\";\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: buildTypeName(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: buildTypeName(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: buildTypeName(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 { SHARED_SLICES_DOCUMENTATION_URL } from \"../constants\";\nimport { FieldConfigs } from \"../types\";\n\nimport { addInterfacePropertiesForFields } from \"./addInterfacePropertiesForFields\";\nimport { buildSharedSliceInterfaceNamePart } from \"./buildSharedSliceInterfaceNamePart\";\nimport { buildTypeName } from \"./buildTypeName\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\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: buildTypeName(\n\t\t\t\t\tbuildSharedSliceInterfaceNamePart({ id: config.model.id }),\n\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: buildTypeName(\n\t\t\t\t\tbuildSharedSliceInterfaceNamePart({ id: config.model.id }),\n\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: buildTypeName(\n\t\t\t\tbuildSharedSliceInterfaceNamePart({ id: config.model.id }),\n\t\t\t\tvariation.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: buildTypeName(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: buildTypeName(\n\t\t\tbuildSharedSliceInterfaceNamePart({ id: config.model.id }),\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 } from \"./constants\";\nimport { addTypeAliasForCustomType } from \"./lib/addTypeAliasForCustomType\";\nimport { addTypeAliasForSharedSlice } from \"./lib/addTypeAliasForSharedSlice\";\nimport { getSourceFileText } from \"./lib/getSourceFileText\";\nimport { FieldConfigs } from \"./types\";\nimport { buildTypeName } from \"./lib/buildTypeName\";\n\nexport type GenerateTypesConfig = {\n\tcustomTypeModels?: CustomTypeModel[];\n\tsharedSliceModels?: SharedSliceModel[];\n\tlocaleIDs?: string[];\n\tfieldConfigs?: FieldConfigs;\n\tclientIntegration?: {\n\t\tincludeCreateClientInterface?: boolean;\n\t\tincludeContentNamespace?: 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});\n\n\tsourceFile.addStatements(BLANK_LINE_IDENTIFIER);\n\n\tconst simplifyTypeAlias = sourceFile.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\tbuildTypeName(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 (\n\t\tconfig.clientIntegration?.includeCreateClientInterface ||\n\t\tconfig.clientIntegration?.includeContentNamespace\n\t) {\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\tif (config.clientIntegration.includeCreateClientInterface) {\n\t\t\tclientModuleDeclaration.addInterface({\n\t\t\t\tname: \"CreateClient\",\n\t\t\t\tcallSignatures: [\n\t\t\t\t\t{\n\t\t\t\t\t\tparameters: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"repositoryNameOrEndpoint\",\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"options\",\n\t\t\t\t\t\t\t\ttype: \"prismic.ClientConfig\",\n\t\t\t\t\t\t\t\thasQuestionToken: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\treturnType:\n\t\t\t\t\t\t\t(config.customTypeModels?.length || 0) > 0\n\t\t\t\t\t\t\t\t? \"prismic.Client<AllDocumentTypes>\"\n\t\t\t\t\t\t\t\t: \"prismic.Client\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t}\n\n\t\tif (config.clientIntegration.includeContentNamespace) {\n\t\t\tconst contentNamespaceDeclaration = clientModuleDeclaration.addModule({\n\t\t\t\tname: \"Content\",\n\t\t\t\tdeclarationKind: ModuleDeclarationKind.Namespace,\n\t\t\t});\n\n\t\t\tconst exportSymbols = sourceFile\n\t\t\t\t.getExportSymbols()\n\t\t\t\t.filter((exportSymbol) => {\n\t\t\t\t\t// The Simplify utility type should not\n\t\t\t\t\t// be exported, but it is included in\n\t\t\t\t\t// `getExportSymbols()`'s result.\n\t\t\t\t\treturn exportSymbol.getName() !== simplifyTypeAlias.getName();\n\t\t\t\t});\n\n\t\t\tcontentNamespaceDeclaration.addExportDeclaration({\n\t\t\t\tisTypeOnly: true,\n\t\t\t\tnamedExports: exportSymbols.map((exportSymbol) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: exportSymbol.getName(),\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t});\n\t\t}\n\t}\n\n\treturn getSourceFileText(sourceFile);\n};\n"],"names":["CustomTypeModelSliceType","CustomTypeModelFieldType","CustomTypeModelLinkSelectType","pascalCaseBase","pascalCaseTransformMerge","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/buildSharedSliceInterfaceNamePart.ts","../src/lib/buildTypeName.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\";\n\nexport const BLANK_LINE_IDENTIFIER = \"// ___BLANK_LINE_TO_BE_REPLACED___\";\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 BuildSharedSliceInterfaceNamePartConfig = {\n\tid: string;\n};\n\nexport const buildSharedSliceInterfaceNamePart = (\n\tconfig: BuildSharedSliceInterfaceNamePartConfig,\n): string => {\n\treturn pascalCase(`${config.id} Slice`);\n};\n","import { pascalCase } from \"./pascalCase\";\n\nexport const buildTypeName = (...parts: string[]) => {\n\tlet name = pascalCase(parts.filter(Boolean).join(\" \"));\n\n\tif (/^[0-9]/.test(name) ? \"_\" : \"\") {\n\t\tname = `_${name}`;\n\t}\n\n\treturn name;\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\";\n\nimport { buildFieldDocs } from \"./buildFieldDocs\";\nimport { buildSharedSliceInterfaceNamePart } from \"./buildSharedSliceInterfaceNamePart\";\nimport { buildTypeName } from \"./buildTypeName\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\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: buildTypeName(\n\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\"Document\",\n\t\t\t\t\t\"Data\",\n\t\t\t\t\tconfig.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...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\tbuildSharedSliceInterfaceNamePart({ 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: buildTypeName(\n\t\t\t\t\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\t\t\t\t\"Document\",\n\t\t\t\t\t\t\t\t\t\"Data\",\n\t\t\t\t\t\t\t\t\tconfig.id,\n\t\t\t\t\t\t\t\t\tchoiceId,\n\t\t\t\t\t\t\t\t\t\"Slice\",\n\t\t\t\t\t\t\t\t\t\"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: buildTypeName(\n\t\t\t\t\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\t\t\t\t\"Document\",\n\t\t\t\t\t\t\t\t\t\"Data\",\n\t\t\t\t\t\t\t\t\tconfig.id,\n\t\t\t\t\t\t\t\t\tchoiceId,\n\t\t\t\t\t\t\t\t\t\"Slice\",\n\t\t\t\t\t\t\t\t\t\"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: buildTypeName(\n\t\t\t\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\t\t\t\"Document\",\n\t\t\t\t\t\t\t\t\"Data\",\n\t\t\t\t\t\t\t\tconfig.id,\n\t\t\t\t\t\t\t\tchoiceId,\n\t\t\t\t\t\t\t\t\"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: buildTypeName(\n\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\"Document\",\n\t\t\t\t\t\"Data\",\n\t\t\t\t\tconfig.id,\n\t\t\t\t\t\"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:\n\t\t\t\tname.includes(\"-\") || name.includes(\":\") || /^[0-9]/.test(name)\n\t\t\t\t\t? `\"${name}\"`\n\t\t\t\t\t: 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 { buildTypeName } from \"./buildTypeName\";\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: buildTypeName(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: buildTypeName(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: buildTypeName(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 { SHARED_SLICES_DOCUMENTATION_URL } from \"../constants\";\nimport { FieldConfigs } from \"../types\";\n\nimport { addInterfacePropertiesForFields } from \"./addInterfacePropertiesForFields\";\nimport { buildSharedSliceInterfaceNamePart } from \"./buildSharedSliceInterfaceNamePart\";\nimport { buildTypeName } from \"./buildTypeName\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\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: buildTypeName(\n\t\t\t\t\tbuildSharedSliceInterfaceNamePart({ id: config.model.id }),\n\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: buildTypeName(\n\t\t\t\t\tbuildSharedSliceInterfaceNamePart({ id: config.model.id }),\n\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: buildTypeName(\n\t\t\t\tbuildSharedSliceInterfaceNamePart({ id: config.model.id }),\n\t\t\t\tvariation.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: buildTypeName(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: buildTypeName(\n\t\t\tbuildSharedSliceInterfaceNamePart({ id: config.model.id }),\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 } from \"./constants\";\nimport { addTypeAliasForCustomType } from \"./lib/addTypeAliasForCustomType\";\nimport { addTypeAliasForSharedSlice } from \"./lib/addTypeAliasForSharedSlice\";\nimport { getSourceFileText } from \"./lib/getSourceFileText\";\nimport { FieldConfigs } from \"./types\";\nimport { buildTypeName } from \"./lib/buildTypeName\";\n\nexport type GenerateTypesConfig = {\n\tcustomTypeModels?: CustomTypeModel[];\n\tsharedSliceModels?: SharedSliceModel[];\n\tlocaleIDs?: string[];\n\tfieldConfigs?: FieldConfigs;\n\tclientIntegration?: {\n\t\tincludeCreateClientInterface?: boolean;\n\t\tincludeContentNamespace?: 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});\n\n\tsourceFile.addStatements(BLANK_LINE_IDENTIFIER);\n\n\tconst simplifyTypeAlias = sourceFile.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\tbuildTypeName(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 (\n\t\tconfig.clientIntegration?.includeCreateClientInterface ||\n\t\tconfig.clientIntegration?.includeContentNamespace\n\t) {\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\tif (config.clientIntegration.includeCreateClientInterface) {\n\t\t\tclientModuleDeclaration.addInterface({\n\t\t\t\tname: \"CreateClient\",\n\t\t\t\tcallSignatures: [\n\t\t\t\t\t{\n\t\t\t\t\t\tparameters: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"repositoryNameOrEndpoint\",\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"options\",\n\t\t\t\t\t\t\t\ttype: \"prismic.ClientConfig\",\n\t\t\t\t\t\t\t\thasQuestionToken: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\treturnType:\n\t\t\t\t\t\t\t(config.customTypeModels?.length || 0) > 0\n\t\t\t\t\t\t\t\t? \"prismic.Client<AllDocumentTypes>\"\n\t\t\t\t\t\t\t\t: \"prismic.Client\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t}\n\n\t\tif (config.clientIntegration.includeContentNamespace) {\n\t\t\tconst contentNamespaceDeclaration = clientModuleDeclaration.addModule({\n\t\t\t\tname: \"Content\",\n\t\t\t\tdeclarationKind: ModuleDeclarationKind.Namespace,\n\t\t\t});\n\n\t\t\tconst exportSymbols = sourceFile\n\t\t\t\t.getExportSymbols()\n\t\t\t\t.filter((exportSymbol) => {\n\t\t\t\t\t// The Simplify utility type should not\n\t\t\t\t\t// be exported, but it is included in\n\t\t\t\t\t// `getExportSymbols()`'s result.\n\t\t\t\t\treturn exportSymbol.getName() !== simplifyTypeAlias.getName();\n\t\t\t\t});\n\n\t\t\tcontentNamespaceDeclaration.addExportDeclaration({\n\t\t\t\tisTypeOnly: true,\n\t\t\t\tnamedExports: exportSymbols.map((exportSymbol) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: exportSymbol.getName(),\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t});\n\t\t}\n\t}\n\n\treturn getSourceFileText(sourceFile);\n};\n"],"names":["CustomTypeModelSliceType","CustomTypeModelFieldType","CustomTypeModelLinkSelectType","pascalCaseBase","pascalCaseTransformMerge","Project","ModuleDeclarationKind"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -722,7 +722,7 @@ const addInterfacePropertiesForFields = (config) => {
722
722
  for (const name in config.fields) {
723
723
  addInterfacePropertyForField({
724
724
  ...config,
725
- id: name.includes("-") || /^[0-9]/.test(name) ? `"${name}"` : name,
725
+ id: name.includes("-") || name.includes(":") || /^[0-9]/.test(name) ? `"${name}"` : name,
726
726
  model: config.fields[name],
727
727
  tabName: config.tabName
728
728
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","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/buildSharedSliceInterfaceNamePart.ts","../src/lib/buildTypeName.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\";\n\nexport const BLANK_LINE_IDENTIFIER = \"// ___BLANK_LINE_TO_BE_REPLACED___\";\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 BuildSharedSliceInterfaceNamePartConfig = {\n\tid: string;\n};\n\nexport const buildSharedSliceInterfaceNamePart = (\n\tconfig: BuildSharedSliceInterfaceNamePartConfig,\n): string => {\n\treturn pascalCase(`${config.id} Slice`);\n};\n","import { pascalCase } from \"./pascalCase\";\n\nexport const buildTypeName = (...parts: string[]) => {\n\tlet name = pascalCase(parts.filter(Boolean).join(\" \"));\n\n\tif (/^[0-9]/.test(name) ? \"_\" : \"\") {\n\t\tname = `_${name}`;\n\t}\n\n\treturn name;\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\";\n\nimport { buildFieldDocs } from \"./buildFieldDocs\";\nimport { buildSharedSliceInterfaceNamePart } from \"./buildSharedSliceInterfaceNamePart\";\nimport { buildTypeName } from \"./buildTypeName\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\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: buildTypeName(\n\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\"Document\",\n\t\t\t\t\t\"Data\",\n\t\t\t\t\tconfig.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...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\tbuildSharedSliceInterfaceNamePart({ 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: buildTypeName(\n\t\t\t\t\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\t\t\t\t\"Document\",\n\t\t\t\t\t\t\t\t\t\"Data\",\n\t\t\t\t\t\t\t\t\tconfig.id,\n\t\t\t\t\t\t\t\t\tchoiceId,\n\t\t\t\t\t\t\t\t\t\"Slice\",\n\t\t\t\t\t\t\t\t\t\"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: buildTypeName(\n\t\t\t\t\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\t\t\t\t\"Document\",\n\t\t\t\t\t\t\t\t\t\"Data\",\n\t\t\t\t\t\t\t\t\tconfig.id,\n\t\t\t\t\t\t\t\t\tchoiceId,\n\t\t\t\t\t\t\t\t\t\"Slice\",\n\t\t\t\t\t\t\t\t\t\"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: buildTypeName(\n\t\t\t\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\t\t\t\"Document\",\n\t\t\t\t\t\t\t\t\"Data\",\n\t\t\t\t\t\t\t\tconfig.id,\n\t\t\t\t\t\t\t\tchoiceId,\n\t\t\t\t\t\t\t\t\"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: buildTypeName(\n\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\"Document\",\n\t\t\t\t\t\"Data\",\n\t\t\t\t\tconfig.id,\n\t\t\t\t\t\"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 { buildTypeName } from \"./buildTypeName\";\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: buildTypeName(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: buildTypeName(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: buildTypeName(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 { SHARED_SLICES_DOCUMENTATION_URL } from \"../constants\";\nimport { FieldConfigs } from \"../types\";\n\nimport { addInterfacePropertiesForFields } from \"./addInterfacePropertiesForFields\";\nimport { buildSharedSliceInterfaceNamePart } from \"./buildSharedSliceInterfaceNamePart\";\nimport { buildTypeName } from \"./buildTypeName\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\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: buildTypeName(\n\t\t\t\t\tbuildSharedSliceInterfaceNamePart({ id: config.model.id }),\n\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: buildTypeName(\n\t\t\t\t\tbuildSharedSliceInterfaceNamePart({ id: config.model.id }),\n\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: buildTypeName(\n\t\t\t\tbuildSharedSliceInterfaceNamePart({ id: config.model.id }),\n\t\t\t\tvariation.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: buildTypeName(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: buildTypeName(\n\t\t\tbuildSharedSliceInterfaceNamePart({ id: config.model.id }),\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 } from \"./constants\";\nimport { addTypeAliasForCustomType } from \"./lib/addTypeAliasForCustomType\";\nimport { addTypeAliasForSharedSlice } from \"./lib/addTypeAliasForSharedSlice\";\nimport { getSourceFileText } from \"./lib/getSourceFileText\";\nimport { FieldConfigs } from \"./types\";\nimport { buildTypeName } from \"./lib/buildTypeName\";\n\nexport type GenerateTypesConfig = {\n\tcustomTypeModels?: CustomTypeModel[];\n\tsharedSliceModels?: SharedSliceModel[];\n\tlocaleIDs?: string[];\n\tfieldConfigs?: FieldConfigs;\n\tclientIntegration?: {\n\t\tincludeCreateClientInterface?: boolean;\n\t\tincludeContentNamespace?: 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});\n\n\tsourceFile.addStatements(BLANK_LINE_IDENTIFIER);\n\n\tconst simplifyTypeAlias = sourceFile.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\tbuildTypeName(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 (\n\t\tconfig.clientIntegration?.includeCreateClientInterface ||\n\t\tconfig.clientIntegration?.includeContentNamespace\n\t) {\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\tif (config.clientIntegration.includeCreateClientInterface) {\n\t\t\tclientModuleDeclaration.addInterface({\n\t\t\t\tname: \"CreateClient\",\n\t\t\t\tcallSignatures: [\n\t\t\t\t\t{\n\t\t\t\t\t\tparameters: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"repositoryNameOrEndpoint\",\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"options\",\n\t\t\t\t\t\t\t\ttype: \"prismic.ClientConfig\",\n\t\t\t\t\t\t\t\thasQuestionToken: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\treturnType:\n\t\t\t\t\t\t\t(config.customTypeModels?.length || 0) > 0\n\t\t\t\t\t\t\t\t? \"prismic.Client<AllDocumentTypes>\"\n\t\t\t\t\t\t\t\t: \"prismic.Client\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t}\n\n\t\tif (config.clientIntegration.includeContentNamespace) {\n\t\t\tconst contentNamespaceDeclaration = clientModuleDeclaration.addModule({\n\t\t\t\tname: \"Content\",\n\t\t\t\tdeclarationKind: ModuleDeclarationKind.Namespace,\n\t\t\t});\n\n\t\t\tconst exportSymbols = sourceFile\n\t\t\t\t.getExportSymbols()\n\t\t\t\t.filter((exportSymbol) => {\n\t\t\t\t\t// The Simplify utility type should not\n\t\t\t\t\t// be exported, but it is included in\n\t\t\t\t\t// `getExportSymbols()`'s result.\n\t\t\t\t\treturn exportSymbol.getName() !== simplifyTypeAlias.getName();\n\t\t\t\t});\n\n\t\t\tcontentNamespaceDeclaration.addExportDeclaration({\n\t\t\t\tisTypeOnly: true,\n\t\t\t\tnamedExports: exportSymbols.map((exportSymbol) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: exportSymbol.getName(),\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t});\n\t\t}\n\t}\n\n\treturn getSourceFileText(sourceFile);\n};\n"],"names":["pascalCaseBase"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","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/buildSharedSliceInterfaceNamePart.ts","../src/lib/buildTypeName.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\";\n\nexport const BLANK_LINE_IDENTIFIER = \"// ___BLANK_LINE_TO_BE_REPLACED___\";\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 BuildSharedSliceInterfaceNamePartConfig = {\n\tid: string;\n};\n\nexport const buildSharedSliceInterfaceNamePart = (\n\tconfig: BuildSharedSliceInterfaceNamePartConfig,\n): string => {\n\treturn pascalCase(`${config.id} Slice`);\n};\n","import { pascalCase } from \"./pascalCase\";\n\nexport const buildTypeName = (...parts: string[]) => {\n\tlet name = pascalCase(parts.filter(Boolean).join(\" \"));\n\n\tif (/^[0-9]/.test(name) ? \"_\" : \"\") {\n\t\tname = `_${name}`;\n\t}\n\n\treturn name;\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\";\n\nimport { buildFieldDocs } from \"./buildFieldDocs\";\nimport { buildSharedSliceInterfaceNamePart } from \"./buildSharedSliceInterfaceNamePart\";\nimport { buildTypeName } from \"./buildTypeName\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\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: buildTypeName(\n\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\"Document\",\n\t\t\t\t\t\"Data\",\n\t\t\t\t\tconfig.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...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\tbuildSharedSliceInterfaceNamePart({ 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: buildTypeName(\n\t\t\t\t\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\t\t\t\t\"Document\",\n\t\t\t\t\t\t\t\t\t\"Data\",\n\t\t\t\t\t\t\t\t\tconfig.id,\n\t\t\t\t\t\t\t\t\tchoiceId,\n\t\t\t\t\t\t\t\t\t\"Slice\",\n\t\t\t\t\t\t\t\t\t\"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: buildTypeName(\n\t\t\t\t\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\t\t\t\t\"Document\",\n\t\t\t\t\t\t\t\t\t\"Data\",\n\t\t\t\t\t\t\t\t\tconfig.id,\n\t\t\t\t\t\t\t\t\tchoiceId,\n\t\t\t\t\t\t\t\t\t\"Slice\",\n\t\t\t\t\t\t\t\t\t\"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: buildTypeName(\n\t\t\t\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\t\t\t\"Document\",\n\t\t\t\t\t\t\t\t\"Data\",\n\t\t\t\t\t\t\t\tconfig.id,\n\t\t\t\t\t\t\t\tchoiceId,\n\t\t\t\t\t\t\t\t\"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: buildTypeName(\n\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\"Document\",\n\t\t\t\t\t\"Data\",\n\t\t\t\t\tconfig.id,\n\t\t\t\t\t\"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:\n\t\t\t\tname.includes(\"-\") || name.includes(\":\") || /^[0-9]/.test(name)\n\t\t\t\t\t? `\"${name}\"`\n\t\t\t\t\t: 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 { buildTypeName } from \"./buildTypeName\";\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: buildTypeName(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: buildTypeName(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: buildTypeName(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 { SHARED_SLICES_DOCUMENTATION_URL } from \"../constants\";\nimport { FieldConfigs } from \"../types\";\n\nimport { addInterfacePropertiesForFields } from \"./addInterfacePropertiesForFields\";\nimport { buildSharedSliceInterfaceNamePart } from \"./buildSharedSliceInterfaceNamePart\";\nimport { buildTypeName } from \"./buildTypeName\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\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: buildTypeName(\n\t\t\t\t\tbuildSharedSliceInterfaceNamePart({ id: config.model.id }),\n\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: buildTypeName(\n\t\t\t\t\tbuildSharedSliceInterfaceNamePart({ id: config.model.id }),\n\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: buildTypeName(\n\t\t\t\tbuildSharedSliceInterfaceNamePart({ id: config.model.id }),\n\t\t\t\tvariation.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: buildTypeName(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: buildTypeName(\n\t\t\tbuildSharedSliceInterfaceNamePart({ id: config.model.id }),\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 } from \"./constants\";\nimport { addTypeAliasForCustomType } from \"./lib/addTypeAliasForCustomType\";\nimport { addTypeAliasForSharedSlice } from \"./lib/addTypeAliasForSharedSlice\";\nimport { getSourceFileText } from \"./lib/getSourceFileText\";\nimport { FieldConfigs } from \"./types\";\nimport { buildTypeName } from \"./lib/buildTypeName\";\n\nexport type GenerateTypesConfig = {\n\tcustomTypeModels?: CustomTypeModel[];\n\tsharedSliceModels?: SharedSliceModel[];\n\tlocaleIDs?: string[];\n\tfieldConfigs?: FieldConfigs;\n\tclientIntegration?: {\n\t\tincludeCreateClientInterface?: boolean;\n\t\tincludeContentNamespace?: 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});\n\n\tsourceFile.addStatements(BLANK_LINE_IDENTIFIER);\n\n\tconst simplifyTypeAlias = sourceFile.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\tbuildTypeName(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 (\n\t\tconfig.clientIntegration?.includeCreateClientInterface ||\n\t\tconfig.clientIntegration?.includeContentNamespace\n\t) {\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\tif (config.clientIntegration.includeCreateClientInterface) {\n\t\t\tclientModuleDeclaration.addInterface({\n\t\t\t\tname: \"CreateClient\",\n\t\t\t\tcallSignatures: [\n\t\t\t\t\t{\n\t\t\t\t\t\tparameters: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"repositoryNameOrEndpoint\",\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"options\",\n\t\t\t\t\t\t\t\ttype: \"prismic.ClientConfig\",\n\t\t\t\t\t\t\t\thasQuestionToken: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\treturnType:\n\t\t\t\t\t\t\t(config.customTypeModels?.length || 0) > 0\n\t\t\t\t\t\t\t\t? \"prismic.Client<AllDocumentTypes>\"\n\t\t\t\t\t\t\t\t: \"prismic.Client\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t}\n\n\t\tif (config.clientIntegration.includeContentNamespace) {\n\t\t\tconst contentNamespaceDeclaration = clientModuleDeclaration.addModule({\n\t\t\t\tname: \"Content\",\n\t\t\t\tdeclarationKind: ModuleDeclarationKind.Namespace,\n\t\t\t});\n\n\t\t\tconst exportSymbols = sourceFile\n\t\t\t\t.getExportSymbols()\n\t\t\t\t.filter((exportSymbol) => {\n\t\t\t\t\t// The Simplify utility type should not\n\t\t\t\t\t// be exported, but it is included in\n\t\t\t\t\t// `getExportSymbols()`'s result.\n\t\t\t\t\treturn exportSymbol.getName() !== simplifyTypeAlias.getName();\n\t\t\t\t});\n\n\t\t\tcontentNamespaceDeclaration.addExportDeclaration({\n\t\t\t\tisTypeOnly: true,\n\t\t\t\tnamedExports: exportSymbols.map((exportSymbol) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: exportSymbol.getName(),\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t});\n\t\t}\n\t}\n\n\treturn getSourceFileText(sourceFile);\n};\n"],"names":["pascalCaseBase"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prismic-ts-codegen",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "description": "An experimental Prismic model-to-TypeScript-type generator",
5
5
  "keywords": [
6
6
  "typescript",
@@ -658,7 +658,10 @@ export const addInterfacePropertiesForFields = (
658
658
  for (const name in config.fields) {
659
659
  addInterfacePropertyForField({
660
660
  ...config,
661
- id: name.includes("-") || /^[0-9]/.test(name) ? `"${name}"` : name,
661
+ id:
662
+ name.includes("-") || name.includes(":") || /^[0-9]/.test(name)
663
+ ? `"${name}"`
664
+ : name,
662
665
  model: config.fields[name],
663
666
  tabName: config.tabName,
664
667
  });