prismic-ts-codegen 0.1.2 → 0.1.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/bin/cli.mjs +139 -50
- package/dist/index.cjs +100 -28
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.js +100 -28
- package/dist/index.js.map +1 -1
- package/package.json +13 -13
- package/src/cli/loadConfig.ts +8 -6
- package/src/cli/types.ts +4 -2
- package/src/generateTypes.ts +2 -2
- package/src/lib/addInterfacePropertiesForFields.ts +39 -13
- package/src/lib/addTypeAliasForCustomType.ts +4 -4
- package/src/lib/addTypeAliasForSharedSlice.ts +19 -21
- package/src/lib/buildSharedSliceInterfaceNamePart.ts +11 -0
- package/src/lib/buildTypeName.ts +11 -0
- package/src/lib/buildSharedSliceInterfaceName.ts +0 -11
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/buildSharedSliceInterfaceName.ts","../src/lib/addInterfacePropertiesForFields.ts","../src/lib/addTypeAliasForCustomType.ts","../src/lib/addTypeAliasForSharedSlice.ts","../src/lib/getSourceFileText.ts","../src/generateTypes.ts"],"sourcesContent":["import type { CustomTypeModelFieldType } from \"@prismicio/types\";\nimport { stripIndent } from \"common-tags\";\n\nexport const BLANK_LINE_IDENTIFIER = \"// ___BLANK_LINE_TO_BE_REPLACED___\";\n\nexport const NON_EDITABLE_FILE_HEADER = stripIndent`\n\t// Code generated by prismic-ts-codegen. DO NOT EDIT.\n\t${BLANK_LINE_IDENTIFIER}\n`;\n\nexport const CUSTOM_TYPES_DOCUMENTATION_URL =\n\t\"https://prismic.io/docs/core-concepts/custom-types\";\n\nexport const SHARED_SLICES_DOCUMENTATION_URL =\n\t\"https://prismic.io/docs/core-concepts/reusing-slices\";\n\nexport const FIELD_DOCUMENTATION_URLS: Record<\n\tExclude<keyof typeof CustomTypeModelFieldType, \"Range\" | \"Separator\">,\n\tstring\n> = {\n\tUID: \"https://prismic.io/docs/core-concepts/uid\",\n\tBoolean: \"https://prismic.io/docs/core-concepts/boolean\",\n\tColor: \"https://prismic.io/docs/core-concepts/color\",\n\tDate: \"https://prismic.io/docs/core-concepts/date\",\n\tTimestamp: \"https://prismic.io/docs/core-concepts/timestamp\",\n\tNumber: \"https://prismic.io/docs/core-concepts/number\",\n\tText: \"https://prismic.io/docs/core-concepts/key-text\",\n\tSelect: \"https://prismic.io/docs/core-concepts/select\",\n\tStructuredText: \"https://prismic.io/docs/core-concepts/rich-text-title\",\n\tImage: \"https://prismic.io/docs/core-concepts/image\",\n\tLink: \"https://prismic.io/docs/core-concepts/link-content-relationship\",\n\tEmbed: \"https://prismic.io/docs/core-concepts/embed\",\n\tGeoPoint: \"https://prismic.io/docs/core-concepts/geopoint\",\n\tGroup: \"https://prismic.io/docs/core-concepts/group\",\n\tIntegrationFields: \"https://prismic.io/docs/core-concepts/integration-fields\",\n\tSlices: \"https://prismic.io/docs/core-concepts/slices\",\n\tLegacySlices: \"https://prismic.io/docs/core-concepts/slices\",\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\n\nexport const isCustomTypeModelField = (\n\tmodel: unknown,\n): model is CustomTypeModelField => {\n\treturn typeof model === \"object\" && model !== null && \"type\" in model;\n};\n","/**\n * Determines if an object contains a given property. It augments the provided\n * object's type to include the property.\n *\n * @remarks\n * This function is only necessary because TypeScript does not narrow a type\n * after using the `in` operator on `object`.\n * @returns `true` if `obj` contains a `prop` property, `false` otherwise.\n */\nexport const hasOwnProperty = <X extends object, Y extends PropertyKey>(\n\tobj: X,\n\tprop: Y,\n): obj is X & Record<Y, unknown> => {\n\treturn obj.hasOwnProperty(prop);\n};\n","import {\n\tCustomTypeModelSlice,\n\tCustomTypeModelSliceType,\n} from \"@prismicio/types\";\n\nimport { hasOwnProperty } from \"./hasOwnProperty\";\n\nexport const isCustomTypeModelSlice = (\n\tmodel: unknown,\n): model is CustomTypeModelSlice => {\n\treturn (\n\t\ttypeof model === \"object\" &&\n\t\tmodel !== null &&\n\t\thasOwnProperty(model, \"type\") &&\n\t\tmodel.type === CustomTypeModelSliceType.Slice\n\t);\n};\n","import { CustomTypeModelSliceType, SharedSliceModel } from \"@prismicio/types\";\n\nimport { hasOwnProperty } from \"./hasOwnProperty\";\n\nexport const isSharedSliceModel = (\n\tmodel: unknown,\n): model is SharedSliceModel => {\n\treturn (\n\t\ttypeof model === \"object\" &&\n\t\tmodel !== null &&\n\t\thasOwnProperty(model, \"type\") &&\n\t\tmodel.type === CustomTypeModelSliceType.SharedSlice\n\t);\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport { CustomTypeModelFieldType } from \"@prismicio/types\";\n\nimport { PathElement } from \"../types\";\nimport { isCustomTypeModelField } from \"./isCustomTypeModelField\";\nimport { isCustomTypeModelSlice } from \"./isCustomTypeModelSlice\";\nimport { isSharedSliceModel } from \"./isSharedSliceModel\";\n\ntype GetAPIIDPathConfig = {\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n};\n\nexport const getAPIIDPath = (config: GetAPIIDPathConfig): string => {\n\treturn config.path\n\t\t.map((element, i) => {\n\t\t\tif (\n\t\t\t\tisCustomTypeModelField(element.model) &&\n\t\t\t\t(element.model.type === CustomTypeModelFieldType.Group ||\n\t\t\t\t\telement.model.type === CustomTypeModelFieldType.Slices)\n\t\t\t) {\n\t\t\t\treturn `${element.id}[]`;\n\t\t\t} else {\n\t\t\t\tif (element.id === \"items\") {\n\t\t\t\t\tconst previousElement = config.path[i - 1];\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tisCustomTypeModelSlice(previousElement.model) ||\n\t\t\t\t\t\tisSharedSliceModel(previousElement.model)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn `${element.id}[]`;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn element.id;\n\t\t\t}\n\t\t})\n\t\t.join(\".\");\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\n\nimport { FIELD_DOCUMENTATION_URLS } from \"../constants\";\n\ntype GetFieldDocumentationURLConfig = {\n\tmodel: CustomTypeModelField;\n};\n\nexport const getFieldDocumentationURL = (\n\tconfig: GetFieldDocumentationURLConfig,\n): string | undefined => {\n\treturn FIELD_DOCUMENTATION_URLS[\n\t\tconfig.model.type as keyof typeof FIELD_DOCUMENTATION_URLS\n\t];\n};\n","import type { CustomTypeModel } from \"@prismicio/types\";\n\nexport const isCustomTypeModel = (model: unknown): model is CustomTypeModel => {\n\treturn typeof model === \"object\" && model !== null && \"json\" in model;\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\n\nimport { isCustomTypeModel } from \"./isCustomTypeModel\";\nimport { isCustomTypeModelField } from \"./isCustomTypeModelField\";\nimport { isCustomTypeModelSlice } from \"./isCustomTypeModelSlice\";\nimport { isSharedSliceModel } from \"./isSharedSliceModel\";\n\ntype GetModelHumanNameConfig = {\n\tid: string;\n\tmodel:\n\t\t| CustomTypeModel\n\t\t| SharedSliceModel\n\t\t| CustomTypeModelField\n\t\t| CustomTypeModelSlice;\n};\n\nexport const getHumanReadableModelName = (\n\tconfig: GetModelHumanNameConfig,\n): string => {\n\tif (isCustomTypeModel(config.model)) {\n\t\treturn config.model.label || config.model.id;\n\t} else if (isSharedSliceModel(config.model)) {\n\t\treturn config.model.name;\n\t} else if (isCustomTypeModelField(config.model)) {\n\t\tif (config.model.config && \"label\" in config.model.config) {\n\t\t\t// Non-Slice Zone fields\n\t\t\treturn config.model.config.label || config.id;\n\t\t} else if (config.model.config && \"fieldset\" in config.model) {\n\t\t\t// Slice Zone\n\t\t\treturn config.model.fieldset || config.id;\n\t\t}\n\t} else if (isCustomTypeModelSlice(config.model)) {\n\t\treturn config.model.fieldset || config.id;\n\t}\n\n\treturn `\\`${config.id}\\``;\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\n\nimport { PathElement } from \"../types\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\n\ntype GetHumanReadableFieldPathConfig = {\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n};\n\nexport const getHumanReadableFieldPath = (\n\tconfig: GetHumanReadableFieldPathConfig,\n): string => {\n\treturn config.path\n\t\t.map((element) => {\n\t\t\tif (element.label) {\n\t\t\t\treturn element.label;\n\t\t\t} else if (element.model) {\n\t\t\t\treturn getHumanReadableModelName({\n\t\t\t\t\tid: element.id,\n\t\t\t\t\tmodel: element.model,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn element.id;\n\t\t\t}\n\t\t})\n\t\t.join(\" → \");\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\nimport { CustomTypeModelLinkSelectType } from \"@prismicio/types\";\n\ntype GetFieldHumanReadableTypeConfig = {\n\tmodel: CustomTypeModelField;\n};\n\nexport const getHumanReadableFieldType = (\n\tconfig: GetFieldHumanReadableTypeConfig,\n): string => {\n\tswitch (config.model.type) {\n\t\tcase \"StructuredText\": {\n\t\t\tconst isTitleField =\n\t\t\t\tconfig.model.config &&\n\t\t\t\t\"single\" in config.model.config &&\n\t\t\t\tconfig.model.config.single &&\n\t\t\t\tconfig.model.config.single\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.every((blockType) => /heading/.test(blockType));\n\n\t\t\treturn isTitleField ? \"Title\" : \"Rich Text\";\n\t\t}\n\n\t\tcase \"IntegrationFields\": {\n\t\t\tconst catalog = config.model.config?.catalog;\n\n\t\t\treturn `Integration Fields (Catalog: ${\n\t\t\t\tcatalog ? `\\`${catalog}\\`` : \"*unknown*\"\n\t\t\t})`;\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tswitch (config.model.config?.select) {\n\t\t\t\tcase CustomTypeModelLinkSelectType.Document: {\n\t\t\t\t\treturn \"Content Relationship\";\n\t\t\t\t}\n\n\t\t\t\tcase CustomTypeModelLinkSelectType.Media: {\n\t\t\t\t\treturn \"Link to Media\";\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\treturn \"Link\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\treturn \"Slice Zone\";\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn config.model.type;\n\t\t}\n\t}\n};\n","import type { CodeBlockWriter } from \"ts-morph\";\n\ntype BuildFieldDocsConfig = {\n\twriter: CodeBlockWriter;\n\tdescription?: string;\n\tfieldType?: string;\n\tdefaultValue?: string | boolean;\n\tplaceholder?: string;\n\tapiIDPath?: string;\n\ttabName?: string;\n\tdocumentationURL?: string;\n};\n\nexport const writeFieldDocsDescription = (\n\tconfig: BuildFieldDocsConfig,\n): void => {\n\tif (config.description) {\n\t\tconfig.writer.writeLine(config.description);\n\t}\n\n\tconfig.writer.blankLineIfLastNot();\n\n\tif (config.fieldType) {\n\t\tconfig.writer.writeLine(`- **Field Type**: ${config.fieldType}`);\n\t}\n\n\tif (config.placeholder) {\n\t\tconfig.writer.writeLine(`- **Placeholder**: ${config.placeholder}`);\n\t}\n\n\tif (config.defaultValue !== undefined) {\n\t\tconst stringifiedDefaultValue =\n\t\t\ttypeof config.defaultValue === \"boolean\"\n\t\t\t\t? `${config.defaultValue}`\n\t\t\t\t: config.defaultValue;\n\n\t\tconfig.writer.writeLine(`- **Default Value**: ${stringifiedDefaultValue}`);\n\t}\n\n\tif (config.apiIDPath) {\n\t\tconfig.writer.writeLine(`- **API ID Path**: ${config.apiIDPath}`);\n\t}\n\n\tif (config.tabName) {\n\t\tconfig.writer.writeLine(`- **Tab**: ${config.tabName}`);\n\t}\n\n\tif (config.documentationURL) {\n\t\tconfig.writer.writeLine(`- **Documentation**: ${config.documentationURL}`);\n\t}\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport type { JSDocableNodeStructure } from \"ts-morph\";\n\nimport { PathElement } from \"../types\";\nimport { getAPIIDPath } from \"./getAPIIDPath\";\nimport { getFieldDocumentationURL } from \"./getFieldDocumentationURL\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { getHumanReadableFieldType } from \"./getHumanReadableFieldType\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\nimport { writeFieldDocsDescription } from \"./writeFieldDocsDescription\";\n\ntype BuildFieldDocsConfig = {\n\tid: string;\n\tmodel: CustomTypeModelField;\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n\ttabName?: string;\n};\n\nexport const buildFieldDocs = (\n\tconfig: BuildFieldDocsConfig,\n): NonNullable<JSDocableNodeStructure[\"docs\"]> => {\n\treturn [\n\t\t{\n\t\t\tdescription: (writer) => {\n\t\t\t\tconst name = getHumanReadableModelName({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t});\n\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\tpath: config.path,\n\t\t\t\t});\n\n\t\t\t\tconst fieldType = getHumanReadableFieldType({\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t});\n\n\t\t\t\tconst placeholder =\n\t\t\t\t\tconfig.model.config &&\n\t\t\t\t\t\"placeholder\" in config.model.config &&\n\t\t\t\t\tconfig.model.config.placeholder\n\t\t\t\t\t\t? config.model.config.placeholder\n\t\t\t\t\t\t: `*None*`;\n\n\t\t\t\tconst defaultValue =\n\t\t\t\t\tconfig.model.config && \"default_value\" in config.model.config\n\t\t\t\t\t\t? config.model.config.default_value\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\tconst apiIDPath = getAPIIDPath({\n\t\t\t\t\tpath: [...config.path, { id: config.id, model: config.model }],\n\t\t\t\t});\n\n\t\t\t\twriteFieldDocsDescription({\n\t\t\t\t\twriter,\n\t\t\t\t\tdescription: `${name} field in *${humanReadablePath}*`,\n\t\t\t\t\tfieldType,\n\t\t\t\t\tplaceholder,\n\t\t\t\t\tdefaultValue,\n\t\t\t\t\tapiIDPath,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\tdocumentationURL: getFieldDocumentationURL({ model: config.model }),\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t];\n};\n","import {\n\tpascalCase as pascalCaseBase,\n\tpascalCaseTransformMerge,\n} from \"pascal-case\";\n\nexport const pascalCase = (input: string): string =>\n\tpascalCaseBase(input, {\n\t\ttransform: pascalCaseTransformMerge,\n\t});\n","import { pascalCase } from \"./pascalCase\";\n\ntype BuildSharedSliceInterfaceNameConfig = {\n\tid: string;\n};\n\nexport const buildSharedSliceInterfaceName = (\n\tconfig: BuildSharedSliceInterfaceNameConfig,\n): string => {\n\treturn pascalCase(`${config.id} Slice`);\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport {\n\tCustomTypeModelSliceType,\n\tCustomTypeModelLinkSelectType,\n} from \"@prismicio/types\";\nimport type { InterfaceDeclaration, SourceFile } from \"ts-morph\";\n\nimport { FieldConfigs, PathElement } from \"../types\";\nimport { buildFieldDocs } from \"./buildFieldDocs\";\nimport { buildSharedSliceInterfaceName } from \"./buildSharedSliceInterfaceName\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { pascalCase } from \"./pascalCase\";\n\ntype AddInterfacePropertyFromFieldConfig = {\n\tid: string;\n\tmodel: CustomTypeModelField;\n\tinterface: InterfaceDeclaration;\n\tsourceFile: SourceFile;\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n\tfieldConfigs: FieldConfigs;\n\ttabName?: string;\n};\n\nconst addInterfacePropertyForField = (\n\tconfig: AddInterfacePropertyFromFieldConfig,\n) => {\n\tswitch (config.model.type) {\n\t\tcase \"UID\": {\n\t\t\t// UID fields are not included in Data.\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Boolean\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.BooleanField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Color\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.ColorField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Date\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.DateField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Embed\": {\n\t\t\tconst providerTypes: string[] = [];\n\n\t\t\tif (config.fieldConfigs.embed?.providerTypes) {\n\t\t\t\tfor (const providerType in config.fieldConfigs.embed?.providerTypes) {\n\t\t\t\t\tconst configuredProviderType =\n\t\t\t\t\t\tconfig.fieldConfigs.embed?.providerTypes[providerType];\n\n\t\t\t\t\tproviderTypes.push(\n\t\t\t\t\t\t`({ provider_name: \"${providerType}\" } & ${configuredProviderType})`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype:\n\t\t\t\t\tproviderTypes.length > 0\n\t\t\t\t\t\t? `prismicT.EmbedField<prismicT.AnyOEmbed & prismicT.OEmbedExtra & (${providerTypes.join(\n\t\t\t\t\t\t\t\t\" | \",\n\t\t\t\t\t\t )})>`\n\t\t\t\t\t\t: \"prismicT.EmbedField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"GeoPoint\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.GeoPointField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Image\": {\n\t\t\tif (\n\t\t\t\tconfig.model.config?.thumbnails &&\n\t\t\t\tconfig.model.config.thumbnails.length > 0\n\t\t\t) {\n\t\t\t\tconst thumbnailNames = config.model.config.thumbnails\n\t\t\t\t\t.map((thumbnail) => `\"${thumbnail.name}\"`)\n\t\t\t\t\t.join(\" | \");\n\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismicT.ImageField<${thumbnailNames}>`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismicT.ImageField<never>\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"IntegrationFields\": {\n\t\t\tconst catalogType = config.model.config?.catalog\n\t\t\t\t? config.fieldConfigs.integrationFields?.catalogTypes?.[\n\t\t\t\t\t\tconfig.model.config.catalog\n\t\t\t\t ]\n\t\t\t\t: undefined;\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: catalogType\n\t\t\t\t\t? `prismicT.IntegrationFields<${catalogType}>`\n\t\t\t\t\t: \"prismicT.IntegrationFields\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tswitch (config.model.config?.select) {\n\t\t\t\tcase CustomTypeModelLinkSelectType.Document: {\n\t\t\t\t\tconfig.model.config;\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\t\"customtypes\" in config.model.config &&\n\t\t\t\t\t\t\tconfig.model.config.customtypes &&\n\t\t\t\t\t\t\tconfig.model.config.customtypes.length > 0\n\t\t\t\t\t\t\t\t? `prismicT.RelationField<${config.model.config.customtypes\n\t\t\t\t\t\t\t\t\t\t.map((type) => `\"${type}\"`)\n\t\t\t\t\t\t\t\t\t\t.join(\" | \")}>`\n\t\t\t\t\t\t\t\t: \"prismicT.RelationField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CustomTypeModelLinkSelectType.Media: {\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype: \"prismicT.LinkToMediaField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype: \"prismicT.LinkField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Number\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.NumberField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"StructuredText\": {\n\t\t\tconst isTitleField =\n\t\t\t\tconfig.model.config &&\n\t\t\t\t\"single\" in config.model.config &&\n\t\t\t\tconfig.model.config.single &&\n\t\t\t\tconfig.model.config.single\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.every((blockType) => /heading/.test(blockType));\n\n\t\t\tif (isTitleField) {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismicT.TitleField\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismicT.RichTextField\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Select\": {\n\t\t\tconst options = config.model.config?.options\n\t\t\t\t?.map((option) => `\"${option}\"`)\n\t\t\t\t.join(\" | \");\n\t\t\tconst hasDefault = Boolean(config.model.config?.default_value);\n\n\t\t\tif (hasDefault) {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismicT.SelectField<${options || \"string\"}, \"filled\">`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismicT.SelectField<${options}>`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Text\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.KeyTextField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Timestamp\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.TimestampField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Group\": {\n\t\t\tconst itemInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} Item`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tisExported: true,\n\t\t\t});\n\n\t\t\tif (config.model.config?.fields) {\n\t\t\t\taddInterfacePropertiesForFields({\n\t\t\t\t\tinterface: itemInterface,\n\t\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\t\tfields: config.model.config.fields,\n\t\t\t\t\tpath: [\n\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: `prismicT.GroupField<Simplify<${itemInterface.getName()}>>`,\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\tconst choiceInterfaceNames: string[] = [];\n\n\t\t\tif (config.model.config?.choices) {\n\t\t\t\tfor (const choiceId in config.model.config.choices) {\n\t\t\t\t\tconst choice = config.model.config.choices[choiceId];\n\n\t\t\t\t\tif (choice.type === CustomTypeModelSliceType.SharedSlice) {\n\t\t\t\t\t\tchoiceInterfaceNames.push(\n\t\t\t\t\t\t\tbuildSharedSliceInterfaceName({ id: choiceId }),\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (choice.type === CustomTypeModelSliceType.Slice) {\n\t\t\t\t\t\tlet primaryInterface: InterfaceDeclaration | undefined;\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tchoice[\"non-repeat\"] &&\n\t\t\t\t\t\t\tObject.keys(choice[\"non-repeat\"]).length > 0\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tprimaryInterface = config.sourceFile.addInterface({\n\t\t\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice Primary`,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tdocs: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t\t\t\t\t\t\t`Primary content in ${humanReadablePath}`,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\taddInterfacePropertiesForFields({\n\t\t\t\t\t\t\t\tinterface: primaryInterface,\n\t\t\t\t\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\t\t\t\t\tfields: choice[\"non-repeat\"],\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet itemInterface: InterfaceDeclaration | undefined;\n\t\t\t\t\t\tif (choice.repeat && Object.keys(choice.repeat).length > 0) {\n\t\t\t\t\t\t\titemInterface = config.sourceFile.addInterface({\n\t\t\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice Item`,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tdocs: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tisExported: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\taddInterfacePropertiesForFields({\n\t\t\t\t\t\t\t\tinterface: itemInterface,\n\t\t\t\t\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\t\t\t\t\tfields: choice.repeat,\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst sliceType = config.sourceFile.addTypeAlias({\n\t\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\ttype: `prismicT.Slice<\"${choiceId}\", ${\n\t\t\t\t\t\t\t\tprimaryInterface\n\t\t\t\t\t\t\t\t\t? `Simplify<${primaryInterface.getName()}>`\n\t\t\t\t\t\t\t\t\t: \"Record<string, never>\"\n\t\t\t\t\t\t\t}, ${\n\t\t\t\t\t\t\t\titemInterface ? `Simplify<${itemInterface.getName()}>` : \"never\"\n\t\t\t\t\t\t\t}>`,\n\t\t\t\t\t\t\tisExported: true,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tchoiceInterfaceNames.push(sliceType.getName());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst slicesType = config.sourceFile.addTypeAlias({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} Slice`,\n\t\t\t\t),\n\t\t\t\ttype:\n\t\t\t\t\tchoiceInterfaceNames.length > 0\n\t\t\t\t\t\t? choiceInterfaceNames.join(\" | \")\n\t\t\t\t\t\t: \"never\",\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Slice for *${humanReadablePath}*`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: `prismicT.SliceZone<${slicesType.getName()}>`,\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"unknown\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\t\t}\n\t}\n};\n\ntype AddInterfacePropertiesForFieldsConfig = Omit<\n\tAddInterfacePropertyFromFieldConfig,\n\t\"id\" | \"model\"\n> & {\n\tfields: Record<string, AddInterfacePropertyFromFieldConfig[\"model\"]>;\n\ttabName?: string;\n};\n\nexport const addInterfacePropertiesForFields = (\n\tconfig: AddInterfacePropertiesForFieldsConfig,\n) => {\n\tfor (const name in config.fields) {\n\t\taddInterfacePropertyForField({\n\t\t\t...config,\n\t\t\tid: name.includes(\"-\") || /^[0-9]/.test(name) ? `\"${name}\"` : name,\n\t\t\tmodel: config.fields[name],\n\t\t\ttabName: config.tabName,\n\t\t});\n\t}\n};\n","import type { CustomTypeModel, CustomTypeModelField } from \"@prismicio/types\";\nimport type {\n\tSourceFile,\n\tTypeAliasDeclaration,\n\tInterfaceDeclaration,\n} from \"ts-morph\";\nimport { CUSTOM_TYPES_DOCUMENTATION_URL } from \"../constants\";\nimport { FieldConfigs } from \"../types\";\n\nimport { addInterfacePropertiesForFields } from \"./addInterfacePropertiesForFields\";\nimport { pascalCase } from \"./pascalCase\";\n\nconst collectCustomTypeFields = (\n\tmodel: CustomTypeModel,\n): Record<string, CustomTypeModelField> => {\n\treturn Object.assign({}, ...Object.values(model.json));\n};\n\ntype AddTypeAliasForCustomTypeConfig = {\n\tmodel: CustomTypeModel;\n\tsourceFile: SourceFile;\n\tlocaleIDs: string[];\n\tfieldConfigs: FieldConfigs;\n};\n\nexport const addTypeAliasForCustomType = ({\n\tmodel,\n\tsourceFile,\n\tlocaleIDs,\n\tfieldConfigs,\n}: AddTypeAliasForCustomTypeConfig): TypeAliasDeclaration => {\n\tconst { uid: uidField, ...fields } = collectCustomTypeFields(model);\n\tconst hasDataFields = Object.keys(fields).length > 0;\n\tconst hasUIDField = Boolean(uidField);\n\n\tlet dataInterface: InterfaceDeclaration | TypeAliasDeclaration;\n\tif (hasDataFields) {\n\t\tdataInterface = sourceFile.addInterface({\n\t\t\tname: pascalCase(`${model.id} Document Data`),\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: `Content for ${model.label} documents`,\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\n\t\tfor (const tabName in model.json) {\n\t\t\t// This is destructured to ensure the UID field is\n\t\t\t// ignored.\n\t\t\tconst { uid: _uidField, ...tabFields } = model.json[tabName];\n\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tfields: tabFields,\n\t\t\t\tinterface: dataInterface,\n\t\t\t\tsourceFile: sourceFile,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: model.id,\n\t\t\t\t\t\tmodel: model,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs,\n\t\t\t\ttabName,\n\t\t\t});\n\t\t}\n\t} else {\n\t\tdataInterface = sourceFile.addTypeAlias({\n\t\t\tname: pascalCase(`${model.id} Document Data`),\n\t\t\ttype: `Record<string, never>`,\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: `Content for ${model.label} documents`,\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t}\n\n\treturn sourceFile.addTypeAlias({\n\t\tname: pascalCase(`${model.id} Document`),\n\t\ttypeParameters: [\n\t\t\t{\n\t\t\t\tname: \"Lang\",\n\t\t\t\tconstraint: \"string\",\n\t\t\t\tdefault:\n\t\t\t\t\tlocaleIDs.length > 0\n\t\t\t\t\t\t? localeIDs.map((localeID) => `\"${localeID}\"`).join(\" | \")\n\t\t\t\t\t\t: \"string\",\n\t\t\t},\n\t\t],\n\t\ttype: hasUIDField\n\t\t\t? `prismicT.PrismicDocumentWithUID<Simplify<${dataInterface.getName()}>, \"${\n\t\t\t\t\tmodel.id\n\t\t\t }\", Lang>`\n\t\t\t: `prismicT.PrismicDocumentWithoutUID<Simplify<${dataInterface.getName()}>, \"${\n\t\t\t\t\tmodel.id\n\t\t\t }\", Lang>`,\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\twriter.writeLine(`${model.label} document from Prismic`);\n\t\t\t\t\twriter.blankLine();\n\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${model.id}\\``);\n\t\t\t\t\twriter.writeLine(`- **Repeatable**: \\`${model.repeatable}\\``);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Documentation**: ${CUSTOM_TYPES_DOCUMENTATION_URL}`,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\ttags: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttagName: \"typeParam\",\n\t\t\t\t\t\ttext: \"Lang - Language API ID of the document.\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tisExported: true,\n\t});\n};\n","import type { SharedSliceModel } from \"@prismicio/types\";\nimport type {\n\tInterfaceDeclaration,\n\tSourceFile,\n\tTypeAliasDeclaration,\n} from \"ts-morph\";\n\nimport { addInterfacePropertiesForFields } from \"./addInterfacePropertiesForFields\";\nimport { buildSharedSliceInterfaceName } from \"./buildSharedSliceInterfaceName\";\nimport { pascalCase } from \"./pascalCase\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { SHARED_SLICES_DOCUMENTATION_URL } from \"../constants\";\nimport { FieldConfigs } from \"../types\";\n\ntype AddTypeAliasForSharedSliceConfig = {\n\tmodel: SharedSliceModel;\n\tsourceFile: SourceFile;\n\tfieldConfigs: FieldConfigs;\n};\n\nexport const addTypeAliasForSharedSlice = (\n\tconfig: AddTypeAliasForSharedSliceConfig,\n): TypeAliasDeclaration => {\n\tconst variationTypeNames: string[] = [];\n\n\tfor (const variation of config.model.variations) {\n\t\tlet primaryInterface: InterfaceDeclaration | undefined;\n\t\tif (variation.primary && Object.keys(variation.primary).length > 0) {\n\t\t\tprimaryInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${buildSharedSliceInterfaceName({ id: config.model.id })} ${\n\t\t\t\t\t\tvariation.id\n\t\t\t\t\t} Primary`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Primary content in ${humanReadablePath}`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tinterface: primaryInterface,\n\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\tfields: variation.primary,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t});\n\t\t}\n\n\t\tlet itemInterface: InterfaceDeclaration | undefined;\n\t\tif (variation.items && Object.keys(variation.items).length > 0) {\n\t\t\titemInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${buildSharedSliceInterfaceName({ id: config.model.id })} ${\n\t\t\t\t\t\tvariation.id\n\t\t\t\t\t} Item`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tisExported: true,\n\t\t\t});\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tinterface: itemInterface,\n\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\tfields: variation.items,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t});\n\t\t}\n\n\t\tconst variationType = config.sourceFile.addTypeAlias({\n\t\t\tname: pascalCase(\n\t\t\t\t`${buildSharedSliceInterfaceName({\n\t\t\t\t\tid: config.model.id,\n\t\t\t\t})} ${variation.id}`,\n\t\t\t),\n\t\t\ttype: `prismicT.SharedSliceVariation<\"${variation.id}\", ${\n\t\t\t\tprimaryInterface\n\t\t\t\t\t? `Simplify<${primaryInterface.getName()}>`\n\t\t\t\t\t: \"Record<string, never>\"\n\t\t\t}, ${itemInterface ? `Simplify<${itemInterface.getName()}>` : \"never\"}>`,\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t\t`${variation.name} variation for ${config.model.name} Slice`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\twriter.blankLine();\n\t\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${variation.id}\\``);\n\t\t\t\t\t\twriter.writeLine(`- **Description**: \\`${variation.description}\\``);\n\t\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t\t`- **Documentation**: ${SHARED_SLICES_DOCUMENTATION_URL}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\tisExported: true,\n\t\t});\n\n\t\tvariationTypeNames.push(variationType.getName());\n\t}\n\n\tconst variationsType = config.sourceFile.addTypeAlias({\n\t\tname: pascalCase(`${config.model.id} Slice Variation`),\n\t\ttype:\n\t\t\tvariationTypeNames.length > 0 ? variationTypeNames.join(\" | \") : \"never\",\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\n\t\t\t\t\twriter.writeLine(`Slice variation for *${humanReadablePath}*`);\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t});\n\n\treturn config.sourceFile.addTypeAlias({\n\t\tname: pascalCase(\n\t\t\tbuildSharedSliceInterfaceName({\n\t\t\t\tid: config.model.id,\n\t\t\t}),\n\t\t),\n\t\ttype: `prismicT.SharedSlice<\"${\n\t\t\tconfig.model.id\n\t\t}\", ${variationsType.getName()}>`,\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\twriter.writeLine(`${config.model.name} Shared Slice`);\n\t\t\t\t\twriter.blankLine();\n\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${config.model.id}\\``);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Description**: \\`${config.model.description}\\``,\n\t\t\t\t\t);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Documentation**: ${SHARED_SLICES_DOCUMENTATION_URL}`,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tisExported: true,\n\t});\n};\n","import * as tsm from \"ts-morph\";\n// import prettier from \"prettier\";\n\nimport { BLANK_LINE_IDENTIFIER } from \"../constants\";\n\nexport const getSourceFileText = (sourceFile: tsm.SourceFile): string => {\n\tconst text = sourceFile\n\t\t.print()\n\t\t.replace(new RegExp(BLANK_LINE_IDENTIFIER, \"g\"), \"\");\n\n\treturn text;\n\n\t// return prettier.format(text, { parser: \"typescript\" });\n};\n","import { Project, ModuleDeclarationKind } from \"ts-morph\";\nimport type { CustomTypeModel, SharedSliceModel } from \"@prismicio/types\";\n\nimport { BLANK_LINE_IDENTIFIER, NON_EDITABLE_FILE_HEADER } from \"./constants\";\nimport { addTypeAliasForCustomType } from \"./lib/addTypeAliasForCustomType\";\nimport { addTypeAliasForSharedSlice } from \"./lib/addTypeAliasForSharedSlice\";\nimport { getSourceFileText } from \"./lib/getSourceFileText\";\nimport { FieldConfigs } from \"./types\";\nimport { pascalCase } from \"./lib/pascalCase\";\n\nexport type GenerateTypesConfig = {\n\tcustomTypeModels?: CustomTypeModel[];\n\tsharedSliceModels?: SharedSliceModel[];\n\tlocaleIDs?: string[];\n\tfieldConfigs?: FieldConfigs;\n\tclientIntegration?: {\n\t\tincludeCreateClientInterface?: boolean;\n\t};\n};\n\nexport const generateTypes = (config: GenerateTypesConfig = {}) => {\n\tconst project = new Project({\n\t\tuseInMemoryFileSystem: true,\n\t});\n\n\tconst sourceFile = project.createSourceFile(\"types.d.ts\");\n\n\tsourceFile.addImportDeclaration({\n\t\tmoduleSpecifier: \"@prismicio/types\",\n\t\tnamespaceImport: \"prismicT\",\n\t\tisTypeOnly: true,\n\t\tleadingTrivia: NON_EDITABLE_FILE_HEADER,\n\t});\n\n\tsourceFile.addStatements(BLANK_LINE_IDENTIFIER);\n\n\tsourceFile.addTypeAlias({\n\t\tname: \"Simplify\",\n\t\ttypeParameters: [\n\t\t\t{\n\t\t\t\tname: \"T\",\n\t\t\t},\n\t\t],\n\t\ttype: `{ [KeyType in keyof T]: T[KeyType] }`,\n\t});\n\n\tif (config.customTypeModels) {\n\t\tfor (const model of config.customTypeModels) {\n\t\t\taddTypeAliasForCustomType({\n\t\t\t\tmodel,\n\t\t\t\tsourceFile,\n\t\t\t\tlocaleIDs: config.localeIDs || [],\n\t\t\t\tfieldConfigs: config.fieldConfigs || {},\n\t\t\t});\n\t\t}\n\n\t\tif (config.customTypeModels.length > 0) {\n\t\t\tsourceFile.addTypeAlias({\n\t\t\t\tname: \"AllDocumentTypes\",\n\t\t\t\ttype: config.customTypeModels\n\t\t\t\t\t.map((customTypeModel) =>\n\t\t\t\t\t\tpascalCase(`${customTypeModel.id} Document`),\n\t\t\t\t\t)\n\t\t\t\t\t.join(\" | \"),\n\t\t\t\tisExported: true,\n\t\t\t});\n\t\t}\n\t}\n\n\tif (config.sharedSliceModels) {\n\t\tfor (const model of config.sharedSliceModels) {\n\t\t\taddTypeAliasForSharedSlice({\n\t\t\t\tmodel,\n\t\t\t\tsourceFile,\n\t\t\t\tfieldConfigs: config.fieldConfigs || {},\n\t\t\t});\n\t\t}\n\t}\n\n\tif (config.clientIntegration?.includeCreateClientInterface) {\n\t\tsourceFile.addImportDeclaration({\n\t\t\tmoduleSpecifier: \"@prismicio/client\",\n\t\t\tnamespaceImport: \"prismic\",\n\t\t\tisTypeOnly: true,\n\t\t});\n\n\t\tconst clientModuleDeclaration = sourceFile.addModule({\n\t\t\tname: '\"@prismicio/client\"',\n\t\t\thasDeclareKeyword: true,\n\t\t\tdeclarationKind: ModuleDeclarationKind.Module,\n\t\t});\n\n\t\tclientModuleDeclaration.addInterface({\n\t\t\tname: \"CreateClient\",\n\t\t\tcallSignatures: [\n\t\t\t\t{\n\t\t\t\t\tparameters: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"repositoryNameOrEndpoint\",\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"options\",\n\t\t\t\t\t\t\ttype: \"prismic.ClientConfig\",\n\t\t\t\t\t\t\thasQuestionToken: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\treturnType:\n\t\t\t\t\t\t(config.customTypeModels?.length || 0) > 0\n\t\t\t\t\t\t\t? \"prismic.Client<AllDocumentTypes>\"\n\t\t\t\t\t\t\t: \"prismic.Client\",\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t}\n\n\treturn getSourceFileText(sourceFile);\n};\n"],"names":["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\";\nimport { stripIndent } from \"common-tags\";\n\nexport const BLANK_LINE_IDENTIFIER = \"// ___BLANK_LINE_TO_BE_REPLACED___\";\n\nexport const NON_EDITABLE_FILE_HEADER = stripIndent`\n\t// Code generated by prismic-ts-codegen. DO NOT EDIT.\n\t${BLANK_LINE_IDENTIFIER}\n`;\n\nexport const CUSTOM_TYPES_DOCUMENTATION_URL =\n\t\"https://prismic.io/docs/core-concepts/custom-types\";\n\nexport const SHARED_SLICES_DOCUMENTATION_URL =\n\t\"https://prismic.io/docs/core-concepts/reusing-slices\";\n\nexport const FIELD_DOCUMENTATION_URLS: Record<\n\tExclude<keyof typeof CustomTypeModelFieldType, \"Range\" | \"Separator\">,\n\tstring\n> = {\n\tUID: \"https://prismic.io/docs/core-concepts/uid\",\n\tBoolean: \"https://prismic.io/docs/core-concepts/boolean\",\n\tColor: \"https://prismic.io/docs/core-concepts/color\",\n\tDate: \"https://prismic.io/docs/core-concepts/date\",\n\tTimestamp: \"https://prismic.io/docs/core-concepts/timestamp\",\n\tNumber: \"https://prismic.io/docs/core-concepts/number\",\n\tText: \"https://prismic.io/docs/core-concepts/key-text\",\n\tSelect: \"https://prismic.io/docs/core-concepts/select\",\n\tStructuredText: \"https://prismic.io/docs/core-concepts/rich-text-title\",\n\tImage: \"https://prismic.io/docs/core-concepts/image\",\n\tLink: \"https://prismic.io/docs/core-concepts/link-content-relationship\",\n\tEmbed: \"https://prismic.io/docs/core-concepts/embed\",\n\tGeoPoint: \"https://prismic.io/docs/core-concepts/geopoint\",\n\tGroup: \"https://prismic.io/docs/core-concepts/group\",\n\tIntegrationFields: \"https://prismic.io/docs/core-concepts/integration-fields\",\n\tSlices: \"https://prismic.io/docs/core-concepts/slices\",\n\tLegacySlices: \"https://prismic.io/docs/core-concepts/slices\",\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\n\nexport const isCustomTypeModelField = (\n\tmodel: unknown,\n): model is CustomTypeModelField => {\n\treturn typeof model === \"object\" && model !== null && \"type\" in model;\n};\n","/**\n * Determines if an object contains a given property. It augments the provided\n * object's type to include the property.\n *\n * @remarks\n * This function is only necessary because TypeScript does not narrow a type\n * after using the `in` operator on `object`.\n * @returns `true` if `obj` contains a `prop` property, `false` otherwise.\n */\nexport const hasOwnProperty = <X extends object, Y extends PropertyKey>(\n\tobj: X,\n\tprop: Y,\n): obj is X & Record<Y, unknown> => {\n\treturn obj.hasOwnProperty(prop);\n};\n","import {\n\tCustomTypeModelSlice,\n\tCustomTypeModelSliceType,\n} from \"@prismicio/types\";\n\nimport { hasOwnProperty } from \"./hasOwnProperty\";\n\nexport const isCustomTypeModelSlice = (\n\tmodel: unknown,\n): model is CustomTypeModelSlice => {\n\treturn (\n\t\ttypeof model === \"object\" &&\n\t\tmodel !== null &&\n\t\thasOwnProperty(model, \"type\") &&\n\t\tmodel.type === CustomTypeModelSliceType.Slice\n\t);\n};\n","import { CustomTypeModelSliceType, SharedSliceModel } from \"@prismicio/types\";\n\nimport { hasOwnProperty } from \"./hasOwnProperty\";\n\nexport const isSharedSliceModel = (\n\tmodel: unknown,\n): model is SharedSliceModel => {\n\treturn (\n\t\ttypeof model === \"object\" &&\n\t\tmodel !== null &&\n\t\thasOwnProperty(model, \"type\") &&\n\t\tmodel.type === CustomTypeModelSliceType.SharedSlice\n\t);\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport { CustomTypeModelFieldType } from \"@prismicio/types\";\n\nimport { PathElement } from \"../types\";\nimport { isCustomTypeModelField } from \"./isCustomTypeModelField\";\nimport { isCustomTypeModelSlice } from \"./isCustomTypeModelSlice\";\nimport { isSharedSliceModel } from \"./isSharedSliceModel\";\n\ntype GetAPIIDPathConfig = {\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n};\n\nexport const getAPIIDPath = (config: GetAPIIDPathConfig): string => {\n\treturn config.path\n\t\t.map((element, i) => {\n\t\t\tif (\n\t\t\t\tisCustomTypeModelField(element.model) &&\n\t\t\t\t(element.model.type === CustomTypeModelFieldType.Group ||\n\t\t\t\t\telement.model.type === CustomTypeModelFieldType.Slices)\n\t\t\t) {\n\t\t\t\treturn `${element.id}[]`;\n\t\t\t} else {\n\t\t\t\tif (element.id === \"items\") {\n\t\t\t\t\tconst previousElement = config.path[i - 1];\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tisCustomTypeModelSlice(previousElement.model) ||\n\t\t\t\t\t\tisSharedSliceModel(previousElement.model)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn `${element.id}[]`;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn element.id;\n\t\t\t}\n\t\t})\n\t\t.join(\".\");\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\n\nimport { FIELD_DOCUMENTATION_URLS } from \"../constants\";\n\ntype GetFieldDocumentationURLConfig = {\n\tmodel: CustomTypeModelField;\n};\n\nexport const getFieldDocumentationURL = (\n\tconfig: GetFieldDocumentationURLConfig,\n): string | undefined => {\n\treturn FIELD_DOCUMENTATION_URLS[\n\t\tconfig.model.type as keyof typeof FIELD_DOCUMENTATION_URLS\n\t];\n};\n","import type { CustomTypeModel } from \"@prismicio/types\";\n\nexport const isCustomTypeModel = (model: unknown): model is CustomTypeModel => {\n\treturn typeof model === \"object\" && model !== null && \"json\" in model;\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\n\nimport { isCustomTypeModel } from \"./isCustomTypeModel\";\nimport { isCustomTypeModelField } from \"./isCustomTypeModelField\";\nimport { isCustomTypeModelSlice } from \"./isCustomTypeModelSlice\";\nimport { isSharedSliceModel } from \"./isSharedSliceModel\";\n\ntype GetModelHumanNameConfig = {\n\tid: string;\n\tmodel:\n\t\t| CustomTypeModel\n\t\t| SharedSliceModel\n\t\t| CustomTypeModelField\n\t\t| CustomTypeModelSlice;\n};\n\nexport const getHumanReadableModelName = (\n\tconfig: GetModelHumanNameConfig,\n): string => {\n\tif (isCustomTypeModel(config.model)) {\n\t\treturn config.model.label || config.model.id;\n\t} else if (isSharedSliceModel(config.model)) {\n\t\treturn config.model.name;\n\t} else if (isCustomTypeModelField(config.model)) {\n\t\tif (config.model.config && \"label\" in config.model.config) {\n\t\t\t// Non-Slice Zone fields\n\t\t\treturn config.model.config.label || config.id;\n\t\t} else if (config.model.config && \"fieldset\" in config.model) {\n\t\t\t// Slice Zone\n\t\t\treturn config.model.fieldset || config.id;\n\t\t}\n\t} else if (isCustomTypeModelSlice(config.model)) {\n\t\treturn config.model.fieldset || config.id;\n\t}\n\n\treturn `\\`${config.id}\\``;\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\n\nimport { PathElement } from \"../types\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\n\ntype GetHumanReadableFieldPathConfig = {\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n};\n\nexport const getHumanReadableFieldPath = (\n\tconfig: GetHumanReadableFieldPathConfig,\n): string => {\n\treturn config.path\n\t\t.map((element) => {\n\t\t\tif (element.label) {\n\t\t\t\treturn element.label;\n\t\t\t} else if (element.model) {\n\t\t\t\treturn getHumanReadableModelName({\n\t\t\t\t\tid: element.id,\n\t\t\t\t\tmodel: element.model,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn element.id;\n\t\t\t}\n\t\t})\n\t\t.join(\" → \");\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\nimport { CustomTypeModelLinkSelectType } from \"@prismicio/types\";\n\ntype GetFieldHumanReadableTypeConfig = {\n\tmodel: CustomTypeModelField;\n};\n\nexport const getHumanReadableFieldType = (\n\tconfig: GetFieldHumanReadableTypeConfig,\n): string => {\n\tswitch (config.model.type) {\n\t\tcase \"StructuredText\": {\n\t\t\tconst isTitleField =\n\t\t\t\tconfig.model.config &&\n\t\t\t\t\"single\" in config.model.config &&\n\t\t\t\tconfig.model.config.single &&\n\t\t\t\tconfig.model.config.single\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.every((blockType) => /heading/.test(blockType));\n\n\t\t\treturn isTitleField ? \"Title\" : \"Rich Text\";\n\t\t}\n\n\t\tcase \"IntegrationFields\": {\n\t\t\tconst catalog = config.model.config?.catalog;\n\n\t\t\treturn `Integration Fields (Catalog: ${\n\t\t\t\tcatalog ? `\\`${catalog}\\`` : \"*unknown*\"\n\t\t\t})`;\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tswitch (config.model.config?.select) {\n\t\t\t\tcase CustomTypeModelLinkSelectType.Document: {\n\t\t\t\t\treturn \"Content Relationship\";\n\t\t\t\t}\n\n\t\t\t\tcase CustomTypeModelLinkSelectType.Media: {\n\t\t\t\t\treturn \"Link to Media\";\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\treturn \"Link\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\treturn \"Slice Zone\";\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn config.model.type;\n\t\t}\n\t}\n};\n","import type { CodeBlockWriter } from \"ts-morph\";\n\ntype BuildFieldDocsConfig = {\n\twriter: CodeBlockWriter;\n\tdescription?: string;\n\tfieldType?: string;\n\tdefaultValue?: string | boolean;\n\tplaceholder?: string;\n\tapiIDPath?: string;\n\ttabName?: string;\n\tdocumentationURL?: string;\n};\n\nexport const writeFieldDocsDescription = (\n\tconfig: BuildFieldDocsConfig,\n): void => {\n\tif (config.description) {\n\t\tconfig.writer.writeLine(config.description);\n\t}\n\n\tconfig.writer.blankLineIfLastNot();\n\n\tif (config.fieldType) {\n\t\tconfig.writer.writeLine(`- **Field Type**: ${config.fieldType}`);\n\t}\n\n\tif (config.placeholder) {\n\t\tconfig.writer.writeLine(`- **Placeholder**: ${config.placeholder}`);\n\t}\n\n\tif (config.defaultValue !== undefined) {\n\t\tconst stringifiedDefaultValue =\n\t\t\ttypeof config.defaultValue === \"boolean\"\n\t\t\t\t? `${config.defaultValue}`\n\t\t\t\t: config.defaultValue;\n\n\t\tconfig.writer.writeLine(`- **Default Value**: ${stringifiedDefaultValue}`);\n\t}\n\n\tif (config.apiIDPath) {\n\t\tconfig.writer.writeLine(`- **API ID Path**: ${config.apiIDPath}`);\n\t}\n\n\tif (config.tabName) {\n\t\tconfig.writer.writeLine(`- **Tab**: ${config.tabName}`);\n\t}\n\n\tif (config.documentationURL) {\n\t\tconfig.writer.writeLine(`- **Documentation**: ${config.documentationURL}`);\n\t}\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport type { JSDocableNodeStructure } from \"ts-morph\";\n\nimport { PathElement } from \"../types\";\nimport { getAPIIDPath } from \"./getAPIIDPath\";\nimport { getFieldDocumentationURL } from \"./getFieldDocumentationURL\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { getHumanReadableFieldType } from \"./getHumanReadableFieldType\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\nimport { writeFieldDocsDescription } from \"./writeFieldDocsDescription\";\n\ntype BuildFieldDocsConfig = {\n\tid: string;\n\tmodel: CustomTypeModelField;\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n\ttabName?: string;\n};\n\nexport const buildFieldDocs = (\n\tconfig: BuildFieldDocsConfig,\n): NonNullable<JSDocableNodeStructure[\"docs\"]> => {\n\treturn [\n\t\t{\n\t\t\tdescription: (writer) => {\n\t\t\t\tconst name = getHumanReadableModelName({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t});\n\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\tpath: config.path,\n\t\t\t\t});\n\n\t\t\t\tconst fieldType = getHumanReadableFieldType({\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t});\n\n\t\t\t\tconst placeholder =\n\t\t\t\t\tconfig.model.config &&\n\t\t\t\t\t\"placeholder\" in config.model.config &&\n\t\t\t\t\tconfig.model.config.placeholder\n\t\t\t\t\t\t? config.model.config.placeholder\n\t\t\t\t\t\t: `*None*`;\n\n\t\t\t\tconst defaultValue =\n\t\t\t\t\tconfig.model.config && \"default_value\" in config.model.config\n\t\t\t\t\t\t? config.model.config.default_value\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\tconst apiIDPath = getAPIIDPath({\n\t\t\t\t\tpath: [...config.path, { id: config.id, model: config.model }],\n\t\t\t\t});\n\n\t\t\t\twriteFieldDocsDescription({\n\t\t\t\t\twriter,\n\t\t\t\t\tdescription: `${name} field in *${humanReadablePath}*`,\n\t\t\t\t\tfieldType,\n\t\t\t\t\tplaceholder,\n\t\t\t\t\tdefaultValue,\n\t\t\t\t\tapiIDPath,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\tdocumentationURL: getFieldDocumentationURL({ model: config.model }),\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t];\n};\n","import {\n\tpascalCase as pascalCaseBase,\n\tpascalCaseTransformMerge,\n} from \"pascal-case\";\n\nexport const pascalCase = (input: string): string =>\n\tpascalCaseBase(input, {\n\t\ttransform: pascalCaseTransformMerge,\n\t});\n","import { pascalCase } from \"./pascalCase\";\n\ntype 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, NON_EDITABLE_FILE_HEADER } from \"./constants\";\nimport { addTypeAliasForCustomType } from \"./lib/addTypeAliasForCustomType\";\nimport { addTypeAliasForSharedSlice } from \"./lib/addTypeAliasForSharedSlice\";\nimport { getSourceFileText } from \"./lib/getSourceFileText\";\nimport { FieldConfigs } from \"./types\";\nimport { 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};\n};\n\nexport const generateTypes = (config: GenerateTypesConfig = {}) => {\n\tconst project = new Project({\n\t\tuseInMemoryFileSystem: true,\n\t});\n\n\tconst sourceFile = project.createSourceFile(\"types.d.ts\");\n\n\tsourceFile.addImportDeclaration({\n\t\tmoduleSpecifier: \"@prismicio/types\",\n\t\tnamespaceImport: \"prismicT\",\n\t\tisTypeOnly: true,\n\t\tleadingTrivia: NON_EDITABLE_FILE_HEADER,\n\t});\n\n\tsourceFile.addStatements(BLANK_LINE_IDENTIFIER);\n\n\tsourceFile.addTypeAlias({\n\t\tname: \"Simplify\",\n\t\ttypeParameters: [\n\t\t\t{\n\t\t\t\tname: \"T\",\n\t\t\t},\n\t\t],\n\t\ttype: `{ [KeyType in keyof T]: T[KeyType] }`,\n\t});\n\n\tif (config.customTypeModels) {\n\t\tfor (const model of config.customTypeModels) {\n\t\t\taddTypeAliasForCustomType({\n\t\t\t\tmodel,\n\t\t\t\tsourceFile,\n\t\t\t\tlocaleIDs: config.localeIDs || [],\n\t\t\t\tfieldConfigs: config.fieldConfigs || {},\n\t\t\t});\n\t\t}\n\n\t\tif (config.customTypeModels.length > 0) {\n\t\t\tsourceFile.addTypeAlias({\n\t\t\t\tname: \"AllDocumentTypes\",\n\t\t\t\ttype: config.customTypeModels\n\t\t\t\t\t.map((customTypeModel) =>\n\t\t\t\t\t\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 (config.clientIntegration?.includeCreateClientInterface) {\n\t\tsourceFile.addImportDeclaration({\n\t\t\tmoduleSpecifier: \"@prismicio/client\",\n\t\t\tnamespaceImport: \"prismic\",\n\t\t\tisTypeOnly: true,\n\t\t});\n\n\t\tconst clientModuleDeclaration = sourceFile.addModule({\n\t\t\tname: '\"@prismicio/client\"',\n\t\t\thasDeclareKeyword: true,\n\t\t\tdeclarationKind: ModuleDeclarationKind.Module,\n\t\t});\n\n\t\tclientModuleDeclaration.addInterface({\n\t\t\tname: \"CreateClient\",\n\t\t\tcallSignatures: [\n\t\t\t\t{\n\t\t\t\t\tparameters: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"repositoryNameOrEndpoint\",\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"options\",\n\t\t\t\t\t\t\ttype: \"prismic.ClientConfig\",\n\t\t\t\t\t\t\thasQuestionToken: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\treturnType:\n\t\t\t\t\t\t(config.customTypeModels?.length || 0) > 0\n\t\t\t\t\t\t\t? \"prismic.Client<AllDocumentTypes>\"\n\t\t\t\t\t\t\t: \"prismic.Client\",\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t}\n\n\treturn getSourceFileText(sourceFile);\n};\n"],"names":["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.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "An experimental Prismic model-to-TypeScript-type generator",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -45,38 +45,38 @@
|
|
|
45
45
|
"unit": "nyc --reporter=lcovonly --reporter=text --exclude-after-remap=false ava"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@prismicio/client": "^6.
|
|
48
|
+
"@prismicio/client": "^6.7.0",
|
|
49
49
|
"@prismicio/custom-types-client": "^0.0.7",
|
|
50
50
|
"common-tags": "^1.8.2",
|
|
51
51
|
"fast-glob": "^3.2.11",
|
|
52
52
|
"jiti": "^1.14.0",
|
|
53
53
|
"joi": "^17.6.0",
|
|
54
54
|
"meow": "^10.1.3",
|
|
55
|
-
"node-fetch": "^3.2.
|
|
55
|
+
"node-fetch": "^3.2.10",
|
|
56
56
|
"pascal-case": "^3.1.2",
|
|
57
57
|
"prettier": "^2.7.1",
|
|
58
58
|
"ts-morph": "^15.1.0"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
|
-
"@prismicio/mock": "^0.1.
|
|
61
|
+
"@prismicio/mock": "^0.1.1",
|
|
62
62
|
"@prismicio/types": "^0.2.0",
|
|
63
|
-
"@size-limit/preset-small-lib": "^
|
|
63
|
+
"@size-limit/preset-small-lib": "^8.0.1",
|
|
64
64
|
"@types/common-tags": "^1.8.1",
|
|
65
|
-
"@types/prettier": "^2.
|
|
66
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
67
|
-
"@typescript-eslint/parser": "^5.
|
|
68
|
-
"ava": "^4.3.
|
|
65
|
+
"@types/prettier": "^2.7.0",
|
|
66
|
+
"@typescript-eslint/eslint-plugin": "^5.35.1",
|
|
67
|
+
"@typescript-eslint/parser": "^5.35.1",
|
|
68
|
+
"ava": "^4.3.3",
|
|
69
69
|
"esbuild-register": "^3.3.3",
|
|
70
|
-
"eslint": "^8.
|
|
70
|
+
"eslint": "^8.22.0",
|
|
71
71
|
"eslint-config-prettier": "^8.5.0",
|
|
72
72
|
"eslint-plugin-prettier": "^4.2.1",
|
|
73
73
|
"eslint-plugin-tsdoc": "^0.2.16",
|
|
74
74
|
"nyc": "^15.1.0",
|
|
75
|
-
"prettier-plugin-jsdoc": "^0.
|
|
75
|
+
"prettier-plugin-jsdoc": "^0.4.2",
|
|
76
76
|
"siroc": "^0.16.0",
|
|
77
|
-
"size-limit": "^
|
|
77
|
+
"size-limit": "^8.0.1",
|
|
78
78
|
"standard-version": "^9.5.0",
|
|
79
|
-
"typescript": "^4.
|
|
79
|
+
"typescript": "^4.8.2"
|
|
80
80
|
},
|
|
81
81
|
"peerDependencies": {
|
|
82
82
|
"@prismicio/types": "^0.2"
|
package/src/cli/loadConfig.ts
CHANGED
|
@@ -6,6 +6,12 @@ import type { Config } from "./types";
|
|
|
6
6
|
|
|
7
7
|
const jiti = _jiti(process.cwd());
|
|
8
8
|
|
|
9
|
+
const loadModuleWithJiti = <TModule>(id: string): TModule => {
|
|
10
|
+
const mod = jiti(id) as TModule | { default: TModule };
|
|
11
|
+
|
|
12
|
+
return "default" in mod ? mod.default : mod;
|
|
13
|
+
};
|
|
14
|
+
|
|
9
15
|
const DEFAULT_CONFIG_PATHS = [
|
|
10
16
|
"prismicCodegen.config.ts",
|
|
11
17
|
"prismicCodegen.config.js",
|
|
@@ -18,18 +24,14 @@ type LoadConfigConfig = {
|
|
|
18
24
|
export const loadConfig = (config: LoadConfigConfig): Config => {
|
|
19
25
|
if (config.path) {
|
|
20
26
|
if (existsSync(config.path)) {
|
|
21
|
-
return
|
|
27
|
+
return loadModuleWithJiti(resolvePath(config.path));
|
|
22
28
|
} else {
|
|
23
29
|
throw new Error(`Config file does not exist: ${config.path}`);
|
|
24
30
|
}
|
|
25
31
|
} else {
|
|
26
32
|
for (const configPath of DEFAULT_CONFIG_PATHS) {
|
|
27
33
|
if (existsSync(configPath)) {
|
|
28
|
-
|
|
29
|
-
| Config
|
|
30
|
-
| { default: Config };
|
|
31
|
-
|
|
32
|
-
return "default" in mod ? mod.default : mod;
|
|
34
|
+
return loadModuleWithJiti(resolvePath(configPath));
|
|
33
35
|
}
|
|
34
36
|
}
|
|
35
37
|
}
|
package/src/cli/types.ts
CHANGED
|
@@ -9,7 +9,8 @@ export type Config = {
|
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* The access token for the Prismic repository. If the repository is private
|
|
12
|
-
* and `locales.fetchFromRepository` is `true`, providing a token is
|
|
12
|
+
* and `locales.fetchFromRepository` is `true`, providing a token is
|
|
13
|
+
* required.
|
|
13
14
|
*/
|
|
14
15
|
accessToken?: string;
|
|
15
16
|
|
|
@@ -99,7 +100,8 @@ export type Config = {
|
|
|
99
100
|
| string[]
|
|
100
101
|
| {
|
|
101
102
|
/**
|
|
102
|
-
* A list of file paths to Custom Type and Slice models. Globs are
|
|
103
|
+
* A list of file paths to Custom Type and Slice models. Globs are
|
|
104
|
+
* supported.
|
|
103
105
|
*/
|
|
104
106
|
files?: string[];
|
|
105
107
|
|
package/src/generateTypes.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { addTypeAliasForCustomType } from "./lib/addTypeAliasForCustomType";
|
|
|
6
6
|
import { addTypeAliasForSharedSlice } from "./lib/addTypeAliasForSharedSlice";
|
|
7
7
|
import { getSourceFileText } from "./lib/getSourceFileText";
|
|
8
8
|
import { FieldConfigs } from "./types";
|
|
9
|
-
import {
|
|
9
|
+
import { buildTypeName } from "./lib/buildTypeName";
|
|
10
10
|
|
|
11
11
|
export type GenerateTypesConfig = {
|
|
12
12
|
customTypeModels?: CustomTypeModel[];
|
|
@@ -59,7 +59,7 @@ export const generateTypes = (config: GenerateTypesConfig = {}) => {
|
|
|
59
59
|
name: "AllDocumentTypes",
|
|
60
60
|
type: config.customTypeModels
|
|
61
61
|
.map((customTypeModel) =>
|
|
62
|
-
|
|
62
|
+
buildTypeName(customTypeModel.id, "Document"),
|
|
63
63
|
)
|
|
64
64
|
.join(" | "),
|
|
65
65
|
isExported: true,
|
|
@@ -11,10 +11,11 @@ import {
|
|
|
11
11
|
import type { InterfaceDeclaration, SourceFile } from "ts-morph";
|
|
12
12
|
|
|
13
13
|
import { FieldConfigs, PathElement } from "../types";
|
|
14
|
+
|
|
14
15
|
import { buildFieldDocs } from "./buildFieldDocs";
|
|
15
|
-
import {
|
|
16
|
+
import { buildSharedSliceInterfaceNamePart } from "./buildSharedSliceInterfaceNamePart";
|
|
17
|
+
import { buildTypeName } from "./buildTypeName";
|
|
16
18
|
import { getHumanReadableFieldPath } from "./getHumanReadableFieldPath";
|
|
17
|
-
import { pascalCase } from "./pascalCase";
|
|
18
19
|
|
|
19
20
|
type AddInterfacePropertyFromFieldConfig = {
|
|
20
21
|
id: string;
|
|
@@ -362,8 +363,12 @@ const addInterfacePropertyForField = (
|
|
|
362
363
|
|
|
363
364
|
case "Group": {
|
|
364
365
|
const itemInterface = config.sourceFile.addInterface({
|
|
365
|
-
name:
|
|
366
|
-
|
|
366
|
+
name: buildTypeName(
|
|
367
|
+
config.path[0].id,
|
|
368
|
+
"Document",
|
|
369
|
+
"Data",
|
|
370
|
+
config.id,
|
|
371
|
+
"Item",
|
|
367
372
|
),
|
|
368
373
|
docs: [
|
|
369
374
|
{
|
|
@@ -424,7 +429,7 @@ const addInterfacePropertyForField = (
|
|
|
424
429
|
|
|
425
430
|
if (choice.type === CustomTypeModelSliceType.SharedSlice) {
|
|
426
431
|
choiceInterfaceNames.push(
|
|
427
|
-
|
|
432
|
+
buildSharedSliceInterfaceNamePart({ id: choiceId }),
|
|
428
433
|
);
|
|
429
434
|
} else if (choice.type === CustomTypeModelSliceType.Slice) {
|
|
430
435
|
let primaryInterface: InterfaceDeclaration | undefined;
|
|
@@ -433,8 +438,14 @@ const addInterfacePropertyForField = (
|
|
|
433
438
|
Object.keys(choice["non-repeat"]).length > 0
|
|
434
439
|
) {
|
|
435
440
|
primaryInterface = config.sourceFile.addInterface({
|
|
436
|
-
name:
|
|
437
|
-
|
|
441
|
+
name: buildTypeName(
|
|
442
|
+
config.path[0].id,
|
|
443
|
+
"Document",
|
|
444
|
+
"Data",
|
|
445
|
+
config.id,
|
|
446
|
+
choiceId,
|
|
447
|
+
"Slice",
|
|
448
|
+
"Primary",
|
|
438
449
|
),
|
|
439
450
|
docs: [
|
|
440
451
|
{
|
|
@@ -490,8 +501,14 @@ const addInterfacePropertyForField = (
|
|
|
490
501
|
let itemInterface: InterfaceDeclaration | undefined;
|
|
491
502
|
if (choice.repeat && Object.keys(choice.repeat).length > 0) {
|
|
492
503
|
itemInterface = config.sourceFile.addInterface({
|
|
493
|
-
name:
|
|
494
|
-
|
|
504
|
+
name: buildTypeName(
|
|
505
|
+
config.path[0].id,
|
|
506
|
+
"Document",
|
|
507
|
+
"Data",
|
|
508
|
+
config.id,
|
|
509
|
+
choiceId,
|
|
510
|
+
"Slice",
|
|
511
|
+
"Item",
|
|
495
512
|
),
|
|
496
513
|
docs: [
|
|
497
514
|
{
|
|
@@ -544,8 +561,13 @@ const addInterfacePropertyForField = (
|
|
|
544
561
|
}
|
|
545
562
|
|
|
546
563
|
const sliceType = config.sourceFile.addTypeAlias({
|
|
547
|
-
name:
|
|
548
|
-
|
|
564
|
+
name: buildTypeName(
|
|
565
|
+
config.path[0].id,
|
|
566
|
+
"Document",
|
|
567
|
+
"Data",
|
|
568
|
+
config.id,
|
|
569
|
+
choiceId,
|
|
570
|
+
"Slice",
|
|
549
571
|
),
|
|
550
572
|
type: `prismicT.Slice<"${choiceId}", ${
|
|
551
573
|
primaryInterface
|
|
@@ -563,8 +585,12 @@ const addInterfacePropertyForField = (
|
|
|
563
585
|
}
|
|
564
586
|
|
|
565
587
|
const slicesType = config.sourceFile.addTypeAlias({
|
|
566
|
-
name:
|
|
567
|
-
|
|
588
|
+
name: buildTypeName(
|
|
589
|
+
config.path[0].id,
|
|
590
|
+
"Document",
|
|
591
|
+
"Data",
|
|
592
|
+
config.id,
|
|
593
|
+
"Slice",
|
|
568
594
|
),
|
|
569
595
|
type:
|
|
570
596
|
choiceInterfaceNames.length > 0
|