prismic-ts-codegen 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/constants.ts","../src/lib/isCustomTypeModelField.ts","../src/lib/isCustomTypeModelSlice.ts","../src/lib/isSharedSliceModel.ts","../src/lib/getAPIIDPath.ts","../src/lib/getFieldDocumentationURL.ts","../src/lib/isCustomTypeModel.ts","../src/lib/getHumanReadableModelName.ts","../src/lib/getHumanReadableFieldPath.ts","../src/lib/getHumanReadableFieldType.ts","../src/lib/writeFieldDocsDescription.ts","../src/lib/buildFieldDocs.ts","../src/lib/pascalCase.ts","../src/lib/buildSharedSliceInterfaceName.ts","../src/lib/addInterfacePropertiesForFields.ts","../src/lib/addTypeAliasForCustomType.ts","../src/lib/addTypeAliasForSharedSlice.ts","../src/lib/getSourceFileText.ts","../src/generateTypes.ts"],"sourcesContent":["import type { CustomTypeModelFieldType } from \"@prismicio/types\";\nimport { stripIndent } from \"common-tags\";\n\nexport const BLANK_LINE_IDENTIFIER = \"// ___BLANK_LINE_TO_BE_REPLACED___\";\n\nexport const NON_EDITABLE_FILE_HEADER = stripIndent`\n\t// Code generated by prismic-ts-codegen. DO NOT EDIT.\n\t${BLANK_LINE_IDENTIFIER}\n`;\n\nexport const CUSTOM_TYPES_DOCUMENTATION_URL =\n\t\"https://prismic.io/docs/core-concepts/custom-types\";\n\nexport const SHARED_SLICES_DOCUMENTATION_URL =\n\t\"https://prismic.io/docs/core-concepts/reusing-slices\";\n\nexport const FIELD_DOCUMENTATION_URLS: Record<\n\tkeyof typeof CustomTypeModelFieldType,\n\tstring\n> = {\n\tUID: \"https://prismic.io/docs/core-concepts/uid\",\n\tBoolean: \"https://prismic.io/docs/core-concepts/boolean\",\n\tColor: \"https://prismic.io/docs/core-concepts/color\",\n\tDate: \"https://prismic.io/docs/core-concepts/date\",\n\tTimestamp: \"https://prismic.io/docs/core-concepts/timestamp\",\n\tNumber: \"https://prismic.io/docs/core-concepts/number\",\n\tText: \"https://prismic.io/docs/core-concepts/key-text\",\n\tSelect: \"https://prismic.io/docs/core-concepts/select\",\n\tStructuredText: \"https://prismic.io/docs/core-concepts/rich-text-title\",\n\tImage: \"https://prismic.io/docs/core-concepts/image\",\n\tLink: \"https://prismic.io/docs/core-concepts/link-content-relationship\",\n\tEmbed: \"https://prismic.io/docs/core-concepts/embed\",\n\tGeoPoint: \"https://prismic.io/docs/core-concepts/geopoint\",\n\tGroup: \"https://prismic.io/docs/core-concepts/group\",\n\tIntegrationFields: \"https://prismic.io/docs/core-concepts/integration-fields\",\n\tSlices: \"https://prismic.io/docs/core-concepts/slices\",\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\n\nexport const isCustomTypeModelField = (\n\tmodel: unknown,\n): model is CustomTypeModelField => {\n\treturn (\n\t\ttypeof model === \"object\" &&\n\t\tmodel !== null &&\n\t\t\"type\" in model &&\n\t\t\"config\" in model\n\t);\n};\n","import type { CustomTypeModelSlice } from \"@prismicio/types\";\n\nexport const isCustomTypeModelSlice = (\n\tmodel: unknown,\n): model is CustomTypeModelSlice => {\n\treturn (\n\t\ttypeof model === \"object\" &&\n\t\tmodel !== null &&\n\t\t\"non-repeat\" in model &&\n\t\t\"repeat\" in model\n\t);\n};\n","import type { SharedSliceModel } from \"@prismicio/types\";\n\nexport const isSharedSliceModel = (\n\tmodel: unknown,\n): model is SharedSliceModel => {\n\treturn typeof model === \"object\" && model !== null && \"variations\" in model;\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport { CustomTypeModelFieldType } from \"@prismicio/types\";\n\nimport { PathElement } from \"../types\";\nimport { isCustomTypeModelField } from \"./isCustomTypeModelField\";\nimport { isCustomTypeModelSlice } from \"./isCustomTypeModelSlice\";\nimport { isSharedSliceModel } from \"./isSharedSliceModel\";\n\ntype GetAPIIDPathConfig = {\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n};\n\nexport const getAPIIDPath = (config: GetAPIIDPathConfig): string => {\n\treturn config.path\n\t\t.map((element, i) => {\n\t\t\tif (\n\t\t\t\tisCustomTypeModelField(element.model) &&\n\t\t\t\t(element.model.type === CustomTypeModelFieldType.Group ||\n\t\t\t\t\telement.model.type === CustomTypeModelFieldType.Slices)\n\t\t\t) {\n\t\t\t\treturn `${element.id}[]`;\n\t\t\t} else {\n\t\t\t\tif (element.id === \"items\") {\n\t\t\t\t\tconst previousElement = config.path[i - 1];\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tisCustomTypeModelSlice(previousElement.model) ||\n\t\t\t\t\t\tisSharedSliceModel(previousElement.model)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn `${element.id}[]`;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn element.id;\n\t\t\t}\n\t\t})\n\t\t.join(\".\");\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\n\nimport { FIELD_DOCUMENTATION_URLS } from \"../constants\";\n\ntype GetFieldDocumentationURLConfig = {\n\tmodel: CustomTypeModelField;\n};\n\nexport const getFieldDocumentationURL = (\n\tconfig: GetFieldDocumentationURLConfig,\n): string => {\n\treturn FIELD_DOCUMENTATION_URLS[config.model.type];\n};\n","import type { CustomTypeModel } from \"@prismicio/types\";\n\nexport const isCustomTypeModel = (model: unknown): model is CustomTypeModel => {\n\treturn typeof model === \"object\" && model !== null && \"json\" in model;\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\n\nimport { isCustomTypeModel } from \"./isCustomTypeModel\";\nimport { isCustomTypeModelField } from \"./isCustomTypeModelField\";\nimport { isCustomTypeModelSlice } from \"./isCustomTypeModelSlice\";\nimport { isSharedSliceModel } from \"./isSharedSliceModel\";\n\ntype GetModelHumanNameConfig = {\n\tid: string;\n\tmodel:\n\t\t| CustomTypeModel\n\t\t| SharedSliceModel\n\t\t| CustomTypeModelField\n\t\t| CustomTypeModelSlice;\n};\n\nexport const getHumanReadableModelName = (\n\tconfig: GetModelHumanNameConfig,\n): string => {\n\tif (isCustomTypeModel(config.model)) {\n\t\treturn config.model.label;\n\t} else if (isSharedSliceModel(config.model)) {\n\t\treturn config.model.name;\n\t} else if (\n\t\tisCustomTypeModelField(config.model) &&\n\t\t\"label\" in config.model.config\n\t) {\n\t\treturn config.model.config.label;\n\t} else if (isCustomTypeModelSlice(config.model)) {\n\t\treturn config.model.fieldset;\n\t} else {\n\t\t// Slice Zone\n\t\treturn `Slice Zone (\\`${config.id}\\`)`;\n\t}\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\n\nimport { PathElement } from \"../types\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\n\ntype GetHumanReadableFieldPathConfig = {\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n};\n\nexport const getHumanReadableFieldPath = (\n\tconfig: GetHumanReadableFieldPathConfig,\n): string => {\n\treturn config.path\n\t\t.map((element) => {\n\t\t\tif (element.label) {\n\t\t\t\treturn element.label;\n\t\t\t} else if (element.model) {\n\t\t\t\treturn getHumanReadableModelName({\n\t\t\t\t\tid: element.id,\n\t\t\t\t\tmodel: element.model,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn element.id;\n\t\t\t}\n\t\t})\n\t\t.join(\" → \");\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\nimport { CustomTypeModelLinkSelectType } from \"@prismicio/types\";\n\ntype GetFieldHumanReadableTypeConfig = {\n\tmodel: CustomTypeModelField;\n};\n\nexport const getHumanReadableFieldType = (\n\tconfig: GetFieldHumanReadableTypeConfig,\n): string => {\n\tswitch (config.model.type) {\n\t\tcase \"StructuredText\": {\n\t\t\tconst isTitleField =\n\t\t\t\t\"single\" in config.model.config &&\n\t\t\t\tconfig.model.config.single\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.every((blockType) => /heading/.test(blockType));\n\n\t\t\treturn isTitleField ? \"Title\" : \"Rich Text\";\n\t\t}\n\n\t\tcase \"IntegrationFields\": {\n\t\t\treturn `Integration Fields (Catalog: \\`${config.model.config.catalog}\\`)`;\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tswitch (config.model.config.select) {\n\t\t\t\tcase CustomTypeModelLinkSelectType.Document: {\n\t\t\t\t\treturn \"Content Relationship\";\n\t\t\t\t}\n\n\t\t\t\tcase CustomTypeModelLinkSelectType.Media: {\n\t\t\t\t\treturn \"Link to Media\";\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\treturn \"Link\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\treturn \"Slice Zone\";\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn config.model.type;\n\t\t}\n\t}\n};\n","import type { CodeBlockWriter } from \"ts-morph\";\n\ntype BuildFieldDocsConfig = {\n\twriter: CodeBlockWriter;\n\tdescription?: string;\n\tfieldType?: string;\n\tdefaultValue?: string | boolean;\n\tplaceholder?: string;\n\tapiIDPath?: string;\n\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.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};\n\nexport const buildFieldDocs = (\n\tconfig: BuildFieldDocsConfig,\n): NonNullable<JSDocableNodeStructure[\"docs\"]> => {\n\treturn [\n\t\t{\n\t\t\tdescription: (writer) => {\n\t\t\t\tconst name = getHumanReadableModelName({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t});\n\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\tpath: config.path,\n\t\t\t\t});\n\n\t\t\t\tconst fieldType = getHumanReadableFieldType({\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t});\n\n\t\t\t\tconst placeholder =\n\t\t\t\t\t\"placeholder\" in config.model.config &&\n\t\t\t\t\tconfig.model.config.placeholder\n\t\t\t\t\t\t? config.model.config.placeholder\n\t\t\t\t\t\t: `*None*`;\n\n\t\t\t\tconst defaultValue =\n\t\t\t\t\t\"default_value\" in config.model.config\n\t\t\t\t\t\t? config.model.config.default_value\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\tconst apiIDPath = getAPIIDPath({\n\t\t\t\t\tpath: [...config.path, { id: config.id, model: config.model }],\n\t\t\t\t});\n\n\t\t\t\twriteFieldDocsDescription({\n\t\t\t\t\twriter,\n\t\t\t\t\tdescription: `${name} field in *${humanReadablePath}*`,\n\t\t\t\t\tfieldType,\n\t\t\t\t\tplaceholder,\n\t\t\t\t\tdefaultValue,\n\t\t\t\t\tapiIDPath,\n\t\t\t\t\tdocumentationURL: getFieldDocumentationURL({ model: config.model }),\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t];\n};\n","import {\n\tpascalCase as pascalCaseBase,\n\tpascalCaseTransformMerge,\n} from \"pascal-case\";\n\nexport const pascalCase = (input: string): string =>\n\tpascalCaseBase(input, {\n\t\ttransform: pascalCaseTransformMerge,\n\t});\n","import { pascalCase } from \"./pascalCase\";\n\ntype BuildSharedSliceInterfaceNameConfig = {\n\tid: string;\n};\n\nexport const buildSharedSliceInterfaceName = (\n\tconfig: BuildSharedSliceInterfaceNameConfig,\n): string => {\n\treturn pascalCase(`${config.id} Slice`);\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport {\n\tCustomTypeModelSliceType,\n\tCustomTypeModelLinkSelectType,\n} from \"@prismicio/types\";\nimport type { InterfaceDeclaration, SourceFile } from \"ts-morph\";\n\nimport { FieldConfigs, PathElement } from \"../types\";\nimport { buildFieldDocs } from \"./buildFieldDocs\";\nimport { buildSharedSliceInterfaceName } from \"./buildSharedSliceInterfaceName\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { pascalCase } from \"./pascalCase\";\n\ntype AddInterfacePropertyFromFieldConfig = {\n\tid: string;\n\tmodel: CustomTypeModelField;\n\tinterface: InterfaceDeclaration;\n\tsourceFile: SourceFile;\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n\tfieldConfigs: FieldConfigs;\n};\n\nconst addInterfacePropertyFromField = (\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}),\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}),\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}),\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}),\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}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Image\": {\n\t\t\tif (config.model.config.thumbnails.length > 0) {\n\t\t\t\tconst thumbnailNames = config.model.config.thumbnails\n\t\t\t\t\t.map((thumbnail) => `\"${thumbnail.name}\"`)\n\t\t\t\t\t.join(\" | \");\n\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismicT.ImageField<${thumbnailNames}>`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismicT.ImageField<null>\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"IntegrationFields\": {\n\t\t\tconst catalogType =\n\t\t\t\tconfig.fieldConfigs.integrationFields?.catalogTypes?.[\n\t\t\t\t\tconfig.model.config.catalog\n\t\t\t\t];\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: catalogType\n\t\t\t\t\t? `prismicT.IntegrationFields<${catalogType}>`\n\t\t\t\t\t: \"prismicT.IntegrationFields\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tswitch (config.model.config.select) {\n\t\t\t\tcase CustomTypeModelLinkSelectType.Document: {\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\tconfig.model.config.customtypes &&\n\t\t\t\t\t\t\tconfig.model.config.customtypes.length > 0\n\t\t\t\t\t\t\t\t? `prismicT.RelationField<${config.model.config.customtypes\n\t\t\t\t\t\t\t\t\t\t.map((type) => `\"${type}\"`)\n\t\t\t\t\t\t\t\t\t\t.join(\" | \")}>`\n\t\t\t\t\t\t\t\t: \"prismicT.RelationField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t}),\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}),\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}),\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}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"StructuredText\": {\n\t\t\tconst isTitleField =\n\t\t\t\t\"single\" in config.model.config &&\n\t\t\t\tconfig.model.config.single\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.every((blockType) => /heading/.test(blockType));\n\n\t\t\tif (isTitleField) {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismicT.TitleField\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t}),\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}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Select\": {\n\t\t\tconst options = config.model.config.options\n\t\t\t\t.map((option) => `\"${option}\"`)\n\t\t\t\t.join(\" | \");\n\t\t\tconst hasDefault = Boolean(config.model.config.default_value);\n\n\t\t\tif (hasDefault) {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismicT.SelectField<${options}, \"filled\">`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t}),\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}),\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}),\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}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Group\": {\n\t\t\tconst itemInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} Item`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tisExported: true,\n\t\t\t});\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tinterface: itemInterface,\n\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\tfields: config.model.config.fields,\n\t\t\t\tpath: [\n\t\t\t\t\t...config.path,\n\t\t\t\t\t{\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t});\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: `prismicT.GroupField<Simplify<${itemInterface.getName()}>>`,\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\tconst choiceInterfaceNames: string[] = [];\n\n\t\t\tfor (const choiceId in config.model.config.choices) {\n\t\t\t\tconst choice = config.model.config.choices[choiceId];\n\n\t\t\t\tif (choice.type === CustomTypeModelSliceType.SharedSlice) {\n\t\t\t\t\tchoiceInterfaceNames.push(\n\t\t\t\t\t\tbuildSharedSliceInterfaceName({ id: choiceId }),\n\t\t\t\t\t);\n\t\t\t\t} else if (choice.type === CustomTypeModelSliceType.Slice) {\n\t\t\t\t\tlet primaryInterface: InterfaceDeclaration | undefined;\n\t\t\t\t\tif (Object.keys(choice[\"non-repeat\"]).length > 0) {\n\t\t\t\t\t\tprimaryInterface = config.sourceFile.addInterface({\n\t\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice Primary`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tdocs: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\twriter.writeLine(`Primary content in ${humanReadablePath}`);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t});\n\t\t\t\t\t\taddInterfacePropertiesForFields({\n\t\t\t\t\t\t\tinterface: primaryInterface,\n\t\t\t\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\t\t\t\tfields: choice[\"non-repeat\"],\n\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tlet itemInterface: InterfaceDeclaration | undefined;\n\t\t\t\t\tif (Object.keys(choice.repeat).length > 0) {\n\t\t\t\t\t\titemInterface = config.sourceFile.addInterface({\n\t\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice Item`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tdocs: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tisExported: true,\n\t\t\t\t\t\t});\n\t\t\t\t\t\taddInterfacePropertiesForFields({\n\t\t\t\t\t\t\tinterface: itemInterface,\n\t\t\t\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\t\t\t\tfields: choice.repeat,\n\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconst sliceType = config.sourceFile.addTypeAlias({\n\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice`,\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttype: `prismicT.Slice<\"${choiceId}\", ${\n\t\t\t\t\t\t\tprimaryInterface\n\t\t\t\t\t\t\t\t? `Simplify<${primaryInterface.getName()}>`\n\t\t\t\t\t\t\t\t: \"Record<string, never>\"\n\t\t\t\t\t\t}, ${\n\t\t\t\t\t\t\titemInterface ? `Simplify<${itemInterface.getName()}>` : \"never\"\n\t\t\t\t\t\t}>`,\n\t\t\t\t\t\tisExported: true,\n\t\t\t\t\t});\n\n\t\t\t\t\tchoiceInterfaceNames.push(sliceType.getName());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst slicesType = config.sourceFile.addTypeAlias({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} Slice`,\n\t\t\t\t),\n\t\t\t\ttype:\n\t\t\t\t\tchoiceInterfaceNames.length > 0\n\t\t\t\t\t\t? choiceInterfaceNames.join(\" | \")\n\t\t\t\t\t\t: \"never\",\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Slice for *${humanReadablePath}*`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: `prismicT.SliceZone<${slicesType.getName()}>`,\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t}),\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}),\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};\n\nexport const addInterfacePropertiesForFields = (\n\tconfig: AddInterfacePropertiesForFieldsConfig,\n) => {\n\tfor (const name in config.fields) {\n\t\taddInterfacePropertyFromField({\n\t\t\t...config,\n\t\t\tid: name.includes(\"-\") ? `\"${name}\"` : name,\n\t\t\tmodel: config.fields[name],\n\t\t});\n\t}\n};\n","import type { CustomTypeModel, CustomTypeModelField } from \"@prismicio/types\";\nimport type {\n\tSourceFile,\n\tTypeAliasDeclaration,\n\tInterfaceDeclaration,\n} from \"ts-morph\";\nimport { CUSTOM_TYPES_DOCUMENTATION_URL } from \"../constants\";\nimport { FieldConfigs } from \"../types\";\n\nimport { addInterfacePropertiesForFields } from \"./addInterfacePropertiesForFields\";\nimport { pascalCase } from \"./pascalCase\";\n\nconst collectCustomTypeFields = (\n\tmodel: CustomTypeModel,\n): Record<string, CustomTypeModelField> => {\n\treturn Object.assign({}, ...Object.values(model.json));\n};\n\ntype AddTypeAliasForCustomTypeConfig = {\n\tmodel: CustomTypeModel;\n\tsourceFile: SourceFile;\n\tlocaleIDs: string[];\n\tfieldConfigs: FieldConfigs;\n};\n\nexport const addTypeAliasForCustomType = ({\n\tmodel,\n\tsourceFile,\n\tlocaleIDs,\n\tfieldConfigs,\n}: AddTypeAliasForCustomTypeConfig): TypeAliasDeclaration => {\n\tconst { uid: uidField, ...fields } = collectCustomTypeFields(model);\n\tconst hasDataFields = Object.keys(fields).length > 0;\n\tconst hasUIDField = Boolean(uidField);\n\n\tlet dataInterface: InterfaceDeclaration | TypeAliasDeclaration;\n\tif (hasDataFields) {\n\t\tdataInterface = sourceFile.addInterface({\n\t\t\tname: pascalCase(`${model.id} Document Data`),\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: `Content for ${model.label} documents`,\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t\taddInterfacePropertiesForFields({\n\t\t\tfields,\n\t\t\tinterface: dataInterface,\n\t\t\tsourceFile: sourceFile,\n\t\t\tpath: [\n\t\t\t\t{\n\t\t\t\t\tid: model.id,\n\t\t\t\t\tmodel: model,\n\t\t\t\t},\n\t\t\t],\n\t\t\tfieldConfigs,\n\t\t});\n\t} else {\n\t\tdataInterface = sourceFile.addTypeAlias({\n\t\t\tname: pascalCase(`${model.id} Document Data`),\n\t\t\ttype: `Record<string, never>`,\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: `Content for ${model.label} documents`,\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t}\n\n\treturn sourceFile.addTypeAlias({\n\t\tname: pascalCase(`${model.id} Document`),\n\t\ttypeParameters: [\n\t\t\t{\n\t\t\t\tname: \"Lang\",\n\t\t\t\tconstraint: \"string\",\n\t\t\t\tdefault:\n\t\t\t\t\tlocaleIDs.length > 0\n\t\t\t\t\t\t? localeIDs.map((localeID) => `\"${localeID}\"`).join(\" | \")\n\t\t\t\t\t\t: \"string\",\n\t\t\t},\n\t\t],\n\t\ttype: hasUIDField\n\t\t\t? `prismicT.PrismicDocumentWithUID<Simplify<${dataInterface.getName()}>, \"${\n\t\t\t\t\tmodel.id\n\t\t\t }\", Lang>`\n\t\t\t: `prismicT.PrismicDocumentWithoutUID<Simplify<${dataInterface.getName()}>, \"${\n\t\t\t\t\tmodel.id\n\t\t\t }\", Lang>`,\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\twriter.writeLine(`${model.label} document from Prismic`);\n\t\t\t\t\twriter.blankLine();\n\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${model.id}\\``);\n\t\t\t\t\twriter.writeLine(`- **Repeatable**: \\`${model.repeatable}\\``);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Documentation**: ${CUSTOM_TYPES_DOCUMENTATION_URL}`,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\ttags: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttagName: \"typeParam\",\n\t\t\t\t\t\ttext: \"Lang - Language API ID of the document.\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tisExported: true,\n\t});\n};\n","import type { SharedSliceModel } from \"@prismicio/types\";\nimport type {\n\tInterfaceDeclaration,\n\tSourceFile,\n\tTypeAliasDeclaration,\n} from \"ts-morph\";\n\nimport { addInterfacePropertiesForFields } from \"./addInterfacePropertiesForFields\";\nimport { buildSharedSliceInterfaceName } from \"./buildSharedSliceInterfaceName\";\nimport { pascalCase } from \"./pascalCase\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { SHARED_SLICES_DOCUMENTATION_URL } from \"../constants\";\nimport { FieldConfigs } from \"../types\";\n\ntype AddTypeAliasForSharedSliceConfig = {\n\tmodel: SharedSliceModel;\n\tsourceFile: SourceFile;\n\tfieldConfigs: FieldConfigs;\n};\n\nexport const addTypeAliasForSharedSlice = (\n\tconfig: AddTypeAliasForSharedSliceConfig,\n): TypeAliasDeclaration => {\n\tconst variationTypeNames: string[] = [];\n\n\tfor (const variation of config.model.variations) {\n\t\tlet primaryInterface: InterfaceDeclaration | undefined;\n\t\tif (Object.keys(variation.primary).length > 0) {\n\t\t\tprimaryInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${buildSharedSliceInterfaceName({ id: config.model.id })} ${\n\t\t\t\t\t\tvariation.id\n\t\t\t\t\t} Primary`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Primary content in ${humanReadablePath}`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tinterface: primaryInterface,\n\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\tfields: variation.primary,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t});\n\t\t}\n\n\t\tlet itemInterface: InterfaceDeclaration | undefined;\n\t\tif (Object.keys(variation.items).length > 0) {\n\t\t\titemInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${buildSharedSliceInterfaceName({ id: config.model.id })} ${\n\t\t\t\t\t\tvariation.id\n\t\t\t\t\t} Item`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tisExported: true,\n\t\t\t});\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tinterface: itemInterface,\n\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\tfields: variation.items,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t});\n\t\t}\n\n\t\tconst variationType = config.sourceFile.addTypeAlias({\n\t\t\tname: pascalCase(\n\t\t\t\t`${buildSharedSliceInterfaceName({\n\t\t\t\t\tid: config.model.id,\n\t\t\t\t})} ${variation.id}`,\n\t\t\t),\n\t\t\ttype: `prismicT.SharedSliceVariation<\"${variation.id}\", ${\n\t\t\t\tprimaryInterface\n\t\t\t\t\t? `Simplify<${primaryInterface.getName()}>`\n\t\t\t\t\t: \"Record<string, never>\"\n\t\t\t}, ${itemInterface ? `Simplify<${itemInterface.getName()}>` : \"never\"}>`,\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t\t`${variation.name} variation for ${config.model.name} Slice`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\twriter.blankLine();\n\t\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${variation.id}\\``);\n\t\t\t\t\t\twriter.writeLine(`- **Description**: \\`${variation.description}\\``);\n\t\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t\t`- **Documentation**: ${SHARED_SLICES_DOCUMENTATION_URL}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\tisExported: true,\n\t\t});\n\n\t\tvariationTypeNames.push(variationType.getName());\n\t}\n\n\tconst variationsType = config.sourceFile.addTypeAlias({\n\t\tname: pascalCase(`${config.model.id} Slice Variation`),\n\t\ttype:\n\t\t\tvariationTypeNames.length > 0 ? variationTypeNames.join(\" | \") : \"never\",\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\n\t\t\t\t\twriter.writeLine(`Slice variation for *${humanReadablePath}*`);\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t});\n\n\treturn config.sourceFile.addTypeAlias({\n\t\tname: pascalCase(\n\t\t\tbuildSharedSliceInterfaceName({\n\t\t\t\tid: config.model.id,\n\t\t\t}),\n\t\t),\n\t\ttype: `prismicT.SharedSlice<\"${\n\t\t\tconfig.model.id\n\t\t}\", ${variationsType.getName()}>`,\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\twriter.writeLine(`${config.model.name} Shared Slice`);\n\t\t\t\t\twriter.blankLine();\n\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${config.model.id}\\``);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Description**: \\`${config.model.description}\\``,\n\t\t\t\t\t);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Documentation**: ${SHARED_SLICES_DOCUMENTATION_URL}`,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tisExported: true,\n\t});\n};\n","import * as tsm from \"ts-morph\";\n// import prettier from \"prettier\";\n\nimport { BLANK_LINE_IDENTIFIER } from \"../constants\";\n\nexport const getSourceFileText = (sourceFile: tsm.SourceFile): string => {\n\tconst text = sourceFile\n\t\t.print()\n\t\t.replace(new RegExp(BLANK_LINE_IDENTIFIER, \"g\"), \"\");\n\n\treturn text;\n\n\t// return prettier.format(text, { parser: \"typescript\" });\n};\n","import { Project } from \"ts-morph\";\nimport type { CustomTypeModel, SharedSliceModel } from \"@prismicio/types\";\n\nimport { BLANK_LINE_IDENTIFIER, NON_EDITABLE_FILE_HEADER } from \"./constants\";\nimport { addTypeAliasForCustomType } from \"./lib/addTypeAliasForCustomType\";\nimport { addTypeAliasForSharedSlice } from \"./lib/addTypeAliasForSharedSlice\";\nimport { getSourceFileText } from \"./lib/getSourceFileText\";\nimport { FieldConfigs } from \"./types\";\n\nexport type GenerateTypesConfig = {\n\tcustomTypeModels?: CustomTypeModel[];\n\tsharedSliceModels?: SharedSliceModel[];\n\tlocaleIDs?: string[];\n\tfieldConfigs?: FieldConfigs;\n};\n\nexport const generateTypes = (config: GenerateTypesConfig = {}) => {\n\tconst project = new Project({\n\t\tuseInMemoryFileSystem: true,\n\t});\n\n\tconst sourceFile = project.createSourceFile(\"types.d.ts\");\n\n\tsourceFile.addImportDeclaration({\n\t\tmoduleSpecifier: \"@prismicio/types\",\n\t\tnamespaceImport: \"prismicT\",\n\t\tisTypeOnly: true,\n\t\tleadingTrivia: NON_EDITABLE_FILE_HEADER,\n\t});\n\n\tsourceFile.addStatements(BLANK_LINE_IDENTIFIER);\n\n\tsourceFile.addTypeAlias({\n\t\tname: \"Simplify\",\n\t\ttypeParameters: [\n\t\t\t{\n\t\t\t\tname: \"T\",\n\t\t\t},\n\t\t],\n\t\ttype: `{ [KeyType in keyof T]: T[KeyType] }`,\n\t});\n\n\tif (config.customTypeModels) {\n\t\tfor (const model of config.customTypeModels) {\n\t\t\taddTypeAliasForCustomType({\n\t\t\t\tmodel,\n\t\t\t\tsourceFile,\n\t\t\t\tlocaleIDs: config.localeIDs || [],\n\t\t\t\tfieldConfigs: config.fieldConfigs || {},\n\t\t\t});\n\t\t}\n\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\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/isCustomTypeModelSlice.ts","../src/lib/isSharedSliceModel.ts","../src/lib/getAPIIDPath.ts","../src/lib/getFieldDocumentationURL.ts","../src/lib/isCustomTypeModel.ts","../src/lib/getHumanReadableModelName.ts","../src/lib/getHumanReadableFieldPath.ts","../src/lib/getHumanReadableFieldType.ts","../src/lib/writeFieldDocsDescription.ts","../src/lib/buildFieldDocs.ts","../src/lib/pascalCase.ts","../src/lib/buildSharedSliceInterfaceName.ts","../src/lib/addInterfacePropertiesForFields.ts","../src/lib/addTypeAliasForCustomType.ts","../src/lib/addTypeAliasForSharedSlice.ts","../src/lib/getSourceFileText.ts","../src/generateTypes.ts"],"sourcesContent":["import type { CustomTypeModelFieldType } from \"@prismicio/types\";\nimport { stripIndent } from \"common-tags\";\n\nexport const BLANK_LINE_IDENTIFIER = \"// ___BLANK_LINE_TO_BE_REPLACED___\";\n\nexport const NON_EDITABLE_FILE_HEADER = stripIndent`\n\t// Code generated by prismic-ts-codegen. DO NOT EDIT.\n\t${BLANK_LINE_IDENTIFIER}\n`;\n\nexport const CUSTOM_TYPES_DOCUMENTATION_URL =\n\t\"https://prismic.io/docs/core-concepts/custom-types\";\n\nexport const SHARED_SLICES_DOCUMENTATION_URL =\n\t\"https://prismic.io/docs/core-concepts/reusing-slices\";\n\nexport const FIELD_DOCUMENTATION_URLS: Record<\n\tkeyof typeof CustomTypeModelFieldType,\n\tstring\n> = {\n\tUID: \"https://prismic.io/docs/core-concepts/uid\",\n\tBoolean: \"https://prismic.io/docs/core-concepts/boolean\",\n\tColor: \"https://prismic.io/docs/core-concepts/color\",\n\tDate: \"https://prismic.io/docs/core-concepts/date\",\n\tTimestamp: \"https://prismic.io/docs/core-concepts/timestamp\",\n\tNumber: \"https://prismic.io/docs/core-concepts/number\",\n\tText: \"https://prismic.io/docs/core-concepts/key-text\",\n\tSelect: \"https://prismic.io/docs/core-concepts/select\",\n\tStructuredText: \"https://prismic.io/docs/core-concepts/rich-text-title\",\n\tImage: \"https://prismic.io/docs/core-concepts/image\",\n\tLink: \"https://prismic.io/docs/core-concepts/link-content-relationship\",\n\tEmbed: \"https://prismic.io/docs/core-concepts/embed\",\n\tGeoPoint: \"https://prismic.io/docs/core-concepts/geopoint\",\n\tGroup: \"https://prismic.io/docs/core-concepts/group\",\n\tIntegrationFields: \"https://prismic.io/docs/core-concepts/integration-fields\",\n\tSlices: \"https://prismic.io/docs/core-concepts/slices\",\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\n\nexport const isCustomTypeModelField = (\n\tmodel: unknown,\n): model is CustomTypeModelField => {\n\treturn (\n\t\ttypeof model === \"object\" &&\n\t\tmodel !== null &&\n\t\t\"type\" in model &&\n\t\t\"config\" in model\n\t);\n};\n","import type { CustomTypeModelSlice } from \"@prismicio/types\";\n\nexport const isCustomTypeModelSlice = (\n\tmodel: unknown,\n): model is CustomTypeModelSlice => {\n\treturn (\n\t\ttypeof model === \"object\" &&\n\t\tmodel !== null &&\n\t\t\"non-repeat\" in model &&\n\t\t\"repeat\" in model\n\t);\n};\n","import type { SharedSliceModel } from \"@prismicio/types\";\n\nexport const isSharedSliceModel = (\n\tmodel: unknown,\n): model is SharedSliceModel => {\n\treturn typeof model === \"object\" && model !== null && \"variations\" in model;\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport { CustomTypeModelFieldType } from \"@prismicio/types\";\n\nimport { PathElement } from \"../types\";\nimport { isCustomTypeModelField } from \"./isCustomTypeModelField\";\nimport { isCustomTypeModelSlice } from \"./isCustomTypeModelSlice\";\nimport { isSharedSliceModel } from \"./isSharedSliceModel\";\n\ntype GetAPIIDPathConfig = {\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n};\n\nexport const getAPIIDPath = (config: GetAPIIDPathConfig): string => {\n\treturn config.path\n\t\t.map((element, i) => {\n\t\t\tif (\n\t\t\t\tisCustomTypeModelField(element.model) &&\n\t\t\t\t(element.model.type === CustomTypeModelFieldType.Group ||\n\t\t\t\t\telement.model.type === CustomTypeModelFieldType.Slices)\n\t\t\t) {\n\t\t\t\treturn `${element.id}[]`;\n\t\t\t} else {\n\t\t\t\tif (element.id === \"items\") {\n\t\t\t\t\tconst previousElement = config.path[i - 1];\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tisCustomTypeModelSlice(previousElement.model) ||\n\t\t\t\t\t\tisSharedSliceModel(previousElement.model)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn `${element.id}[]`;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn element.id;\n\t\t\t}\n\t\t})\n\t\t.join(\".\");\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\n\nimport { FIELD_DOCUMENTATION_URLS } from \"../constants\";\n\ntype GetFieldDocumentationURLConfig = {\n\tmodel: CustomTypeModelField;\n};\n\nexport const getFieldDocumentationURL = (\n\tconfig: GetFieldDocumentationURLConfig,\n): string => {\n\treturn FIELD_DOCUMENTATION_URLS[config.model.type];\n};\n","import type { CustomTypeModel } from \"@prismicio/types\";\n\nexport const isCustomTypeModel = (model: unknown): model is CustomTypeModel => {\n\treturn typeof model === \"object\" && model !== null && \"json\" in model;\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\n\nimport { isCustomTypeModel } from \"./isCustomTypeModel\";\nimport { isCustomTypeModelField } from \"./isCustomTypeModelField\";\nimport { isCustomTypeModelSlice } from \"./isCustomTypeModelSlice\";\nimport { isSharedSliceModel } from \"./isSharedSliceModel\";\n\ntype GetModelHumanNameConfig = {\n\tid: string;\n\tmodel:\n\t\t| CustomTypeModel\n\t\t| SharedSliceModel\n\t\t| CustomTypeModelField\n\t\t| CustomTypeModelSlice;\n};\n\nexport const getHumanReadableModelName = (\n\tconfig: GetModelHumanNameConfig,\n): string => {\n\tif (isCustomTypeModel(config.model)) {\n\t\treturn config.model.label;\n\t} else if (isSharedSliceModel(config.model)) {\n\t\treturn config.model.name;\n\t} else if (\n\t\tisCustomTypeModelField(config.model) &&\n\t\t\"label\" in config.model.config\n\t) {\n\t\treturn config.model.config.label;\n\t} else if (isCustomTypeModelSlice(config.model)) {\n\t\treturn config.model.fieldset;\n\t} else {\n\t\t// Slice Zone\n\t\treturn `Slice Zone (\\`${config.id}\\`)`;\n\t}\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\n\nimport { PathElement } from \"../types\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\n\ntype GetHumanReadableFieldPathConfig = {\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n};\n\nexport const getHumanReadableFieldPath = (\n\tconfig: GetHumanReadableFieldPathConfig,\n): string => {\n\treturn config.path\n\t\t.map((element) => {\n\t\t\tif (element.label) {\n\t\t\t\treturn element.label;\n\t\t\t} else if (element.model) {\n\t\t\t\treturn getHumanReadableModelName({\n\t\t\t\t\tid: element.id,\n\t\t\t\t\tmodel: element.model,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn element.id;\n\t\t\t}\n\t\t})\n\t\t.join(\" → \");\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\nimport { CustomTypeModelLinkSelectType } from \"@prismicio/types\";\n\ntype GetFieldHumanReadableTypeConfig = {\n\tmodel: CustomTypeModelField;\n};\n\nexport const getHumanReadableFieldType = (\n\tconfig: GetFieldHumanReadableTypeConfig,\n): string => {\n\tswitch (config.model.type) {\n\t\tcase \"StructuredText\": {\n\t\t\tconst isTitleField =\n\t\t\t\t\"single\" in config.model.config &&\n\t\t\t\tconfig.model.config.single\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.every((blockType) => /heading/.test(blockType));\n\n\t\t\treturn isTitleField ? \"Title\" : \"Rich Text\";\n\t\t}\n\n\t\tcase \"IntegrationFields\": {\n\t\t\treturn `Integration Fields (Catalog: \\`${config.model.config.catalog}\\`)`;\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tswitch (config.model.config.select) {\n\t\t\t\tcase CustomTypeModelLinkSelectType.Document: {\n\t\t\t\t\treturn \"Content Relationship\";\n\t\t\t\t}\n\n\t\t\t\tcase CustomTypeModelLinkSelectType.Media: {\n\t\t\t\t\treturn \"Link to Media\";\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\treturn \"Link\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\treturn \"Slice Zone\";\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn config.model.type;\n\t\t}\n\t}\n};\n","import type { CodeBlockWriter } from \"ts-morph\";\n\ntype BuildFieldDocsConfig = {\n\twriter: CodeBlockWriter;\n\tdescription?: string;\n\tfieldType?: string;\n\tdefaultValue?: string | boolean;\n\tplaceholder?: string;\n\tapiIDPath?: string;\n\ttabName?: string;\n\tdocumentationURL?: string;\n};\n\nexport const writeFieldDocsDescription = (\n\tconfig: BuildFieldDocsConfig,\n): void => {\n\tif (config.description) {\n\t\tconfig.writer.writeLine(config.description);\n\t}\n\n\tconfig.writer.blankLineIfLastNot();\n\n\tif (config.fieldType) {\n\t\tconfig.writer.writeLine(`- **Field Type**: ${config.fieldType}`);\n\t}\n\n\tif (config.placeholder) {\n\t\tconfig.writer.writeLine(`- **Placeholder**: ${config.placeholder}`);\n\t}\n\n\tif (config.defaultValue !== undefined) {\n\t\tconst stringifiedDefaultValue =\n\t\t\ttypeof config.defaultValue === \"boolean\"\n\t\t\t\t? `${config.defaultValue}`\n\t\t\t\t: config.defaultValue;\n\n\t\tconfig.writer.writeLine(`- **Default Value**: ${stringifiedDefaultValue}`);\n\t}\n\n\tif (config.apiIDPath) {\n\t\tconfig.writer.writeLine(`- **API ID Path**: ${config.apiIDPath}`);\n\t}\n\n\tif (config.tabName) {\n\t\tconfig.writer.writeLine(`- **Tab**: ${config.tabName}`);\n\t}\n\n\tif (config.documentationURL) {\n\t\tconfig.writer.writeLine(`- **Documentation**: ${config.documentationURL}`);\n\t}\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport type { JSDocableNodeStructure } from \"ts-morph\";\n\nimport { PathElement } from \"../types\";\nimport { getAPIIDPath } from \"./getAPIIDPath\";\nimport { getFieldDocumentationURL } from \"./getFieldDocumentationURL\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { getHumanReadableFieldType } from \"./getHumanReadableFieldType\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\nimport { writeFieldDocsDescription } from \"./writeFieldDocsDescription\";\n\ntype BuildFieldDocsConfig = {\n\tid: string;\n\tmodel: CustomTypeModelField;\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n\ttabName?: string;\n};\n\nexport const buildFieldDocs = (\n\tconfig: BuildFieldDocsConfig,\n): NonNullable<JSDocableNodeStructure[\"docs\"]> => {\n\treturn [\n\t\t{\n\t\t\tdescription: (writer) => {\n\t\t\t\tconst name = getHumanReadableModelName({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t});\n\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\tpath: config.path,\n\t\t\t\t});\n\n\t\t\t\tconst fieldType = getHumanReadableFieldType({\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t});\n\n\t\t\t\tconst placeholder =\n\t\t\t\t\t\"placeholder\" in config.model.config &&\n\t\t\t\t\tconfig.model.config.placeholder\n\t\t\t\t\t\t? config.model.config.placeholder\n\t\t\t\t\t\t: `*None*`;\n\n\t\t\t\tconst defaultValue =\n\t\t\t\t\t\"default_value\" in config.model.config\n\t\t\t\t\t\t? config.model.config.default_value\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\tconst apiIDPath = getAPIIDPath({\n\t\t\t\t\tpath: [...config.path, { id: config.id, model: config.model }],\n\t\t\t\t});\n\n\t\t\t\twriteFieldDocsDescription({\n\t\t\t\t\twriter,\n\t\t\t\t\tdescription: `${name} field in *${humanReadablePath}*`,\n\t\t\t\t\tfieldType,\n\t\t\t\t\tplaceholder,\n\t\t\t\t\tdefaultValue,\n\t\t\t\t\tapiIDPath,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\tdocumentationURL: getFieldDocumentationURL({ model: config.model }),\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t];\n};\n","import {\n\tpascalCase as pascalCaseBase,\n\tpascalCaseTransformMerge,\n} from \"pascal-case\";\n\nexport const pascalCase = (input: string): string =>\n\tpascalCaseBase(input, {\n\t\ttransform: pascalCaseTransformMerge,\n\t});\n","import { pascalCase } from \"./pascalCase\";\n\ntype BuildSharedSliceInterfaceNameConfig = {\n\tid: string;\n};\n\nexport const buildSharedSliceInterfaceName = (\n\tconfig: BuildSharedSliceInterfaceNameConfig,\n): string => {\n\treturn pascalCase(`${config.id} Slice`);\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport {\n\tCustomTypeModelSliceType,\n\tCustomTypeModelLinkSelectType,\n} from \"@prismicio/types\";\nimport type { InterfaceDeclaration, SourceFile } from \"ts-morph\";\n\nimport { FieldConfigs, PathElement } from \"../types\";\nimport { buildFieldDocs } from \"./buildFieldDocs\";\nimport { buildSharedSliceInterfaceName } from \"./buildSharedSliceInterfaceName\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { pascalCase } from \"./pascalCase\";\n\ntype AddInterfacePropertyFromFieldConfig = {\n\tid: string;\n\tmodel: CustomTypeModelField;\n\tinterface: InterfaceDeclaration;\n\tsourceFile: SourceFile;\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n\tfieldConfigs: FieldConfigs;\n\ttabName?: string;\n};\n\nconst addInterfacePropertyForField = (\n\tconfig: AddInterfacePropertyFromFieldConfig,\n) => {\n\tswitch (config.model.type) {\n\t\tcase \"UID\": {\n\t\t\t// UID fields are not included in Data.\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Boolean\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.BooleanField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Color\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.ColorField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Date\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.DateField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Embed\": {\n\t\t\tconst providerTypes: string[] = [];\n\n\t\t\tif (config.fieldConfigs.embed?.providerTypes) {\n\t\t\t\tfor (const providerType in config.fieldConfigs.embed?.providerTypes) {\n\t\t\t\t\tconst configuredProviderType =\n\t\t\t\t\t\tconfig.fieldConfigs.embed?.providerTypes[providerType];\n\n\t\t\t\t\tproviderTypes.push(\n\t\t\t\t\t\t`({ provider_name: \"${providerType}\" } & ${configuredProviderType})`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype:\n\t\t\t\t\tproviderTypes.length > 0\n\t\t\t\t\t\t? `prismicT.EmbedField<prismicT.AnyOEmbed & prismicT.OEmbedExtra & (${providerTypes.join(\n\t\t\t\t\t\t\t\t\" | \",\n\t\t\t\t\t\t )})>`\n\t\t\t\t\t\t: \"prismicT.EmbedField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"GeoPoint\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.GeoPointField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Image\": {\n\t\t\tif (config.model.config.thumbnails.length > 0) {\n\t\t\t\tconst thumbnailNames = config.model.config.thumbnails\n\t\t\t\t\t.map((thumbnail) => `\"${thumbnail.name}\"`)\n\t\t\t\t\t.join(\" | \");\n\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismicT.ImageField<${thumbnailNames}>`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismicT.ImageField<null>\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"IntegrationFields\": {\n\t\t\tconst catalogType =\n\t\t\t\tconfig.fieldConfigs.integrationFields?.catalogTypes?.[\n\t\t\t\t\tconfig.model.config.catalog\n\t\t\t\t];\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: catalogType\n\t\t\t\t\t? `prismicT.IntegrationFields<${catalogType}>`\n\t\t\t\t\t: \"prismicT.IntegrationFields\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tswitch (config.model.config.select) {\n\t\t\t\tcase CustomTypeModelLinkSelectType.Document: {\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\tconfig.model.config.customtypes &&\n\t\t\t\t\t\t\tconfig.model.config.customtypes.length > 0\n\t\t\t\t\t\t\t\t? `prismicT.RelationField<${config.model.config.customtypes\n\t\t\t\t\t\t\t\t\t\t.map((type) => `\"${type}\"`)\n\t\t\t\t\t\t\t\t\t\t.join(\" | \")}>`\n\t\t\t\t\t\t\t\t: \"prismicT.RelationField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CustomTypeModelLinkSelectType.Media: {\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype: \"prismicT.LinkToMediaField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype: \"prismicT.LinkField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Number\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.NumberField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"StructuredText\": {\n\t\t\tconst isTitleField =\n\t\t\t\t\"single\" in config.model.config &&\n\t\t\t\tconfig.model.config.single\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.every((blockType) => /heading/.test(blockType));\n\n\t\t\tif (isTitleField) {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismicT.TitleField\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismicT.RichTextField\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Select\": {\n\t\t\tconst options = config.model.config.options\n\t\t\t\t.map((option) => `\"${option}\"`)\n\t\t\t\t.join(\" | \");\n\t\t\tconst hasDefault = Boolean(config.model.config.default_value);\n\n\t\t\tif (hasDefault) {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismicT.SelectField<${options}, \"filled\">`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismicT.SelectField<${options}>`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Text\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.KeyTextField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Timestamp\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.TimestampField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Group\": {\n\t\t\tconst itemInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} Item`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tisExported: true,\n\t\t\t});\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tinterface: itemInterface,\n\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\tfields: config.model.config.fields,\n\t\t\t\tpath: [\n\t\t\t\t\t...config.path,\n\t\t\t\t\t{\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t});\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: `prismicT.GroupField<Simplify<${itemInterface.getName()}>>`,\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\tconst choiceInterfaceNames: string[] = [];\n\n\t\t\tfor (const choiceId in config.model.config.choices) {\n\t\t\t\tconst choice = config.model.config.choices[choiceId];\n\n\t\t\t\tif (choice.type === CustomTypeModelSliceType.SharedSlice) {\n\t\t\t\t\tchoiceInterfaceNames.push(\n\t\t\t\t\t\tbuildSharedSliceInterfaceName({ id: choiceId }),\n\t\t\t\t\t);\n\t\t\t\t} else if (choice.type === CustomTypeModelSliceType.Slice) {\n\t\t\t\t\tlet primaryInterface: InterfaceDeclaration | undefined;\n\t\t\t\t\tif (Object.keys(choice[\"non-repeat\"]).length > 0) {\n\t\t\t\t\t\tprimaryInterface = config.sourceFile.addInterface({\n\t\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice Primary`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tdocs: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\twriter.writeLine(`Primary content in ${humanReadablePath}`);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t});\n\t\t\t\t\t\taddInterfacePropertiesForFields({\n\t\t\t\t\t\t\tinterface: primaryInterface,\n\t\t\t\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\t\t\t\tfields: choice[\"non-repeat\"],\n\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tlet itemInterface: InterfaceDeclaration | undefined;\n\t\t\t\t\tif (Object.keys(choice.repeat).length > 0) {\n\t\t\t\t\t\titemInterface = config.sourceFile.addInterface({\n\t\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice Item`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tdocs: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tisExported: true,\n\t\t\t\t\t\t});\n\t\t\t\t\t\taddInterfacePropertiesForFields({\n\t\t\t\t\t\t\tinterface: itemInterface,\n\t\t\t\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\t\t\t\tfields: choice.repeat,\n\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconst sliceType = config.sourceFile.addTypeAlias({\n\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice`,\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttype: `prismicT.Slice<\"${choiceId}\", ${\n\t\t\t\t\t\t\tprimaryInterface\n\t\t\t\t\t\t\t\t? `Simplify<${primaryInterface.getName()}>`\n\t\t\t\t\t\t\t\t: \"Record<string, never>\"\n\t\t\t\t\t\t}, ${\n\t\t\t\t\t\t\titemInterface ? `Simplify<${itemInterface.getName()}>` : \"never\"\n\t\t\t\t\t\t}>`,\n\t\t\t\t\t\tisExported: true,\n\t\t\t\t\t});\n\n\t\t\t\t\tchoiceInterfaceNames.push(sliceType.getName());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst slicesType = config.sourceFile.addTypeAlias({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} Slice`,\n\t\t\t\t),\n\t\t\t\ttype:\n\t\t\t\t\tchoiceInterfaceNames.length > 0\n\t\t\t\t\t\t? choiceInterfaceNames.join(\" | \")\n\t\t\t\t\t\t: \"never\",\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Slice for *${humanReadablePath}*`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: `prismicT.SliceZone<${slicesType.getName()}>`,\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"unknown\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\t\t}\n\t}\n};\n\ntype AddInterfacePropertiesForFieldsConfig = Omit<\n\tAddInterfacePropertyFromFieldConfig,\n\t\"id\" | \"model\"\n> & {\n\tfields: Record<string, AddInterfacePropertyFromFieldConfig[\"model\"]>;\n\ttabName?: string;\n};\n\nexport const addInterfacePropertiesForFields = (\n\tconfig: AddInterfacePropertiesForFieldsConfig,\n) => {\n\tfor (const name in config.fields) {\n\t\taddInterfacePropertyForField({\n\t\t\t...config,\n\t\t\tid: name.includes(\"-\") ? `\"${name}\"` : name,\n\t\t\tmodel: config.fields[name],\n\t\t\ttabName: config.tabName,\n\t\t});\n\t}\n};\n","import type { CustomTypeModel, CustomTypeModelField } from \"@prismicio/types\";\nimport type {\n\tSourceFile,\n\tTypeAliasDeclaration,\n\tInterfaceDeclaration,\n} from \"ts-morph\";\nimport { CUSTOM_TYPES_DOCUMENTATION_URL } from \"../constants\";\nimport { FieldConfigs } from \"../types\";\n\nimport { addInterfacePropertiesForFields } from \"./addInterfacePropertiesForFields\";\nimport { pascalCase } from \"./pascalCase\";\n\nconst collectCustomTypeFields = (\n\tmodel: CustomTypeModel,\n): Record<string, CustomTypeModelField> => {\n\treturn Object.assign({}, ...Object.values(model.json));\n};\n\ntype AddTypeAliasForCustomTypeConfig = {\n\tmodel: CustomTypeModel;\n\tsourceFile: SourceFile;\n\tlocaleIDs: string[];\n\tfieldConfigs: FieldConfigs;\n};\n\nexport const addTypeAliasForCustomType = ({\n\tmodel,\n\tsourceFile,\n\tlocaleIDs,\n\tfieldConfigs,\n}: AddTypeAliasForCustomTypeConfig): TypeAliasDeclaration => {\n\tconst { uid: uidField, ...fields } = collectCustomTypeFields(model);\n\tconst hasDataFields = Object.keys(fields).length > 0;\n\tconst hasUIDField = Boolean(uidField);\n\n\tlet dataInterface: InterfaceDeclaration | TypeAliasDeclaration;\n\tif (hasDataFields) {\n\t\tdataInterface = sourceFile.addInterface({\n\t\t\tname: pascalCase(`${model.id} Document Data`),\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: `Content for ${model.label} documents`,\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\n\t\tfor (const tabName in model.json) {\n\t\t\t// This is destructured to ensure the UID field is\n\t\t\t// ignored.\n\t\t\tconst { uid: _uidField, ...tabFields } = model.json[tabName];\n\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tfields: tabFields,\n\t\t\t\tinterface: dataInterface,\n\t\t\t\tsourceFile: sourceFile,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: model.id,\n\t\t\t\t\t\tmodel: model,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs,\n\t\t\t\ttabName,\n\t\t\t});\n\t\t}\n\t} else {\n\t\tdataInterface = sourceFile.addTypeAlias({\n\t\t\tname: pascalCase(`${model.id} Document Data`),\n\t\t\ttype: `Record<string, never>`,\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: `Content for ${model.label} documents`,\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t}\n\n\treturn sourceFile.addTypeAlias({\n\t\tname: pascalCase(`${model.id} Document`),\n\t\ttypeParameters: [\n\t\t\t{\n\t\t\t\tname: \"Lang\",\n\t\t\t\tconstraint: \"string\",\n\t\t\t\tdefault:\n\t\t\t\t\tlocaleIDs.length > 0\n\t\t\t\t\t\t? localeIDs.map((localeID) => `\"${localeID}\"`).join(\" | \")\n\t\t\t\t\t\t: \"string\",\n\t\t\t},\n\t\t],\n\t\ttype: hasUIDField\n\t\t\t? `prismicT.PrismicDocumentWithUID<Simplify<${dataInterface.getName()}>, \"${\n\t\t\t\t\tmodel.id\n\t\t\t }\", Lang>`\n\t\t\t: `prismicT.PrismicDocumentWithoutUID<Simplify<${dataInterface.getName()}>, \"${\n\t\t\t\t\tmodel.id\n\t\t\t }\", Lang>`,\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\twriter.writeLine(`${model.label} document from Prismic`);\n\t\t\t\t\twriter.blankLine();\n\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${model.id}\\``);\n\t\t\t\t\twriter.writeLine(`- **Repeatable**: \\`${model.repeatable}\\``);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Documentation**: ${CUSTOM_TYPES_DOCUMENTATION_URL}`,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\ttags: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttagName: \"typeParam\",\n\t\t\t\t\t\ttext: \"Lang - Language API ID of the document.\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tisExported: true,\n\t});\n};\n","import type { SharedSliceModel } from \"@prismicio/types\";\nimport type {\n\tInterfaceDeclaration,\n\tSourceFile,\n\tTypeAliasDeclaration,\n} from \"ts-morph\";\n\nimport { addInterfacePropertiesForFields } from \"./addInterfacePropertiesForFields\";\nimport { buildSharedSliceInterfaceName } from \"./buildSharedSliceInterfaceName\";\nimport { pascalCase } from \"./pascalCase\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { SHARED_SLICES_DOCUMENTATION_URL } from \"../constants\";\nimport { FieldConfigs } from \"../types\";\n\ntype AddTypeAliasForSharedSliceConfig = {\n\tmodel: SharedSliceModel;\n\tsourceFile: SourceFile;\n\tfieldConfigs: FieldConfigs;\n};\n\nexport const addTypeAliasForSharedSlice = (\n\tconfig: AddTypeAliasForSharedSliceConfig,\n): TypeAliasDeclaration => {\n\tconst variationTypeNames: string[] = [];\n\n\tfor (const variation of config.model.variations) {\n\t\tlet primaryInterface: InterfaceDeclaration | undefined;\n\t\tif (Object.keys(variation.primary).length > 0) {\n\t\t\tprimaryInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${buildSharedSliceInterfaceName({ id: config.model.id })} ${\n\t\t\t\t\t\tvariation.id\n\t\t\t\t\t} Primary`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Primary content in ${humanReadablePath}`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tinterface: primaryInterface,\n\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\tfields: variation.primary,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t});\n\t\t}\n\n\t\tlet itemInterface: InterfaceDeclaration | undefined;\n\t\tif (Object.keys(variation.items).length > 0) {\n\t\t\titemInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${buildSharedSliceInterfaceName({ id: config.model.id })} ${\n\t\t\t\t\t\tvariation.id\n\t\t\t\t\t} Item`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tisExported: true,\n\t\t\t});\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tinterface: itemInterface,\n\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\tfields: variation.items,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t});\n\t\t}\n\n\t\tconst variationType = config.sourceFile.addTypeAlias({\n\t\t\tname: pascalCase(\n\t\t\t\t`${buildSharedSliceInterfaceName({\n\t\t\t\t\tid: config.model.id,\n\t\t\t\t})} ${variation.id}`,\n\t\t\t),\n\t\t\ttype: `prismicT.SharedSliceVariation<\"${variation.id}\", ${\n\t\t\t\tprimaryInterface\n\t\t\t\t\t? `Simplify<${primaryInterface.getName()}>`\n\t\t\t\t\t: \"Record<string, never>\"\n\t\t\t}, ${itemInterface ? `Simplify<${itemInterface.getName()}>` : \"never\"}>`,\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t\t`${variation.name} variation for ${config.model.name} Slice`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\twriter.blankLine();\n\t\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${variation.id}\\``);\n\t\t\t\t\t\twriter.writeLine(`- **Description**: \\`${variation.description}\\``);\n\t\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t\t`- **Documentation**: ${SHARED_SLICES_DOCUMENTATION_URL}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\tisExported: true,\n\t\t});\n\n\t\tvariationTypeNames.push(variationType.getName());\n\t}\n\n\tconst variationsType = config.sourceFile.addTypeAlias({\n\t\tname: pascalCase(`${config.model.id} Slice Variation`),\n\t\ttype:\n\t\t\tvariationTypeNames.length > 0 ? variationTypeNames.join(\" | \") : \"never\",\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\n\t\t\t\t\twriter.writeLine(`Slice variation for *${humanReadablePath}*`);\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t});\n\n\treturn config.sourceFile.addTypeAlias({\n\t\tname: pascalCase(\n\t\t\tbuildSharedSliceInterfaceName({\n\t\t\t\tid: config.model.id,\n\t\t\t}),\n\t\t),\n\t\ttype: `prismicT.SharedSlice<\"${\n\t\t\tconfig.model.id\n\t\t}\", ${variationsType.getName()}>`,\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\twriter.writeLine(`${config.model.name} Shared Slice`);\n\t\t\t\t\twriter.blankLine();\n\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${config.model.id}\\``);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Description**: \\`${config.model.description}\\``,\n\t\t\t\t\t);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Documentation**: ${SHARED_SLICES_DOCUMENTATION_URL}`,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tisExported: true,\n\t});\n};\n","import * as tsm from \"ts-morph\";\n// import prettier from \"prettier\";\n\nimport { BLANK_LINE_IDENTIFIER } from \"../constants\";\n\nexport const getSourceFileText = (sourceFile: tsm.SourceFile): string => {\n\tconst text = sourceFile\n\t\t.print()\n\t\t.replace(new RegExp(BLANK_LINE_IDENTIFIER, \"g\"), \"\");\n\n\treturn text;\n\n\t// return prettier.format(text, { parser: \"typescript\" });\n};\n","import { Project } from \"ts-morph\";\nimport type { CustomTypeModel, SharedSliceModel } from \"@prismicio/types\";\n\nimport { BLANK_LINE_IDENTIFIER, NON_EDITABLE_FILE_HEADER } from \"./constants\";\nimport { addTypeAliasForCustomType } from \"./lib/addTypeAliasForCustomType\";\nimport { addTypeAliasForSharedSlice } from \"./lib/addTypeAliasForSharedSlice\";\nimport { getSourceFileText } from \"./lib/getSourceFileText\";\nimport { FieldConfigs } from \"./types\";\n\nexport type GenerateTypesConfig = {\n\tcustomTypeModels?: CustomTypeModel[];\n\tsharedSliceModels?: SharedSliceModel[];\n\tlocaleIDs?: string[];\n\tfieldConfigs?: FieldConfigs;\n};\n\nexport const generateTypes = (config: GenerateTypesConfig = {}) => {\n\tconst project = new Project({\n\t\tuseInMemoryFileSystem: true,\n\t});\n\n\tconst sourceFile = project.createSourceFile(\"types.d.ts\");\n\n\tsourceFile.addImportDeclaration({\n\t\tmoduleSpecifier: \"@prismicio/types\",\n\t\tnamespaceImport: \"prismicT\",\n\t\tisTypeOnly: true,\n\t\tleadingTrivia: NON_EDITABLE_FILE_HEADER,\n\t});\n\n\tsourceFile.addStatements(BLANK_LINE_IDENTIFIER);\n\n\tsourceFile.addTypeAlias({\n\t\tname: \"Simplify\",\n\t\ttypeParameters: [\n\t\t\t{\n\t\t\t\tname: \"T\",\n\t\t\t},\n\t\t],\n\t\ttype: `{ [KeyType in keyof T]: T[KeyType] }`,\n\t});\n\n\tif (config.customTypeModels) {\n\t\tfor (const model of config.customTypeModels) {\n\t\t\taddTypeAliasForCustomType({\n\t\t\t\tmodel,\n\t\t\t\tsourceFile,\n\t\t\t\tlocaleIDs: config.localeIDs || [],\n\t\t\t\tfieldConfigs: config.fieldConfigs || {},\n\t\t\t});\n\t\t}\n\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\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.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "An experimental Prismic model-to-TypeScript-type generator",
5
5
  "keywords": [
6
6
  "typescript",
@@ -26,9 +26,10 @@ type AddInterfacePropertyFromFieldConfig = {
26
26
  ...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],
27
27
  ];
