prismic-ts-codegen 0.0.4 → 0.0.7
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/README.md +5 -3
- package/bin/cli.mjs +62 -23
- package/dist/index.cjs +38 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +23 -0
- package/dist/index.js +39 -1
- package/dist/index.js.map +1 -1
- package/package.json +18 -15
- package/src/cli/configSchema.ts +16 -29
- package/src/cli/index.ts +19 -1
- package/src/cli/types.ts +21 -0
- package/src/generateTypes.ts +54 -1
package/README.md
CHANGED
|
@@ -9,9 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
<!-- TODO: Replacing link to Prismic with [Prismic][prismic] is useful here -->
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
An experimental Prismic model-to-TypeScript-type generator.
|
|
12
|
+
A Prismic model-to-TypeScript-type generator.
|
|
15
13
|
|
|
16
14
|
- Converts Custom Type and Shared Slice models to TypeScript types
|
|
17
15
|
- Integrates with other Prismic TypeScript libraries
|
|
@@ -84,6 +82,10 @@ const config: Config = {
|
|
|
84
82
|
|
|
85
83
|
output: "./types.generated.ts",
|
|
86
84
|
|
|
85
|
+
clientIntegration: {
|
|
86
|
+
includeCreateClientInterface: true,
|
|
87
|
+
},
|
|
88
|
+
|
|
87
89
|
locales: {
|
|
88
90
|
ids: ["en-us", "fr-fr", "en-gb"],
|
|
89
91
|
fetchFromRepository: true,
|
package/bin/cli.mjs
CHANGED
|
@@ -4,7 +4,7 @@ import { readFileSync, existsSync, writeFileSync } from 'fs';
|
|
|
4
4
|
import { resolve } from 'path';
|
|
5
5
|
import meow from 'meow';
|
|
6
6
|
import { stripIndent } from 'common-tags';
|
|
7
|
-
import { Project } from 'ts-morph';
|
|
7
|
+
import { Project, ModuleDeclarationKind } from 'ts-morph';
|
|
8
8
|
import { CustomTypeModelFieldType, CustomTypeModelLinkSelectType, CustomTypeModelSliceType } from '@prismicio/types';
|
|
9
9
|
import { pascalCase as pascalCase$1, pascalCaseTransformMerge } from 'pascal-case';
|
|
10
10
|
import Joi from 'joi';
|
|
@@ -940,6 +940,13 @@ const generateTypes = (config = {}) => {
|
|
|
940
940
|
fieldConfigs: config.fieldConfigs || {}
|
|
941
941
|
});
|
|
942
942
|
}
|
|
943
|
+
if (config.customTypeModels.length > 0) {
|
|
944
|
+
sourceFile.addTypeAlias({
|
|
945
|
+
name: "AllDocumentTypes",
|
|
946
|
+
type: config.customTypeModels.map((customTypeModel) => pascalCase(`${customTypeModel.id} Document`)).join(" | "),
|
|
947
|
+
isExported: true
|
|
948
|
+
});
|
|
949
|
+
}
|
|
943
950
|
}
|
|
944
951
|
if (config.sharedSliceModels) {
|
|
945
952
|
for (const model of config.sharedSliceModels) {
|
|
@@ -950,20 +957,60 @@ const generateTypes = (config = {}) => {
|
|
|
950
957
|
});
|
|
951
958
|
}
|
|
952
959
|
}
|
|
960
|
+
if (config.clientIntegration?.includeCreateClientInterface) {
|
|
961
|
+
sourceFile.addImportDeclaration({
|
|
962
|
+
moduleSpecifier: "@prismicio/client",
|
|
963
|
+
namespaceImport: "prismic",
|
|
964
|
+
isTypeOnly: true
|
|
965
|
+
});
|
|
966
|
+
const clientModuleDeclaration = sourceFile.addModule({
|
|
967
|
+
name: '"@prismicio/client"',
|
|
968
|
+
hasDeclareKeyword: true,
|
|
969
|
+
declarationKind: ModuleDeclarationKind.Module
|
|
970
|
+
});
|
|
971
|
+
clientModuleDeclaration.addInterface({
|
|
972
|
+
name: "CreateClient",
|
|
973
|
+
callSignatures: [
|
|
974
|
+
{
|
|
975
|
+
parameters: [
|
|
976
|
+
{
|
|
977
|
+
name: "repositoryNameOrEndpoint",
|
|
978
|
+
type: "string"
|
|
979
|
+
},
|
|
980
|
+
{
|
|
981
|
+
name: "options",
|
|
982
|
+
type: "prismic.ClientConfig",
|
|
983
|
+
hasQuestionToken: true
|
|
984
|
+
}
|
|
985
|
+
],
|
|
986
|
+
returnType: (config.customTypeModels?.length || 0) > 0 ? "prismic.Client<AllDocumentTypes>" : "prismic.Client"
|
|
987
|
+
}
|
|
988
|
+
]
|
|
989
|
+
});
|
|
990
|
+
}
|
|
953
991
|
return getSourceFileText(sourceFile);
|
|
954
992
|
};
|
|
955
993
|
|
|
956
994
|
const configSchema = Joi.object({
|
|
957
|
-
repositoryName: Joi.string(),
|
|
995
|
+
repositoryName: Joi.string().when("locales.fetchFromRepository", {
|
|
996
|
+
is: true,
|
|
997
|
+
then: Joi.required()
|
|
998
|
+
}).when("models.fetchFromRepository", {
|
|
999
|
+
is: true,
|
|
1000
|
+
then: Joi.required()
|
|
1001
|
+
}),
|
|
958
1002
|
accessToken: Joi.string(),
|
|
959
1003
|
customTypesAPIToken: Joi.string(),
|
|
960
1004
|
output: Joi.string(),
|
|
1005
|
+
clientIntegration: Joi.object({
|
|
1006
|
+
includeCreateClientInterface: Joi.boolean()
|
|
1007
|
+
}),
|
|
961
1008
|
locales: Joi.alternatives(Joi.array().items(Joi.string().required()), Joi.object({
|
|
962
1009
|
ids: Joi.array().items(Joi.string().required()),
|
|
963
1010
|
fetchFromRepository: Joi.boolean()
|
|
964
1011
|
})),
|
|
965
|
-
models: Joi.alternatives(Joi.array().items(Joi.string()
|
|
966
|
-
files: Joi.array().items(Joi.string()
|
|
1012
|
+
models: Joi.alternatives(Joi.array().items(Joi.string()), Joi.object({
|
|
1013
|
+
files: Joi.array().items(Joi.string()),
|
|
967
1014
|
fetchFromRepository: Joi.boolean()
|
|
968
1015
|
})),
|
|
969
1016
|
fields: Joi.object({
|
|
@@ -974,23 +1021,6 @@ const configSchema = Joi.object({
|
|
|
974
1021
|
catalogTypes: Joi.object().pattern(Joi.string(), Joi.string().required())
|
|
975
1022
|
})
|
|
976
1023
|
})
|
|
977
|
-
}).when(Joi.object({
|
|
978
|
-
locales: Joi.object({
|
|
979
|
-
fetchFromRepository: Joi.valid(true)
|
|
980
|
-
})
|
|
981
|
-
}), {
|
|
982
|
-
then: Joi.object({
|
|
983
|
-
repositoryName: Joi.required()
|
|
984
|
-
})
|
|
985
|
-
}).when(Joi.object({
|
|
986
|
-
models: Joi.object({
|
|
987
|
-
fetchFromRepository: Joi.valid(true)
|
|
988
|
-
})
|
|
989
|
-
}), {
|
|
990
|
-
then: Joi.object({
|
|
991
|
-
repositoryName: Joi.required(),
|
|
992
|
-
customTypesAPIToken: Joi.required()
|
|
993
|
-
})
|
|
994
1024
|
});
|
|
995
1025
|
|
|
996
1026
|
const loadLocaleIDs = async (config) => {
|
|
@@ -1120,7 +1150,6 @@ ${configPath} already exists.`);
|
|
|
1120
1150
|
|
|
1121
1151
|
const config: Config = {
|
|
1122
1152
|
output: "./types.generated.ts",
|
|
1123
|
-
|
|
1124
1153
|
models: ["./customtypes/**/index.json", "./slices/**/model.json"],
|
|
1125
1154
|
};
|
|
1126
1155
|
|
|
@@ -1157,13 +1186,23 @@ Created prismic-ts-codegen config file: ${configPath}`);
|
|
|
1157
1186
|
accessToken: config.accessToken,
|
|
1158
1187
|
fetchFromRepository: config.locales && "fetchFromRepository" in config.locales && config.locales.fetchFromRepository
|
|
1159
1188
|
});
|
|
1189
|
+
const hasCustomTypeModels = customTypeModels.length > 0;
|
|
1160
1190
|
const types = generateTypes({
|
|
1161
1191
|
customTypeModels,
|
|
1162
1192
|
sharedSliceModels,
|
|
1163
|
-
localeIDs
|
|
1193
|
+
localeIDs,
|
|
1194
|
+
fieldConfigs: config.fields,
|
|
1195
|
+
clientIntegration: {
|
|
1196
|
+
includeCreateClientInterface: hasCustomTypeModels ? config.clientIntegration?.includeCreateClientInterface ?? true : false
|
|
1197
|
+
}
|
|
1164
1198
|
});
|
|
1199
|
+
if (config.clientIntegration?.includeCreateClientInterface && !hasCustomTypeModels) {
|
|
1200
|
+
console.info("[INFO]: prismic-ts-codegen was configured to automatically integrate with `@prismicio/client`, but the integration was generated because no Custom Type models were found. Automatic integration requires at least one Custom Type model.");
|
|
1201
|
+
}
|
|
1165
1202
|
if (config.output) {
|
|
1166
1203
|
writeFileSync(resolve(config.output), types);
|
|
1204
|
+
console.info(`
|
|
1205
|
+
Generated types in: ${config.output}`);
|
|
1167
1206
|
} else {
|
|
1168
1207
|
process.stdout.write(types + "\n");
|
|
1169
1208
|
}
|
package/dist/index.cjs
CHANGED
|
@@ -933,6 +933,13 @@ const generateTypes = (config = {}) => {
|
|
|
933
933
|
fieldConfigs: config.fieldConfigs || {}
|
|
934
934
|
});
|
|
935
935
|
}
|
|
936
|
+
if (config.customTypeModels.length > 0) {
|
|
937
|
+
sourceFile.addTypeAlias({
|
|
938
|
+
name: "AllDocumentTypes",
|
|
939
|
+
type: config.customTypeModels.map((customTypeModel) => pascalCase(`${customTypeModel.id} Document`)).join(" | "),
|
|
940
|
+
isExported: true
|
|
941
|
+
});
|
|
942
|
+
}
|
|
936
943
|
}
|
|
937
944
|
if (config.sharedSliceModels) {
|
|
938
945
|
for (const model of config.sharedSliceModels) {
|
|
@@ -943,6 +950,37 @@ const generateTypes = (config = {}) => {
|
|
|
943
950
|
});
|
|
944
951
|
}
|
|
945
952
|
}
|
|
953
|
+
if (config.clientIntegration?.includeCreateClientInterface) {
|
|
954
|
+
sourceFile.addImportDeclaration({
|
|
955
|
+
moduleSpecifier: "@prismicio/client",
|
|
956
|
+
namespaceImport: "prismic",
|
|
957
|
+
isTypeOnly: true
|
|
958
|
+
});
|
|
959
|
+
const clientModuleDeclaration = sourceFile.addModule({
|
|
960
|
+
name: '"@prismicio/client"',
|
|
961
|
+
hasDeclareKeyword: true,
|
|
962
|
+
declarationKind: tsMorph.ModuleDeclarationKind.Module
|
|
963
|
+
});
|
|
964
|
+
clientModuleDeclaration.addInterface({
|
|
965
|
+
name: "CreateClient",
|
|
966
|
+
callSignatures: [
|
|
967
|
+
{
|
|
968
|
+
parameters: [
|
|
969
|
+
{
|
|
970
|
+
name: "repositoryNameOrEndpoint",
|
|
971
|
+
type: "string"
|
|
972
|
+
},
|
|
973
|
+
{
|
|
974
|
+
name: "options",
|
|
975
|
+
type: "prismic.ClientConfig",
|
|
976
|
+
hasQuestionToken: true
|
|
977
|
+
}
|
|
978
|
+
],
|
|
979
|
+
returnType: (config.customTypeModels?.length || 0) > 0 ? "prismic.Client<AllDocumentTypes>" : "prismic.Client"
|
|
980
|
+
}
|
|
981
|
+
]
|
|
982
|
+
});
|
|
983
|
+
}
|
|
946
984
|
return getSourceFileText(sourceFile);
|
|
947
985
|
};
|
|
948
986
|
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/constants.ts","../src/lib/isCustomTypeModelField.ts","../src/lib/isCustomTypeModelSlice.ts","../src/lib/isSharedSliceModel.ts","../src/lib/getAPIIDPath.ts","../src/lib/getFieldDocumentationURL.ts","../src/lib/isCustomTypeModel.ts","../src/lib/getHumanReadableModelName.ts","../src/lib/getHumanReadableFieldPath.ts","../src/lib/getHumanReadableFieldType.ts","../src/lib/writeFieldDocsDescription.ts","../src/lib/buildFieldDocs.ts","../src/lib/pascalCase.ts","../src/lib/buildSharedSliceInterfaceName.ts","../src/lib/addInterfacePropertiesForFields.ts","../src/lib/addTypeAliasForCustomType.ts","../src/lib/addTypeAliasForSharedSlice.ts","../src/lib/getSourceFileText.ts","../src/generateTypes.ts"],"sourcesContent":["import type { CustomTypeModelFieldType } from \"@prismicio/types\";\nimport { stripIndent } from \"common-tags\";\n\nexport const BLANK_LINE_IDENTIFIER = \"// ___BLANK_LINE_TO_BE_REPLACED___\";\n\nexport const NON_EDITABLE_FILE_HEADER = stripIndent`\n\t// Code generated by prismic-ts-codegen. DO NOT EDIT.\n\t${BLANK_LINE_IDENTIFIER}\n`;\n\nexport const CUSTOM_TYPES_DOCUMENTATION_URL =\n\t\"https://prismic.io/docs/core-concepts/custom-types\";\n\nexport const SHARED_SLICES_DOCUMENTATION_URL =\n\t\"https://prismic.io/docs/core-concepts/reusing-slices\";\n\nexport const FIELD_DOCUMENTATION_URLS: Record<\n\tkeyof typeof CustomTypeModelFieldType,\n\tstring\n> = {\n\tUID: \"https://prismic.io/docs/core-concepts/uid\",\n\tBoolean: \"https://prismic.io/docs/core-concepts/boolean\",\n\tColor: \"https://prismic.io/docs/core-concepts/color\",\n\tDate: \"https://prismic.io/docs/core-concepts/date\",\n\tTimestamp: \"https://prismic.io/docs/core-concepts/timestamp\",\n\tNumber: \"https://prismic.io/docs/core-concepts/number\",\n\tText: \"https://prismic.io/docs/core-concepts/key-text\",\n\tSelect: \"https://prismic.io/docs/core-concepts/select\",\n\tStructuredText: \"https://prismic.io/docs/core-concepts/rich-text-title\",\n\tImage: \"https://prismic.io/docs/core-concepts/image\",\n\tLink: \"https://prismic.io/docs/core-concepts/link-content-relationship\",\n\tEmbed: \"https://prismic.io/docs/core-concepts/embed\",\n\tGeoPoint: \"https://prismic.io/docs/core-concepts/geopoint\",\n\tGroup: \"https://prismic.io/docs/core-concepts/group\",\n\tIntegrationFields: \"https://prismic.io/docs/core-concepts/integration-fields\",\n\tSlices: \"https://prismic.io/docs/core-concepts/slices\",\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\n\nexport const isCustomTypeModelField = (\n\tmodel: unknown,\n): model is CustomTypeModelField => {\n\treturn (\n\t\ttypeof model === \"object\" &&\n\t\tmodel !== null &&\n\t\t\"type\" in model &&\n\t\t\"config\" in model\n\t);\n};\n","import type { CustomTypeModelSlice } from \"@prismicio/types\";\n\nexport const isCustomTypeModelSlice = (\n\tmodel: unknown,\n): model is CustomTypeModelSlice => {\n\treturn (\n\t\ttypeof model === \"object\" &&\n\t\tmodel !== null &&\n\t\t\"non-repeat\" in model &&\n\t\t\"repeat\" in model\n\t);\n};\n","import type { SharedSliceModel } from \"@prismicio/types\";\n\nexport const isSharedSliceModel = (\n\tmodel: unknown,\n): model is SharedSliceModel => {\n\treturn typeof model === \"object\" && model !== null && \"variations\" in model;\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport { CustomTypeModelFieldType } from \"@prismicio/types\";\n\nimport { PathElement } from \"../types\";\nimport { isCustomTypeModelField } from \"./isCustomTypeModelField\";\nimport { isCustomTypeModelSlice } from \"./isCustomTypeModelSlice\";\nimport { isSharedSliceModel } from \"./isSharedSliceModel\";\n\ntype GetAPIIDPathConfig = {\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n};\n\nexport const getAPIIDPath = (config: GetAPIIDPathConfig): string => {\n\treturn config.path\n\t\t.map((element, i) => {\n\t\t\tif (\n\t\t\t\tisCustomTypeModelField(element.model) &&\n\t\t\t\t(element.model.type === CustomTypeModelFieldType.Group ||\n\t\t\t\t\telement.model.type === CustomTypeModelFieldType.Slices)\n\t\t\t) {\n\t\t\t\treturn `${element.id}[]`;\n\t\t\t} else {\n\t\t\t\tif (element.id === \"items\") {\n\t\t\t\t\tconst previousElement = config.path[i - 1];\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tisCustomTypeModelSlice(previousElement.model) ||\n\t\t\t\t\t\tisSharedSliceModel(previousElement.model)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn `${element.id}[]`;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn element.id;\n\t\t\t}\n\t\t})\n\t\t.join(\".\");\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\n\nimport { FIELD_DOCUMENTATION_URLS } from \"../constants\";\n\ntype GetFieldDocumentationURLConfig = {\n\tmodel: CustomTypeModelField;\n};\n\nexport const getFieldDocumentationURL = (\n\tconfig: GetFieldDocumentationURLConfig,\n): string => {\n\treturn FIELD_DOCUMENTATION_URLS[config.model.type];\n};\n","import type { CustomTypeModel } from \"@prismicio/types\";\n\nexport const isCustomTypeModel = (model: unknown): model is CustomTypeModel => {\n\treturn typeof model === \"object\" && model !== null && \"json\" in model;\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\n\nimport { isCustomTypeModel } from \"./isCustomTypeModel\";\nimport { isCustomTypeModelField } from \"./isCustomTypeModelField\";\nimport { isCustomTypeModelSlice } from \"./isCustomTypeModelSlice\";\nimport { isSharedSliceModel } from \"./isSharedSliceModel\";\n\ntype GetModelHumanNameConfig = {\n\tid: string;\n\tmodel:\n\t\t| CustomTypeModel\n\t\t| SharedSliceModel\n\t\t| CustomTypeModelField\n\t\t| CustomTypeModelSlice;\n};\n\nexport const getHumanReadableModelName = (\n\tconfig: GetModelHumanNameConfig,\n): string => {\n\tif (isCustomTypeModel(config.model)) {\n\t\treturn config.model.label;\n\t} else if (isSharedSliceModel(config.model)) {\n\t\treturn config.model.name;\n\t} else if (\n\t\tisCustomTypeModelField(config.model) &&\n\t\t\"label\" in config.model.config\n\t) {\n\t\treturn config.model.config.label;\n\t} else if (isCustomTypeModelSlice(config.model)) {\n\t\treturn config.model.fieldset;\n\t} else {\n\t\t// Slice Zone\n\t\treturn `Slice Zone (\\`${config.id}\\`)`;\n\t}\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\n\nimport { PathElement } from \"../types\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\n\ntype GetHumanReadableFieldPathConfig = {\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n};\n\nexport const getHumanReadableFieldPath = (\n\tconfig: GetHumanReadableFieldPathConfig,\n): string => {\n\treturn config.path\n\t\t.map((element) => {\n\t\t\tif (element.label) {\n\t\t\t\treturn element.label;\n\t\t\t} else if (element.model) {\n\t\t\t\treturn getHumanReadableModelName({\n\t\t\t\t\tid: element.id,\n\t\t\t\t\tmodel: element.model,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn element.id;\n\t\t\t}\n\t\t})\n\t\t.join(\" → \");\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\nimport { CustomTypeModelLinkSelectType } from \"@prismicio/types\";\n\ntype GetFieldHumanReadableTypeConfig = {\n\tmodel: CustomTypeModelField;\n};\n\nexport const getHumanReadableFieldType = (\n\tconfig: GetFieldHumanReadableTypeConfig,\n): string => {\n\tswitch (config.model.type) {\n\t\tcase \"StructuredText\": {\n\t\t\tconst isTitleField =\n\t\t\t\t\"single\" in config.model.config &&\n\t\t\t\tconfig.model.config.single\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.every((blockType) => /heading/.test(blockType));\n\n\t\t\treturn isTitleField ? \"Title\" : \"Rich Text\";\n\t\t}\n\n\t\tcase \"IntegrationFields\": {\n\t\t\treturn `Integration Fields (Catalog: \\`${config.model.config.catalog}\\`)`;\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tswitch (config.model.config.select) {\n\t\t\t\tcase CustomTypeModelLinkSelectType.Document: {\n\t\t\t\t\treturn \"Content Relationship\";\n\t\t\t\t}\n\n\t\t\t\tcase CustomTypeModelLinkSelectType.Media: {\n\t\t\t\t\treturn \"Link to Media\";\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\treturn \"Link\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\treturn \"Slice Zone\";\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn config.model.type;\n\t\t}\n\t}\n};\n","import type { CodeBlockWriter } from \"ts-morph\";\n\ntype BuildFieldDocsConfig = {\n\twriter: CodeBlockWriter;\n\tdescription?: string;\n\tfieldType?: string;\n\tdefaultValue?: string | boolean;\n\tplaceholder?: string;\n\tapiIDPath?: string;\n\ttabName?: string;\n\tdocumentationURL?: string;\n};\n\nexport const writeFieldDocsDescription = (\n\tconfig: BuildFieldDocsConfig,\n): void => {\n\tif (config.description) {\n\t\tconfig.writer.writeLine(config.description);\n\t}\n\n\tconfig.writer.blankLineIfLastNot();\n\n\tif (config.fieldType) {\n\t\tconfig.writer.writeLine(`- **Field Type**: ${config.fieldType}`);\n\t}\n\n\tif (config.placeholder) {\n\t\tconfig.writer.writeLine(`- **Placeholder**: ${config.placeholder}`);\n\t}\n\n\tif (config.defaultValue !== undefined) {\n\t\tconst stringifiedDefaultValue =\n\t\t\ttypeof config.defaultValue === \"boolean\"\n\t\t\t\t? `${config.defaultValue}`\n\t\t\t\t: config.defaultValue;\n\n\t\tconfig.writer.writeLine(`- **Default Value**: ${stringifiedDefaultValue}`);\n\t}\n\n\tif (config.apiIDPath) {\n\t\tconfig.writer.writeLine(`- **API ID Path**: ${config.apiIDPath}`);\n\t}\n\n\tif (config.tabName) {\n\t\tconfig.writer.writeLine(`- **Tab**: ${config.tabName}`);\n\t}\n\n\tif (config.documentationURL) {\n\t\tconfig.writer.writeLine(`- **Documentation**: ${config.documentationURL}`);\n\t}\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport type { JSDocableNodeStructure } from \"ts-morph\";\n\nimport { PathElement } from \"../types\";\nimport { getAPIIDPath } from \"./getAPIIDPath\";\nimport { getFieldDocumentationURL } from \"./getFieldDocumentationURL\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { getHumanReadableFieldType } from \"./getHumanReadableFieldType\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\nimport { writeFieldDocsDescription } from \"./writeFieldDocsDescription\";\n\ntype BuildFieldDocsConfig = {\n\tid: string;\n\tmodel: CustomTypeModelField;\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n\ttabName?: string;\n};\n\nexport const buildFieldDocs = (\n\tconfig: BuildFieldDocsConfig,\n): NonNullable<JSDocableNodeStructure[\"docs\"]> => {\n\treturn [\n\t\t{\n\t\t\tdescription: (writer) => {\n\t\t\t\tconst name = getHumanReadableModelName({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t});\n\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\tpath: config.path,\n\t\t\t\t});\n\n\t\t\t\tconst fieldType = getHumanReadableFieldType({\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t});\n\n\t\t\t\tconst placeholder =\n\t\t\t\t\t\"placeholder\" in config.model.config &&\n\t\t\t\t\tconfig.model.config.placeholder\n\t\t\t\t\t\t? config.model.config.placeholder\n\t\t\t\t\t\t: `*None*`;\n\n\t\t\t\tconst defaultValue =\n\t\t\t\t\t\"default_value\" in config.model.config\n\t\t\t\t\t\t? config.model.config.default_value\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\tconst apiIDPath = getAPIIDPath({\n\t\t\t\t\tpath: [...config.path, { id: config.id, model: config.model }],\n\t\t\t\t});\n\n\t\t\t\twriteFieldDocsDescription({\n\t\t\t\t\twriter,\n\t\t\t\t\tdescription: `${name} field in *${humanReadablePath}*`,\n\t\t\t\t\tfieldType,\n\t\t\t\t\tplaceholder,\n\t\t\t\t\tdefaultValue,\n\t\t\t\t\tapiIDPath,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\tdocumentationURL: getFieldDocumentationURL({ model: config.model }),\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t];\n};\n","import {\n\tpascalCase as pascalCaseBase,\n\tpascalCaseTransformMerge,\n} from \"pascal-case\";\n\nexport const pascalCase = (input: string): string =>\n\tpascalCaseBase(input, {\n\t\ttransform: pascalCaseTransformMerge,\n\t});\n","import { pascalCase } from \"./pascalCase\";\n\ntype BuildSharedSliceInterfaceNameConfig = {\n\tid: string;\n};\n\nexport const buildSharedSliceInterfaceName = (\n\tconfig: BuildSharedSliceInterfaceNameConfig,\n): string => {\n\treturn pascalCase(`${config.id} Slice`);\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport {\n\tCustomTypeModelSliceType,\n\tCustomTypeModelLinkSelectType,\n} from \"@prismicio/types\";\nimport type { InterfaceDeclaration, SourceFile } from \"ts-morph\";\n\nimport { FieldConfigs, PathElement } from \"../types\";\nimport { buildFieldDocs } from \"./buildFieldDocs\";\nimport { buildSharedSliceInterfaceName } from \"./buildSharedSliceInterfaceName\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { pascalCase } from \"./pascalCase\";\n\ntype AddInterfacePropertyFromFieldConfig = {\n\tid: string;\n\tmodel: CustomTypeModelField;\n\tinterface: InterfaceDeclaration;\n\tsourceFile: SourceFile;\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n\tfieldConfigs: FieldConfigs;\n\ttabName?: string;\n};\n\nconst addInterfacePropertyForField = (\n\tconfig: AddInterfacePropertyFromFieldConfig,\n) => {\n\tswitch (config.model.type) {\n\t\tcase \"UID\": {\n\t\t\t// UID fields are not included in Data.\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Boolean\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.BooleanField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Color\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.ColorField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Date\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.DateField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Embed\": {\n\t\t\tconst providerTypes: string[] = [];\n\n\t\t\tif (config.fieldConfigs.embed?.providerTypes) {\n\t\t\t\tfor (const providerType in config.fieldConfigs.embed?.providerTypes) {\n\t\t\t\t\tconst configuredProviderType =\n\t\t\t\t\t\tconfig.fieldConfigs.embed?.providerTypes[providerType];\n\n\t\t\t\t\tproviderTypes.push(\n\t\t\t\t\t\t`({ provider_name: \"${providerType}\" } & ${configuredProviderType})`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype:\n\t\t\t\t\tproviderTypes.length > 0\n\t\t\t\t\t\t? `prismicT.EmbedField<prismicT.AnyOEmbed & prismicT.OEmbedExtra & (${providerTypes.join(\n\t\t\t\t\t\t\t\t\" | \",\n\t\t\t\t\t\t )})>`\n\t\t\t\t\t\t: \"prismicT.EmbedField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"GeoPoint\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.GeoPointField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Image\": {\n\t\t\tif (config.model.config.thumbnails.length > 0) {\n\t\t\t\tconst thumbnailNames = config.model.config.thumbnails\n\t\t\t\t\t.map((thumbnail) => `\"${thumbnail.name}\"`)\n\t\t\t\t\t.join(\" | \");\n\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismicT.ImageField<${thumbnailNames}>`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismicT.ImageField<null>\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"IntegrationFields\": {\n\t\t\tconst catalogType =\n\t\t\t\tconfig.fieldConfigs.integrationFields?.catalogTypes?.[\n\t\t\t\t\tconfig.model.config.catalog\n\t\t\t\t];\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: catalogType\n\t\t\t\t\t? `prismicT.IntegrationFields<${catalogType}>`\n\t\t\t\t\t: \"prismicT.IntegrationFields\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tswitch (config.model.config.select) {\n\t\t\t\tcase CustomTypeModelLinkSelectType.Document: {\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\tconfig.model.config.customtypes &&\n\t\t\t\t\t\t\tconfig.model.config.customtypes.length > 0\n\t\t\t\t\t\t\t\t? `prismicT.RelationField<${config.model.config.customtypes\n\t\t\t\t\t\t\t\t\t\t.map((type) => `\"${type}\"`)\n\t\t\t\t\t\t\t\t\t\t.join(\" | \")}>`\n\t\t\t\t\t\t\t\t: \"prismicT.RelationField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CustomTypeModelLinkSelectType.Media: {\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype: \"prismicT.LinkToMediaField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype: \"prismicT.LinkField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Number\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.NumberField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"StructuredText\": {\n\t\t\tconst isTitleField =\n\t\t\t\t\"single\" in config.model.config &&\n\t\t\t\tconfig.model.config.single\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.every((blockType) => /heading/.test(blockType));\n\n\t\t\tif (isTitleField) {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismicT.TitleField\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismicT.RichTextField\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Select\": {\n\t\t\tconst options = config.model.config.options\n\t\t\t\t.map((option) => `\"${option}\"`)\n\t\t\t\t.join(\" | \");\n\t\t\tconst hasDefault = Boolean(config.model.config.default_value);\n\n\t\t\tif (hasDefault) {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismicT.SelectField<${options}, \"filled\">`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismicT.SelectField<${options}>`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Text\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.KeyTextField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Timestamp\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.TimestampField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Group\": {\n\t\t\tconst itemInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} Item`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tisExported: true,\n\t\t\t});\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tinterface: itemInterface,\n\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\tfields: config.model.config.fields,\n\t\t\t\tpath: [\n\t\t\t\t\t...config.path,\n\t\t\t\t\t{\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t});\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: `prismicT.GroupField<Simplify<${itemInterface.getName()}>>`,\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\tconst choiceInterfaceNames: string[] = [];\n\n\t\t\tfor (const choiceId in config.model.config.choices) {\n\t\t\t\tconst choice = config.model.config.choices[choiceId];\n\n\t\t\t\tif (choice.type === CustomTypeModelSliceType.SharedSlice) {\n\t\t\t\t\tchoiceInterfaceNames.push(\n\t\t\t\t\t\tbuildSharedSliceInterfaceName({ id: choiceId }),\n\t\t\t\t\t);\n\t\t\t\t} else if (choice.type === CustomTypeModelSliceType.Slice) {\n\t\t\t\t\tlet primaryInterface: InterfaceDeclaration | undefined;\n\t\t\t\t\tif (Object.keys(choice[\"non-repeat\"]).length > 0) {\n\t\t\t\t\t\tprimaryInterface = config.sourceFile.addInterface({\n\t\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice Primary`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tdocs: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\twriter.writeLine(`Primary content in ${humanReadablePath}`);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t});\n\t\t\t\t\t\taddInterfacePropertiesForFields({\n\t\t\t\t\t\t\tinterface: primaryInterface,\n\t\t\t\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\t\t\t\tfields: choice[\"non-repeat\"],\n\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tlet itemInterface: InterfaceDeclaration | undefined;\n\t\t\t\t\tif (Object.keys(choice.repeat).length > 0) {\n\t\t\t\t\t\titemInterface = config.sourceFile.addInterface({\n\t\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice Item`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tdocs: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tisExported: true,\n\t\t\t\t\t\t});\n\t\t\t\t\t\taddInterfacePropertiesForFields({\n\t\t\t\t\t\t\tinterface: itemInterface,\n\t\t\t\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\t\t\t\tfields: choice.repeat,\n\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconst sliceType = config.sourceFile.addTypeAlias({\n\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice`,\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttype: `prismicT.Slice<\"${choiceId}\", ${\n\t\t\t\t\t\t\tprimaryInterface\n\t\t\t\t\t\t\t\t? `Simplify<${primaryInterface.getName()}>`\n\t\t\t\t\t\t\t\t: \"Record<string, never>\"\n\t\t\t\t\t\t}, ${\n\t\t\t\t\t\t\titemInterface ? `Simplify<${itemInterface.getName()}>` : \"never\"\n\t\t\t\t\t\t}>`,\n\t\t\t\t\t\tisExported: true,\n\t\t\t\t\t});\n\n\t\t\t\t\tchoiceInterfaceNames.push(sliceType.getName());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst slicesType = config.sourceFile.addTypeAlias({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} Slice`,\n\t\t\t\t),\n\t\t\t\ttype:\n\t\t\t\t\tchoiceInterfaceNames.length > 0\n\t\t\t\t\t\t? choiceInterfaceNames.join(\" | \")\n\t\t\t\t\t\t: \"never\",\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Slice for *${humanReadablePath}*`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: `prismicT.SliceZone<${slicesType.getName()}>`,\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"unknown\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\t\t}\n\t}\n};\n\ntype AddInterfacePropertiesForFieldsConfig = Omit<\n\tAddInterfacePropertyFromFieldConfig,\n\t\"id\" | \"model\"\n> & {\n\tfields: Record<string, AddInterfacePropertyFromFieldConfig[\"model\"]>;\n\ttabName?: string;\n};\n\nexport const addInterfacePropertiesForFields = (\n\tconfig: AddInterfacePropertiesForFieldsConfig,\n) => {\n\tfor (const name in config.fields) {\n\t\taddInterfacePropertyForField({\n\t\t\t...config,\n\t\t\tid: name.includes(\"-\") ? `\"${name}\"` : name,\n\t\t\tmodel: config.fields[name],\n\t\t\ttabName: config.tabName,\n\t\t});\n\t}\n};\n","import type { CustomTypeModel, CustomTypeModelField } from \"@prismicio/types\";\nimport type {\n\tSourceFile,\n\tTypeAliasDeclaration,\n\tInterfaceDeclaration,\n} from \"ts-morph\";\nimport { CUSTOM_TYPES_DOCUMENTATION_URL } from \"../constants\";\nimport { FieldConfigs } from \"../types\";\n\nimport { addInterfacePropertiesForFields } from \"./addInterfacePropertiesForFields\";\nimport { pascalCase } from \"./pascalCase\";\n\nconst collectCustomTypeFields = (\n\tmodel: CustomTypeModel,\n): Record<string, CustomTypeModelField> => {\n\treturn Object.assign({}, ...Object.values(model.json));\n};\n\ntype AddTypeAliasForCustomTypeConfig = {\n\tmodel: CustomTypeModel;\n\tsourceFile: SourceFile;\n\tlocaleIDs: string[];\n\tfieldConfigs: FieldConfigs;\n};\n\nexport const addTypeAliasForCustomType = ({\n\tmodel,\n\tsourceFile,\n\tlocaleIDs,\n\tfieldConfigs,\n}: AddTypeAliasForCustomTypeConfig): TypeAliasDeclaration => {\n\tconst { uid: uidField, ...fields } = collectCustomTypeFields(model);\n\tconst hasDataFields = Object.keys(fields).length > 0;\n\tconst hasUIDField = Boolean(uidField);\n\n\tlet dataInterface: InterfaceDeclaration | TypeAliasDeclaration;\n\tif (hasDataFields) {\n\t\tdataInterface = sourceFile.addInterface({\n\t\t\tname: pascalCase(`${model.id} Document Data`),\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: `Content for ${model.label} documents`,\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\n\t\tfor (const tabName in model.json) {\n\t\t\t// This is destructured to ensure the UID field is\n\t\t\t// ignored.\n\t\t\tconst { uid: _uidField, ...tabFields } = model.json[tabName];\n\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tfields: tabFields,\n\t\t\t\tinterface: dataInterface,\n\t\t\t\tsourceFile: sourceFile,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: model.id,\n\t\t\t\t\t\tmodel: model,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs,\n\t\t\t\ttabName,\n\t\t\t});\n\t\t}\n\t} else {\n\t\tdataInterface = sourceFile.addTypeAlias({\n\t\t\tname: pascalCase(`${model.id} Document Data`),\n\t\t\ttype: `Record<string, never>`,\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: `Content for ${model.label} documents`,\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t}\n\n\treturn sourceFile.addTypeAlias({\n\t\tname: pascalCase(`${model.id} Document`),\n\t\ttypeParameters: [\n\t\t\t{\n\t\t\t\tname: \"Lang\",\n\t\t\t\tconstraint: \"string\",\n\t\t\t\tdefault:\n\t\t\t\t\tlocaleIDs.length > 0\n\t\t\t\t\t\t? localeIDs.map((localeID) => `\"${localeID}\"`).join(\" | \")\n\t\t\t\t\t\t: \"string\",\n\t\t\t},\n\t\t],\n\t\ttype: hasUIDField\n\t\t\t? `prismicT.PrismicDocumentWithUID<Simplify<${dataInterface.getName()}>, \"${\n\t\t\t\t\tmodel.id\n\t\t\t }\", Lang>`\n\t\t\t: `prismicT.PrismicDocumentWithoutUID<Simplify<${dataInterface.getName()}>, \"${\n\t\t\t\t\tmodel.id\n\t\t\t }\", Lang>`,\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\twriter.writeLine(`${model.label} document from Prismic`);\n\t\t\t\t\twriter.blankLine();\n\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${model.id}\\``);\n\t\t\t\t\twriter.writeLine(`- **Repeatable**: \\`${model.repeatable}\\``);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Documentation**: ${CUSTOM_TYPES_DOCUMENTATION_URL}`,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\ttags: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttagName: \"typeParam\",\n\t\t\t\t\t\ttext: \"Lang - Language API ID of the document.\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tisExported: true,\n\t});\n};\n","import type { SharedSliceModel } from \"@prismicio/types\";\nimport type {\n\tInterfaceDeclaration,\n\tSourceFile,\n\tTypeAliasDeclaration,\n} from \"ts-morph\";\n\nimport { addInterfacePropertiesForFields } from \"./addInterfacePropertiesForFields\";\nimport { buildSharedSliceInterfaceName } from \"./buildSharedSliceInterfaceName\";\nimport { pascalCase } from \"./pascalCase\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { SHARED_SLICES_DOCUMENTATION_URL } from \"../constants\";\nimport { FieldConfigs } from \"../types\";\n\ntype AddTypeAliasForSharedSliceConfig = {\n\tmodel: SharedSliceModel;\n\tsourceFile: SourceFile;\n\tfieldConfigs: FieldConfigs;\n};\n\nexport const addTypeAliasForSharedSlice = (\n\tconfig: AddTypeAliasForSharedSliceConfig,\n): TypeAliasDeclaration => {\n\tconst variationTypeNames: string[] = [];\n\n\tfor (const variation of config.model.variations) {\n\t\tlet primaryInterface: InterfaceDeclaration | undefined;\n\t\tif (Object.keys(variation.primary).length > 0) {\n\t\t\tprimaryInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${buildSharedSliceInterfaceName({ id: config.model.id })} ${\n\t\t\t\t\t\tvariation.id\n\t\t\t\t\t} Primary`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Primary content in ${humanReadablePath}`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tinterface: primaryInterface,\n\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\tfields: variation.primary,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t});\n\t\t}\n\n\t\tlet itemInterface: InterfaceDeclaration | undefined;\n\t\tif (Object.keys(variation.items).length > 0) {\n\t\t\titemInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${buildSharedSliceInterfaceName({ id: config.model.id })} ${\n\t\t\t\t\t\tvariation.id\n\t\t\t\t\t} Item`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tisExported: true,\n\t\t\t});\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tinterface: itemInterface,\n\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\tfields: variation.items,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t});\n\t\t}\n\n\t\tconst variationType = config.sourceFile.addTypeAlias({\n\t\t\tname: pascalCase(\n\t\t\t\t`${buildSharedSliceInterfaceName({\n\t\t\t\t\tid: config.model.id,\n\t\t\t\t})} ${variation.id}`,\n\t\t\t),\n\t\t\ttype: `prismicT.SharedSliceVariation<\"${variation.id}\", ${\n\t\t\t\tprimaryInterface\n\t\t\t\t\t? `Simplify<${primaryInterface.getName()}>`\n\t\t\t\t\t: \"Record<string, never>\"\n\t\t\t}, ${itemInterface ? `Simplify<${itemInterface.getName()}>` : \"never\"}>`,\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t\t`${variation.name} variation for ${config.model.name} Slice`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\twriter.blankLine();\n\t\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${variation.id}\\``);\n\t\t\t\t\t\twriter.writeLine(`- **Description**: \\`${variation.description}\\``);\n\t\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t\t`- **Documentation**: ${SHARED_SLICES_DOCUMENTATION_URL}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\tisExported: true,\n\t\t});\n\n\t\tvariationTypeNames.push(variationType.getName());\n\t}\n\n\tconst variationsType = config.sourceFile.addTypeAlias({\n\t\tname: pascalCase(`${config.model.id} Slice Variation`),\n\t\ttype:\n\t\t\tvariationTypeNames.length > 0 ? variationTypeNames.join(\" | \") : \"never\",\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\n\t\t\t\t\twriter.writeLine(`Slice variation for *${humanReadablePath}*`);\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t});\n\n\treturn config.sourceFile.addTypeAlias({\n\t\tname: pascalCase(\n\t\t\tbuildSharedSliceInterfaceName({\n\t\t\t\tid: config.model.id,\n\t\t\t}),\n\t\t),\n\t\ttype: `prismicT.SharedSlice<\"${\n\t\t\tconfig.model.id\n\t\t}\", ${variationsType.getName()}>`,\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\twriter.writeLine(`${config.model.name} Shared Slice`);\n\t\t\t\t\twriter.blankLine();\n\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${config.model.id}\\``);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Description**: \\`${config.model.description}\\``,\n\t\t\t\t\t);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Documentation**: ${SHARED_SLICES_DOCUMENTATION_URL}`,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tisExported: true,\n\t});\n};\n","import * as tsm from \"ts-morph\";\n// import prettier from \"prettier\";\n\nimport { BLANK_LINE_IDENTIFIER } from \"../constants\";\n\nexport const getSourceFileText = (sourceFile: tsm.SourceFile): string => {\n\tconst text = sourceFile\n\t\t.print()\n\t\t.replace(new RegExp(BLANK_LINE_IDENTIFIER, \"g\"), \"\");\n\n\treturn text;\n\n\t// return prettier.format(text, { parser: \"typescript\" });\n};\n","import { Project } from \"ts-morph\";\nimport type { CustomTypeModel, SharedSliceModel } from \"@prismicio/types\";\n\nimport { BLANK_LINE_IDENTIFIER, NON_EDITABLE_FILE_HEADER } from \"./constants\";\nimport { addTypeAliasForCustomType } from \"./lib/addTypeAliasForCustomType\";\nimport { addTypeAliasForSharedSlice } from \"./lib/addTypeAliasForSharedSlice\";\nimport { getSourceFileText } from \"./lib/getSourceFileText\";\nimport { FieldConfigs } from \"./types\";\n\nexport type GenerateTypesConfig = {\n\tcustomTypeModels?: CustomTypeModel[];\n\tsharedSliceModels?: SharedSliceModel[];\n\tlocaleIDs?: string[];\n\tfieldConfigs?: FieldConfigs;\n};\n\nexport const generateTypes = (config: GenerateTypesConfig = {}) => {\n\tconst project = new Project({\n\t\tuseInMemoryFileSystem: true,\n\t});\n\n\tconst sourceFile = project.createSourceFile(\"types.d.ts\");\n\n\tsourceFile.addImportDeclaration({\n\t\tmoduleSpecifier: \"@prismicio/types\",\n\t\tnamespaceImport: \"prismicT\",\n\t\tisTypeOnly: true,\n\t\tleadingTrivia: NON_EDITABLE_FILE_HEADER,\n\t});\n\n\tsourceFile.addStatements(BLANK_LINE_IDENTIFIER);\n\n\tsourceFile.addTypeAlias({\n\t\tname: \"Simplify\",\n\t\ttypeParameters: [\n\t\t\t{\n\t\t\t\tname: \"T\",\n\t\t\t},\n\t\t],\n\t\ttype: `{ [KeyType in keyof T]: T[KeyType] }`,\n\t});\n\n\tif (config.customTypeModels) {\n\t\tfor (const model of config.customTypeModels) {\n\t\t\taddTypeAliasForCustomType({\n\t\t\t\tmodel,\n\t\t\t\tsourceFile,\n\t\t\t\tlocaleIDs: config.localeIDs || [],\n\t\t\t\tfieldConfigs: config.fieldConfigs || {},\n\t\t\t});\n\t\t}\n\t}\n\n\tif (config.sharedSliceModels) {\n\t\tfor (const model of config.sharedSliceModels) {\n\t\t\taddTypeAliasForSharedSlice({\n\t\t\t\tmodel,\n\t\t\t\tsourceFile,\n\t\t\t\tfieldConfigs: config.fieldConfigs || {},\n\t\t\t});\n\t\t}\n\t}\n\n\treturn getSourceFileText(sourceFile);\n};\n"],"names":["stripIndent","CustomTypeModelFieldType","CustomTypeModelLinkSelectType","pascalCaseBase","pascalCaseTransformMerge","CustomTypeModelSliceType","Project"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/constants.ts","../src/lib/isCustomTypeModelField.ts","../src/lib/isCustomTypeModelSlice.ts","../src/lib/isSharedSliceModel.ts","../src/lib/getAPIIDPath.ts","../src/lib/getFieldDocumentationURL.ts","../src/lib/isCustomTypeModel.ts","../src/lib/getHumanReadableModelName.ts","../src/lib/getHumanReadableFieldPath.ts","../src/lib/getHumanReadableFieldType.ts","../src/lib/writeFieldDocsDescription.ts","../src/lib/buildFieldDocs.ts","../src/lib/pascalCase.ts","../src/lib/buildSharedSliceInterfaceName.ts","../src/lib/addInterfacePropertiesForFields.ts","../src/lib/addTypeAliasForCustomType.ts","../src/lib/addTypeAliasForSharedSlice.ts","../src/lib/getSourceFileText.ts","../src/generateTypes.ts"],"sourcesContent":["import type { CustomTypeModelFieldType } from \"@prismicio/types\";\nimport { stripIndent } from \"common-tags\";\n\nexport const BLANK_LINE_IDENTIFIER = \"// ___BLANK_LINE_TO_BE_REPLACED___\";\n\nexport const NON_EDITABLE_FILE_HEADER = stripIndent`\n\t// Code generated by prismic-ts-codegen. DO NOT EDIT.\n\t${BLANK_LINE_IDENTIFIER}\n`;\n\nexport const CUSTOM_TYPES_DOCUMENTATION_URL =\n\t\"https://prismic.io/docs/core-concepts/custom-types\";\n\nexport const SHARED_SLICES_DOCUMENTATION_URL =\n\t\"https://prismic.io/docs/core-concepts/reusing-slices\";\n\nexport const FIELD_DOCUMENTATION_URLS: Record<\n\tkeyof typeof CustomTypeModelFieldType,\n\tstring\n> = {\n\tUID: \"https://prismic.io/docs/core-concepts/uid\",\n\tBoolean: \"https://prismic.io/docs/core-concepts/boolean\",\n\tColor: \"https://prismic.io/docs/core-concepts/color\",\n\tDate: \"https://prismic.io/docs/core-concepts/date\",\n\tTimestamp: \"https://prismic.io/docs/core-concepts/timestamp\",\n\tNumber: \"https://prismic.io/docs/core-concepts/number\",\n\tText: \"https://prismic.io/docs/core-concepts/key-text\",\n\tSelect: \"https://prismic.io/docs/core-concepts/select\",\n\tStructuredText: \"https://prismic.io/docs/core-concepts/rich-text-title\",\n\tImage: \"https://prismic.io/docs/core-concepts/image\",\n\tLink: \"https://prismic.io/docs/core-concepts/link-content-relationship\",\n\tEmbed: \"https://prismic.io/docs/core-concepts/embed\",\n\tGeoPoint: \"https://prismic.io/docs/core-concepts/geopoint\",\n\tGroup: \"https://prismic.io/docs/core-concepts/group\",\n\tIntegrationFields: \"https://prismic.io/docs/core-concepts/integration-fields\",\n\tSlices: \"https://prismic.io/docs/core-concepts/slices\",\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\n\nexport const isCustomTypeModelField = (\n\tmodel: unknown,\n): model is CustomTypeModelField => {\n\treturn (\n\t\ttypeof model === \"object\" &&\n\t\tmodel !== null &&\n\t\t\"type\" in model &&\n\t\t\"config\" in model\n\t);\n};\n","import type { CustomTypeModelSlice } from \"@prismicio/types\";\n\nexport const isCustomTypeModelSlice = (\n\tmodel: unknown,\n): model is CustomTypeModelSlice => {\n\treturn (\n\t\ttypeof model === \"object\" &&\n\t\tmodel !== null &&\n\t\t\"non-repeat\" in model &&\n\t\t\"repeat\" in model\n\t);\n};\n","import type { SharedSliceModel } from \"@prismicio/types\";\n\nexport const isSharedSliceModel = (\n\tmodel: unknown,\n): model is SharedSliceModel => {\n\treturn typeof model === \"object\" && model !== null && \"variations\" in model;\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport { CustomTypeModelFieldType } from \"@prismicio/types\";\n\nimport { PathElement } from \"../types\";\nimport { isCustomTypeModelField } from \"./isCustomTypeModelField\";\nimport { isCustomTypeModelSlice } from \"./isCustomTypeModelSlice\";\nimport { isSharedSliceModel } from \"./isSharedSliceModel\";\n\ntype GetAPIIDPathConfig = {\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n};\n\nexport const getAPIIDPath = (config: GetAPIIDPathConfig): string => {\n\treturn config.path\n\t\t.map((element, i) => {\n\t\t\tif (\n\t\t\t\tisCustomTypeModelField(element.model) &&\n\t\t\t\t(element.model.type === CustomTypeModelFieldType.Group ||\n\t\t\t\t\telement.model.type === CustomTypeModelFieldType.Slices)\n\t\t\t) {\n\t\t\t\treturn `${element.id}[]`;\n\t\t\t} else {\n\t\t\t\tif (element.id === \"items\") {\n\t\t\t\t\tconst previousElement = config.path[i - 1];\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tisCustomTypeModelSlice(previousElement.model) ||\n\t\t\t\t\t\tisSharedSliceModel(previousElement.model)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn `${element.id}[]`;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn element.id;\n\t\t\t}\n\t\t})\n\t\t.join(\".\");\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\n\nimport { FIELD_DOCUMENTATION_URLS } from \"../constants\";\n\ntype GetFieldDocumentationURLConfig = {\n\tmodel: CustomTypeModelField;\n};\n\nexport const getFieldDocumentationURL = (\n\tconfig: GetFieldDocumentationURLConfig,\n): string => {\n\treturn FIELD_DOCUMENTATION_URLS[config.model.type];\n};\n","import type { CustomTypeModel } from \"@prismicio/types\";\n\nexport const isCustomTypeModel = (model: unknown): model is CustomTypeModel => {\n\treturn typeof model === \"object\" && model !== null && \"json\" in model;\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\n\nimport { isCustomTypeModel } from \"./isCustomTypeModel\";\nimport { isCustomTypeModelField } from \"./isCustomTypeModelField\";\nimport { isCustomTypeModelSlice } from \"./isCustomTypeModelSlice\";\nimport { isSharedSliceModel } from \"./isSharedSliceModel\";\n\ntype GetModelHumanNameConfig = {\n\tid: string;\n\tmodel:\n\t\t| CustomTypeModel\n\t\t| SharedSliceModel\n\t\t| CustomTypeModelField\n\t\t| CustomTypeModelSlice;\n};\n\nexport const getHumanReadableModelName = (\n\tconfig: GetModelHumanNameConfig,\n): string => {\n\tif (isCustomTypeModel(config.model)) {\n\t\treturn config.model.label;\n\t} else if (isSharedSliceModel(config.model)) {\n\t\treturn config.model.name;\n\t} else if (\n\t\tisCustomTypeModelField(config.model) &&\n\t\t\"label\" in config.model.config\n\t) {\n\t\treturn config.model.config.label;\n\t} else if (isCustomTypeModelSlice(config.model)) {\n\t\treturn config.model.fieldset;\n\t} else {\n\t\t// Slice Zone\n\t\treturn `Slice Zone (\\`${config.id}\\`)`;\n\t}\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\n\nimport { PathElement } from \"../types\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\n\ntype GetHumanReadableFieldPathConfig = {\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n};\n\nexport const getHumanReadableFieldPath = (\n\tconfig: GetHumanReadableFieldPathConfig,\n): string => {\n\treturn config.path\n\t\t.map((element) => {\n\t\t\tif (element.label) {\n\t\t\t\treturn element.label;\n\t\t\t} else if (element.model) {\n\t\t\t\treturn getHumanReadableModelName({\n\t\t\t\t\tid: element.id,\n\t\t\t\t\tmodel: element.model,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn element.id;\n\t\t\t}\n\t\t})\n\t\t.join(\" → \");\n};\n","import type { CustomTypeModelField } from \"@prismicio/types\";\nimport { CustomTypeModelLinkSelectType } from \"@prismicio/types\";\n\ntype GetFieldHumanReadableTypeConfig = {\n\tmodel: CustomTypeModelField;\n};\n\nexport const getHumanReadableFieldType = (\n\tconfig: GetFieldHumanReadableTypeConfig,\n): string => {\n\tswitch (config.model.type) {\n\t\tcase \"StructuredText\": {\n\t\t\tconst isTitleField =\n\t\t\t\t\"single\" in config.model.config &&\n\t\t\t\tconfig.model.config.single\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.every((blockType) => /heading/.test(blockType));\n\n\t\t\treturn isTitleField ? \"Title\" : \"Rich Text\";\n\t\t}\n\n\t\tcase \"IntegrationFields\": {\n\t\t\treturn `Integration Fields (Catalog: \\`${config.model.config.catalog}\\`)`;\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tswitch (config.model.config.select) {\n\t\t\t\tcase CustomTypeModelLinkSelectType.Document: {\n\t\t\t\t\treturn \"Content Relationship\";\n\t\t\t\t}\n\n\t\t\t\tcase CustomTypeModelLinkSelectType.Media: {\n\t\t\t\t\treturn \"Link to Media\";\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\treturn \"Link\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\treturn \"Slice Zone\";\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn config.model.type;\n\t\t}\n\t}\n};\n","import type { CodeBlockWriter } from \"ts-morph\";\n\ntype BuildFieldDocsConfig = {\n\twriter: CodeBlockWriter;\n\tdescription?: string;\n\tfieldType?: string;\n\tdefaultValue?: string | boolean;\n\tplaceholder?: string;\n\tapiIDPath?: string;\n\ttabName?: string;\n\tdocumentationURL?: string;\n};\n\nexport const writeFieldDocsDescription = (\n\tconfig: BuildFieldDocsConfig,\n): void => {\n\tif (config.description) {\n\t\tconfig.writer.writeLine(config.description);\n\t}\n\n\tconfig.writer.blankLineIfLastNot();\n\n\tif (config.fieldType) {\n\t\tconfig.writer.writeLine(`- **Field Type**: ${config.fieldType}`);\n\t}\n\n\tif (config.placeholder) {\n\t\tconfig.writer.writeLine(`- **Placeholder**: ${config.placeholder}`);\n\t}\n\n\tif (config.defaultValue !== undefined) {\n\t\tconst stringifiedDefaultValue =\n\t\t\ttypeof config.defaultValue === \"boolean\"\n\t\t\t\t? `${config.defaultValue}`\n\t\t\t\t: config.defaultValue;\n\n\t\tconfig.writer.writeLine(`- **Default Value**: ${stringifiedDefaultValue}`);\n\t}\n\n\tif (config.apiIDPath) {\n\t\tconfig.writer.writeLine(`- **API ID Path**: ${config.apiIDPath}`);\n\t}\n\n\tif (config.tabName) {\n\t\tconfig.writer.writeLine(`- **Tab**: ${config.tabName}`);\n\t}\n\n\tif (config.documentationURL) {\n\t\tconfig.writer.writeLine(`- **Documentation**: ${config.documentationURL}`);\n\t}\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport type { JSDocableNodeStructure } from \"ts-morph\";\n\nimport { PathElement } from \"../types\";\nimport { getAPIIDPath } from \"./getAPIIDPath\";\nimport { getFieldDocumentationURL } from \"./getFieldDocumentationURL\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { getHumanReadableFieldType } from \"./getHumanReadableFieldType\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\nimport { writeFieldDocsDescription } from \"./writeFieldDocsDescription\";\n\ntype BuildFieldDocsConfig = {\n\tid: string;\n\tmodel: CustomTypeModelField;\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n\ttabName?: string;\n};\n\nexport const buildFieldDocs = (\n\tconfig: BuildFieldDocsConfig,\n): NonNullable<JSDocableNodeStructure[\"docs\"]> => {\n\treturn [\n\t\t{\n\t\t\tdescription: (writer) => {\n\t\t\t\tconst name = getHumanReadableModelName({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t});\n\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\tpath: config.path,\n\t\t\t\t});\n\n\t\t\t\tconst fieldType = getHumanReadableFieldType({\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t});\n\n\t\t\t\tconst placeholder =\n\t\t\t\t\t\"placeholder\" in config.model.config &&\n\t\t\t\t\tconfig.model.config.placeholder\n\t\t\t\t\t\t? config.model.config.placeholder\n\t\t\t\t\t\t: `*None*`;\n\n\t\t\t\tconst defaultValue =\n\t\t\t\t\t\"default_value\" in config.model.config\n\t\t\t\t\t\t? config.model.config.default_value\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\tconst apiIDPath = getAPIIDPath({\n\t\t\t\t\tpath: [...config.path, { id: config.id, model: config.model }],\n\t\t\t\t});\n\n\t\t\t\twriteFieldDocsDescription({\n\t\t\t\t\twriter,\n\t\t\t\t\tdescription: `${name} field in *${humanReadablePath}*`,\n\t\t\t\t\tfieldType,\n\t\t\t\t\tplaceholder,\n\t\t\t\t\tdefaultValue,\n\t\t\t\t\tapiIDPath,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\tdocumentationURL: getFieldDocumentationURL({ model: config.model }),\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t];\n};\n","import {\n\tpascalCase as pascalCaseBase,\n\tpascalCaseTransformMerge,\n} from \"pascal-case\";\n\nexport const pascalCase = (input: string): string =>\n\tpascalCaseBase(input, {\n\t\ttransform: pascalCaseTransformMerge,\n\t});\n","import { pascalCase } from \"./pascalCase\";\n\ntype BuildSharedSliceInterfaceNameConfig = {\n\tid: string;\n};\n\nexport const buildSharedSliceInterfaceName = (\n\tconfig: BuildSharedSliceInterfaceNameConfig,\n): string => {\n\treturn pascalCase(`${config.id} Slice`);\n};\n","import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/types\";\nimport {\n\tCustomTypeModelSliceType,\n\tCustomTypeModelLinkSelectType,\n} from \"@prismicio/types\";\nimport type { InterfaceDeclaration, SourceFile } from \"ts-morph\";\n\nimport { FieldConfigs, PathElement } from \"../types\";\nimport { buildFieldDocs } from \"./buildFieldDocs\";\nimport { buildSharedSliceInterfaceName } from \"./buildSharedSliceInterfaceName\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { pascalCase } from \"./pascalCase\";\n\ntype AddInterfacePropertyFromFieldConfig = {\n\tid: string;\n\tmodel: CustomTypeModelField;\n\tinterface: InterfaceDeclaration;\n\tsourceFile: SourceFile;\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n\tfieldConfigs: FieldConfigs;\n\ttabName?: string;\n};\n\nconst addInterfacePropertyForField = (\n\tconfig: AddInterfacePropertyFromFieldConfig,\n) => {\n\tswitch (config.model.type) {\n\t\tcase \"UID\": {\n\t\t\t// UID fields are not included in Data.\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Boolean\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.BooleanField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Color\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.ColorField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Date\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.DateField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Embed\": {\n\t\t\tconst providerTypes: string[] = [];\n\n\t\t\tif (config.fieldConfigs.embed?.providerTypes) {\n\t\t\t\tfor (const providerType in config.fieldConfigs.embed?.providerTypes) {\n\t\t\t\t\tconst configuredProviderType =\n\t\t\t\t\t\tconfig.fieldConfigs.embed?.providerTypes[providerType];\n\n\t\t\t\t\tproviderTypes.push(\n\t\t\t\t\t\t`({ provider_name: \"${providerType}\" } & ${configuredProviderType})`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype:\n\t\t\t\t\tproviderTypes.length > 0\n\t\t\t\t\t\t? `prismicT.EmbedField<prismicT.AnyOEmbed & prismicT.OEmbedExtra & (${providerTypes.join(\n\t\t\t\t\t\t\t\t\" | \",\n\t\t\t\t\t\t )})>`\n\t\t\t\t\t\t: \"prismicT.EmbedField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"GeoPoint\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.GeoPointField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Image\": {\n\t\t\tif (config.model.config.thumbnails.length > 0) {\n\t\t\t\tconst thumbnailNames = config.model.config.thumbnails\n\t\t\t\t\t.map((thumbnail) => `\"${thumbnail.name}\"`)\n\t\t\t\t\t.join(\" | \");\n\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismicT.ImageField<${thumbnailNames}>`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismicT.ImageField<null>\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"IntegrationFields\": {\n\t\t\tconst catalogType =\n\t\t\t\tconfig.fieldConfigs.integrationFields?.catalogTypes?.[\n\t\t\t\t\tconfig.model.config.catalog\n\t\t\t\t];\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: catalogType\n\t\t\t\t\t? `prismicT.IntegrationFields<${catalogType}>`\n\t\t\t\t\t: \"prismicT.IntegrationFields\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tswitch (config.model.config.select) {\n\t\t\t\tcase CustomTypeModelLinkSelectType.Document: {\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\tconfig.model.config.customtypes &&\n\t\t\t\t\t\t\tconfig.model.config.customtypes.length > 0\n\t\t\t\t\t\t\t\t? `prismicT.RelationField<${config.model.config.customtypes\n\t\t\t\t\t\t\t\t\t\t.map((type) => `\"${type}\"`)\n\t\t\t\t\t\t\t\t\t\t.join(\" | \")}>`\n\t\t\t\t\t\t\t\t: \"prismicT.RelationField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CustomTypeModelLinkSelectType.Media: {\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype: \"prismicT.LinkToMediaField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype: \"prismicT.LinkField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Number\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.NumberField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"StructuredText\": {\n\t\t\tconst isTitleField =\n\t\t\t\t\"single\" in config.model.config &&\n\t\t\t\tconfig.model.config.single\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.every((blockType) => /heading/.test(blockType));\n\n\t\t\tif (isTitleField) {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismicT.TitleField\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismicT.RichTextField\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Select\": {\n\t\t\tconst options = config.model.config.options\n\t\t\t\t.map((option) => `\"${option}\"`)\n\t\t\t\t.join(\" | \");\n\t\t\tconst hasDefault = Boolean(config.model.config.default_value);\n\n\t\t\tif (hasDefault) {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismicT.SelectField<${options}, \"filled\">`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismicT.SelectField<${options}>`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Text\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.KeyTextField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Timestamp\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismicT.TimestampField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Group\": {\n\t\t\tconst itemInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} Item`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tisExported: true,\n\t\t\t});\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tinterface: itemInterface,\n\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\tfields: config.model.config.fields,\n\t\t\t\tpath: [\n\t\t\t\t\t...config.path,\n\t\t\t\t\t{\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t});\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: `prismicT.GroupField<Simplify<${itemInterface.getName()}>>`,\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\tconst choiceInterfaceNames: string[] = [];\n\n\t\t\tfor (const choiceId in config.model.config.choices) {\n\t\t\t\tconst choice = config.model.config.choices[choiceId];\n\n\t\t\t\tif (choice.type === CustomTypeModelSliceType.SharedSlice) {\n\t\t\t\t\tchoiceInterfaceNames.push(\n\t\t\t\t\t\tbuildSharedSliceInterfaceName({ id: choiceId }),\n\t\t\t\t\t);\n\t\t\t\t} else if (choice.type === CustomTypeModelSliceType.Slice) {\n\t\t\t\t\tlet primaryInterface: InterfaceDeclaration | undefined;\n\t\t\t\t\tif (Object.keys(choice[\"non-repeat\"]).length > 0) {\n\t\t\t\t\t\tprimaryInterface = config.sourceFile.addInterface({\n\t\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice Primary`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tdocs: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\twriter.writeLine(`Primary content in ${humanReadablePath}`);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t});\n\t\t\t\t\t\taddInterfacePropertiesForFields({\n\t\t\t\t\t\t\tinterface: primaryInterface,\n\t\t\t\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\t\t\t\tfields: choice[\"non-repeat\"],\n\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tlet itemInterface: InterfaceDeclaration | undefined;\n\t\t\t\t\tif (Object.keys(choice.repeat).length > 0) {\n\t\t\t\t\t\titemInterface = config.sourceFile.addInterface({\n\t\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice Item`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tdocs: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tisExported: true,\n\t\t\t\t\t\t});\n\t\t\t\t\t\taddInterfacePropertiesForFields({\n\t\t\t\t\t\t\tinterface: itemInterface,\n\t\t\t\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\t\t\t\tfields: choice.repeat,\n\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconst sliceType = config.sourceFile.addTypeAlias({\n\t\t\t\t\t\tname: pascalCase(\n\t\t\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} ${choiceId} Slice`,\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttype: `prismicT.Slice<\"${choiceId}\", ${\n\t\t\t\t\t\t\tprimaryInterface\n\t\t\t\t\t\t\t\t? `Simplify<${primaryInterface.getName()}>`\n\t\t\t\t\t\t\t\t: \"Record<string, never>\"\n\t\t\t\t\t\t}, ${\n\t\t\t\t\t\t\titemInterface ? `Simplify<${itemInterface.getName()}>` : \"never\"\n\t\t\t\t\t\t}>`,\n\t\t\t\t\t\tisExported: true,\n\t\t\t\t\t});\n\n\t\t\t\t\tchoiceInterfaceNames.push(sliceType.getName());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst slicesType = config.sourceFile.addTypeAlias({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${config.path[0].id} Document Data ${config.id} Slice`,\n\t\t\t\t),\n\t\t\t\ttype:\n\t\t\t\t\tchoiceInterfaceNames.length > 0\n\t\t\t\t\t\t? choiceInterfaceNames.join(\" | \")\n\t\t\t\t\t\t: \"never\",\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Slice for *${humanReadablePath}*`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: `prismicT.SliceZone<${slicesType.getName()}>`,\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"unknown\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\t\t}\n\t}\n};\n\ntype AddInterfacePropertiesForFieldsConfig = Omit<\n\tAddInterfacePropertyFromFieldConfig,\n\t\"id\" | \"model\"\n> & {\n\tfields: Record<string, AddInterfacePropertyFromFieldConfig[\"model\"]>;\n\ttabName?: string;\n};\n\nexport const addInterfacePropertiesForFields = (\n\tconfig: AddInterfacePropertiesForFieldsConfig,\n) => {\n\tfor (const name in config.fields) {\n\t\taddInterfacePropertyForField({\n\t\t\t...config,\n\t\t\tid: name.includes(\"-\") ? `\"${name}\"` : name,\n\t\t\tmodel: config.fields[name],\n\t\t\ttabName: config.tabName,\n\t\t});\n\t}\n};\n","import type { CustomTypeModel, CustomTypeModelField } from \"@prismicio/types\";\nimport type {\n\tSourceFile,\n\tTypeAliasDeclaration,\n\tInterfaceDeclaration,\n} from \"ts-morph\";\nimport { CUSTOM_TYPES_DOCUMENTATION_URL } from \"../constants\";\nimport { FieldConfigs } from \"../types\";\n\nimport { addInterfacePropertiesForFields } from \"./addInterfacePropertiesForFields\";\nimport { pascalCase } from \"./pascalCase\";\n\nconst collectCustomTypeFields = (\n\tmodel: CustomTypeModel,\n): Record<string, CustomTypeModelField> => {\n\treturn Object.assign({}, ...Object.values(model.json));\n};\n\ntype AddTypeAliasForCustomTypeConfig = {\n\tmodel: CustomTypeModel;\n\tsourceFile: SourceFile;\n\tlocaleIDs: string[];\n\tfieldConfigs: FieldConfigs;\n};\n\nexport const addTypeAliasForCustomType = ({\n\tmodel,\n\tsourceFile,\n\tlocaleIDs,\n\tfieldConfigs,\n}: AddTypeAliasForCustomTypeConfig): TypeAliasDeclaration => {\n\tconst { uid: uidField, ...fields } = collectCustomTypeFields(model);\n\tconst hasDataFields = Object.keys(fields).length > 0;\n\tconst hasUIDField = Boolean(uidField);\n\n\tlet dataInterface: InterfaceDeclaration | TypeAliasDeclaration;\n\tif (hasDataFields) {\n\t\tdataInterface = sourceFile.addInterface({\n\t\t\tname: pascalCase(`${model.id} Document Data`),\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: `Content for ${model.label} documents`,\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\n\t\tfor (const tabName in model.json) {\n\t\t\t// This is destructured to ensure the UID field is\n\t\t\t// ignored.\n\t\t\tconst { uid: _uidField, ...tabFields } = model.json[tabName];\n\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tfields: tabFields,\n\t\t\t\tinterface: dataInterface,\n\t\t\t\tsourceFile: sourceFile,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: model.id,\n\t\t\t\t\t\tmodel: model,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs,\n\t\t\t\ttabName,\n\t\t\t});\n\t\t}\n\t} else {\n\t\tdataInterface = sourceFile.addTypeAlias({\n\t\t\tname: pascalCase(`${model.id} Document Data`),\n\t\t\ttype: `Record<string, never>`,\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: `Content for ${model.label} documents`,\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t}\n\n\treturn sourceFile.addTypeAlias({\n\t\tname: pascalCase(`${model.id} Document`),\n\t\ttypeParameters: [\n\t\t\t{\n\t\t\t\tname: \"Lang\",\n\t\t\t\tconstraint: \"string\",\n\t\t\t\tdefault:\n\t\t\t\t\tlocaleIDs.length > 0\n\t\t\t\t\t\t? localeIDs.map((localeID) => `\"${localeID}\"`).join(\" | \")\n\t\t\t\t\t\t: \"string\",\n\t\t\t},\n\t\t],\n\t\ttype: hasUIDField\n\t\t\t? `prismicT.PrismicDocumentWithUID<Simplify<${dataInterface.getName()}>, \"${\n\t\t\t\t\tmodel.id\n\t\t\t }\", Lang>`\n\t\t\t: `prismicT.PrismicDocumentWithoutUID<Simplify<${dataInterface.getName()}>, \"${\n\t\t\t\t\tmodel.id\n\t\t\t }\", Lang>`,\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\twriter.writeLine(`${model.label} document from Prismic`);\n\t\t\t\t\twriter.blankLine();\n\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${model.id}\\``);\n\t\t\t\t\twriter.writeLine(`- **Repeatable**: \\`${model.repeatable}\\``);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Documentation**: ${CUSTOM_TYPES_DOCUMENTATION_URL}`,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\ttags: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttagName: \"typeParam\",\n\t\t\t\t\t\ttext: \"Lang - Language API ID of the document.\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tisExported: true,\n\t});\n};\n","import type { SharedSliceModel } from \"@prismicio/types\";\nimport type {\n\tInterfaceDeclaration,\n\tSourceFile,\n\tTypeAliasDeclaration,\n} from \"ts-morph\";\n\nimport { addInterfacePropertiesForFields } from \"./addInterfacePropertiesForFields\";\nimport { buildSharedSliceInterfaceName } from \"./buildSharedSliceInterfaceName\";\nimport { pascalCase } from \"./pascalCase\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\nimport { SHARED_SLICES_DOCUMENTATION_URL } from \"../constants\";\nimport { FieldConfigs } from \"../types\";\n\ntype AddTypeAliasForSharedSliceConfig = {\n\tmodel: SharedSliceModel;\n\tsourceFile: SourceFile;\n\tfieldConfigs: FieldConfigs;\n};\n\nexport const addTypeAliasForSharedSlice = (\n\tconfig: AddTypeAliasForSharedSliceConfig,\n): TypeAliasDeclaration => {\n\tconst variationTypeNames: string[] = [];\n\n\tfor (const variation of config.model.variations) {\n\t\tlet primaryInterface: InterfaceDeclaration | undefined;\n\t\tif (Object.keys(variation.primary).length > 0) {\n\t\t\tprimaryInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${buildSharedSliceInterfaceName({ id: config.model.id })} ${\n\t\t\t\t\t\tvariation.id\n\t\t\t\t\t} Primary`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Primary content in ${humanReadablePath}`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tinterface: primaryInterface,\n\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\tfields: variation.primary,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t});\n\t\t}\n\n\t\tlet itemInterface: InterfaceDeclaration | undefined;\n\t\tif (Object.keys(variation.items).length > 0) {\n\t\t\titemInterface = config.sourceFile.addInterface({\n\t\t\t\tname: pascalCase(\n\t\t\t\t\t`${buildSharedSliceInterfaceName({ id: config.model.id })} ${\n\t\t\t\t\t\tvariation.id\n\t\t\t\t\t} Item`,\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tisExported: true,\n\t\t\t});\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tinterface: itemInterface,\n\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\tfields: variation.items,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t});\n\t\t}\n\n\t\tconst variationType = config.sourceFile.addTypeAlias({\n\t\t\tname: pascalCase(\n\t\t\t\t`${buildSharedSliceInterfaceName({\n\t\t\t\t\tid: config.model.id,\n\t\t\t\t})} ${variation.id}`,\n\t\t\t),\n\t\t\ttype: `prismicT.SharedSliceVariation<\"${variation.id}\", ${\n\t\t\t\tprimaryInterface\n\t\t\t\t\t? `Simplify<${primaryInterface.getName()}>`\n\t\t\t\t\t: \"Record<string, never>\"\n\t\t\t}, ${itemInterface ? `Simplify<${itemInterface.getName()}>` : \"never\"}>`,\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t\t`${variation.name} variation for ${config.model.name} Slice`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\twriter.blankLine();\n\t\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${variation.id}\\``);\n\t\t\t\t\t\twriter.writeLine(`- **Description**: \\`${variation.description}\\``);\n\t\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t\t`- **Documentation**: ${SHARED_SLICES_DOCUMENTATION_URL}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\tisExported: true,\n\t\t});\n\n\t\tvariationTypeNames.push(variationType.getName());\n\t}\n\n\tconst variationsType = config.sourceFile.addTypeAlias({\n\t\tname: pascalCase(`${config.model.id} Slice Variation`),\n\t\ttype:\n\t\t\tvariationTypeNames.length > 0 ? variationTypeNames.join(\" | \") : \"never\",\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: config.model.id,\n\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\n\t\t\t\t\twriter.writeLine(`Slice variation for *${humanReadablePath}*`);\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t});\n\n\treturn config.sourceFile.addTypeAlias({\n\t\tname: pascalCase(\n\t\t\tbuildSharedSliceInterfaceName({\n\t\t\t\tid: config.model.id,\n\t\t\t}),\n\t\t),\n\t\ttype: `prismicT.SharedSlice<\"${\n\t\t\tconfig.model.id\n\t\t}\", ${variationsType.getName()}>`,\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\twriter.writeLine(`${config.model.name} Shared Slice`);\n\t\t\t\t\twriter.blankLine();\n\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${config.model.id}\\``);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Description**: \\`${config.model.description}\\``,\n\t\t\t\t\t);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Documentation**: ${SHARED_SLICES_DOCUMENTATION_URL}`,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tisExported: true,\n\t});\n};\n","import * as tsm from \"ts-morph\";\n// import prettier from \"prettier\";\n\nimport { BLANK_LINE_IDENTIFIER } from \"../constants\";\n\nexport const getSourceFileText = (sourceFile: tsm.SourceFile): string => {\n\tconst text = sourceFile\n\t\t.print()\n\t\t.replace(new RegExp(BLANK_LINE_IDENTIFIER, \"g\"), \"\");\n\n\treturn text;\n\n\t// return prettier.format(text, { parser: \"typescript\" });\n};\n","import { Project, ModuleDeclarationKind } from \"ts-morph\";\nimport type { CustomTypeModel, SharedSliceModel } from \"@prismicio/types\";\n\nimport { BLANK_LINE_IDENTIFIER, NON_EDITABLE_FILE_HEADER } from \"./constants\";\nimport { addTypeAliasForCustomType } from \"./lib/addTypeAliasForCustomType\";\nimport { addTypeAliasForSharedSlice } from \"./lib/addTypeAliasForSharedSlice\";\nimport { getSourceFileText } from \"./lib/getSourceFileText\";\nimport { FieldConfigs } from \"./types\";\nimport { pascalCase } from \"./lib/pascalCase\";\n\nexport type GenerateTypesConfig = {\n\tcustomTypeModels?: CustomTypeModel[];\n\tsharedSliceModels?: SharedSliceModel[];\n\tlocaleIDs?: string[];\n\tfieldConfigs?: FieldConfigs;\n\tclientIntegration?: {\n\t\tincludeCreateClientInterface?: boolean;\n\t};\n};\n\nexport const generateTypes = (config: GenerateTypesConfig = {}) => {\n\tconst project = new Project({\n\t\tuseInMemoryFileSystem: true,\n\t});\n\n\tconst sourceFile = project.createSourceFile(\"types.d.ts\");\n\n\tsourceFile.addImportDeclaration({\n\t\tmoduleSpecifier: \"@prismicio/types\",\n\t\tnamespaceImport: \"prismicT\",\n\t\tisTypeOnly: true,\n\t\tleadingTrivia: NON_EDITABLE_FILE_HEADER,\n\t});\n\n\tsourceFile.addStatements(BLANK_LINE_IDENTIFIER);\n\n\tsourceFile.addTypeAlias({\n\t\tname: \"Simplify\",\n\t\ttypeParameters: [\n\t\t\t{\n\t\t\t\tname: \"T\",\n\t\t\t},\n\t\t],\n\t\ttype: `{ [KeyType in keyof T]: T[KeyType] }`,\n\t});\n\n\tif (config.customTypeModels) {\n\t\tfor (const model of config.customTypeModels) {\n\t\t\taddTypeAliasForCustomType({\n\t\t\t\tmodel,\n\t\t\t\tsourceFile,\n\t\t\t\tlocaleIDs: config.localeIDs || [],\n\t\t\t\tfieldConfigs: config.fieldConfigs || {},\n\t\t\t});\n\t\t}\n\n\t\tif (config.customTypeModels.length > 0) {\n\t\t\tsourceFile.addTypeAlias({\n\t\t\t\tname: \"AllDocumentTypes\",\n\t\t\t\ttype: config.customTypeModels\n\t\t\t\t\t.map((customTypeModel) =>\n\t\t\t\t\t\tpascalCase(`${customTypeModel.id} Document`),\n\t\t\t\t\t)\n\t\t\t\t\t.join(\" | \"),\n\t\t\t\tisExported: true,\n\t\t\t});\n\t\t}\n\t}\n\n\tif (config.sharedSliceModels) {\n\t\tfor (const model of config.sharedSliceModels) {\n\t\t\taddTypeAliasForSharedSlice({\n\t\t\t\tmodel,\n\t\t\t\tsourceFile,\n\t\t\t\tfieldConfigs: config.fieldConfigs || {},\n\t\t\t});\n\t\t}\n\t}\n\n\tif (config.clientIntegration?.includeCreateClientInterface) {\n\t\tsourceFile.addImportDeclaration({\n\t\t\tmoduleSpecifier: \"@prismicio/client\",\n\t\t\tnamespaceImport: \"prismic\",\n\t\t\tisTypeOnly: true,\n\t\t});\n\n\t\tconst clientModuleDeclaration = sourceFile.addModule({\n\t\t\tname: '\"@prismicio/client\"',\n\t\t\thasDeclareKeyword: true,\n\t\t\tdeclarationKind: ModuleDeclarationKind.Module,\n\t\t});\n\n\t\tclientModuleDeclaration.addInterface({\n\t\t\tname: \"CreateClient\",\n\t\t\tcallSignatures: [\n\t\t\t\t{\n\t\t\t\t\tparameters: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"repositoryNameOrEndpoint\",\n\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"options\",\n\t\t\t\t\t\t\ttype: \"prismic.ClientConfig\",\n\t\t\t\t\t\t\thasQuestionToken: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\treturnType:\n\t\t\t\t\t\t(config.customTypeModels?.length || 0) > 0\n\t\t\t\t\t\t\t? \"prismic.Client<AllDocumentTypes>\"\n\t\t\t\t\t\t\t: \"prismic.Client\",\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t}\n\n\treturn getSourceFileText(sourceFile);\n};\n"],"names":["stripIndent","CustomTypeModelFieldType","CustomTypeModelLinkSelectType","pascalCaseBase","pascalCaseTransformMerge","CustomTypeModelSliceType","Project","ModuleDeclarationKind"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,6 +14,9 @@ declare type GenerateTypesConfig = {
|
|
|
14
14
|
sharedSliceModels?: SharedSliceModel[];
|
|
15
15
|
localeIDs?: string[];
|
|
16
16
|
fieldConfigs?: FieldConfigs;
|
|
17
|
+
clientIntegration?: {
|
|
18
|
+
includeCreateClientInterface?: boolean;
|
|
19
|
+
};
|
|
17
20
|
};
|
|
18
21
|
declare const generateTypes: (config?: GenerateTypesConfig) => string;
|
|
19
22
|
|
|
@@ -40,6 +43,26 @@ declare type Config = {
|
|
|
40
43
|
* relative to where the command is called.
|
|
41
44
|
*/
|
|
42
45
|
output?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Configuration for automatic `@prismicio/client` integration.
|
|
48
|
+
*/
|
|
49
|
+
clientIntegration?: {
|
|
50
|
+
/**
|
|
51
|
+
* Determines if a `@prismicio/client` integration with automatic typing
|
|
52
|
+
* should be included in the output.
|
|
53
|
+
*
|
|
54
|
+
* If set to `true`, Prismic clients will automatically be typed with the
|
|
55
|
+
* generated Custom Types and Slices.
|
|
56
|
+
*
|
|
57
|
+
* **Note**: If your project queries content from multiple Prismic
|
|
58
|
+
* repositories, set `includeCreateClientInterface` to `false` and manually
|
|
59
|
+
* provide the generated `AllDocumentTypes` type to `@prismicio/client`'s
|
|
60
|
+
* `createClient()` function instead.
|
|
61
|
+
*
|
|
62
|
+
* @defaultValue `true`
|
|
63
|
+
*/
|
|
64
|
+
includeCreateClientInterface?: boolean;
|
|
65
|
+
};
|
|
43
66
|
/**
|
|
44
67
|
* Configuration for languages for the Prismic repository.
|
|
45
68
|
*
|