prismic-ts-codegen 0.1.30 → 0.1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/configSchema.d.mts +2 -4
- package/dist/cli/configSchema.d.mts.map +1 -1
- package/dist/cli/configSchema.mjs +126 -2
- package/dist/cli/configSchema.mjs.map +1 -1
- package/dist/cli/constants.d.mts +1 -2
- package/dist/cli/constants.d.mts.map +1 -1
- package/dist/cli/loadConfig.mjs +7 -10
- package/dist/cli/loadConfig.mjs.map +1 -1
- package/dist/cli/loadLocaleIDs.mjs +0 -1
- package/dist/cli/loadLocaleIDs.mjs.map +1 -1
- package/dist/cli/loadModels.mjs +11 -10
- package/dist/cli/loadModels.mjs.map +1 -1
- package/dist/cli.d.mts +1 -1
- package/dist/cli.mjs +41 -16
- package/dist/cli.mjs.map +1 -1
- package/dist/constants.mjs.map +1 -1
- package/dist/detectTypesProvider.d.mts +2 -4
- package/dist/detectTypesProvider.d.mts.map +1 -1
- package/dist/detectTypesProvider.mjs.map +1 -1
- package/dist/generateTypes.d.mts +3 -5
- package/dist/generateTypes.d.mts.map +1 -1
- package/dist/generateTypes.mjs +15 -12
- package/dist/generateTypes.mjs.map +1 -1
- package/dist/lib/addBlankLine.mjs.map +1 -1
- package/dist/lib/addLine.mjs.map +1 -1
- package/dist/lib/addSection.mjs.map +1 -1
- package/dist/lib/addTrailingNewLine.mjs.map +1 -1
- package/dist/lib/buildCustomTypeDataType.mjs +2 -2
- package/dist/lib/buildCustomTypeDataType.mjs.map +1 -1
- package/dist/lib/buildCustomTypeType.mjs +2 -2
- package/dist/lib/buildCustomTypeType.mjs.map +1 -1
- package/dist/lib/buildFieldDocs.mjs +9 -4
- package/dist/lib/buildFieldDocs.mjs.map +1 -1
- package/dist/lib/buildFieldProperties.mjs +18 -14
- package/dist/lib/buildFieldProperties.mjs.map +1 -1
- package/dist/lib/buildSharedSliceType.mjs +10 -10
- package/dist/lib/buildSharedSliceType.mjs.map +1 -1
- package/dist/lib/buildTypeName.mjs +2 -2
- package/dist/lib/buildTypeName.mjs.map +1 -1
- package/dist/lib/buildUnion.mjs.map +1 -1
- package/dist/lib/checkHasUIDFIeld.mjs.map +1 -1
- package/dist/lib/dedent.mjs +11 -0
- package/dist/lib/dedent.mjs.map +1 -0
- package/dist/lib/getAPIIDPath.mjs.map +1 -1
- package/dist/lib/getCacheKey.mjs.map +1 -1
- package/dist/lib/getHumanReadableModelName.mjs.map +1 -1
- package/dist/lib/getHumanReadablePath.mjs.map +1 -1
- package/dist/package.mjs +7 -0
- package/dist/package.mjs.map +1 -0
- package/dist/types.d.mts +1 -3
- package/dist/types.d.mts.map +1 -1
- package/package.json +18 -25
- package/src/cli/index.ts +38 -22
- package/src/cli/loadConfig.ts +5 -11
- package/src/cli/loadLocaleIDs.ts +0 -1
- package/src/cli/loadModels.ts +27 -12
- package/src/generateTypes.ts +3 -3
- package/src/lib/buildCustomTypeDataType.ts +2 -2
- package/src/lib/buildCustomTypeType.ts +6 -6
- package/src/lib/buildFieldProperties.ts +7 -7
- package/src/lib/buildSharedSliceType.ts +22 -33
- package/src/lib/buildTypeName.ts +9 -4
- package/src/lib/dedent.ts +10 -0
package/dist/generateTypes.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { addLine } from "./lib/addLine.mjs";
|
|
2
2
|
import { addSection } from "./lib/addSection.mjs";
|
|
3
3
|
import { buildUnion } from "./lib/buildUnion.mjs";
|
|
4
|
+
import { dedent } from "./lib/dedent.mjs";
|
|
4
5
|
import { buildCustomTypeType } from "./lib/buildCustomTypeType.mjs";
|
|
5
6
|
import { buildSharedSliceType } from "./lib/buildSharedSliceType.mjs";
|
|
6
|
-
import { source } from "common-tags";
|
|
7
7
|
import QuickLRU from "quick-lru";
|
|
8
8
|
//#region src/generateTypes.ts
|
|
9
9
|
const cache = new QuickLRU({ maxSize: 1e3 });
|
|
@@ -83,7 +83,8 @@ type ContentRelationshipFieldWithData<
|
|
|
83
83
|
}
|
|
84
84
|
if (config.customTypeModels.length > 0) {
|
|
85
85
|
const allDocumentTypesUnionName = "AllDocumentTypes";
|
|
86
|
-
|
|
86
|
+
const allDocumentTypesUnion = buildUnion(allDocumentTypesTypeNames);
|
|
87
|
+
code = addSection(`export type ${allDocumentTypesUnionName} = ${allDocumentTypesUnion};`, code);
|
|
87
88
|
contentTypeNames.push(allDocumentTypesUnionName);
|
|
88
89
|
}
|
|
89
90
|
}
|
|
@@ -100,35 +101,37 @@ type ContentRelationshipFieldWithData<
|
|
|
100
101
|
}
|
|
101
102
|
if (config.clientIntegration?.includeCreateClientInterface || config.clientIntegration?.includeContentNamespace) {
|
|
102
103
|
let clientModuleCode = "";
|
|
103
|
-
if (config.clientIntegration.includeCreateClientInterface)
|
|
104
|
-
|
|
104
|
+
if (config.clientIntegration.includeCreateClientInterface) {
|
|
105
|
+
if ((config.customTypeModels?.length || 0) > 0) {
|
|
106
|
+
clientModuleCode = addSection(`interface CreateClient {
|
|
105
107
|
(repositoryNameOrEndpoint: string, options?: ${clientImportName}.ClientConfig): ${clientImportName}.Client<AllDocumentTypes>;
|
|
106
108
|
}`, clientModuleCode);
|
|
107
|
-
|
|
109
|
+
clientModuleCode = addSection(`interface CreateWriteClient {
|
|
108
110
|
(repositoryNameOrEndpoint: string, options: ${clientImportName}.WriteClientConfig): ${clientImportName}.WriteClient<AllDocumentTypes>;
|
|
109
111
|
}`, clientModuleCode);
|
|
110
|
-
|
|
112
|
+
clientModuleCode = addSection(`interface CreateMigration {
|
|
111
113
|
(): ${clientImportName}.Migration<AllDocumentTypes>;
|
|
112
114
|
}`, clientModuleCode);
|
|
113
|
-
|
|
114
|
-
|
|
115
|
+
} else {
|
|
116
|
+
clientModuleCode = addSection(`interface CreateClient {
|
|
115
117
|
(repositoryNameOrEndpoint: string, options?: ${clientImportName}.ClientConfig): ${clientImportName}.Client;
|
|
116
118
|
}`, clientModuleCode);
|
|
117
|
-
|
|
119
|
+
clientModuleCode = addSection(`interface CreateWriteClient {
|
|
118
120
|
(repositoryNameOrEndpoint: string, options?: ${clientImportName}.WriteClientConfig): ${clientImportName}.WriteClient;
|
|
119
121
|
}`, clientModuleCode);
|
|
120
|
-
|
|
122
|
+
clientModuleCode = addSection(`interface CreateMigration {
|
|
121
123
|
(): ${clientImportName}.Migration;
|
|
122
124
|
}`, clientModuleCode);
|
|
125
|
+
}
|
|
123
126
|
}
|
|
124
|
-
if (config.clientIntegration.includeContentNamespace) clientModuleCode = addSection(
|
|
127
|
+
if (config.clientIntegration.includeContentNamespace) clientModuleCode = addSection(dedent`
|
|
125
128
|
namespace Content {
|
|
126
129
|
export type {
|
|
127
130
|
${contentTypeNames.join(",\n")}
|
|
128
131
|
}
|
|
129
132
|
}
|
|
130
133
|
`, clientModuleCode);
|
|
131
|
-
code = addSection(
|
|
134
|
+
code = addSection(dedent`
|
|
132
135
|
declare module "@prismicio/client" {
|
|
133
136
|
${clientModuleCode}
|
|
134
137
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateTypes.mjs","names":[],"sources":["../src/generateTypes.ts"],"sourcesContent":["import type { CustomTypeModel, SharedSliceModel } from \"@prismicio/client\";\nimport
|
|
1
|
+
{"version":3,"file":"generateTypes.mjs","names":[],"sources":["../src/generateTypes.ts"],"sourcesContent":["import type { CustomTypeModel, SharedSliceModel } from \"@prismicio/client\";\nimport QuickLRU from \"quick-lru\";\n\nimport { addLine } from \"./lib/addLine\";\nimport { addSection } from \"./lib/addSection\";\nimport { buildCustomTypeType } from \"./lib/buildCustomTypeType\";\nimport { buildSharedSliceType } from \"./lib/buildSharedSliceType\";\nimport { buildUnion } from \"./lib/buildUnion\";\nimport { dedent } from \"./lib/dedent\";\nimport type { FieldConfigs } from \"./types\";\n\nexport type TypesProvider = \"@prismicio/client\" | \"@prismicio/types\";\n\nconst cache = new QuickLRU<string, unknown>({ maxSize: 1000 });\n\nexport type GenerateTypesConfig = {\n\tcustomTypeModels?: CustomTypeModel[];\n\tsharedSliceModels?: SharedSliceModel[];\n\tlocaleIDs?: string[];\n\tfieldConfigs?: FieldConfigs;\n\ttypesProvider?: TypesProvider;\n\tclientIntegration?: {\n\t\tincludeCreateClientInterface?: boolean;\n\t\tincludeContentNamespace?: boolean;\n\t};\n\tcache?: boolean;\n};\n\nexport function generateTypes(config: GenerateTypesConfig = {}): string {\n\tconst fieldConfigs = config.fieldConfigs || {};\n\tconst shouldUseCache = config.cache ?? true;\n\n\tlet code = \"\";\n\n\tconst typesProvider = config.typesProvider || \"@prismicio/types\";\n\tlet clientImportName = \"prismic\";\n\n\tcode = addLine(`import type * as prismic from \"${typesProvider}\";`, code);\n\n\tif (\n\t\tconfig.clientIntegration?.includeCreateClientInterface ||\n\t\tconfig.clientIntegration?.includeContentNamespace\n\t) {\n\t\tif (typesProvider !== \"@prismicio/client\") {\n\t\t\tclientImportName = \"prismicClient\";\n\n\t\t\t// This import declaration would be a duplicate if the types\n\t\t\t// provider is @prismicio/client.\n\t\t\tcode = addLine(`import type * as ${clientImportName} from \"@prismicio/client\";`, code);\n\t\t}\n\t}\n\n\tcode = addSection(`type Simplify<T> = { [KeyType in keyof T]: T[KeyType] };`, code);\n\n\tcode = addSection(\n\t\t`\ntype PickContentRelationshipFieldData<\n\tTRelationship extends prismic.CustomTypeModelFetchCustomTypeLevel1 | prismic.CustomTypeModelFetchCustomTypeLevel2 | prismic.CustomTypeModelFetchGroupLevel1 | prismic.CustomTypeModelFetchGroupLevel2,\n\tTData extends Record<string, prismic.AnyRegularField | prismic.GroupField | prismic.NestedGroupField | prismic.SliceZone>,\n\tTLang extends string\n> = |\n\t// Content relationship fields\n\t{\n\t\t[TSubRelationship in Extract<\n\t\t\tTRelationship[\"fields\"][number], prismic.CustomTypeModelFetchContentRelationshipLevel1\n\t\t> as TSubRelationship[\"id\"]]:\n\t\t\tContentRelationshipFieldWithData<TSubRelationship[\"customtypes\"], TLang>;\n\t} &\n\t// Group\n\t{\n\t\t[TGroup in Extract<\n\t\t\tTRelationship[\"fields\"][number], prismic.CustomTypeModelFetchGroupLevel1 | prismic.CustomTypeModelFetchGroupLevel2\n\t\t> as TGroup[\"id\"]]:\n\t\t\tTData[TGroup[\"id\"]] extends prismic.GroupField<infer TGroupData>\n\t\t\t\t? prismic.GroupField<PickContentRelationshipFieldData<TGroup, TGroupData, TLang>>\n\t\t\t\t: never\n\t} &\n\t// Other fields\n\t{\n\t\t[TFieldKey in Extract<TRelationship[\"fields\"][number], string>]:\n\t\t\tTFieldKey extends keyof TData ? TData[TFieldKey] : never;\n\t};\n\ntype ContentRelationshipFieldWithData<\n\tTCustomType extends readonly (prismic.CustomTypeModelFetchCustomTypeLevel1 | string)[] | readonly (prismic.CustomTypeModelFetchCustomTypeLevel2 | string)[],\n\tTLang extends string = string\n> = {\n\t[ID in Exclude<TCustomType[number], string>[\"id\"]]:\n\t\tprismic.ContentRelationshipField<\n\t\t\tID,\n\t\t\tTLang,\n\t\t\tPickContentRelationshipFieldData<\n\t\t\t\tExtract<TCustomType[number], { id: ID }>,\n\t\t\t\tExtract<prismic.Content.AllDocumentTypes, { type: ID }>[\"data\"],\n\t\t\t\tTLang\n\t\t\t>\n\t\t>\n}[Exclude<TCustomType[number], string>[\"id\"]];\n`,\n\t\tcode,\n\t);\n\n\tconst contentTypeNames: string[] = [];\n\n\tif (config.customTypeModels) {\n\t\tconst allDocumentTypesTypeNames: string[] = [];\n\n\t\tfor (const model of config.customTypeModels) {\n\t\t\tconst customTypeType = buildCustomTypeType({\n\t\t\t\tmodel,\n\t\t\t\tlocaleIDs: config.localeIDs,\n\t\t\t\tfieldConfigs,\n\t\t\t\tcache: shouldUseCache ? cache : undefined,\n\t\t\t});\n\n\t\t\tfor (const auxiliaryType of customTypeType.auxiliaryTypes) {\n\t\t\t\tcode = addSection(auxiliaryType.code, code);\n\t\t\t}\n\n\t\t\tcode = addSection(customTypeType.code, code);\n\n\t\t\tallDocumentTypesTypeNames.push(customTypeType.name);\n\n\t\t\tcontentTypeNames.push(customTypeType.name);\n\t\t\tcontentTypeNames.push(...customTypeType.contentTypeNames);\n\t\t}\n\n\t\tif (config.customTypeModels.length > 0) {\n\t\t\tconst allDocumentTypesUnionName = \"AllDocumentTypes\";\n\t\t\tconst allDocumentTypesUnion = buildUnion(allDocumentTypesTypeNames);\n\n\t\t\tcode = addSection(\n\t\t\t\t`export type ${allDocumentTypesUnionName} = ${allDocumentTypesUnion};`,\n\t\t\t\tcode,\n\t\t\t);\n\n\t\t\tcontentTypeNames.push(allDocumentTypesUnionName);\n\t\t}\n\t}\n\n\tif (config.sharedSliceModels) {\n\t\tfor (const model of config.sharedSliceModels) {\n\t\t\tconst sharedSliceType = buildSharedSliceType({\n\t\t\t\tmodel,\n\t\t\t\tfieldConfigs,\n\t\t\t\tcache: shouldUseCache ? cache : undefined,\n\t\t\t});\n\n\t\t\tfor (const auxiliaryType of sharedSliceType.auxiliaryTypes) {\n\t\t\t\tcode = addSection(auxiliaryType.code, code);\n\t\t\t}\n\n\t\t\tcode = addSection(sharedSliceType.code, code);\n\n\t\t\tcontentTypeNames.push(sharedSliceType.name);\n\t\t\tcontentTypeNames.push(...sharedSliceType.contentTypeNames);\n\t\t}\n\t}\n\n\tif (\n\t\tconfig.clientIntegration?.includeCreateClientInterface ||\n\t\tconfig.clientIntegration?.includeContentNamespace\n\t) {\n\t\tlet clientModuleCode = \"\";\n\n\t\tif (config.clientIntegration.includeCreateClientInterface) {\n\t\t\tif ((config.customTypeModels?.length || 0) > 0) {\n\t\t\t\tclientModuleCode = addSection(\n\t\t\t\t\t`interface CreateClient {\n\t(repositoryNameOrEndpoint: string, options?: ${clientImportName}.ClientConfig): ${clientImportName}.Client<AllDocumentTypes>;\n}`,\n\t\t\t\t\tclientModuleCode,\n\t\t\t\t);\n\t\t\t\tclientModuleCode = addSection(\n\t\t\t\t\t`interface CreateWriteClient {\n\t(repositoryNameOrEndpoint: string, options: ${clientImportName}.WriteClientConfig): ${clientImportName}.WriteClient<AllDocumentTypes>;\n}`,\n\t\t\t\t\tclientModuleCode,\n\t\t\t\t);\n\t\t\t\tclientModuleCode = addSection(\n\t\t\t\t\t`interface CreateMigration {\n\t(): ${clientImportName}.Migration<AllDocumentTypes>;\n}`,\n\t\t\t\t\tclientModuleCode,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tclientModuleCode = addSection(\n\t\t\t\t\t`interface CreateClient {\n\t(repositoryNameOrEndpoint: string, options?: ${clientImportName}.ClientConfig): ${clientImportName}.Client;\n}`,\n\t\t\t\t\tclientModuleCode,\n\t\t\t\t);\n\t\t\t\tclientModuleCode = addSection(\n\t\t\t\t\t`interface CreateWriteClient {\n\t(repositoryNameOrEndpoint: string, options?: ${clientImportName}.WriteClientConfig): ${clientImportName}.WriteClient;\n}`,\n\t\t\t\t\tclientModuleCode,\n\t\t\t\t);\n\t\t\t\tclientModuleCode = addSection(\n\t\t\t\t\t`interface CreateMigration {\n\t(): ${clientImportName}.Migration;\n}`,\n\t\t\t\t\tclientModuleCode,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (config.clientIntegration.includeContentNamespace) {\n\t\t\tclientModuleCode = addSection(\n\t\t\t\tdedent`\n\t\t\t\t\tnamespace Content {\n\t\t\t\t\t\texport type {\n\t\t\t\t\t\t\t${contentTypeNames.join(\",\\n\")}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t`,\n\t\t\t\tclientModuleCode,\n\t\t\t);\n\t\t}\n\n\t\tcode = addSection(\n\t\t\tdedent`\n\t\t\t\tdeclare module \"@prismicio/client\" {\n\t\t\t\t\t${clientModuleCode}\n\t\t\t\t}\n\t\t\t`,\n\t\t\tcode,\n\t\t);\n\t}\n\n\treturn code;\n}\n"],"mappings":";;;;;;;;AAaA,MAAM,QAAQ,IAAI,SAA0B,EAAE,SAAS,IAAK,CAAC;AAe7D,SAAgB,cAAc,SAA8B,CAAC,GAAW;CACvE,MAAM,eAAe,OAAO,gBAAgB,CAAC;CAC7C,MAAM,iBAAiB,OAAO,SAAS;CAEvC,IAAI,OAAO;CAEX,MAAM,gBAAgB,OAAO,iBAAiB;CAC9C,IAAI,mBAAmB;CAEvB,OAAO,QAAQ,kCAAkC,cAAc,KAAK,IAAI;CAExE,IACC,OAAO,mBAAmB,gCAC1B,OAAO,mBAAmB,yBAEtB;MAAA,kBAAkB,qBAAqB;GAC1C,mBAAmB;GAInB,OAAO,QAAQ,oBAAoB,iBAAiB,6BAA6B,IAAI;EACtF;;CAGD,OAAO,WAAW,4DAA4D,IAAI;CAElF,OAAO,WACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CA,IACD;CAEA,MAAM,mBAA6B,CAAC;CAEpC,IAAI,OAAO,kBAAkB;EAC5B,MAAM,4BAAsC,CAAC;EAE7C,KAAK,MAAM,SAAS,OAAO,kBAAkB;GAC5C,MAAM,iBAAiB,oBAAoB;IAC1C;IACA,WAAW,OAAO;IAClB;IACA,OAAO,iBAAiB,QAAQ,KAAA;GACjC,CAAC;GAED,KAAK,MAAM,iBAAiB,eAAe,gBAC1C,OAAO,WAAW,cAAc,MAAM,IAAI;GAG3C,OAAO,WAAW,eAAe,MAAM,IAAI;GAE3C,0BAA0B,KAAK,eAAe,IAAI;GAElD,iBAAiB,KAAK,eAAe,IAAI;GACzC,iBAAiB,KAAK,GAAG,eAAe,gBAAgB;EACzD;EAEA,IAAI,OAAO,iBAAiB,SAAS,GAAG;GACvC,MAAM,4BAA4B;GAClC,MAAM,wBAAwB,WAAW,yBAAyB;GAElE,OAAO,WACN,eAAe,0BAA0B,KAAK,sBAAsB,IACpE,IACD;GAEA,iBAAiB,KAAK,yBAAyB;EAChD;CACD;CAEA,IAAI,OAAO,mBACV,KAAK,MAAM,SAAS,OAAO,mBAAmB;EAC7C,MAAM,kBAAkB,qBAAqB;GAC5C;GACA;GACA,OAAO,iBAAiB,QAAQ,KAAA;EACjC,CAAC;EAED,KAAK,MAAM,iBAAiB,gBAAgB,gBAC3C,OAAO,WAAW,cAAc,MAAM,IAAI;EAG3C,OAAO,WAAW,gBAAgB,MAAM,IAAI;EAE5C,iBAAiB,KAAK,gBAAgB,IAAI;EAC1C,iBAAiB,KAAK,GAAG,gBAAgB,gBAAgB;CAC1D;CAGD,IACC,OAAO,mBAAmB,gCAC1B,OAAO,mBAAmB,yBACzB;EACD,IAAI,mBAAmB;EAEvB,IAAI,OAAO,kBAAkB,8BAA8B;GAC1D,KAAK,OAAO,kBAAkB,UAAU,KAAK,GAAG;IAC/C,mBAAmB,WAClB;gDAC2C,iBAAiB,kBAAkB,iBAAiB;IAE/F,gBACD;IACA,mBAAmB,WAClB;+CAC0C,iBAAiB,uBAAuB,iBAAiB;IAEnG,gBACD;IACA,mBAAmB,WAClB;OACE,iBAAiB;IAEnB,gBACD;GACD,OAAO;IACN,mBAAmB,WAClB;gDAC2C,iBAAiB,kBAAkB,iBAAiB;IAE/F,gBACD;IACA,mBAAmB,WAClB;gDAC2C,iBAAiB,uBAAuB,iBAAiB;IAEpG,gBACD;IACA,mBAAmB,WAClB;OACE,iBAAiB;IAEnB,gBACD;GACD;EACD;EAEA,IAAI,OAAO,kBAAkB,yBAC5B,mBAAmB,WAClB,MAAM;;;SAGD,iBAAiB,KAAK,KAAK,EAAE;;;OAIlC,gBACD;EAGD,OAAO,WACN,MAAM;;OAEF,iBAAiB;;MAGrB,IACD;CACD;CAEA,OAAO;AACR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addBlankLine.mjs","names":[],"sources":["../../src/lib/addBlankLine.ts"],"sourcesContent":["import { addTrailingNewLine } from \"./addTrailingNewLine\";\n\ntype AddBlankLineConfig = {\n\tforce?: boolean;\n};\n\nexport function addBlankLine(state: string, config?: AddBlankLineConfig): string {\n\tif ((!state || state.endsWith(\"\\n\\n\")) && !config?.force) {\n\t\treturn state;\n\t} else {\n\t\treturn addTrailingNewLine(state) + \"\\n\";\n\t}\n}\n"],"mappings":";;AAMA,SAAgB,aAAa,OAAe,QAAqC;
|
|
1
|
+
{"version":3,"file":"addBlankLine.mjs","names":[],"sources":["../../src/lib/addBlankLine.ts"],"sourcesContent":["import { addTrailingNewLine } from \"./addTrailingNewLine\";\n\ntype AddBlankLineConfig = {\n\tforce?: boolean;\n};\n\nexport function addBlankLine(state: string, config?: AddBlankLineConfig): string {\n\tif ((!state || state.endsWith(\"\\n\\n\")) && !config?.force) {\n\t\treturn state;\n\t} else {\n\t\treturn addTrailingNewLine(state) + \"\\n\";\n\t}\n}\n"],"mappings":";;AAMA,SAAgB,aAAa,OAAe,QAAqC;CAChF,KAAK,CAAC,SAAS,MAAM,SAAS,MAAM,MAAM,CAAC,QAAQ,OAClD,OAAO;MAEP,OAAO,mBAAmB,KAAK,IAAI;AAErC"}
|
package/dist/lib/addLine.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addLine.mjs","names":[],"sources":["../../src/lib/addLine.ts"],"sourcesContent":["import { addTrailingNewLine } from \"./addTrailingNewLine\";\n\nexport function addLine(line: string, state: string): string {\n\treturn addTrailingNewLine(state) + line;\n}\n"],"mappings":";;AAEA,SAAgB,QAAQ,MAAc,OAAuB;
|
|
1
|
+
{"version":3,"file":"addLine.mjs","names":[],"sources":["../../src/lib/addLine.ts"],"sourcesContent":["import { addTrailingNewLine } from \"./addTrailingNewLine\";\n\nexport function addLine(line: string, state: string): string {\n\treturn addTrailingNewLine(state) + line;\n}\n"],"mappings":";;AAEA,SAAgB,QAAQ,MAAc,OAAuB;CAC5D,OAAO,mBAAmB,KAAK,IAAI;AACpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addSection.mjs","names":[],"sources":["../../src/lib/addSection.ts"],"sourcesContent":["import { addBlankLine } from \"./addBlankLine\";\n\nexport function addSection(section: string, state: string): string {\n\treturn addBlankLine(state) + section;\n}\n"],"mappings":";;AAEA,SAAgB,WAAW,SAAiB,OAAuB;
|
|
1
|
+
{"version":3,"file":"addSection.mjs","names":[],"sources":["../../src/lib/addSection.ts"],"sourcesContent":["import { addBlankLine } from \"./addBlankLine\";\n\nexport function addSection(section: string, state: string): string {\n\treturn addBlankLine(state) + section;\n}\n"],"mappings":";;AAEA,SAAgB,WAAW,SAAiB,OAAuB;CAClE,OAAO,aAAa,KAAK,IAAI;AAC9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addTrailingNewLine.mjs","names":[],"sources":["../../src/lib/addTrailingNewLine.ts"],"sourcesContent":["type AddTrailingNewLineConfig = {\n\tforce?: boolean;\n};\n\nexport function addTrailingNewLine(state: string, config?: AddTrailingNewLineConfig): string {\n\tif ((!state || state.endsWith(\"\\n\")) && !config?.force) {\n\t\treturn state;\n\t} else {\n\t\treturn state + \"\\n\";\n\t}\n}\n"],"mappings":";AAIA,SAAgB,mBAAmB,OAAe,QAA2C;
|
|
1
|
+
{"version":3,"file":"addTrailingNewLine.mjs","names":[],"sources":["../../src/lib/addTrailingNewLine.ts"],"sourcesContent":["type AddTrailingNewLineConfig = {\n\tforce?: boolean;\n};\n\nexport function addTrailingNewLine(state: string, config?: AddTrailingNewLineConfig): string {\n\tif ((!state || state.endsWith(\"\\n\")) && !config?.force) {\n\t\treturn state;\n\t} else {\n\t\treturn state + \"\\n\";\n\t}\n}\n"],"mappings":";AAIA,SAAgB,mBAAmB,OAAe,QAA2C;CAC5F,KAAK,CAAC,SAAS,MAAM,SAAS,IAAI,MAAM,CAAC,QAAQ,OAChD,OAAO;MAEP,OAAO,QAAQ;AAEjB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { buildTypeName } from "./buildTypeName.mjs";
|
|
2
2
|
import { getHumanReadableModelName } from "./getHumanReadableModelName.mjs";
|
|
3
|
+
import { dedent } from "./dedent.mjs";
|
|
3
4
|
import { buildFieldProperties } from "./buildFieldProperties.mjs";
|
|
4
|
-
import { source } from "common-tags";
|
|
5
5
|
//#region src/lib/buildCustomTypeDataType.ts
|
|
6
6
|
function buildCustomTypeDataType(args) {
|
|
7
7
|
let code = "";
|
|
@@ -28,7 +28,7 @@ function buildCustomTypeDataType(args) {
|
|
|
28
28
|
auxiliaryTypes.push(...tabFieldProperties.auxiliaryTypes);
|
|
29
29
|
contentTypeNames.push(...tabFieldProperties.contentTypeNames);
|
|
30
30
|
}
|
|
31
|
-
if (fieldProperties) code =
|
|
31
|
+
if (fieldProperties) code = dedent`
|
|
32
32
|
/**
|
|
33
33
|
* Content for ${humanReadableName} documents
|
|
34
34
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildCustomTypeDataType.mjs","names":[],"sources":["../../src/lib/buildCustomTypeDataType.ts"],"sourcesContent":["import type { CustomTypeModel } from \"@prismicio/client\";\
|
|
1
|
+
{"version":3,"file":"buildCustomTypeDataType.mjs","names":[],"sources":["../../src/lib/buildCustomTypeDataType.ts"],"sourcesContent":["import type { CustomTypeModel } from \"@prismicio/client\";\n\nimport { buildTypeName } from \"../lib/buildTypeName\";\nimport type { AuxiliaryType, FieldConfigs } from \"../types\";\nimport { buildFieldProperties } from \"./buildFieldProperties\";\nimport { dedent } from \"./dedent\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\n\ntype BuildCustomTypeDataTypeArgs = {\n\tmodel: CustomTypeModel;\n\tfieldConfigs: FieldConfigs;\n};\n\ntype BuildCustomTypeDataTypeReturnValue = {\n\tname: string;\n\tcode: string;\n\tauxiliaryTypes: AuxiliaryType[];\n\tcontentTypeNames: string[];\n};\n\nexport function buildCustomTypeDataType(\n\targs: BuildCustomTypeDataTypeArgs,\n): BuildCustomTypeDataTypeReturnValue {\n\tlet code = \"\";\n\tconst auxiliaryTypes: AuxiliaryType[] = [];\n\tconst contentTypeNames: string[] = [];\n\n\tconst name = buildTypeName(args.model.id, \"Document\", \"Data\");\n\tconst humanReadableName = getHumanReadableModelName({\n\t\tname: args.model.id,\n\t\tmodel: args.model,\n\t});\n\n\tlet fieldProperties = \"\";\n\n\tfor (const tabName in args.model.json) {\n\t\tconst { uid: _uid, ...fields } = args.model.json[tabName];\n\n\t\tconst tabFieldProperties = buildFieldProperties({\n\t\t\tfields,\n\t\t\tfieldConfigs: args.fieldConfigs,\n\t\t\tpath: [\n\t\t\t\t{\n\t\t\t\t\tname: args.model.id,\n\t\t\t\t\tmodel: args.model,\n\t\t\t\t},\n\t\t\t],\n\t\t\ttabName,\n\t\t});\n\n\t\tfieldProperties += tabFieldProperties.code;\n\n\t\tauxiliaryTypes.push(...tabFieldProperties.auxiliaryTypes);\n\t\tcontentTypeNames.push(...tabFieldProperties.contentTypeNames);\n\t}\n\n\tif (fieldProperties) {\n\t\tcode = dedent`\n\t\t\t/**\n\t\t\t * Content for ${humanReadableName} documents\n\t\t\t */\n\t\t\tinterface ${name} {\n\t\t\t\t${fieldProperties}\n\t\t\t}\n\t\t`;\n\t} else {\n\t\tcode = `interface ${name} {}`;\n\t}\n\n\treturn {\n\t\tname,\n\t\tcode,\n\t\tauxiliaryTypes,\n\t\tcontentTypeNames,\n\t};\n}\n"],"mappings":";;;;;AAoBA,SAAgB,wBACf,MACqC;CACrC,IAAI,OAAO;CACX,MAAM,iBAAkC,CAAC;CACzC,MAAM,mBAA6B,CAAC;CAEpC,MAAM,OAAO,cAAc,KAAK,MAAM,IAAI,YAAY,MAAM;CAC5D,MAAM,oBAAoB,0BAA0B;EACnD,MAAM,KAAK,MAAM;EACjB,OAAO,KAAK;CACb,CAAC;CAED,IAAI,kBAAkB;CAEtB,KAAK,MAAM,WAAW,KAAK,MAAM,MAAM;EACtC,MAAM,EAAE,KAAK,MAAM,GAAG,WAAW,KAAK,MAAM,KAAK;EAEjD,MAAM,qBAAqB,qBAAqB;GAC/C;GACA,cAAc,KAAK;GACnB,MAAM,CACL;IACC,MAAM,KAAK,MAAM;IACjB,OAAO,KAAK;GACb,CACD;GACA;EACD,CAAC;EAED,mBAAmB,mBAAmB;EAEtC,eAAe,KAAK,GAAG,mBAAmB,cAAc;EACxD,iBAAiB,KAAK,GAAG,mBAAmB,gBAAgB;CAC7D;CAEA,IAAI,iBACH,OAAO,MAAM;;oBAEK,kBAAkB;;eAEvB,KAAK;MACd,gBAAgB;;;MAIpB,OAAO,aAAa,KAAK;CAG1B,OAAO;EACN;EACA;EACA;EACA;CACD;AACD"}
|
|
@@ -3,10 +3,10 @@ import { CUSTOM_TYPES_DOCUMENTATION_URL } from "../constants.mjs";
|
|
|
3
3
|
import { buildTypeName } from "./buildTypeName.mjs";
|
|
4
4
|
import { getHumanReadableModelName } from "./getHumanReadableModelName.mjs";
|
|
5
5
|
import { buildUnion } from "./buildUnion.mjs";
|
|
6
|
+
import { dedent } from "./dedent.mjs";
|
|
6
7
|
import { buildCustomTypeDataType } from "./buildCustomTypeDataType.mjs";
|
|
7
8
|
import { checkHasUIDField } from "./checkHasUIDFIeld.mjs";
|
|
8
9
|
import { getCacheKey } from "./getCacheKey.mjs";
|
|
9
|
-
import { source } from "common-tags";
|
|
10
10
|
//#region src/lib/buildCustomTypeType.ts
|
|
11
11
|
function buildCustomTypeType(args) {
|
|
12
12
|
if (args.cache) {
|
|
@@ -32,7 +32,7 @@ function buildCustomTypeType(args) {
|
|
|
32
32
|
contentTypeNames.push(dataType.name);
|
|
33
33
|
contentTypeNames.push(...dataType.contentTypeNames);
|
|
34
34
|
code = addSection(dataType.code, code);
|
|
35
|
-
code = addSection(
|
|
35
|
+
code = addSection(dedent`
|
|
36
36
|
/**
|
|
37
37
|
* ${humanReadableName} document from Prismic
|
|
38
38
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildCustomTypeType.mjs","names":[],"sources":["../../src/lib/buildCustomTypeType.ts"],"sourcesContent":["import type { CustomTypeModel } from \"@prismicio/client\";\nimport
|
|
1
|
+
{"version":3,"file":"buildCustomTypeType.mjs","names":[],"sources":["../../src/lib/buildCustomTypeType.ts"],"sourcesContent":["import type { CustomTypeModel } from \"@prismicio/client\";\nimport type QuickLRU from \"quick-lru\";\n\nimport { CUSTOM_TYPES_DOCUMENTATION_URL } from \"../constants\";\nimport type { AuxiliaryType, FieldConfigs } from \"../types\";\nimport { addSection } from \"./addSection\";\nimport { buildCustomTypeDataType } from \"./buildCustomTypeDataType\";\nimport { buildTypeName } from \"./buildTypeName\";\nimport { buildUnion } from \"./buildUnion\";\nimport { checkHasUIDField } from \"./checkHasUIDFIeld\";\nimport { dedent } from \"./dedent\";\nimport { getCacheKey } from \"./getCacheKey\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\n\ntype BuildCustomTypeTypesArgs = {\n\tmodel: CustomTypeModel;\n\tlocaleIDs?: string[];\n\tfieldConfigs: FieldConfigs;\n\tcache?: QuickLRU<string, unknown>;\n};\n\ntype BuildCustomTypeTypeReturnValue = {\n\tname: string;\n\tcode: string;\n\tauxiliaryTypes: AuxiliaryType[];\n\tcontentTypeNames: string[];\n};\n\nexport function buildCustomTypeType(\n\targs: BuildCustomTypeTypesArgs,\n): BuildCustomTypeTypeReturnValue {\n\tif (args.cache) {\n\t\tconst key = getCacheKey(args.model);\n\t\tconst cached = args.cache.get(key);\n\n\t\tif (cached) {\n\t\t\treturn cached as BuildCustomTypeTypeReturnValue;\n\t\t}\n\t}\n\n\tlet code = \"\";\n\n\tconst auxiliaryTypes: AuxiliaryType[] = [];\n\tconst contentTypeNames: string[] = [];\n\n\tconst name = buildTypeName(args.model.id, \"Document\");\n\tconst langDefault =\n\t\targs.localeIDs && args.localeIDs.length > 0\n\t\t\t? buildUnion(args.localeIDs.map((localeID) => `\"${localeID}\"`))\n\t\t\t: \"string\";\n\tconst baseDocumentType = checkHasUIDField(args.model)\n\t\t? \"PrismicDocumentWithUID\"\n\t\t: \"PrismicDocumentWithoutUID\";\n\tconst humanReadableName = getHumanReadableModelName({\n\t\tname: args.model.id,\n\t\tmodel: args.model,\n\t});\n\n\tconst dataType = buildCustomTypeDataType({\n\t\tmodel: args.model,\n\t\tfieldConfigs: args.fieldConfigs,\n\t});\n\n\tauxiliaryTypes.push(...dataType.auxiliaryTypes);\n\tcontentTypeNames.push(dataType.name);\n\tcontentTypeNames.push(...dataType.contentTypeNames);\n\n\tcode = addSection(dataType.code, code);\n\n\tcode = addSection(\n\t\tdedent`\n\t\t\t/**\n\t\t\t * ${humanReadableName} document from Prismic\n\t\t\t *\n\t\t\t * - **API ID**: \\`${args.model.id}\\`\n\t\t\t * - **Repeatable**: \\`${args.model.repeatable.toString()}\\`\n\t\t\t * - **Documentation**: ${CUSTOM_TYPES_DOCUMENTATION_URL}\n\t\t\t *\n\t\t\t * @typeParam Lang - Language API ID of the document.\n\t\t\t */\n\t\t\texport type ${name}<Lang extends string = ${langDefault}> = prismic.${baseDocumentType}<Simplify<${\n\t\t\t\tdataType.name\n\t\t\t}>, \"${args.model.id}\", Lang>;\n\t\t`,\n\t\tcode,\n\t);\n\n\tconst result = {\n\t\tname,\n\t\tcode,\n\t\tauxiliaryTypes,\n\t\tcontentTypeNames,\n\t};\n\n\tif (args.cache) {\n\t\tconst key = getCacheKey(args.model);\n\n\t\targs.cache.set(key, result);\n\t}\n\n\treturn result;\n}\n"],"mappings":";;;;;;;;;;AA4BA,SAAgB,oBACf,MACiC;CACjC,IAAI,KAAK,OAAO;EACf,MAAM,MAAM,YAAY,KAAK,KAAK;EAClC,MAAM,SAAS,KAAK,MAAM,IAAI,GAAG;EAEjC,IAAI,QACH,OAAO;CAET;CAEA,IAAI,OAAO;CAEX,MAAM,iBAAkC,CAAC;CACzC,MAAM,mBAA6B,CAAC;CAEpC,MAAM,OAAO,cAAc,KAAK,MAAM,IAAI,UAAU;CACpD,MAAM,cACL,KAAK,aAAa,KAAK,UAAU,SAAS,IACvC,WAAW,KAAK,UAAU,KAAK,aAAa,IAAI,SAAS,EAAE,CAAC,IAC5D;CACJ,MAAM,mBAAmB,iBAAiB,KAAK,KAAK,IACjD,2BACA;CACH,MAAM,oBAAoB,0BAA0B;EACnD,MAAM,KAAK,MAAM;EACjB,OAAO,KAAK;CACb,CAAC;CAED,MAAM,WAAW,wBAAwB;EACxC,OAAO,KAAK;EACZ,cAAc,KAAK;CACpB,CAAC;CAED,eAAe,KAAK,GAAG,SAAS,cAAc;CAC9C,iBAAiB,KAAK,SAAS,IAAI;CACnC,iBAAiB,KAAK,GAAG,SAAS,gBAAgB;CAElD,OAAO,WAAW,SAAS,MAAM,IAAI;CAErC,OAAO,WACN,MAAM;;QAEA,kBAAkB;;wBAEF,KAAK,MAAM,GAAG;4BACV,KAAK,MAAM,WAAW,SAAS,EAAE;6BAChC,+BAA+B;;;;iBAI3C,KAAK,yBAAyB,YAAY,cAAc,iBAAiB,YACtF,SAAS,KACT,MAAM,KAAK,MAAM,GAAG;KAEtB,IACD;CAEA,MAAM,SAAS;EACd;EACA;EACA;EACA;CACD;CAEA,IAAI,KAAK,OAAO;EACf,MAAM,MAAM,YAAY,KAAK,KAAK;EAElC,KAAK,MAAM,IAAI,KAAK,MAAM;CAC3B;CAEA,OAAO;AACR"}
|
|
@@ -47,13 +47,18 @@ function buildFieldDocs(args) {
|
|
|
47
47
|
result = addLine(` * ${humanReadableName} field in *${humanReadablePath}*`, result);
|
|
48
48
|
result = addLine(" *", result);
|
|
49
49
|
result = addLine(` * - **Field Type**: ${humanReadableFieldType}`, result);
|
|
50
|
-
|
|
50
|
+
const placeholder = args.field.config && "placeholder" in args.field.config && args.field.config.placeholder || `*None*`;
|
|
51
|
+
result = addLine(` * - **Placeholder**: ${placeholder}`, result);
|
|
51
52
|
const defaultValue = args.field.config && "default_value" in args.field.config ? args.field.config.default_value : void 0;
|
|
52
|
-
if (defaultValue !== void 0)
|
|
53
|
-
|
|
53
|
+
if (defaultValue !== void 0) {
|
|
54
|
+
const stringifiedDefaultValue = typeof defaultValue === "boolean" ? `${defaultValue}` : defaultValue;
|
|
55
|
+
result = addLine(` * - **Default Value**: ${stringifiedDefaultValue}`, result);
|
|
56
|
+
}
|
|
57
|
+
const apiIDPath = getAPIIDPath({ path: [...args.path, {
|
|
54
58
|
name: args.name,
|
|
55
59
|
model: args.field
|
|
56
|
-
}] })
|
|
60
|
+
}] });
|
|
61
|
+
result = addLine(` * - **API ID Path**: ${apiIDPath}`, result);
|
|
57
62
|
if (args.tabName) result = addLine(` * - **Tab**: ${args.tabName}`, result);
|
|
58
63
|
const documentationURL = getDocumentationURL({ field: args.field });
|
|
59
64
|
if (documentationURL) result = addLine(` * - **Documentation**: ${documentationURL}`, result);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildFieldDocs.mjs","names":[],"sources":["../../src/lib/buildFieldDocs.ts"],"sourcesContent":["import type { CustomTypeModelField } from \"@prismicio/client\";\n\nimport { FIELD_DOCUMENTATION_URLS } from \"../constants\";\nimport type { FieldPath } from \"../types\";\nimport { addLine } from \"./addLine\";\nimport { getAPIIDPath } from \"./getAPIIDPath\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\nimport { getHumanReadablePath } from \"./getHumanReadablePath\";\n\ntype GetFieldHumanReadableTypeArgs = {\n\tfield: CustomTypeModelField;\n};\n\nfunction getHumanReadableFieldType(args: GetFieldHumanReadableTypeArgs): string {\n\tswitch (args.field.type) {\n\t\tcase \"StructuredText\": {\n\t\t\treturn \"Rich Text\";\n\t\t}\n\n\t\tcase \"IntegrationFields\": {\n\t\t\tconst catalog = args.field.config?.catalog;\n\n\t\t\treturn `Integration Fields (Catalog: ${catalog ? `\\`${catalog}\\`` : \"*unknown*\"})`;\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tswitch (args.field.config?.select) {\n\t\t\t\tcase \"document\": {\n\t\t\t\t\treturn \"Content Relationship\";\n\t\t\t\t}\n\n\t\t\t\tcase \"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 args.field.type;\n\t\t}\n\t}\n}\n\ntype getDocumentationURLArgs = {\n\tfield: CustomTypeModelField;\n};\n\nfunction getDocumentationURL(args: getDocumentationURLArgs) {\n\tswitch (args.field.type) {\n\t\tcase \"Link\": {\n\t\t\tconst urls = FIELD_DOCUMENTATION_URLS.Link;\n\n\t\t\tswitch (args.field.config?.select) {\n\t\t\t\tcase \"document\": {\n\t\t\t\t\treturn urls.contentRelationship;\n\t\t\t\t}\n\n\t\t\t\tcase \"media\": {\n\t\t\t\t\treturn urls.linkToMedia;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\treturn urls.link;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdefault: {\n\t\t\tconst url =\n\t\t\t\tFIELD_DOCUMENTATION_URLS[args.field.type as keyof typeof FIELD_DOCUMENTATION_URLS];\n\n\t\t\tif (typeof url === \"string\") {\n\t\t\t\treturn url;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntype BuildFieldDocsArgs = {\n\tname: string;\n\tfield: CustomTypeModelField;\n\tpath: FieldPath;\n\ttabName?: string;\n};\n\nexport function buildFieldDocs(args: BuildFieldDocsArgs): string {\n\tlet result = \"/**\";\n\n\tconst humanReadableName = getHumanReadableModelName({\n\t\tmodel: args.field,\n\t\tname: args.name,\n\t});\n\tconst humanReadablePath = getHumanReadablePath({ path: args.path });\n\tconst humanReadableFieldType = getHumanReadableFieldType({\n\t\tfield: args.field,\n\t});\n\n\tresult = addLine(` * ${humanReadableName} field in *${humanReadablePath}*`, result);\n\n\tresult = addLine(\" *\", result);\n\n\tresult = addLine(` * - **Field Type**: ${humanReadableFieldType}`, result);\n\n\tconst placeholder =\n\t\t(args.field.config && \"placeholder\" in args.field.config && args.field.config.placeholder) ||\n\t\t`*None*`;\n\tresult = addLine(` * - **Placeholder**: ${placeholder}`, result);\n\n\tconst defaultValue =\n\t\targs.field.config && \"default_value\" in args.field.config\n\t\t\t? args.field.config.default_value\n\t\t\t: undefined;\n\tif (defaultValue !== undefined) {\n\t\tconst stringifiedDefaultValue =\n\t\t\ttypeof defaultValue === \"boolean\" ? `${defaultValue}` : defaultValue;\n\n\t\tresult = addLine(` * - **Default Value**: ${stringifiedDefaultValue}`, result);\n\t}\n\n\tconst apiIDPath = getAPIIDPath({\n\t\tpath: [...args.path, { name: args.name, model: args.field }],\n\t});\n\tresult = addLine(` * - **API ID Path**: ${apiIDPath}`, result);\n\n\tif (args.tabName) {\n\t\tresult = addLine(` * - **Tab**: ${args.tabName}`, result);\n\t}\n\n\tconst documentationURL = getDocumentationURL({ field: args.field });\n\tif (documentationURL) {\n\t\tresult = addLine(` * - **Documentation**: ${documentationURL}`, result);\n\t}\n\n\tresult = addLine(\" */\", result);\n\n\treturn result;\n}\n"],"mappings":";;;;;;AAaA,SAAS,0BAA0B,MAA6C;
|
|
1
|
+
{"version":3,"file":"buildFieldDocs.mjs","names":[],"sources":["../../src/lib/buildFieldDocs.ts"],"sourcesContent":["import type { CustomTypeModelField } from \"@prismicio/client\";\n\nimport { FIELD_DOCUMENTATION_URLS } from \"../constants\";\nimport type { FieldPath } from \"../types\";\nimport { addLine } from \"./addLine\";\nimport { getAPIIDPath } from \"./getAPIIDPath\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\nimport { getHumanReadablePath } from \"./getHumanReadablePath\";\n\ntype GetFieldHumanReadableTypeArgs = {\n\tfield: CustomTypeModelField;\n};\n\nfunction getHumanReadableFieldType(args: GetFieldHumanReadableTypeArgs): string {\n\tswitch (args.field.type) {\n\t\tcase \"StructuredText\": {\n\t\t\treturn \"Rich Text\";\n\t\t}\n\n\t\tcase \"IntegrationFields\": {\n\t\t\tconst catalog = args.field.config?.catalog;\n\n\t\t\treturn `Integration Fields (Catalog: ${catalog ? `\\`${catalog}\\`` : \"*unknown*\"})`;\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tswitch (args.field.config?.select) {\n\t\t\t\tcase \"document\": {\n\t\t\t\t\treturn \"Content Relationship\";\n\t\t\t\t}\n\n\t\t\t\tcase \"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 args.field.type;\n\t\t}\n\t}\n}\n\ntype getDocumentationURLArgs = {\n\tfield: CustomTypeModelField;\n};\n\nfunction getDocumentationURL(args: getDocumentationURLArgs) {\n\tswitch (args.field.type) {\n\t\tcase \"Link\": {\n\t\t\tconst urls = FIELD_DOCUMENTATION_URLS.Link;\n\n\t\t\tswitch (args.field.config?.select) {\n\t\t\t\tcase \"document\": {\n\t\t\t\t\treturn urls.contentRelationship;\n\t\t\t\t}\n\n\t\t\t\tcase \"media\": {\n\t\t\t\t\treturn urls.linkToMedia;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\treturn urls.link;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdefault: {\n\t\t\tconst url =\n\t\t\t\tFIELD_DOCUMENTATION_URLS[args.field.type as keyof typeof FIELD_DOCUMENTATION_URLS];\n\n\t\t\tif (typeof url === \"string\") {\n\t\t\t\treturn url;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntype BuildFieldDocsArgs = {\n\tname: string;\n\tfield: CustomTypeModelField;\n\tpath: FieldPath;\n\ttabName?: string;\n};\n\nexport function buildFieldDocs(args: BuildFieldDocsArgs): string {\n\tlet result = \"/**\";\n\n\tconst humanReadableName = getHumanReadableModelName({\n\t\tmodel: args.field,\n\t\tname: args.name,\n\t});\n\tconst humanReadablePath = getHumanReadablePath({ path: args.path });\n\tconst humanReadableFieldType = getHumanReadableFieldType({\n\t\tfield: args.field,\n\t});\n\n\tresult = addLine(` * ${humanReadableName} field in *${humanReadablePath}*`, result);\n\n\tresult = addLine(\" *\", result);\n\n\tresult = addLine(` * - **Field Type**: ${humanReadableFieldType}`, result);\n\n\tconst placeholder =\n\t\t(args.field.config && \"placeholder\" in args.field.config && args.field.config.placeholder) ||\n\t\t`*None*`;\n\tresult = addLine(` * - **Placeholder**: ${placeholder}`, result);\n\n\tconst defaultValue =\n\t\targs.field.config && \"default_value\" in args.field.config\n\t\t\t? args.field.config.default_value\n\t\t\t: undefined;\n\tif (defaultValue !== undefined) {\n\t\tconst stringifiedDefaultValue =\n\t\t\ttypeof defaultValue === \"boolean\" ? `${defaultValue}` : defaultValue;\n\n\t\tresult = addLine(` * - **Default Value**: ${stringifiedDefaultValue}`, result);\n\t}\n\n\tconst apiIDPath = getAPIIDPath({\n\t\tpath: [...args.path, { name: args.name, model: args.field }],\n\t});\n\tresult = addLine(` * - **API ID Path**: ${apiIDPath}`, result);\n\n\tif (args.tabName) {\n\t\tresult = addLine(` * - **Tab**: ${args.tabName}`, result);\n\t}\n\n\tconst documentationURL = getDocumentationURL({ field: args.field });\n\tif (documentationURL) {\n\t\tresult = addLine(` * - **Documentation**: ${documentationURL}`, result);\n\t}\n\n\tresult = addLine(\" */\", result);\n\n\treturn result;\n}\n"],"mappings":";;;;;;AAaA,SAAS,0BAA0B,MAA6C;CAC/E,QAAQ,KAAK,MAAM,MAAnB;EACC,KAAK,kBACJ,OAAO;EAGR,KAAK,qBAAqB;GACzB,MAAM,UAAU,KAAK,MAAM,QAAQ;GAEnC,OAAO,gCAAgC,UAAU,KAAK,QAAQ,MAAM,YAAY;EACjF;EAEA,KAAK,QACJ,QAAQ,KAAK,MAAM,QAAQ,QAA3B;GACC,KAAK,YACJ,OAAO;GAGR,KAAK,SACJ,OAAO;GAGR,SACC,OAAO;EAET;EAGD,KAAK,UACJ,OAAO;EAGR,SACC,OAAO,KAAK,MAAM;CAEpB;AACD;AAMA,SAAS,oBAAoB,MAA+B;CAC3D,QAAQ,KAAK,MAAM,MAAnB;EACC,KAAK,QAAQ;GACZ,MAAM,OAAO,yBAAyB;GAEtC,QAAQ,KAAK,MAAM,QAAQ,QAA3B;IACC,KAAK,YACJ,OAAO,KAAK;IAGb,KAAK,SACJ,OAAO,KAAK;IAGb,SACC,OAAO,KAAK;GAEd;EACD;EAEA,SAAS;GACR,MAAM,MACL,yBAAyB,KAAK,MAAM;GAErC,IAAI,OAAO,QAAQ,UAClB,OAAO;EAET;CACD;AACD;AASA,SAAgB,eAAe,MAAkC;CAChE,IAAI,SAAS;CAEb,MAAM,oBAAoB,0BAA0B;EACnD,OAAO,KAAK;EACZ,MAAM,KAAK;CACZ,CAAC;CACD,MAAM,oBAAoB,qBAAqB,EAAE,MAAM,KAAK,KAAK,CAAC;CAClE,MAAM,yBAAyB,0BAA0B,EACxD,OAAO,KAAK,MACb,CAAC;CAED,SAAS,QAAQ,MAAM,kBAAkB,aAAa,kBAAkB,IAAI,MAAM;CAElF,SAAS,QAAQ,MAAM,MAAM;CAE7B,SAAS,QAAQ,wBAAwB,0BAA0B,MAAM;CAEzE,MAAM,cACJ,KAAK,MAAM,UAAU,iBAAiB,KAAK,MAAM,UAAU,KAAK,MAAM,OAAO,eAC9E;CACD,SAAS,QAAQ,yBAAyB,eAAe,MAAM;CAE/D,MAAM,eACL,KAAK,MAAM,UAAU,mBAAmB,KAAK,MAAM,SAChD,KAAK,MAAM,OAAO,gBAClB,KAAA;CACJ,IAAI,iBAAiB,KAAA,GAAW;EAC/B,MAAM,0BACL,OAAO,iBAAiB,YAAY,GAAG,iBAAiB;EAEzD,SAAS,QAAQ,2BAA2B,2BAA2B,MAAM;CAC9E;CAEA,MAAM,YAAY,aAAa,EAC9B,MAAM,CAAC,GAAG,KAAK,MAAM;EAAE,MAAM,KAAK;EAAM,OAAO,KAAK;CAAM,CAAC,EAC5D,CAAC;CACD,SAAS,QAAQ,yBAAyB,aAAa,MAAM;CAE7D,IAAI,KAAK,SACR,SAAS,QAAQ,iBAAiB,KAAK,WAAW,MAAM;CAGzD,MAAM,mBAAmB,oBAAoB,EAAE,OAAO,KAAK,MAAM,CAAC;CAClE,IAAI,kBACH,SAAS,QAAQ,2BAA2B,oBAAoB,MAAM;CAGvE,SAAS,QAAQ,OAAO,MAAM;CAE9B,OAAO;AACR"}
|
|
@@ -4,7 +4,7 @@ import { buildTypeName } from "./buildTypeName.mjs";
|
|
|
4
4
|
import { getHumanReadablePath } from "./getHumanReadablePath.mjs";
|
|
5
5
|
import { buildFieldDocs } from "./buildFieldDocs.mjs";
|
|
6
6
|
import { buildUnion } from "./buildUnion.mjs";
|
|
7
|
-
import {
|
|
7
|
+
import { dedent } from "./dedent.mjs";
|
|
8
8
|
import { CustomTypeModelFieldType } from "@prismicio/client";
|
|
9
9
|
//#region src/lib/buildFieldProperties.ts
|
|
10
10
|
function buildFieldProperty(args) {
|
|
@@ -42,8 +42,10 @@ function buildFieldProperty(args) {
|
|
|
42
42
|
code = addLine(`${name}: prismic.GeoPointField;`, code);
|
|
43
43
|
break;
|
|
44
44
|
case "Image":
|
|
45
|
-
if (args.field.config?.thumbnails && args.field.config.thumbnails.length > 0)
|
|
46
|
-
|
|
45
|
+
if (args.field.config?.thumbnails && args.field.config.thumbnails.length > 0) {
|
|
46
|
+
const thumbnailNames = buildUnion(args.field.config.thumbnails.map((thumb) => `"${thumb.name}"`));
|
|
47
|
+
code = addLine(`${name}: prismic.ImageField<${thumbnailNames}>;`, code);
|
|
48
|
+
} else code = addLine(`${name}: prismic.ImageField<never>;`, code);
|
|
47
49
|
break;
|
|
48
50
|
case "IntegrationFields": {
|
|
49
51
|
const catalogType = args.field.config?.catalog ? args.fieldConfigs.integrationFields?.catalogTypes?.[args.field.config.catalog] : void 0;
|
|
@@ -55,11 +57,13 @@ function buildFieldProperty(args) {
|
|
|
55
57
|
const variants = args.field.config && "variants" in args.field.config && Array.isArray(args.field.config.variants) && args.field.config.variants.length > 0 ? args.field.config.variants.map((variant) => `"${variant.replace(/"/g, "\\\"")}"`).join(" | ") : "never";
|
|
56
58
|
switch (args.field.config?.select) {
|
|
57
59
|
case "document":
|
|
58
|
-
if ("customtypes" in args.field.config && args.field.config.customtypes && args.field.config.customtypes.length > 0)
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
if ("customtypes" in args.field.config && args.field.config.customtypes && args.field.config.customtypes.length > 0) {
|
|
61
|
+
const contentRelationshipUnion = buildUnion(args.field.config.customtypes.map((type) => {
|
|
62
|
+
if (typeof type === "string") return `prismic.ContentRelationshipField<"${type}">`;
|
|
63
|
+
return `ContentRelationshipFieldWithData<${JSON.stringify([type])}>`;
|
|
64
|
+
}));
|
|
65
|
+
code = addLine(`${name}: ${contentRelationshipUnion};`, code);
|
|
66
|
+
} else code = addLine(`${name}: prismic.ContentRelationshipField;`, code);
|
|
63
67
|
break;
|
|
64
68
|
case "media":
|
|
65
69
|
code = addLine(`${name}: prismic.LinkToMediaField<prismic.FieldState, ${variants}>;`, code);
|
|
@@ -117,7 +121,7 @@ function buildFieldProperty(args) {
|
|
|
117
121
|
contentTypeNames.push(...itemFieldProperties.contentTypeNames);
|
|
118
122
|
auxiliaryTypes.push({
|
|
119
123
|
name: itemName,
|
|
120
|
-
code:
|
|
124
|
+
code: dedent`
|
|
121
125
|
/**
|
|
122
126
|
* Item in *${humanReadablePath}*
|
|
123
127
|
*/
|
|
@@ -164,12 +168,12 @@ function buildFieldProperty(args) {
|
|
|
164
168
|
});
|
|
165
169
|
auxiliaryTypes.push(...primaryFieldProperties.auxiliaryTypes);
|
|
166
170
|
contentTypeNames.push(...primaryFieldProperties.contentTypeNames);
|
|
167
|
-
let primaryCode =
|
|
171
|
+
let primaryCode = dedent`
|
|
168
172
|
/**
|
|
169
173
|
* Primary content in *${humanReadablePath}*
|
|
170
174
|
*/
|
|
171
175
|
`;
|
|
172
|
-
primaryCode = primaryFieldProperties.code ? addLine(
|
|
176
|
+
primaryCode = primaryFieldProperties.code ? addLine(dedent`
|
|
173
177
|
export interface ${primaryInterfaceName} {
|
|
174
178
|
${primaryFieldProperties.code}
|
|
175
179
|
}
|
|
@@ -206,12 +210,12 @@ function buildFieldProperty(args) {
|
|
|
206
210
|
});
|
|
207
211
|
auxiliaryTypes.push(...itemFieldProperties.auxiliaryTypes);
|
|
208
212
|
contentTypeNames.push(...itemFieldProperties.contentTypeNames);
|
|
209
|
-
let itemCode =
|
|
213
|
+
let itemCode = dedent`
|
|
210
214
|
/**
|
|
211
215
|
* Item content in *${humanReadablePath}*
|
|
212
216
|
*/
|
|
213
217
|
`;
|
|
214
|
-
itemCode = itemFieldProperties.code ? addLine(
|
|
218
|
+
itemCode = itemFieldProperties.code ? addLine(dedent`
|
|
215
219
|
export interface ${itemInterfaceName} {
|
|
216
220
|
${itemFieldProperties.code}
|
|
217
221
|
}
|
|
@@ -224,7 +228,7 @@ function buildFieldProperty(args) {
|
|
|
224
228
|
}
|
|
225
229
|
auxiliaryTypes.push({
|
|
226
230
|
name: sliceName,
|
|
227
|
-
code:
|
|
231
|
+
code: dedent`
|
|
228
232
|
/**
|
|
229
233
|
* Slice for *${getHumanReadablePath({ path: [...args.path, {
|
|
230
234
|
name: args.name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildFieldProperties.mjs","names":[],"sources":["../../src/lib/buildFieldProperties.ts"],"sourcesContent":["import { type CustomTypeModelField, CustomTypeModelFieldType } from \"@prismicio/client\";\nimport { source, stripIndent } from \"common-tags\";\n\nimport type { AuxiliaryType, FieldConfigs, FieldPath } from \"../types\";\nimport { addLine } from \"./addLine\";\nimport { addSection } from \"./addSection\";\nimport { buildFieldDocs } from \"./buildFieldDocs\";\nimport { buildTypeName } from \"./buildTypeName\";\nimport { buildUnion } from \"./buildUnion\";\nimport { getHumanReadablePath } from \"./getHumanReadablePath\";\n\ntype BuildFieldPropertyArgs = Pick<\n\tBuildFieldPropertiesArgs,\n\t\"path\" | \"fieldConfigs\" | \"tabName\"\n> & {\n\tname: string;\n\tfield: CustomTypeModelField;\n};\n\ntype BuildFieldPropertyReturnType = {\n\tcode: string;\n\tauxiliaryTypes: AuxiliaryType[];\n\tcontentTypeNames: string[];\n};\n\nfunction buildFieldProperty(args: BuildFieldPropertyArgs): BuildFieldPropertyReturnType {\n\tlet code = buildFieldDocs({\n\t\tname: args.name,\n\t\tfield: args.field,\n\t\tpath: args.path,\n\t\ttabName: args.tabName,\n\t});\n\n\tconst auxiliaryTypes: AuxiliaryType[] = [];\n\tconst contentTypeNames: string[] = [];\n\n\tconst name =\n\t\targs.name.includes(\"-\") || args.name.includes(\":\") || /^[0-9]/.test(args.name)\n\t\t\t? `\"${args.name}\"`\n\t\t\t: args.name;\n\n\tswitch (args.field.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\tcode = addLine(`${name}: prismic.BooleanField;`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Color\": {\n\t\t\tcode = addLine(`${name}: prismic.ColorField;`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Date\": {\n\t\t\tcode = addLine(`${name}: prismic.DateField;`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Embed\": {\n\t\t\tconst providerTypes: string[] = [];\n\n\t\t\tif (args.fieldConfigs.embed?.providerTypes) {\n\t\t\t\tfor (const providerType in args.fieldConfigs.embed?.providerTypes) {\n\t\t\t\t\tconst configuredProviderType = args.fieldConfigs.embed?.providerTypes[providerType];\n\n\t\t\t\t\tproviderTypes.push(`({ provider_name: \"${providerType}\" } & ${configuredProviderType})`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst providerTypesUnion = buildUnion(providerTypes);\n\n\t\t\tcode =\n\t\t\t\tproviderTypes.length > 0\n\t\t\t\t\t? addLine(\n\t\t\t\t\t\t\t`${name}: prismic.EmbedField<prismic.AnyOEmbed & prismic.OEmbedExtra & (${providerTypesUnion})>`,\n\t\t\t\t\t\t\tcode,\n\t\t\t\t\t\t)\n\t\t\t\t\t: addLine(`${name}: prismic.EmbedField`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"GeoPoint\": {\n\t\t\tcode = addLine(`${name}: prismic.GeoPointField;`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Image\": {\n\t\t\tif (args.field.config?.thumbnails && args.field.config.thumbnails.length > 0) {\n\t\t\t\tconst thumbnailNames = buildUnion(\n\t\t\t\t\targs.field.config.thumbnails.map((thumb) => `\"${thumb.name}\"`),\n\t\t\t\t);\n\n\t\t\t\tcode = addLine(`${name}: prismic.ImageField<${thumbnailNames}>;`, code);\n\t\t\t} else {\n\t\t\t\tcode = addLine(`${name}: prismic.ImageField<never>;`, code);\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"IntegrationFields\": {\n\t\t\tconst catalogType = args.field.config?.catalog\n\t\t\t\t? args.fieldConfigs.integrationFields?.catalogTypes?.[args.field.config.catalog]\n\t\t\t\t: undefined;\n\n\t\t\tif (catalogType) {\n\t\t\t\tcode = addLine(`${name}: prismic.IntegrationField<${catalogType}>;`, code);\n\t\t\t} else {\n\t\t\t\tcode = addLine(`${name}: prismic.IntegrationField;`, code);\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tconst variants =\n\t\t\t\targs.field.config &&\n\t\t\t\t\"variants\" in args.field.config &&\n\t\t\t\tArray.isArray(args.field.config.variants) &&\n\t\t\t\targs.field.config.variants.length > 0\n\t\t\t\t\t? args.field.config.variants\n\t\t\t\t\t\t\t.map((variant) => `\"${variant.replace(/\"/g, '\\\\\"')}\"`)\n\t\t\t\t\t\t\t.join(\" | \")\n\t\t\t\t\t: \"never\";\n\n\t\t\tswitch (args.field.config?.select) {\n\t\t\t\tcase \"document\": {\n\t\t\t\t\tif (\n\t\t\t\t\t\t\"customtypes\" in args.field.config &&\n\t\t\t\t\t\targs.field.config.customtypes &&\n\t\t\t\t\t\targs.field.config.customtypes.length > 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst contentRelationshipUnion = buildUnion(\n\t\t\t\t\t\t\targs.field.config.customtypes.map((type) => {\n\t\t\t\t\t\t\t\tif (typeof type === \"string\") {\n\t\t\t\t\t\t\t\t\treturn `prismic.ContentRelationshipField<\"${type}\">`;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn `ContentRelationshipFieldWithData<${JSON.stringify([type])}>`;\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tcode = addLine(`${name}: ${contentRelationshipUnion};`, code);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcode = addLine(`${name}: prismic.ContentRelationshipField;`, code);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase \"media\": {\n\t\t\t\t\tcode = addLine(\n\t\t\t\t\t\t`${name}: prismic.LinkToMediaField<prismic.FieldState, ${variants}>;`,\n\t\t\t\t\t\tcode,\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tlet type = `prismic.LinkField<string, string, unknown, prismic.FieldState, ${variants}>`;\n\n\t\t\t\t\tif (args.field.config?.repeat) {\n\t\t\t\t\t\ttype = `prismic.Repeatable<${type}>`;\n\t\t\t\t\t}\n\n\t\t\t\t\tcode = addLine(`${name}: ${type};`, code);\n\t\t\t\t\tbreak;\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\tcode = addLine(`${name}: prismic.NumberField;`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"StructuredText\": {\n\t\t\tcode = addLine(`${name}: prismic.RichTextField;`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Select\": {\n\t\t\tconst options: string[] = args.field.config?.options?.map((option) => `\"${option}\"`) || [];\n\t\t\tconst optionsType = options.length ? buildUnion(options) : \"string\";\n\n\t\t\tconst hasDefault = Boolean(args.field.config?.default_value);\n\n\t\t\tif (hasDefault) {\n\t\t\t\tcode = addLine(`${name}: prismic.SelectField<${optionsType}, \"filled\">;`, code);\n\t\t\t} else {\n\t\t\t\tcode = addLine(\n\t\t\t\t\t`${name}: prismic.SelectField${options.length > 0 ? `<${optionsType}>` : \"\"};`,\n\t\t\t\t\tcode,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Table\": {\n\t\t\tcode = addLine(`${name}: prismic.TableField;`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Text\": {\n\t\t\tcode = addLine(`${name}: prismic.KeyTextField;`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Timestamp\": {\n\t\t\tcode = addLine(`${name}: prismic.TimestampField;`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Group\": {\n\t\t\tconst groupPathParts = args.path.filter(\n\t\t\t\t(part) =>\n\t\t\t\t\tpart.model !== undefined &&\n\t\t\t\t\t\"type\" in part.model &&\n\t\t\t\t\tpart.model.type === CustomTypeModelFieldType.Group,\n\t\t\t);\n\t\t\tconst isNestedGroup = groupPathParts.length > 0;\n\n\t\t\tlet itemName;\n\t\t\tif (\n\t\t\t\targs.path[0].model &&\n\t\t\t\t\"type\" in args.path[0].model &&\n\t\t\t\targs.path[0].model.type === \"SharedSlice\"\n\t\t\t) {\n\t\t\t\tconst [slicePathPart, variationPathPart, zonePathPart] = args.path;\n\n\t\t\t\titemName = buildTypeName(\n\t\t\t\t\tslicePathPart.name,\n\t\t\t\t\t\"Slice\",\n\t\t\t\t\tvariationPathPart.name,\n\t\t\t\t\tzonePathPart.name,\n\t\t\t\t\t...groupPathParts.map((part) => part.name),\n\t\t\t\t\targs.name,\n\t\t\t\t\t\"Item\",\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\titemName = buildTypeName(\n\t\t\t\t\targs.path[0].name,\n\t\t\t\t\t\"Document\",\n\t\t\t\t\t\"Data\",\n\t\t\t\t\t...groupPathParts.map((part) => part.name),\n\t\t\t\t\targs.name,\n\t\t\t\t\t\"Item\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst path: FieldPath = [\n\t\t\t\t...args.path,\n\t\t\t\t{\n\t\t\t\t\tname: name,\n\t\t\t\t\tmodel: args.field,\n\t\t\t\t},\n\t\t\t];\n\t\t\tconst humanReadablePath = getHumanReadablePath({ path });\n\n\t\t\tconst itemFieldProperties = buildFieldProperties({\n\t\t\t\tfields: args.field.config?.fields || {},\n\t\t\t\tfieldConfigs: args.fieldConfigs,\n\t\t\t\tpath,\n\t\t\t});\n\t\t\tauxiliaryTypes.push(...itemFieldProperties.auxiliaryTypes);\n\t\t\tcontentTypeNames.push(...itemFieldProperties.contentTypeNames);\n\n\t\t\tauxiliaryTypes.push({\n\t\t\t\tname: itemName,\n\t\t\t\tcode: source`\n\t\t\t\t\t/**\n\t\t\t\t\t * Item in *${humanReadablePath}*\n\t\t\t\t\t */\n\t\t\t\t\texport interface ${itemName} {\n\t\t\t\t\t\t${itemFieldProperties.code}\n\t\t\t\t\t}\n\t\t\t\t`,\n\t\t\t});\n\t\t\tcontentTypeNames.push(itemName);\n\n\t\t\tif (isNestedGroup) {\n\t\t\t\tcode = addLine(`${name}: prismic.NestedGroupField<Simplify<${itemName}>>;`, code);\n\t\t\t} else {\n\t\t\t\tcode = addLine(`${name}: prismic.GroupField<Simplify<${itemName}>>;`, code);\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\tconst choiceNames: string[] = [];\n\n\t\t\tif (args.field.config?.choices) {\n\t\t\t\tfor (const choiceID in args.field.config.choices) {\n\t\t\t\t\tconst choice = args.field.config.choices[choiceID];\n\n\t\t\t\t\tif (choice.type === \"SharedSlice\") {\n\t\t\t\t\t\t// TODO: Verify that the Shared Slice\n\t\t\t\t\t\t// is provided to the global\n\t\t\t\t\t\t// `sharedSlices` array. If it is not,\n\t\t\t\t\t\t// the type won't exist, so we can't\n\t\t\t\t\t\t// add it to the union. We should\n\t\t\t\t\t\t// probably throw an error if we reach\n\t\t\t\t\t\t// that state, or maybe the input can\n\t\t\t\t\t\t// be validated early so we don't\n\t\t\t\t\t\t// generate any code using invalid\n\t\t\t\t\t\t// models.\n\t\t\t\t\t\tchoiceNames.push(buildTypeName(choiceID, \"Slice\"));\n\t\t\t\t\t} else if (choice.type === \"Slice\") {\n\t\t\t\t\t\tconst sliceName = buildTypeName(\n\t\t\t\t\t\t\targs.path[0].name,\n\t\t\t\t\t\t\t\"Document\",\n\t\t\t\t\t\t\t\"Data\",\n\t\t\t\t\t\t\targs.name,\n\t\t\t\t\t\t\tchoiceID,\n\t\t\t\t\t\t\t\"Slice\",\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tlet primaryInterfaceName: string | undefined;\n\t\t\t\t\t\tif (choice[\"non-repeat\"] && Object.keys(choice[\"non-repeat\"]).length > 0) {\n\t\t\t\t\t\t\tprimaryInterfaceName = buildTypeName(sliceName, \"Primary\");\n\n\t\t\t\t\t\t\tconst path: FieldPath = [\n\t\t\t\t\t\t\t\t...args.path,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tname: args.name,\n\t\t\t\t\t\t\t\t\tmodel: args.field,\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\tname: 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\tname: \"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\tconst humanReadablePath = getHumanReadablePath({ path });\n\n\t\t\t\t\t\t\tconst primaryFieldProperties = buildFieldProperties({\n\t\t\t\t\t\t\t\tfields: choice[\"non-repeat\"],\n\t\t\t\t\t\t\t\tfieldConfigs: args.fieldConfigs,\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tauxiliaryTypes.push(...primaryFieldProperties.auxiliaryTypes);\n\t\t\t\t\t\t\tcontentTypeNames.push(...primaryFieldProperties.contentTypeNames);\n\n\t\t\t\t\t\t\tlet primaryCode = stripIndent`\n\t\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t\t * Primary content in *${humanReadablePath}*\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t`;\n\t\t\t\t\t\t\tprimaryCode = primaryFieldProperties.code\n\t\t\t\t\t\t\t\t? addLine(\n\t\t\t\t\t\t\t\t\t\tsource`\n\t\t\t\t\t\t\t\t\t\t\texport interface ${primaryInterfaceName} {\n\t\t\t\t\t\t\t\t\t\t\t\t${primaryFieldProperties.code}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t\t\tprimaryCode,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t: addLine(`export interface ${primaryInterfaceName} {}`, primaryCode);\n\n\t\t\t\t\t\t\tauxiliaryTypes.push({\n\t\t\t\t\t\t\t\tname: primaryInterfaceName,\n\t\t\t\t\t\t\t\tcode: primaryCode,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tcontentTypeNames.push(primaryInterfaceName);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet itemInterfaceName: string | undefined;\n\t\t\t\t\t\tif (choice.repeat && Object.keys(choice.repeat).length > 0) {\n\t\t\t\t\t\t\titemInterfaceName = buildTypeName(sliceName, \"Item\");\n\n\t\t\t\t\t\t\tconst path: FieldPath = [\n\t\t\t\t\t\t\t\t...args.path,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tname: args.name,\n\t\t\t\t\t\t\t\t\tmodel: args.field,\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\tname: 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\tname: \"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\tconst humanReadablePath = getHumanReadablePath({ path });\n\n\t\t\t\t\t\t\tconst itemFieldProperties = buildFieldProperties({\n\t\t\t\t\t\t\t\tfields: choice.repeat,\n\t\t\t\t\t\t\t\tfieldConfigs: args.fieldConfigs,\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tauxiliaryTypes.push(...itemFieldProperties.auxiliaryTypes);\n\t\t\t\t\t\t\tcontentTypeNames.push(...itemFieldProperties.contentTypeNames);\n\n\t\t\t\t\t\t\tlet itemCode = stripIndent`\n\t\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t\t * Item content in *${humanReadablePath}*\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t`;\n\t\t\t\t\t\t\titemCode = itemFieldProperties.code\n\t\t\t\t\t\t\t\t? addLine(\n\t\t\t\t\t\t\t\t\t\tsource`\n\t\t\t\t\t\t\t\t\t\t\texport interface ${itemInterfaceName} {\n\t\t\t\t\t\t\t\t\t\t\t\t${itemFieldProperties.code}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t\t\titemCode,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t: addLine(`export interface ${itemInterfaceName} {}`, itemCode);\n\n\t\t\t\t\t\t\tauxiliaryTypes.push({\n\t\t\t\t\t\t\t\tname: itemInterfaceName,\n\t\t\t\t\t\t\t\tcode: itemCode,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tcontentTypeNames.push(itemInterfaceName);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tauxiliaryTypes.push({\n\t\t\t\t\t\t\tname: sliceName,\n\t\t\t\t\t\t\tcode: stripIndent`\n\t\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t\t * Slice for *${getHumanReadablePath({\n\t\t\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t\t\t...args.path,\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tname: args.name,\n\t\t\t\t\t\t\t\t\t\t\t\tmodel: args.field,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t})}*\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\texport type ${sliceName} = prismic.Slice<\"${choiceID}\", ${\n\t\t\t\t\t\t\t\t\tprimaryInterfaceName\n\t\t\t\t\t\t\t\t\t\t? `Simplify<${primaryInterfaceName}>`\n\t\t\t\t\t\t\t\t\t\t: `Record<string, never>`\n\t\t\t\t\t\t\t\t}, ${itemInterfaceName ? `Simplify<${itemInterfaceName}>` : `never`}>\n\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tchoiceNames.push(sliceName);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst choiceUnionName = buildTypeName(\n\t\t\t\targs.path[0].name,\n\t\t\t\t\"Document\",\n\t\t\t\t\"Data\",\n\t\t\t\targs.name,\n\t\t\t\t\"Slice\",\n\t\t\t);\n\t\t\tconst choiceUnion = buildUnion(choiceNames);\n\t\t\tauxiliaryTypes.push({\n\t\t\t\tname: choiceUnionName,\n\t\t\t\tcode: `type ${choiceUnionName} = ${choiceUnion}`,\n\t\t\t});\n\t\t\tcontentTypeNames.push(choiceUnionName);\n\n\t\t\tcode = addLine(`${name}: prismic.SliceZone<${choiceUnionName}>;`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\tcode = addLine(`${name}: unknown;`, code);\n\t\t}\n\t}\n\n\treturn {\n\t\tcode,\n\t\tauxiliaryTypes,\n\t\tcontentTypeNames,\n\t};\n}\n\ntype BuildFieldPropertiesArgs = {\n\tfields: Record<string, CustomTypeModelField>;\n\tpath: FieldPath;\n\tfieldConfigs: FieldConfigs;\n\ttabName?: string;\n};\n\ntype BuildFieldPropertiesReturnType = {\n\tcode: string;\n\tauxiliaryTypes: AuxiliaryType[];\n\tcontentTypeNames: string[];\n};\n\nexport function buildFieldProperties(\n\targs: BuildFieldPropertiesArgs,\n): BuildFieldPropertiesReturnType {\n\tlet code = \"\";\n\n\tconst auxiliaryTypes: AuxiliaryType[] = [];\n\tconst contentTypeNames: string[] = [];\n\n\tfor (const name in args.fields) {\n\t\tconst field = args.fields[name];\n\n\t\tconst fieldProperty = buildFieldProperty({\n\t\t\tname,\n\t\t\tfield,\n\t\t\tpath: args.path,\n\t\t\tfieldConfigs: args.fieldConfigs,\n\t\t\ttabName: args.tabName,\n\t\t});\n\n\t\tcode = addSection(fieldProperty.code, code);\n\n\t\tauxiliaryTypes.push(...fieldProperty.auxiliaryTypes);\n\t\tcontentTypeNames.push(...fieldProperty.contentTypeNames);\n\t}\n\n\treturn {\n\t\tcode,\n\t\tauxiliaryTypes,\n\t\tcontentTypeNames,\n\t};\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"buildFieldProperties.mjs","names":[],"sources":["../../src/lib/buildFieldProperties.ts"],"sourcesContent":["import { type CustomTypeModelField, CustomTypeModelFieldType } from \"@prismicio/client\";\n\nimport type { AuxiliaryType, FieldConfigs, FieldPath } from \"../types\";\nimport { addLine } from \"./addLine\";\nimport { addSection } from \"./addSection\";\nimport { buildFieldDocs } from \"./buildFieldDocs\";\nimport { buildTypeName } from \"./buildTypeName\";\nimport { buildUnion } from \"./buildUnion\";\nimport { dedent } from \"./dedent\";\nimport { getHumanReadablePath } from \"./getHumanReadablePath\";\n\ntype BuildFieldPropertyArgs = Pick<\n\tBuildFieldPropertiesArgs,\n\t\"path\" | \"fieldConfigs\" | \"tabName\"\n> & {\n\tname: string;\n\tfield: CustomTypeModelField;\n};\n\ntype BuildFieldPropertyReturnType = {\n\tcode: string;\n\tauxiliaryTypes: AuxiliaryType[];\n\tcontentTypeNames: string[];\n};\n\nfunction buildFieldProperty(args: BuildFieldPropertyArgs): BuildFieldPropertyReturnType {\n\tlet code = buildFieldDocs({\n\t\tname: args.name,\n\t\tfield: args.field,\n\t\tpath: args.path,\n\t\ttabName: args.tabName,\n\t});\n\n\tconst auxiliaryTypes: AuxiliaryType[] = [];\n\tconst contentTypeNames: string[] = [];\n\n\tconst name =\n\t\targs.name.includes(\"-\") || args.name.includes(\":\") || /^[0-9]/.test(args.name)\n\t\t\t? `\"${args.name}\"`\n\t\t\t: args.name;\n\n\tswitch (args.field.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\tcode = addLine(`${name}: prismic.BooleanField;`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Color\": {\n\t\t\tcode = addLine(`${name}: prismic.ColorField;`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Date\": {\n\t\t\tcode = addLine(`${name}: prismic.DateField;`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Embed\": {\n\t\t\tconst providerTypes: string[] = [];\n\n\t\t\tif (args.fieldConfigs.embed?.providerTypes) {\n\t\t\t\tfor (const providerType in args.fieldConfigs.embed?.providerTypes) {\n\t\t\t\t\tconst configuredProviderType = args.fieldConfigs.embed?.providerTypes[providerType];\n\n\t\t\t\t\tproviderTypes.push(`({ provider_name: \"${providerType}\" } & ${configuredProviderType})`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst providerTypesUnion = buildUnion(providerTypes);\n\n\t\t\tcode =\n\t\t\t\tproviderTypes.length > 0\n\t\t\t\t\t? addLine(\n\t\t\t\t\t\t\t`${name}: prismic.EmbedField<prismic.AnyOEmbed & prismic.OEmbedExtra & (${providerTypesUnion})>`,\n\t\t\t\t\t\t\tcode,\n\t\t\t\t\t\t)\n\t\t\t\t\t: addLine(`${name}: prismic.EmbedField`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"GeoPoint\": {\n\t\t\tcode = addLine(`${name}: prismic.GeoPointField;`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Image\": {\n\t\t\tif (args.field.config?.thumbnails && args.field.config.thumbnails.length > 0) {\n\t\t\t\tconst thumbnailNames = buildUnion(\n\t\t\t\t\targs.field.config.thumbnails.map((thumb) => `\"${thumb.name}\"`),\n\t\t\t\t);\n\n\t\t\t\tcode = addLine(`${name}: prismic.ImageField<${thumbnailNames}>;`, code);\n\t\t\t} else {\n\t\t\t\tcode = addLine(`${name}: prismic.ImageField<never>;`, code);\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"IntegrationFields\": {\n\t\t\tconst catalogType = args.field.config?.catalog\n\t\t\t\t? args.fieldConfigs.integrationFields?.catalogTypes?.[args.field.config.catalog]\n\t\t\t\t: undefined;\n\n\t\t\tif (catalogType) {\n\t\t\t\tcode = addLine(`${name}: prismic.IntegrationField<${catalogType}>;`, code);\n\t\t\t} else {\n\t\t\t\tcode = addLine(`${name}: prismic.IntegrationField;`, code);\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tconst variants =\n\t\t\t\targs.field.config &&\n\t\t\t\t\"variants\" in args.field.config &&\n\t\t\t\tArray.isArray(args.field.config.variants) &&\n\t\t\t\targs.field.config.variants.length > 0\n\t\t\t\t\t? args.field.config.variants\n\t\t\t\t\t\t\t.map((variant) => `\"${variant.replace(/\"/g, '\\\\\"')}\"`)\n\t\t\t\t\t\t\t.join(\" | \")\n\t\t\t\t\t: \"never\";\n\n\t\t\tswitch (args.field.config?.select) {\n\t\t\t\tcase \"document\": {\n\t\t\t\t\tif (\n\t\t\t\t\t\t\"customtypes\" in args.field.config &&\n\t\t\t\t\t\targs.field.config.customtypes &&\n\t\t\t\t\t\targs.field.config.customtypes.length > 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst contentRelationshipUnion = buildUnion(\n\t\t\t\t\t\t\targs.field.config.customtypes.map((type) => {\n\t\t\t\t\t\t\t\tif (typeof type === \"string\") {\n\t\t\t\t\t\t\t\t\treturn `prismic.ContentRelationshipField<\"${type}\">`;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn `ContentRelationshipFieldWithData<${JSON.stringify([type])}>`;\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tcode = addLine(`${name}: ${contentRelationshipUnion};`, code);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcode = addLine(`${name}: prismic.ContentRelationshipField;`, code);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase \"media\": {\n\t\t\t\t\tcode = addLine(\n\t\t\t\t\t\t`${name}: prismic.LinkToMediaField<prismic.FieldState, ${variants}>;`,\n\t\t\t\t\t\tcode,\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tlet type = `prismic.LinkField<string, string, unknown, prismic.FieldState, ${variants}>`;\n\n\t\t\t\t\tif (args.field.config?.repeat) {\n\t\t\t\t\t\ttype = `prismic.Repeatable<${type}>`;\n\t\t\t\t\t}\n\n\t\t\t\t\tcode = addLine(`${name}: ${type};`, code);\n\t\t\t\t\tbreak;\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\tcode = addLine(`${name}: prismic.NumberField;`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"StructuredText\": {\n\t\t\tcode = addLine(`${name}: prismic.RichTextField;`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Select\": {\n\t\t\tconst options: string[] = args.field.config?.options?.map((option) => `\"${option}\"`) || [];\n\t\t\tconst optionsType = options.length ? buildUnion(options) : \"string\";\n\n\t\t\tconst hasDefault = Boolean(args.field.config?.default_value);\n\n\t\t\tif (hasDefault) {\n\t\t\t\tcode = addLine(`${name}: prismic.SelectField<${optionsType}, \"filled\">;`, code);\n\t\t\t} else {\n\t\t\t\tcode = addLine(\n\t\t\t\t\t`${name}: prismic.SelectField${options.length > 0 ? `<${optionsType}>` : \"\"};`,\n\t\t\t\t\tcode,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Table\": {\n\t\t\tcode = addLine(`${name}: prismic.TableField;`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Text\": {\n\t\t\tcode = addLine(`${name}: prismic.KeyTextField;`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Timestamp\": {\n\t\t\tcode = addLine(`${name}: prismic.TimestampField;`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Group\": {\n\t\t\tconst groupPathParts = args.path.filter(\n\t\t\t\t(part) =>\n\t\t\t\t\tpart.model !== undefined &&\n\t\t\t\t\t\"type\" in part.model &&\n\t\t\t\t\tpart.model.type === CustomTypeModelFieldType.Group,\n\t\t\t);\n\t\t\tconst isNestedGroup = groupPathParts.length > 0;\n\n\t\t\tlet itemName;\n\t\t\tif (\n\t\t\t\targs.path[0].model &&\n\t\t\t\t\"type\" in args.path[0].model &&\n\t\t\t\targs.path[0].model.type === \"SharedSlice\"\n\t\t\t) {\n\t\t\t\tconst [slicePathPart, variationPathPart, zonePathPart] = args.path;\n\n\t\t\t\titemName = buildTypeName(\n\t\t\t\t\tslicePathPart.name,\n\t\t\t\t\t\"Slice\",\n\t\t\t\t\tvariationPathPart.name,\n\t\t\t\t\tzonePathPart.name,\n\t\t\t\t\t...groupPathParts.map((part) => part.name),\n\t\t\t\t\targs.name,\n\t\t\t\t\t\"Item\",\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\titemName = buildTypeName(\n\t\t\t\t\targs.path[0].name,\n\t\t\t\t\t\"Document\",\n\t\t\t\t\t\"Data\",\n\t\t\t\t\t...groupPathParts.map((part) => part.name),\n\t\t\t\t\targs.name,\n\t\t\t\t\t\"Item\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst path: FieldPath = [\n\t\t\t\t...args.path,\n\t\t\t\t{\n\t\t\t\t\tname: name,\n\t\t\t\t\tmodel: args.field,\n\t\t\t\t},\n\t\t\t];\n\t\t\tconst humanReadablePath = getHumanReadablePath({ path });\n\n\t\t\tconst itemFieldProperties = buildFieldProperties({\n\t\t\t\tfields: args.field.config?.fields || {},\n\t\t\t\tfieldConfigs: args.fieldConfigs,\n\t\t\t\tpath,\n\t\t\t});\n\t\t\tauxiliaryTypes.push(...itemFieldProperties.auxiliaryTypes);\n\t\t\tcontentTypeNames.push(...itemFieldProperties.contentTypeNames);\n\n\t\t\tauxiliaryTypes.push({\n\t\t\t\tname: itemName,\n\t\t\t\tcode: dedent`\n\t\t\t\t\t/**\n\t\t\t\t\t * Item in *${humanReadablePath}*\n\t\t\t\t\t */\n\t\t\t\t\texport interface ${itemName} {\n\t\t\t\t\t\t${itemFieldProperties.code}\n\t\t\t\t\t}\n\t\t\t\t`,\n\t\t\t});\n\t\t\tcontentTypeNames.push(itemName);\n\n\t\t\tif (isNestedGroup) {\n\t\t\t\tcode = addLine(`${name}: prismic.NestedGroupField<Simplify<${itemName}>>;`, code);\n\t\t\t} else {\n\t\t\t\tcode = addLine(`${name}: prismic.GroupField<Simplify<${itemName}>>;`, code);\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\tconst choiceNames: string[] = [];\n\n\t\t\tif (args.field.config?.choices) {\n\t\t\t\tfor (const choiceID in args.field.config.choices) {\n\t\t\t\t\tconst choice = args.field.config.choices[choiceID];\n\n\t\t\t\t\tif (choice.type === \"SharedSlice\") {\n\t\t\t\t\t\t// TODO: Verify that the Shared Slice\n\t\t\t\t\t\t// is provided to the global\n\t\t\t\t\t\t// `sharedSlices` array. If it is not,\n\t\t\t\t\t\t// the type won't exist, so we can't\n\t\t\t\t\t\t// add it to the union. We should\n\t\t\t\t\t\t// probably throw an error if we reach\n\t\t\t\t\t\t// that state, or maybe the input can\n\t\t\t\t\t\t// be validated early so we don't\n\t\t\t\t\t\t// generate any code using invalid\n\t\t\t\t\t\t// models.\n\t\t\t\t\t\tchoiceNames.push(buildTypeName(choiceID, \"Slice\"));\n\t\t\t\t\t} else if (choice.type === \"Slice\") {\n\t\t\t\t\t\tconst sliceName = buildTypeName(\n\t\t\t\t\t\t\targs.path[0].name,\n\t\t\t\t\t\t\t\"Document\",\n\t\t\t\t\t\t\t\"Data\",\n\t\t\t\t\t\t\targs.name,\n\t\t\t\t\t\t\tchoiceID,\n\t\t\t\t\t\t\t\"Slice\",\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tlet primaryInterfaceName: string | undefined;\n\t\t\t\t\t\tif (choice[\"non-repeat\"] && Object.keys(choice[\"non-repeat\"]).length > 0) {\n\t\t\t\t\t\t\tprimaryInterfaceName = buildTypeName(sliceName, \"Primary\");\n\n\t\t\t\t\t\t\tconst path: FieldPath = [\n\t\t\t\t\t\t\t\t...args.path,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tname: args.name,\n\t\t\t\t\t\t\t\t\tmodel: args.field,\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\tname: 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\tname: \"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\tconst humanReadablePath = getHumanReadablePath({ path });\n\n\t\t\t\t\t\t\tconst primaryFieldProperties = buildFieldProperties({\n\t\t\t\t\t\t\t\tfields: choice[\"non-repeat\"],\n\t\t\t\t\t\t\t\tfieldConfigs: args.fieldConfigs,\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tauxiliaryTypes.push(...primaryFieldProperties.auxiliaryTypes);\n\t\t\t\t\t\t\tcontentTypeNames.push(...primaryFieldProperties.contentTypeNames);\n\n\t\t\t\t\t\t\tlet primaryCode = dedent`\n\t\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t\t * Primary content in *${humanReadablePath}*\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t`;\n\t\t\t\t\t\t\tprimaryCode = primaryFieldProperties.code\n\t\t\t\t\t\t\t\t? addLine(\n\t\t\t\t\t\t\t\t\t\tdedent`\n\t\t\t\t\t\t\t\t\t\t\texport interface ${primaryInterfaceName} {\n\t\t\t\t\t\t\t\t\t\t\t\t${primaryFieldProperties.code}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t\t\tprimaryCode,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t: addLine(`export interface ${primaryInterfaceName} {}`, primaryCode);\n\n\t\t\t\t\t\t\tauxiliaryTypes.push({\n\t\t\t\t\t\t\t\tname: primaryInterfaceName,\n\t\t\t\t\t\t\t\tcode: primaryCode,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tcontentTypeNames.push(primaryInterfaceName);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet itemInterfaceName: string | undefined;\n\t\t\t\t\t\tif (choice.repeat && Object.keys(choice.repeat).length > 0) {\n\t\t\t\t\t\t\titemInterfaceName = buildTypeName(sliceName, \"Item\");\n\n\t\t\t\t\t\t\tconst path: FieldPath = [\n\t\t\t\t\t\t\t\t...args.path,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tname: args.name,\n\t\t\t\t\t\t\t\t\tmodel: args.field,\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\tname: 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\tname: \"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\tconst humanReadablePath = getHumanReadablePath({ path });\n\n\t\t\t\t\t\t\tconst itemFieldProperties = buildFieldProperties({\n\t\t\t\t\t\t\t\tfields: choice.repeat,\n\t\t\t\t\t\t\t\tfieldConfigs: args.fieldConfigs,\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tauxiliaryTypes.push(...itemFieldProperties.auxiliaryTypes);\n\t\t\t\t\t\t\tcontentTypeNames.push(...itemFieldProperties.contentTypeNames);\n\n\t\t\t\t\t\t\tlet itemCode = dedent`\n\t\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t\t * Item content in *${humanReadablePath}*\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t`;\n\t\t\t\t\t\t\titemCode = itemFieldProperties.code\n\t\t\t\t\t\t\t\t? addLine(\n\t\t\t\t\t\t\t\t\t\tdedent`\n\t\t\t\t\t\t\t\t\t\t\texport interface ${itemInterfaceName} {\n\t\t\t\t\t\t\t\t\t\t\t\t${itemFieldProperties.code}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t\t\titemCode,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t: addLine(`export interface ${itemInterfaceName} {}`, itemCode);\n\n\t\t\t\t\t\t\tauxiliaryTypes.push({\n\t\t\t\t\t\t\t\tname: itemInterfaceName,\n\t\t\t\t\t\t\t\tcode: itemCode,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tcontentTypeNames.push(itemInterfaceName);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tauxiliaryTypes.push({\n\t\t\t\t\t\t\tname: sliceName,\n\t\t\t\t\t\t\tcode: dedent`\n\t\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t\t * Slice for *${getHumanReadablePath({\n\t\t\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t\t\t...args.path,\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tname: args.name,\n\t\t\t\t\t\t\t\t\t\t\t\tmodel: args.field,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t})}*\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\texport type ${sliceName} = prismic.Slice<\"${choiceID}\", ${\n\t\t\t\t\t\t\t\t\tprimaryInterfaceName\n\t\t\t\t\t\t\t\t\t\t? `Simplify<${primaryInterfaceName}>`\n\t\t\t\t\t\t\t\t\t\t: `Record<string, never>`\n\t\t\t\t\t\t\t\t}, ${itemInterfaceName ? `Simplify<${itemInterfaceName}>` : `never`}>\n\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tchoiceNames.push(sliceName);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst choiceUnionName = buildTypeName(\n\t\t\t\targs.path[0].name,\n\t\t\t\t\"Document\",\n\t\t\t\t\"Data\",\n\t\t\t\targs.name,\n\t\t\t\t\"Slice\",\n\t\t\t);\n\t\t\tconst choiceUnion = buildUnion(choiceNames);\n\t\t\tauxiliaryTypes.push({\n\t\t\t\tname: choiceUnionName,\n\t\t\t\tcode: `type ${choiceUnionName} = ${choiceUnion}`,\n\t\t\t});\n\t\t\tcontentTypeNames.push(choiceUnionName);\n\n\t\t\tcode = addLine(`${name}: prismic.SliceZone<${choiceUnionName}>;`, code);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\tcode = addLine(`${name}: unknown;`, code);\n\t\t}\n\t}\n\n\treturn {\n\t\tcode,\n\t\tauxiliaryTypes,\n\t\tcontentTypeNames,\n\t};\n}\n\ntype BuildFieldPropertiesArgs = {\n\tfields: Record<string, CustomTypeModelField>;\n\tpath: FieldPath;\n\tfieldConfigs: FieldConfigs;\n\ttabName?: string;\n};\n\ntype BuildFieldPropertiesReturnType = {\n\tcode: string;\n\tauxiliaryTypes: AuxiliaryType[];\n\tcontentTypeNames: string[];\n};\n\nexport function buildFieldProperties(\n\targs: BuildFieldPropertiesArgs,\n): BuildFieldPropertiesReturnType {\n\tlet code = \"\";\n\n\tconst auxiliaryTypes: AuxiliaryType[] = [];\n\tconst contentTypeNames: string[] = [];\n\n\tfor (const name in args.fields) {\n\t\tconst field = args.fields[name];\n\n\t\tconst fieldProperty = buildFieldProperty({\n\t\t\tname,\n\t\t\tfield,\n\t\t\tpath: args.path,\n\t\t\tfieldConfigs: args.fieldConfigs,\n\t\t\ttabName: args.tabName,\n\t\t});\n\n\t\tcode = addSection(fieldProperty.code, code);\n\n\t\tauxiliaryTypes.push(...fieldProperty.auxiliaryTypes);\n\t\tcontentTypeNames.push(...fieldProperty.contentTypeNames);\n\t}\n\n\treturn {\n\t\tcode,\n\t\tauxiliaryTypes,\n\t\tcontentTypeNames,\n\t};\n}\n"],"mappings":"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"}
|
|
@@ -4,9 +4,9 @@ import { buildTypeName } from "./buildTypeName.mjs";
|
|
|
4
4
|
import { getHumanReadableModelName } from "./getHumanReadableModelName.mjs";
|
|
5
5
|
import { getHumanReadablePath } from "./getHumanReadablePath.mjs";
|
|
6
6
|
import { buildUnion } from "./buildUnion.mjs";
|
|
7
|
+
import { dedent } from "./dedent.mjs";
|
|
7
8
|
import { buildFieldProperties } from "./buildFieldProperties.mjs";
|
|
8
9
|
import { getCacheKey } from "./getCacheKey.mjs";
|
|
9
|
-
import { source, stripIndent } from "common-tags";
|
|
10
10
|
//#region src/lib/buildSharedSliceType.ts
|
|
11
11
|
function buildSharedSliceType(args) {
|
|
12
12
|
if (args.cache) {
|
|
@@ -51,17 +51,17 @@ function buildSharedSliceType(args) {
|
|
|
51
51
|
auxiliaryTypes.push(...primaryFieldProperties.auxiliaryTypes);
|
|
52
52
|
contentTypeNames.push(...primaryFieldProperties.contentTypeNames);
|
|
53
53
|
contentTypeNames.push(primaryInterfaceName);
|
|
54
|
-
const docs =
|
|
54
|
+
const docs = dedent`
|
|
55
55
|
/**
|
|
56
56
|
* Primary content in *${humanReadablePath}*
|
|
57
57
|
*/
|
|
58
58
|
`;
|
|
59
|
-
code = addSection(primaryFieldProperties.code ?
|
|
59
|
+
code = addSection(primaryFieldProperties.code ? dedent`
|
|
60
60
|
${docs}
|
|
61
61
|
export interface ${primaryInterfaceName} {
|
|
62
62
|
${primaryFieldProperties.code}
|
|
63
63
|
}
|
|
64
|
-
` :
|
|
64
|
+
` : dedent`
|
|
65
65
|
${docs}
|
|
66
66
|
export interface ${primaryInterfaceName} {}
|
|
67
67
|
`, code);
|
|
@@ -85,22 +85,22 @@ function buildSharedSliceType(args) {
|
|
|
85
85
|
auxiliaryTypes.push(...itemFieldProperties.auxiliaryTypes);
|
|
86
86
|
contentTypeNames.push(...itemFieldProperties.contentTypeNames);
|
|
87
87
|
contentTypeNames.push(itemInterfaceName);
|
|
88
|
-
const docs =
|
|
88
|
+
const docs = dedent`
|
|
89
89
|
/**
|
|
90
90
|
* Primary content in *${humanReadablePath}*
|
|
91
91
|
*/
|
|
92
92
|
`;
|
|
93
|
-
code = addSection(itemFieldProperties.code ?
|
|
93
|
+
code = addSection(itemFieldProperties.code ? dedent`
|
|
94
94
|
${docs}
|
|
95
95
|
export interface ${itemInterfaceName} {
|
|
96
96
|
${itemFieldProperties.code}
|
|
97
97
|
}
|
|
98
|
-
` :
|
|
98
|
+
` : dedent`
|
|
99
99
|
${docs}
|
|
100
100
|
export interface ${itemInterfaceName} {}
|
|
101
101
|
`, code);
|
|
102
102
|
}
|
|
103
|
-
code = addSection(
|
|
103
|
+
code = addSection(dedent`
|
|
104
104
|
/**
|
|
105
105
|
* ${variationModel.name} variation for ${humanReadableName} Slice
|
|
106
106
|
*
|
|
@@ -116,13 +116,13 @@ function buildSharedSliceType(args) {
|
|
|
116
116
|
const variationsUnion = buildUnion(variationNames);
|
|
117
117
|
contentTypeNames.push(variationUnionName);
|
|
118
118
|
contentTypeNames.push(...variationNames);
|
|
119
|
-
code = addSection(
|
|
119
|
+
code = addSection(dedent`
|
|
120
120
|
/**
|
|
121
121
|
* Slice variation for *${humanReadableName}*
|
|
122
122
|
*/
|
|
123
123
|
type ${variationUnionName} = ${variationNames.length > 0 ? variationsUnion : "never"}
|
|
124
124
|
`, code);
|
|
125
|
-
code = addSection(
|
|
125
|
+
code = addSection(dedent`
|
|
126
126
|
/**
|
|
127
127
|
* ${humanReadableName} Shared Slice
|
|
128
128
|
*
|