28
28
  fieldConfigs: FieldConfigs;
29
+ tabName?: string;
29
30
  };
30
31
 
31
- const addInterfacePropertyFromField = (
32
+ const addInterfacePropertyForField = (
32
33
  config: AddInterfacePropertyFromFieldConfig,
33
34
  ) => {
34
35
  switch (config.model.type) {
@@ -45,6 +46,7 @@ const addInterfacePropertyFromField = (
45
46
  id: config.id,
46
47
  model: config.model,
47
48
  path: config.path,
49
+ tabName: config.tabName,
48
50
  }),
49
51
  });
50
52
 
@@ -59,6 +61,7 @@ const addInterfacePropertyFromField = (
59
61
  id: config.id,
60
62
  model: config.model,
61
63
  path: config.path,
64
+ tabName: config.tabName,
62
65
  }),
63
66
  });
64
67
 
@@ -73,6 +76,7 @@ const addInterfacePropertyFromField = (
73
76
  id: config.id,
74
77
  model: config.model,
75
78
  path: config.path,
79
+ tabName: config.tabName,
76
80
  }),
77
81
  });
78
82
 
@@ -105,6 +109,7 @@ const addInterfacePropertyFromField = (
105
109
  id: config.id,
106
110
  model: config.model,
107
111
  path: config.path,
112
+ tabName: config.tabName,
108
113
  }),
109
114
  });
110
115
 
@@ -119,6 +124,7 @@ const addInterfacePropertyFromField = (
119
124
  id: config.id,
120
125
  model: config.model,
121
126
  path: config.path,
127
+ tabName: config.tabName,
122
128
  }),
123
129
  });
124
130
 
@@ -138,6 +144,7 @@ const addInterfacePropertyFromField = (
138
144
  id: config.id,
139
145
  model: config.model,
140
146
  path: config.path,
147
+ tabName: config.tabName,
141
148
  }),
142
149
  });
143
150
  } else {
@@ -148,6 +155,7 @@ const addInterfacePropertyFromField = (
148
155
  id: config.id,
149
156
  model: config.model,
150
157
  path: config.path,
158
+ tabName: config.tabName,
151
159
  }),
152
160
  });
153
161
  }
@@ -170,6 +178,7 @@ const addInterfacePropertyFromField = (
170
178
  id: config.id,
171
179
  model: config.model,
172
180
  path: config.path,
181
+ tabName: config.tabName,
173
182
  }),
174
183
  });
175
184
 
@@ -192,6 +201,7 @@ const addInterfacePropertyFromField = (
192
201
  id: config.id,
193
202
  model: config.model,
194
203
  path: config.path,
204
+ tabName: config.tabName,
195
205
  }),
196
206
  });
197
207
 
@@ -206,6 +216,7 @@ const addInterfacePropertyFromField = (
206
216
  id: config.id,
207
217
  model: config.model,
208
218
  path: config.path,
219
+ tabName: config.tabName,
209
220
  }),
210
221
  });
211
222
 
@@ -220,6 +231,7 @@ const addInterfacePropertyFromField = (
220
231
  id: config.id,
221
232
  model: config.model,
222
233
  path: config.path,
234
+ tabName: config.tabName,
223
235
  }),
224
236
  });
225
237
  }
@@ -236,6 +248,7 @@ const addInterfacePropertyFromField = (
236
248
  id: config.id,
237
249
  model: config.model,
238
250
  path: config.path,
251
+ tabName: config.tabName,
239
252
  }),
240
253
  });
241
254
 
@@ -257,6 +270,7 @@ const addInterfacePropertyFromField = (
257
270
  id: config.id,
258
271
  model: config.model,
259
272
  path: config.path,
273
+ tabName: config.tabName,
260
274
  }),
261
275
  });
262
276
  } else {
@@ -267,6 +281,7 @@ const addInterfacePropertyFromField = (
267
281
  id: config.id,
268
282
  model: config.model,
269
283
  path: config.path,
284
+ tabName: config.tabName,
270
285
  }),
271
286
  });
272
287
  }
@@ -288,6 +303,7 @@ const addInterfacePropertyFromField = (
288
303
  id: config.id,
289
304
  model: config.model,
290
305
  path: config.path,
306
+ tabName: config.tabName,
291
307
  }),
292
308
  });
293
309
  } else {
@@ -298,6 +314,7 @@ const addInterfacePropertyFromField = (
298
314
  id: config.id,
299
315
  model: config.model,
300
316
  path: config.path,
317
+ tabName: config.tabName,
301
318
  }),
302
319
  });
303
320
  }
@@ -313,6 +330,7 @@ const addInterfacePropertyFromField = (
313
330
  id: config.id,
314
331
  model: config.model,
315
332
  path: config.path,
333
+ tabName: config.tabName,
316
334
  }),
317
335
  });
318
336
 
@@ -327,6 +345,7 @@ const addInterfacePropertyFromField = (
327
345
  id: config.id,
328
346
  model: config.model,
329
347
  path: config.path,
348
+ tabName: config.tabName,
330
349
  }),
331
350
  });
332
351
 
@@ -378,6 +397,7 @@ const addInterfacePropertyFromField = (
378
397
  id: config.id,
379
398
  model: config.model,
380
399
  path: config.path,
400
+ tabName: config.tabName,
381
401
  }),
382
402
  });
383
403
 
@@ -558,6 +578,7 @@ const addInterfacePropertyFromField = (
558
578
  id: config.id,
559
579
  model: config.model,
560
580
  path: config.path,
581
+ tabName: config.tabName,
561
582
  }),
562
583
  });
563
584
 
@@ -572,6 +593,7 @@ const addInterfacePropertyFromField = (
572
593
  id: config.id,
573
594
  model: config.model,
574
595
  path: config.path,
596
+ tabName: config.tabName,
575
597
  }),
576
598
  });
577
599
  }
@@ -583,16 +605,18 @@ type AddInterfacePropertiesForFieldsConfig = Omit<
583
605
  "id" | "model"
584
606
  > & {
585
607
  fields: Record<string, AddInterfacePropertyFromFieldConfig["model"]>;
608
+ tabName?: string;
586
609
  };
587
610
 
588
611
  export const addInterfacePropertiesForFields = (
589
612
  config: AddInterfacePropertiesForFieldsConfig,
590
613
  ) => {
591
614
  for (const name in config.fields) {
592
- addInterfacePropertyFromField({
615
+ addInterfacePropertyForField({
593
616
  ...config,
594
617
  id: name.includes("-") ? `"${name}"` : name,
595
618
  model: config.fields[name],
619
+ tabName: config.tabName,
596
620
  });
597
621
  }
598
622
  };
@@ -43,18 +43,26 @@ export const addTypeAliasForCustomType = ({
43
43
  },
44
44
  ],
45
45
  });
46
- addInterfacePropertiesForFields({
47
- fields,
48
- interface: dataInterface,
49
- sourceFile: sourceFile,
50
- path: [
51
- {
52
- id: model.id,
53
- model: model,
54
- },
55
- ],
56
- fieldConfigs,
57
- });
46
+
47
+ for (const tabName in model.json) {
48
+ // This is destructured to ensure the UID field is
49
+ // ignored.
50
+ const { uid: _uidField, ...tabFields } = model.json[tabName];
51
+
52
+ addInterfacePropertiesForFields({
53
+ fields: tabFields,
54
+ interface: dataInterface,
55
+ sourceFile: sourceFile,
56
+ path: [
57
+ {
58
+ id: model.id,
59
+ model: model,
60
+ },
61
+ ],
62
+ fieldConfigs,
63
+ tabName,
64
+ });
65
+ }
58
66
  } else {
59
67
  dataInterface = sourceFile.addTypeAlias({
60
68
  name: pascalCase(`${model.id} Document Data`),
@@ -21,6 +21,7 @@ type BuildFieldDocsConfig = {
21
21
  PathElement<CustomTypeModel | SharedSliceModel>,
22
22
  ...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],
23
23
  ];
24
+ tabName?: string;
24
25
  };
25
26
 
26
27
  export const buildFieldDocs = (
@@ -63,6 +64,7 @@ export const buildFieldDocs = (
63
64
  placeholder,
64
65
  defaultValue,
65
66
  apiIDPath,
67
+ tabName: config.tabName,
66
68
  documentationURL: getFieldDocumentationURL({ model: config.model }),
67
69
  });
68
70
  },
@@ -7,6 +7,7 @@ type BuildFieldDocsConfig = {
7
7
  defaultValue?: string | boolean;
8
8
  placeholder?: string;
9
9
  apiIDPath?: string;
10
+ tabName?: string;
10
11
  documentationURL?: string;
11
12
  };
12
13
 
@@ -40,6 +41,10 @@ export const writeFieldDocsDescription = (
40
41
  config.writer.writeLine(`- **API ID Path**: ${config.apiIDPath}`);
41
42
  }
42
43
 
44
+ if (config.tabName) {
45
+ config.writer.writeLine(`- **Tab**: ${config.tabName}`);
46
+ }
47
+
43
48
  if (config.documentationURL) {
44
49
  config.writer.writeLine(`- **Documentation**: ${config.documentationURL}`);
45
50
  }