prismic-ts-codegen 0.1.29 → 0.1.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/prismic-ts-codegen.js +1 -1
- package/dist/cli/{configSchema.d.cts → configSchema.d.mts} +1 -1
- package/dist/cli/{configSchema.d.cts.map → configSchema.d.mts.map} +1 -1
- package/dist/cli/{configSchema.js → configSchema.mjs} +1 -1
- package/dist/cli/configSchema.mjs.map +1 -0
- package/dist/cli/{constants.d.cts → constants.d.mts} +1 -1
- package/dist/cli/constants.d.mts.map +1 -0
- package/dist/cli/{constants.js → constants.mjs} +1 -1
- package/dist/cli/{constants.cjs.map → constants.mjs.map} +1 -1
- package/dist/cli/{loadConfig.js → loadConfig.mjs} +1 -1
- package/dist/cli/loadConfig.mjs.map +1 -0
- package/dist/cli/{loadLocaleIDs.js → loadLocaleIDs.mjs} +1 -1
- package/dist/cli/loadLocaleIDs.mjs.map +1 -0
- package/dist/cli/{loadModels.js → loadModels.mjs} +1 -1
- package/dist/cli/loadModels.mjs.map +1 -0
- package/dist/{cli.js → cli.mjs} +10 -9
- package/dist/cli.mjs.map +1 -0
- package/dist/{constants.js → constants.mjs} +1 -1
- package/dist/{constants.cjs.map → constants.mjs.map} +1 -1
- package/dist/{detectTypesProvider.d.cts → detectTypesProvider.d.mts} +2 -2
- package/dist/{detectTypesProvider.d.cts.map → detectTypesProvider.d.mts.map} +1 -1
- package/dist/{detectTypesProvider.js → detectTypesProvider.mjs} +1 -1
- package/dist/{detectTypesProvider.cjs.map → detectTypesProvider.mjs.map} +1 -1
- package/dist/{generateTypes.d.ts → generateTypes.d.mts} +2 -2
- package/dist/{generateTypes.d.cts.map → generateTypes.d.mts.map} +1 -1
- package/dist/{generateTypes.js → generateTypes.mjs} +6 -6
- package/dist/generateTypes.mjs.map +1 -0
- package/dist/{index.d.cts → index.d.mts} +4 -4
- package/dist/index.mjs +4 -0
- package/dist/lib/{addBlankLine.js → addBlankLine.mjs} +2 -2
- package/dist/lib/addBlankLine.mjs.map +1 -0
- package/dist/lib/{addLine.js → addLine.mjs} +2 -2
- package/dist/lib/addLine.mjs.map +1 -0
- package/dist/lib/{addSection.js → addSection.mjs} +2 -2
- package/dist/lib/addSection.mjs.map +1 -0
- package/dist/lib/{addTrailingNewLine.js → addTrailingNewLine.mjs} +1 -1
- package/dist/lib/{addTrailingNewLine.cjs.map → addTrailingNewLine.mjs.map} +1 -1
- package/dist/lib/{buildCustomTypeDataType.js → buildCustomTypeDataType.mjs} +4 -4
- package/dist/lib/buildCustomTypeDataType.mjs.map +1 -0
- package/dist/lib/{buildCustomTypeType.js → buildCustomTypeType.mjs} +9 -9
- package/dist/lib/buildCustomTypeType.mjs.map +1 -0
- package/dist/lib/{buildFieldDocs.js → buildFieldDocs.mjs} +6 -6
- package/dist/lib/buildFieldDocs.mjs.map +1 -0
- package/dist/lib/{buildFieldProperties.js → buildFieldProperties.mjs} +7 -7
- package/dist/lib/buildFieldProperties.mjs.map +1 -0
- package/dist/lib/{buildSharedSliceType.js → buildSharedSliceType.mjs} +9 -9
- package/dist/lib/buildSharedSliceType.mjs.map +1 -0
- package/dist/lib/{buildTypeName.js → buildTypeName.mjs} +1 -1
- package/dist/lib/buildTypeName.mjs.map +1 -0
- package/dist/lib/{buildUnion.js → buildUnion.mjs} +1 -1
- package/dist/lib/{buildUnion.cjs.map → buildUnion.mjs.map} +1 -1
- package/dist/lib/{checkHasUIDFIeld.js → checkHasUIDFIeld.mjs} +1 -1
- package/dist/lib/{checkHasUIDFIeld.cjs.map → checkHasUIDFIeld.mjs.map} +1 -1
- package/dist/lib/{getAPIIDPath.js → getAPIIDPath.mjs} +1 -1
- package/dist/lib/{getAPIIDPath.cjs.map → getAPIIDPath.mjs.map} +1 -1
- package/dist/lib/{getCacheKey.js → getCacheKey.mjs} +1 -1
- package/dist/lib/getCacheKey.mjs.map +1 -0
- package/dist/lib/{getHumanReadableModelName.js → getHumanReadableModelName.mjs} +1 -1
- package/dist/lib/{getHumanReadableModelName.cjs.map → getHumanReadableModelName.mjs.map} +1 -1
- package/dist/lib/{getHumanReadablePath.js → getHumanReadablePath.mjs} +2 -2
- package/dist/lib/getHumanReadablePath.mjs.map +1 -0
- package/dist/{types.d.cts → types.d.mts} +1 -1
- package/dist/types.d.mts.map +1 -0
- package/package.json +2 -8
- package/dist/_virtual/_rolldown/runtime.cjs +0 -23
- package/dist/cli/configSchema.cjs +0 -31
- package/dist/cli/configSchema.cjs.map +0 -1
- package/dist/cli/configSchema.d.ts +0 -39
- package/dist/cli/configSchema.d.ts.map +0 -1
- package/dist/cli/configSchema.js.map +0 -1
- package/dist/cli/constants.cjs +0 -6
- package/dist/cli/constants.d.cts.map +0 -1
- package/dist/cli/constants.d.ts +0 -5
- package/dist/cli/constants.d.ts.map +0 -1
- package/dist/cli/constants.js.map +0 -1
- package/dist/cli/loadConfig.cjs +0 -22
- package/dist/cli/loadConfig.cjs.map +0 -1
- package/dist/cli/loadConfig.js.map +0 -1
- package/dist/cli/loadLocaleIDs.cjs +0 -21
- package/dist/cli/loadLocaleIDs.cjs.map +0 -1
- package/dist/cli/loadLocaleIDs.js.map +0 -1
- package/dist/cli/loadModels.cjs +0 -54
- package/dist/cli/loadModels.cjs.map +0 -1
- package/dist/cli/loadModels.js.map +0 -1
- package/dist/cli.cjs +0 -110
- package/dist/cli.cjs.map +0 -1
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/constants.cjs +0 -33
- package/dist/constants.js.map +0 -1
- package/dist/detectTypesProvider.cjs +0 -25
- package/dist/detectTypesProvider.d.ts +0 -17
- package/dist/detectTypesProvider.d.ts.map +0 -1
- package/dist/detectTypesProvider.js.map +0 -1
- package/dist/generateTypes.cjs +0 -144
- package/dist/generateTypes.cjs.map +0 -1
- package/dist/generateTypes.d.cts +0 -21
- package/dist/generateTypes.d.ts.map +0 -1
- package/dist/generateTypes.js.map +0 -1
- package/dist/index.cjs +0 -7
- package/dist/index.d.ts +0 -5
- package/dist/index.js +0 -4
- package/dist/lib/addBlankLine.cjs +0 -10
- package/dist/lib/addBlankLine.cjs.map +0 -1
- package/dist/lib/addBlankLine.js.map +0 -1
- package/dist/lib/addLine.cjs +0 -9
- package/dist/lib/addLine.cjs.map +0 -1
- package/dist/lib/addLine.js.map +0 -1
- package/dist/lib/addSection.cjs +0 -9
- package/dist/lib/addSection.cjs.map +0 -1
- package/dist/lib/addSection.js.map +0 -1
- package/dist/lib/addTrailingNewLine.cjs +0 -9
- package/dist/lib/addTrailingNewLine.js.map +0 -1
- package/dist/lib/buildCustomTypeDataType.cjs +0 -51
- package/dist/lib/buildCustomTypeDataType.cjs.map +0 -1
- package/dist/lib/buildCustomTypeDataType.js.map +0 -1
- package/dist/lib/buildCustomTypeType.cjs +0 -63
- package/dist/lib/buildCustomTypeType.cjs.map +0 -1
- package/dist/lib/buildCustomTypeType.js.map +0 -1
- package/dist/lib/buildFieldDocs.cjs +0 -66
- package/dist/lib/buildFieldDocs.cjs.map +0 -1
- package/dist/lib/buildFieldDocs.js.map +0 -1
- package/dist/lib/buildFieldProperties.cjs +0 -285
- package/dist/lib/buildFieldProperties.cjs.map +0 -1
- package/dist/lib/buildFieldProperties.js.map +0 -1
- package/dist/lib/buildSharedSliceType.cjs +0 -152
- package/dist/lib/buildSharedSliceType.cjs.map +0 -1
- package/dist/lib/buildSharedSliceType.js.map +0 -1
- package/dist/lib/buildTypeName.cjs +0 -12
- package/dist/lib/buildTypeName.cjs.map +0 -1
- package/dist/lib/buildTypeName.js.map +0 -1
- package/dist/lib/buildUnion.cjs +0 -8
- package/dist/lib/buildUnion.js.map +0 -1
- package/dist/lib/checkHasUIDFIeld.cjs +0 -8
- package/dist/lib/checkHasUIDFIeld.js.map +0 -1
- package/dist/lib/getAPIIDPath.cjs +0 -24
- package/dist/lib/getAPIIDPath.js.map +0 -1
- package/dist/lib/getCacheKey.cjs +0 -17
- package/dist/lib/getCacheKey.cjs.map +0 -1
- package/dist/lib/getCacheKey.js.map +0 -1
- package/dist/lib/getHumanReadableModelName.cjs +0 -15
- package/dist/lib/getHumanReadableModelName.js.map +0 -1
- package/dist/lib/getHumanReadablePath.cjs +0 -16
- package/dist/lib/getHumanReadablePath.cjs.map +0 -1
- package/dist/lib/getHumanReadablePath.js.map +0 -1
- package/dist/types.d.cts.map +0 -1
- package/dist/types.d.ts +0 -14
- package/dist/types.d.ts.map +0 -1
- /package/dist/{cli.d.cts → cli.d.mts} +0 -0
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
const require_addLine = require("./addLine.cjs");
|
|
2
|
-
const require_constants = require("../constants.cjs");
|
|
3
|
-
const require_getAPIIDPath = require("./getAPIIDPath.cjs");
|
|
4
|
-
const require_getHumanReadableModelName = require("./getHumanReadableModelName.cjs");
|
|
5
|
-
const require_getHumanReadablePath = require("./getHumanReadablePath.cjs");
|
|
6
|
-
//#region src/lib/buildFieldDocs.ts
|
|
7
|
-
function getHumanReadableFieldType(args) {
|
|
8
|
-
switch (args.field.type) {
|
|
9
|
-
case "StructuredText": return "Rich Text";
|
|
10
|
-
case "IntegrationFields": {
|
|
11
|
-
const catalog = args.field.config?.catalog;
|
|
12
|
-
return `Integration Fields (Catalog: ${catalog ? `\`${catalog}\`` : "*unknown*"})`;
|
|
13
|
-
}
|
|
14
|
-
case "Link": switch (args.field.config?.select) {
|
|
15
|
-
case "document": return "Content Relationship";
|
|
16
|
-
case "media": return "Link to Media";
|
|
17
|
-
default: return "Link";
|
|
18
|
-
}
|
|
19
|
-
case "Slices": return "Slice Zone";
|
|
20
|
-
default: return args.field.type;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
function getDocumentationURL(args) {
|
|
24
|
-
switch (args.field.type) {
|
|
25
|
-
case "Link": {
|
|
26
|
-
const urls = require_constants.FIELD_DOCUMENTATION_URLS.Link;
|
|
27
|
-
switch (args.field.config?.select) {
|
|
28
|
-
case "document": return urls.contentRelationship;
|
|
29
|
-
case "media": return urls.linkToMedia;
|
|
30
|
-
default: return urls.link;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
default: {
|
|
34
|
-
const url = require_constants.FIELD_DOCUMENTATION_URLS[args.field.type];
|
|
35
|
-
if (typeof url === "string") return url;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
function buildFieldDocs(args) {
|
|
40
|
-
let result = "/**";
|
|
41
|
-
const humanReadableName = require_getHumanReadableModelName.getHumanReadableModelName({
|
|
42
|
-
model: args.field,
|
|
43
|
-
name: args.name
|
|
44
|
-
});
|
|
45
|
-
const humanReadablePath = require_getHumanReadablePath.getHumanReadablePath({ path: args.path });
|
|
46
|
-
const humanReadableFieldType = getHumanReadableFieldType({ field: args.field });
|
|
47
|
-
result = require_addLine.addLine(` * ${humanReadableName} field in *${humanReadablePath}*`, result);
|
|
48
|
-
result = require_addLine.addLine(" *", result);
|
|
49
|
-
result = require_addLine.addLine(` * - **Field Type**: ${humanReadableFieldType}`, result);
|
|
50
|
-
result = require_addLine.addLine(` * - **Placeholder**: ${args.field.config && "placeholder" in args.field.config && args.field.config.placeholder || `*None*`}`, result);
|
|
51
|
-
const defaultValue = args.field.config && "default_value" in args.field.config ? args.field.config.default_value : void 0;
|
|
52
|
-
if (defaultValue !== void 0) result = require_addLine.addLine(` * - **Default Value**: ${typeof defaultValue === "boolean" ? `${defaultValue}` : defaultValue}`, result);
|
|
53
|
-
result = require_addLine.addLine(` * - **API ID Path**: ${require_getAPIIDPath.getAPIIDPath({ path: [...args.path, {
|
|
54
|
-
name: args.name,
|
|
55
|
-
model: args.field
|
|
56
|
-
}] })}`, result);
|
|
57
|
-
if (args.tabName) result = require_addLine.addLine(` * - **Tab**: ${args.tabName}`, result);
|
|
58
|
-
const documentationURL = getDocumentationURL({ field: args.field });
|
|
59
|
-
if (documentationURL) result = require_addLine.addLine(` * - **Documentation**: ${documentationURL}`, result);
|
|
60
|
-
result = require_addLine.addLine(" */", result);
|
|
61
|
-
return result;
|
|
62
|
-
}
|
|
63
|
-
//#endregion
|
|
64
|
-
exports.buildFieldDocs = buildFieldDocs;
|
|
65
|
-
|
|
66
|
-
//# sourceMappingURL=buildFieldDocs.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"buildFieldDocs.cjs","names":["FIELD_DOCUMENTATION_URLS","getHumanReadableModelName","getHumanReadablePath","addLine","getAPIIDPath"],"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;AAC/E,SAAQ,KAAK,MAAM,MAAnB;EACC,KAAK,iBACJ,QAAO;EAGR,KAAK,qBAAqB;GACzB,MAAM,UAAU,KAAK,MAAM,QAAQ;AAEnC,UAAO,gCAAgC,UAAU,KAAK,QAAQ,MAAM,YAAY;;EAGjF,KAAK,OACJ,SAAQ,KAAK,MAAM,QAAQ,QAA3B;GACC,KAAK,WACJ,QAAO;GAGR,KAAK,QACJ,QAAO;GAGR,QACC,QAAO;;EAKV,KAAK,SACJ,QAAO;EAGR,QACC,QAAO,KAAK,MAAM;;;AASrB,SAAS,oBAAoB,MAA+B;AAC3D,SAAQ,KAAK,MAAM,MAAnB;EACC,KAAK,QAAQ;GACZ,MAAM,OAAOA,kBAAAA,yBAAyB;AAEtC,WAAQ,KAAK,MAAM,QAAQ,QAA3B;IACC,KAAK,WACJ,QAAO,KAAK;IAGb,KAAK,QACJ,QAAO,KAAK;IAGb,QACC,QAAO,KAAK;;;EAKf,SAAS;GACR,MAAM,MACLA,kBAAAA,yBAAyB,KAAK,MAAM;AAErC,OAAI,OAAO,QAAQ,SAClB,QAAO;;;;AAaX,SAAgB,eAAe,MAAkC;CAChE,IAAI,SAAS;CAEb,MAAM,oBAAoBC,kCAAAA,0BAA0B;EACnD,OAAO,KAAK;EACZ,MAAM,KAAK;EACX,CAAC;CACF,MAAM,oBAAoBC,6BAAAA,qBAAqB,EAAE,MAAM,KAAK,MAAM,CAAC;CACnE,MAAM,yBAAyB,0BAA0B,EACxD,OAAO,KAAK,OACZ,CAAC;AAEF,UAASC,gBAAAA,QAAQ,MAAM,kBAAkB,aAAa,kBAAkB,IAAI,OAAO;AAEnF,UAASA,gBAAAA,QAAQ,MAAM,OAAO;AAE9B,UAASA,gBAAAA,QAAQ,wBAAwB,0BAA0B,OAAO;AAK1E,UAASA,gBAAAA,QAAQ,yBAFf,KAAK,MAAM,UAAU,iBAAiB,KAAK,MAAM,UAAU,KAAK,MAAM,OAAO,eAC9E,YACwD,OAAO;CAEhE,MAAM,eACL,KAAK,MAAM,UAAU,mBAAmB,KAAK,MAAM,SAChD,KAAK,MAAM,OAAO,gBAClB,KAAA;AACJ,KAAI,iBAAiB,KAAA,EAIpB,UAASA,gBAAAA,QAAQ,2BAFhB,OAAO,iBAAiB,YAAY,GAAG,iBAAiB,gBAEc,OAAO;AAM/E,UAASA,gBAAAA,QAAQ,yBAHCC,qBAAAA,aAAa,EAC9B,MAAM,CAAC,GAAG,KAAK,MAAM;EAAE,MAAM,KAAK;EAAM,OAAO,KAAK;EAAO,CAAC,EAC5D,CAAC,IACqD,OAAO;AAE9D,KAAI,KAAK,QACR,UAASD,gBAAAA,QAAQ,iBAAiB,KAAK,WAAW,OAAO;CAG1D,MAAM,mBAAmB,oBAAoB,EAAE,OAAO,KAAK,OAAO,CAAC;AACnE,KAAI,iBACH,UAASA,gBAAAA,QAAQ,2BAA2B,oBAAoB,OAAO;AAGxE,UAASA,gBAAAA,QAAQ,OAAO,OAAO;AAE/B,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"buildFieldDocs.js","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;AAC/E,SAAQ,KAAK,MAAM,MAAnB;EACC,KAAK,iBACJ,QAAO;EAGR,KAAK,qBAAqB;GACzB,MAAM,UAAU,KAAK,MAAM,QAAQ;AAEnC,UAAO,gCAAgC,UAAU,KAAK,QAAQ,MAAM,YAAY;;EAGjF,KAAK,OACJ,SAAQ,KAAK,MAAM,QAAQ,QAA3B;GACC,KAAK,WACJ,QAAO;GAGR,KAAK,QACJ,QAAO;GAGR,QACC,QAAO;;EAKV,KAAK,SACJ,QAAO;EAGR,QACC,QAAO,KAAK,MAAM;;;AASrB,SAAS,oBAAoB,MAA+B;AAC3D,SAAQ,KAAK,MAAM,MAAnB;EACC,KAAK,QAAQ;GACZ,MAAM,OAAO,yBAAyB;AAEtC,WAAQ,KAAK,MAAM,QAAQ,QAA3B;IACC,KAAK,WACJ,QAAO,KAAK;IAGb,KAAK,QACJ,QAAO,KAAK;IAGb,QACC,QAAO,KAAK;;;EAKf,SAAS;GACR,MAAM,MACL,yBAAyB,KAAK,MAAM;AAErC,OAAI,OAAO,QAAQ,SAClB,QAAO;;;;AAaX,SAAgB,eAAe,MAAkC;CAChE,IAAI,SAAS;CAEb,MAAM,oBAAoB,0BAA0B;EACnD,OAAO,KAAK;EACZ,MAAM,KAAK;EACX,CAAC;CACF,MAAM,oBAAoB,qBAAqB,EAAE,MAAM,KAAK,MAAM,CAAC;CACnE,MAAM,yBAAyB,0BAA0B,EACxD,OAAO,KAAK,OACZ,CAAC;AAEF,UAAS,QAAQ,MAAM,kBAAkB,aAAa,kBAAkB,IAAI,OAAO;AAEnF,UAAS,QAAQ,MAAM,OAAO;AAE9B,UAAS,QAAQ,wBAAwB,0BAA0B,OAAO;AAK1E,UAAS,QAAQ,yBAFf,KAAK,MAAM,UAAU,iBAAiB,KAAK,MAAM,UAAU,KAAK,MAAM,OAAO,eAC9E,YACwD,OAAO;CAEhE,MAAM,eACL,KAAK,MAAM,UAAU,mBAAmB,KAAK,MAAM,SAChD,KAAK,MAAM,OAAO,gBAClB,KAAA;AACJ,KAAI,iBAAiB,KAAA,EAIpB,UAAS,QAAQ,2BAFhB,OAAO,iBAAiB,YAAY,GAAG,iBAAiB,gBAEc,OAAO;AAM/E,UAAS,QAAQ,yBAHC,aAAa,EAC9B,MAAM,CAAC,GAAG,KAAK,MAAM;EAAE,MAAM,KAAK;EAAM,OAAO,KAAK;EAAO,CAAC,EAC5D,CAAC,IACqD,OAAO;AAE9D,KAAI,KAAK,QACR,UAAS,QAAQ,iBAAiB,KAAK,WAAW,OAAO;CAG1D,MAAM,mBAAmB,oBAAoB,EAAE,OAAO,KAAK,OAAO,CAAC;AACnE,KAAI,iBACH,UAAS,QAAQ,2BAA2B,oBAAoB,OAAO;AAGxE,UAAS,QAAQ,OAAO,OAAO;AAE/B,QAAO"}
|
|
@@ -1,285 +0,0 @@
|
|
|
1
|
-
require("../_virtual/_rolldown/runtime.cjs");
|
|
2
|
-
const require_addLine = require("./addLine.cjs");
|
|
3
|
-
const require_addSection = require("./addSection.cjs");
|
|
4
|
-
const require_buildTypeName = require("./buildTypeName.cjs");
|
|
5
|
-
const require_getHumanReadablePath = require("./getHumanReadablePath.cjs");
|
|
6
|
-
const require_buildFieldDocs = require("./buildFieldDocs.cjs");
|
|
7
|
-
const require_buildUnion = require("./buildUnion.cjs");
|
|
8
|
-
let common_tags = require("common-tags");
|
|
9
|
-
let _prismicio_client = require("@prismicio/client");
|
|
10
|
-
//#region src/lib/buildFieldProperties.ts
|
|
11
|
-
function buildFieldProperty(args) {
|
|
12
|
-
let code = require_buildFieldDocs.buildFieldDocs({
|
|
13
|
-
name: args.name,
|
|
14
|
-
field: args.field,
|
|
15
|
-
path: args.path,
|
|
16
|
-
tabName: args.tabName
|
|
17
|
-
});
|
|
18
|
-
const auxiliaryTypes = [];
|
|
19
|
-
const contentTypeNames = [];
|
|
20
|
-
const name = args.name.includes("-") || args.name.includes(":") || /^[0-9]/.test(args.name) ? `"${args.name}"` : args.name;
|
|
21
|
-
switch (args.field.type) {
|
|
22
|
-
case "UID": break;
|
|
23
|
-
case "Boolean":
|
|
24
|
-
code = require_addLine.addLine(`${name}: prismic.BooleanField;`, code);
|
|
25
|
-
break;
|
|
26
|
-
case "Color":
|
|
27
|
-
code = require_addLine.addLine(`${name}: prismic.ColorField;`, code);
|
|
28
|
-
break;
|
|
29
|
-
case "Date":
|
|
30
|
-
code = require_addLine.addLine(`${name}: prismic.DateField;`, code);
|
|
31
|
-
break;
|
|
32
|
-
case "Embed": {
|
|
33
|
-
const providerTypes = [];
|
|
34
|
-
if (args.fieldConfigs.embed?.providerTypes) for (const providerType in args.fieldConfigs.embed?.providerTypes) {
|
|
35
|
-
const configuredProviderType = args.fieldConfigs.embed?.providerTypes[providerType];
|
|
36
|
-
providerTypes.push(`({ provider_name: "${providerType}" } & ${configuredProviderType})`);
|
|
37
|
-
}
|
|
38
|
-
const providerTypesUnion = require_buildUnion.buildUnion(providerTypes);
|
|
39
|
-
code = providerTypes.length > 0 ? require_addLine.addLine(`${name}: prismic.EmbedField<prismic.AnyOEmbed & prismic.OEmbedExtra & (${providerTypesUnion})>`, code) : require_addLine.addLine(`${name}: prismic.EmbedField`, code);
|
|
40
|
-
break;
|
|
41
|
-
}
|
|
42
|
-
case "GeoPoint":
|
|
43
|
-
code = require_addLine.addLine(`${name}: prismic.GeoPointField;`, code);
|
|
44
|
-
break;
|
|
45
|
-
case "Image":
|
|
46
|
-
if (args.field.config?.thumbnails && args.field.config.thumbnails.length > 0) code = require_addLine.addLine(`${name}: prismic.ImageField<${require_buildUnion.buildUnion(args.field.config.thumbnails.map((thumb) => `"${thumb.name}"`))}>;`, code);
|
|
47
|
-
else code = require_addLine.addLine(`${name}: prismic.ImageField<never>;`, code);
|
|
48
|
-
break;
|
|
49
|
-
case "IntegrationFields": {
|
|
50
|
-
const catalogType = args.field.config?.catalog ? args.fieldConfigs.integrationFields?.catalogTypes?.[args.field.config.catalog] : void 0;
|
|
51
|
-
if (catalogType) code = require_addLine.addLine(`${name}: prismic.IntegrationField<${catalogType}>;`, code);
|
|
52
|
-
else code = require_addLine.addLine(`${name}: prismic.IntegrationField;`, code);
|
|
53
|
-
break;
|
|
54
|
-
}
|
|
55
|
-
case "Link": {
|
|
56
|
-
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";
|
|
57
|
-
switch (args.field.config?.select) {
|
|
58
|
-
case "document":
|
|
59
|
-
if ("customtypes" in args.field.config && args.field.config.customtypes && args.field.config.customtypes.length > 0) code = require_addLine.addLine(`${name}: ${require_buildUnion.buildUnion(args.field.config.customtypes.map((type) => {
|
|
60
|
-
if (typeof type === "string") return `prismic.ContentRelationshipField<"${type}">`;
|
|
61
|
-
return `ContentRelationshipFieldWithData<${JSON.stringify([type])}>`;
|
|
62
|
-
}))};`, code);
|
|
63
|
-
else code = require_addLine.addLine(`${name}: prismic.ContentRelationshipField;`, code);
|
|
64
|
-
break;
|
|
65
|
-
case "media":
|
|
66
|
-
code = require_addLine.addLine(`${name}: prismic.LinkToMediaField<prismic.FieldState, ${variants}>;`, code);
|
|
67
|
-
break;
|
|
68
|
-
default: {
|
|
69
|
-
let type = `prismic.LinkField<string, string, unknown, prismic.FieldState, ${variants}>`;
|
|
70
|
-
if (args.field.config?.repeat) type = `prismic.Repeatable<${type}>`;
|
|
71
|
-
code = require_addLine.addLine(`${name}: ${type};`, code);
|
|
72
|
-
break;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
break;
|
|
76
|
-
}
|
|
77
|
-
case "Number":
|
|
78
|
-
code = require_addLine.addLine(`${name}: prismic.NumberField;`, code);
|
|
79
|
-
break;
|
|
80
|
-
case "StructuredText":
|
|
81
|
-
code = require_addLine.addLine(`${name}: prismic.RichTextField;`, code);
|
|
82
|
-
break;
|
|
83
|
-
case "Select": {
|
|
84
|
-
const options = args.field.config?.options?.map((option) => `"${option}"`) || [];
|
|
85
|
-
const optionsType = options.length ? require_buildUnion.buildUnion(options) : "string";
|
|
86
|
-
if (Boolean(args.field.config?.default_value)) code = require_addLine.addLine(`${name}: prismic.SelectField<${optionsType}, "filled">;`, code);
|
|
87
|
-
else code = require_addLine.addLine(`${name}: prismic.SelectField${options.length > 0 ? `<${optionsType}>` : ""};`, code);
|
|
88
|
-
break;
|
|
89
|
-
}
|
|
90
|
-
case "Table":
|
|
91
|
-
code = require_addLine.addLine(`${name}: prismic.TableField;`, code);
|
|
92
|
-
break;
|
|
93
|
-
case "Text":
|
|
94
|
-
code = require_addLine.addLine(`${name}: prismic.KeyTextField;`, code);
|
|
95
|
-
break;
|
|
96
|
-
case "Timestamp":
|
|
97
|
-
code = require_addLine.addLine(`${name}: prismic.TimestampField;`, code);
|
|
98
|
-
break;
|
|
99
|
-
case "Group": {
|
|
100
|
-
const groupPathParts = args.path.filter((part) => part.model !== void 0 && "type" in part.model && part.model.type === _prismicio_client.CustomTypeModelFieldType.Group);
|
|
101
|
-
const isNestedGroup = groupPathParts.length > 0;
|
|
102
|
-
let itemName;
|
|
103
|
-
if (args.path[0].model && "type" in args.path[0].model && args.path[0].model.type === "SharedSlice") {
|
|
104
|
-
const [slicePathPart, variationPathPart, zonePathPart] = args.path;
|
|
105
|
-
itemName = require_buildTypeName.buildTypeName(slicePathPart.name, "Slice", variationPathPart.name, zonePathPart.name, ...groupPathParts.map((part) => part.name), args.name, "Item");
|
|
106
|
-
} else itemName = require_buildTypeName.buildTypeName(args.path[0].name, "Document", "Data", ...groupPathParts.map((part) => part.name), args.name, "Item");
|
|
107
|
-
const path = [...args.path, {
|
|
108
|
-
name,
|
|
109
|
-
model: args.field
|
|
110
|
-
}];
|
|
111
|
-
const humanReadablePath = require_getHumanReadablePath.getHumanReadablePath({ path });
|
|
112
|
-
const itemFieldProperties = buildFieldProperties({
|
|
113
|
-
fields: args.field.config?.fields || {},
|
|
114
|
-
fieldConfigs: args.fieldConfigs,
|
|
115
|
-
path
|
|
116
|
-
});
|
|
117
|
-
auxiliaryTypes.push(...itemFieldProperties.auxiliaryTypes);
|
|
118
|
-
contentTypeNames.push(...itemFieldProperties.contentTypeNames);
|
|
119
|
-
auxiliaryTypes.push({
|
|
120
|
-
name: itemName,
|
|
121
|
-
code: common_tags.source`
|
|
122
|
-
/**
|
|
123
|
-
* Item in *${humanReadablePath}*
|
|
124
|
-
*/
|
|
125
|
-
export interface ${itemName} {
|
|
126
|
-
${itemFieldProperties.code}
|
|
127
|
-
}
|
|
128
|
-
`
|
|
129
|
-
});
|
|
130
|
-
contentTypeNames.push(itemName);
|
|
131
|
-
if (isNestedGroup) code = require_addLine.addLine(`${name}: prismic.NestedGroupField<Simplify<${itemName}>>;`, code);
|
|
132
|
-
else code = require_addLine.addLine(`${name}: prismic.GroupField<Simplify<${itemName}>>;`, code);
|
|
133
|
-
break;
|
|
134
|
-
}
|
|
135
|
-
case "Slices": {
|
|
136
|
-
const choiceNames = [];
|
|
137
|
-
if (args.field.config?.choices) for (const choiceID in args.field.config.choices) {
|
|
138
|
-
const choice = args.field.config.choices[choiceID];
|
|
139
|
-
if (choice.type === "SharedSlice") choiceNames.push(require_buildTypeName.buildTypeName(choiceID, "Slice"));
|
|
140
|
-
else if (choice.type === "Slice") {
|
|
141
|
-
const sliceName = require_buildTypeName.buildTypeName(args.path[0].name, "Document", "Data", args.name, choiceID, "Slice");
|
|
142
|
-
let primaryInterfaceName;
|
|
143
|
-
if (choice["non-repeat"] && Object.keys(choice["non-repeat"]).length > 0) {
|
|
144
|
-
primaryInterfaceName = require_buildTypeName.buildTypeName(sliceName, "Primary");
|
|
145
|
-
const path = [
|
|
146
|
-
...args.path,
|
|
147
|
-
{
|
|
148
|
-
name: args.name,
|
|
149
|
-
model: args.field
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
name: choiceID,
|
|
153
|
-
model: choice
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
name: "primary",
|
|
157
|
-
label: "Primary"
|
|
158
|
-
}
|
|
159
|
-
];
|
|
160
|
-
const humanReadablePath = require_getHumanReadablePath.getHumanReadablePath({ path });
|
|
161
|
-
const primaryFieldProperties = buildFieldProperties({
|
|
162
|
-
fields: choice["non-repeat"],
|
|
163
|
-
fieldConfigs: args.fieldConfigs,
|
|
164
|
-
path
|
|
165
|
-
});
|
|
166
|
-
auxiliaryTypes.push(...primaryFieldProperties.auxiliaryTypes);
|
|
167
|
-
contentTypeNames.push(...primaryFieldProperties.contentTypeNames);
|
|
168
|
-
let primaryCode = common_tags.stripIndent`
|
|
169
|
-
/**
|
|
170
|
-
* Primary content in *${humanReadablePath}*
|
|
171
|
-
*/
|
|
172
|
-
`;
|
|
173
|
-
primaryCode = primaryFieldProperties.code ? require_addLine.addLine(common_tags.source`
|
|
174
|
-
export interface ${primaryInterfaceName} {
|
|
175
|
-
${primaryFieldProperties.code}
|
|
176
|
-
}
|
|
177
|
-
`, primaryCode) : require_addLine.addLine(`export interface ${primaryInterfaceName} {}`, primaryCode);
|
|
178
|
-
auxiliaryTypes.push({
|
|
179
|
-
name: primaryInterfaceName,
|
|
180
|
-
code: primaryCode
|
|
181
|
-
});
|
|
182
|
-
contentTypeNames.push(primaryInterfaceName);
|
|
183
|
-
}
|
|
184
|
-
let itemInterfaceName;
|
|
185
|
-
if (choice.repeat && Object.keys(choice.repeat).length > 0) {
|
|
186
|
-
itemInterfaceName = require_buildTypeName.buildTypeName(sliceName, "Item");
|
|
187
|
-
const path = [
|
|
188
|
-
...args.path,
|
|
189
|
-
{
|
|
190
|
-
name: args.name,
|
|
191
|
-
model: args.field
|
|
192
|
-
},
|
|
193
|
-
{
|
|
194
|
-
name: choiceID,
|
|
195
|
-
model: choice
|
|
196
|
-
},
|
|
197
|
-
{
|
|
198
|
-
name: "items",
|
|
199
|
-
label: "Items"
|
|
200
|
-
}
|
|
201
|
-
];
|
|
202
|
-
const humanReadablePath = require_getHumanReadablePath.getHumanReadablePath({ path });
|
|
203
|
-
const itemFieldProperties = buildFieldProperties({
|
|
204
|
-
fields: choice.repeat,
|
|
205
|
-
fieldConfigs: args.fieldConfigs,
|
|
206
|
-
path
|
|
207
|
-
});
|
|
208
|
-
auxiliaryTypes.push(...itemFieldProperties.auxiliaryTypes);
|
|
209
|
-
contentTypeNames.push(...itemFieldProperties.contentTypeNames);
|
|
210
|
-
let itemCode = common_tags.stripIndent`
|
|
211
|
-
/**
|
|
212
|
-
* Item content in *${humanReadablePath}*
|
|
213
|
-
*/
|
|
214
|
-
`;
|
|
215
|
-
itemCode = itemFieldProperties.code ? require_addLine.addLine(common_tags.source`
|
|
216
|
-
export interface ${itemInterfaceName} {
|
|
217
|
-
${itemFieldProperties.code}
|
|
218
|
-
}
|
|
219
|
-
`, itemCode) : require_addLine.addLine(`export interface ${itemInterfaceName} {}`, itemCode);
|
|
220
|
-
auxiliaryTypes.push({
|
|
221
|
-
name: itemInterfaceName,
|
|
222
|
-
code: itemCode
|
|
223
|
-
});
|
|
224
|
-
contentTypeNames.push(itemInterfaceName);
|
|
225
|
-
}
|
|
226
|
-
auxiliaryTypes.push({
|
|
227
|
-
name: sliceName,
|
|
228
|
-
code: common_tags.stripIndent`
|
|
229
|
-
/**
|
|
230
|
-
* Slice for *${require_getHumanReadablePath.getHumanReadablePath({ path: [...args.path, {
|
|
231
|
-
name: args.name,
|
|
232
|
-
model: args.field
|
|
233
|
-
}] })}*
|
|
234
|
-
*/
|
|
235
|
-
export type ${sliceName} = prismic.Slice<"${choiceID}", ${primaryInterfaceName ? `Simplify<${primaryInterfaceName}>` : `Record<string, never>`}, ${itemInterfaceName ? `Simplify<${itemInterfaceName}>` : `never`}>
|
|
236
|
-
`
|
|
237
|
-
});
|
|
238
|
-
choiceNames.push(sliceName);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
const choiceUnionName = require_buildTypeName.buildTypeName(args.path[0].name, "Document", "Data", args.name, "Slice");
|
|
242
|
-
const choiceUnion = require_buildUnion.buildUnion(choiceNames);
|
|
243
|
-
auxiliaryTypes.push({
|
|
244
|
-
name: choiceUnionName,
|
|
245
|
-
code: `type ${choiceUnionName} = ${choiceUnion}`
|
|
246
|
-
});
|
|
247
|
-
contentTypeNames.push(choiceUnionName);
|
|
248
|
-
code = require_addLine.addLine(`${name}: prismic.SliceZone<${choiceUnionName}>;`, code);
|
|
249
|
-
break;
|
|
250
|
-
}
|
|
251
|
-
default: code = require_addLine.addLine(`${name}: unknown;`, code);
|
|
252
|
-
}
|
|
253
|
-
return {
|
|
254
|
-
code,
|
|
255
|
-
auxiliaryTypes,
|
|
256
|
-
contentTypeNames
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
function buildFieldProperties(args) {
|
|
260
|
-
let code = "";
|
|
261
|
-
const auxiliaryTypes = [];
|
|
262
|
-
const contentTypeNames = [];
|
|
263
|
-
for (const name in args.fields) {
|
|
264
|
-
const field = args.fields[name];
|
|
265
|
-
const fieldProperty = buildFieldProperty({
|
|
266
|
-
name,
|
|
267
|
-
field,
|
|
268
|
-
path: args.path,
|
|
269
|
-
fieldConfigs: args.fieldConfigs,
|
|
270
|
-
tabName: args.tabName
|
|
271
|
-
});
|
|
272
|
-
code = require_addSection.addSection(fieldProperty.code, code);
|
|
273
|
-
auxiliaryTypes.push(...fieldProperty.auxiliaryTypes);
|
|
274
|
-
contentTypeNames.push(...fieldProperty.contentTypeNames);
|
|
275
|
-
}
|
|
276
|
-
return {
|
|
277
|
-
code,
|
|
278
|
-
auxiliaryTypes,
|
|
279
|
-
contentTypeNames
|
|
280
|
-
};
|
|
281
|
-
}
|
|
282
|
-
//#endregion
|
|
283
|
-
exports.buildFieldProperties = buildFieldProperties;
|
|
284
|
-
|
|
285
|
-
//# sourceMappingURL=buildFieldProperties.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"buildFieldProperties.cjs","names":["buildFieldDocs","addLine","buildUnion","CustomTypeModelFieldType","buildTypeName","getHumanReadablePath","addSection"],"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":";;;;;;;;;;AAyBA,SAAS,mBAAmB,MAA4D;CACvF,IAAI,OAAOA,uBAAAA,eAAe;EACzB,MAAM,KAAK;EACX,OAAO,KAAK;EACZ,MAAM,KAAK;EACX,SAAS,KAAK;EACd,CAAC;CAEF,MAAM,iBAAkC,EAAE;CAC1C,MAAM,mBAA6B,EAAE;CAErC,MAAM,OACL,KAAK,KAAK,SAAS,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,SAAS,KAAK,KAAK,KAAK,GAC3E,IAAI,KAAK,KAAK,KACd,KAAK;AAET,SAAQ,KAAK,MAAM,MAAnB;EACC,KAAK,MAEJ;EAGD,KAAK;AACJ,UAAOC,gBAAAA,QAAQ,GAAG,KAAK,0BAA0B,KAAK;AAEtD;EAGD,KAAK;AACJ,UAAOA,gBAAAA,QAAQ,GAAG,KAAK,wBAAwB,KAAK;AAEpD;EAGD,KAAK;AACJ,UAAOA,gBAAAA,QAAQ,GAAG,KAAK,uBAAuB,KAAK;AAEnD;EAGD,KAAK,SAAS;GACb,MAAM,gBAA0B,EAAE;AAElC,OAAI,KAAK,aAAa,OAAO,cAC5B,MAAK,MAAM,gBAAgB,KAAK,aAAa,OAAO,eAAe;IAClE,MAAM,yBAAyB,KAAK,aAAa,OAAO,cAAc;AAEtE,kBAAc,KAAK,sBAAsB,aAAa,QAAQ,uBAAuB,GAAG;;GAI1F,MAAM,qBAAqBC,mBAAAA,WAAW,cAAc;AAEpD,UACC,cAAc,SAAS,IACpBD,gBAAAA,QACA,GAAG,KAAK,kEAAkE,mBAAmB,KAC7F,KACA,GACAA,gBAAAA,QAAQ,GAAG,KAAK,uBAAuB,KAAK;AAEhD;;EAGD,KAAK;AACJ,UAAOA,gBAAAA,QAAQ,GAAG,KAAK,2BAA2B,KAAK;AAEvD;EAGD,KAAK;AACJ,OAAI,KAAK,MAAM,QAAQ,cAAc,KAAK,MAAM,OAAO,WAAW,SAAS,EAK1E,QAAOA,gBAAAA,QAAQ,GAAG,KAAK,uBAJAC,mBAAAA,WACtB,KAAK,MAAM,OAAO,WAAW,KAAK,UAAU,IAAI,MAAM,KAAK,GAAG,CAC9D,CAE4D,KAAK,KAAK;OAEvE,QAAOD,gBAAAA,QAAQ,GAAG,KAAK,+BAA+B,KAAK;AAG5D;EAGD,KAAK,qBAAqB;GACzB,MAAM,cAAc,KAAK,MAAM,QAAQ,UACpC,KAAK,aAAa,mBAAmB,eAAe,KAAK,MAAM,OAAO,WACtE,KAAA;AAEH,OAAI,YACH,QAAOA,gBAAAA,QAAQ,GAAG,KAAK,6BAA6B,YAAY,KAAK,KAAK;OAE1E,QAAOA,gBAAAA,QAAQ,GAAG,KAAK,8BAA8B,KAAK;AAG3D;;EAGD,KAAK,QAAQ;GACZ,MAAM,WACL,KAAK,MAAM,UACX,cAAc,KAAK,MAAM,UACzB,MAAM,QAAQ,KAAK,MAAM,OAAO,SAAS,IACzC,KAAK,MAAM,OAAO,SAAS,SAAS,IACjC,KAAK,MAAM,OAAO,SACjB,KAAK,YAAY,IAAI,QAAQ,QAAQ,MAAM,OAAM,CAAC,GAAG,CACrD,KAAK,MAAM,GACZ;AAEJ,WAAQ,KAAK,MAAM,QAAQ,QAA3B;IACC,KAAK;AACJ,SACC,iBAAiB,KAAK,MAAM,UAC5B,KAAK,MAAM,OAAO,eAClB,KAAK,MAAM,OAAO,YAAY,SAAS,EAYvC,QAAOA,gBAAAA,QAAQ,GAAG,KAAK,IAVUC,mBAAAA,WAChC,KAAK,MAAM,OAAO,YAAY,KAAK,SAAS;AAC3C,UAAI,OAAO,SAAS,SACnB,QAAO,qCAAqC,KAAK;AAGlD,aAAO,oCAAoC,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC;OACjE,CACF,CAEmD,IAAI,KAAK;SAE7D,QAAOD,gBAAAA,QAAQ,GAAG,KAAK,sCAAsC,KAAK;AAGnE;IAGD,KAAK;AACJ,YAAOA,gBAAAA,QACN,GAAG,KAAK,iDAAiD,SAAS,KAClE,KACA;AACD;IAGD,SAAS;KACR,IAAI,OAAO,kEAAkE,SAAS;AAEtF,SAAI,KAAK,MAAM,QAAQ,OACtB,QAAO,sBAAsB,KAAK;AAGnC,YAAOA,gBAAAA,QAAQ,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK;AACzC;;;AAIF;;EAGD,KAAK;AACJ,UAAOA,gBAAAA,QAAQ,GAAG,KAAK,yBAAyB,KAAK;AAErD;EAGD,KAAK;AACJ,UAAOA,gBAAAA,QAAQ,GAAG,KAAK,2BAA2B,KAAK;AAEvD;EAGD,KAAK,UAAU;GACd,MAAM,UAAoB,KAAK,MAAM,QAAQ,SAAS,KAAK,WAAW,IAAI,OAAO,GAAG,IAAI,EAAE;GAC1F,MAAM,cAAc,QAAQ,SAASC,mBAAAA,WAAW,QAAQ,GAAG;AAI3D,OAFmB,QAAQ,KAAK,MAAM,QAAQ,cAAc,CAG3D,QAAOD,gBAAAA,QAAQ,GAAG,KAAK,wBAAwB,YAAY,eAAe,KAAK;OAE/E,QAAOA,gBAAAA,QACN,GAAG,KAAK,uBAAuB,QAAQ,SAAS,IAAI,IAAI,YAAY,KAAK,GAAG,IAC5E,KACA;AAGF;;EAGD,KAAK;AACJ,UAAOA,gBAAAA,QAAQ,GAAG,KAAK,wBAAwB,KAAK;AAEpD;EAGD,KAAK;AACJ,UAAOA,gBAAAA,QAAQ,GAAG,KAAK,0BAA0B,KAAK;AAEtD;EAGD,KAAK;AACJ,UAAOA,gBAAAA,QAAQ,GAAG,KAAK,4BAA4B,KAAK;AAExD;EAGD,KAAK,SAAS;GACb,MAAM,iBAAiB,KAAK,KAAK,QAC/B,SACA,KAAK,UAAU,KAAA,KACf,UAAU,KAAK,SACf,KAAK,MAAM,SAASE,kBAAAA,yBAAyB,MAC9C;GACD,MAAM,gBAAgB,eAAe,SAAS;GAE9C,IAAI;AACJ,OACC,KAAK,KAAK,GAAG,SACb,UAAU,KAAK,KAAK,GAAG,SACvB,KAAK,KAAK,GAAG,MAAM,SAAS,eAC3B;IACD,MAAM,CAAC,eAAe,mBAAmB,gBAAgB,KAAK;AAE9D,eAAWC,sBAAAA,cACV,cAAc,MACd,SACA,kBAAkB,MAClB,aAAa,MACb,GAAG,eAAe,KAAK,SAAS,KAAK,KAAK,EAC1C,KAAK,MACL,OACA;SAED,YAAWA,sBAAAA,cACV,KAAK,KAAK,GAAG,MACb,YACA,QACA,GAAG,eAAe,KAAK,SAAS,KAAK,KAAK,EAC1C,KAAK,MACL,OACA;GAGF,MAAM,OAAkB,CACvB,GAAG,KAAK,MACR;IACO;IACN,OAAO,KAAK;IACZ,CACD;GACD,MAAM,oBAAoBC,6BAAAA,qBAAqB,EAAE,MAAM,CAAC;GAExD,MAAM,sBAAsB,qBAAqB;IAChD,QAAQ,KAAK,MAAM,QAAQ,UAAU,EAAE;IACvC,cAAc,KAAK;IACnB;IACA,CAAC;AACF,kBAAe,KAAK,GAAG,oBAAoB,eAAe;AAC1D,oBAAiB,KAAK,GAAG,oBAAoB,iBAAiB;AAE9D,kBAAe,KAAK;IACnB,MAAM;IACN,MAAM,YAAA,MAAM;;mBAEG,kBAAkB;;wBAEb,SAAS;QACzB,oBAAoB,KAAK;;;IAG7B,CAAC;AACF,oBAAiB,KAAK,SAAS;AAE/B,OAAI,cACH,QAAOJ,gBAAAA,QAAQ,GAAG,KAAK,sCAAsC,SAAS,MAAM,KAAK;OAEjF,QAAOA,gBAAAA,QAAQ,GAAG,KAAK,gCAAgC,SAAS,MAAM,KAAK;AAG5E;;EAGD,KAAK,UAAU;GACd,MAAM,cAAwB,EAAE;AAEhC,OAAI,KAAK,MAAM,QAAQ,QACtB,MAAK,MAAM,YAAY,KAAK,MAAM,OAAO,SAAS;IACjD,MAAM,SAAS,KAAK,MAAM,OAAO,QAAQ;AAEzC,QAAI,OAAO,SAAS,cAWnB,aAAY,KAAKG,sBAAAA,cAAc,UAAU,QAAQ,CAAC;aACxC,OAAO,SAAS,SAAS;KACnC,MAAM,YAAYA,sBAAAA,cACjB,KAAK,KAAK,GAAG,MACb,YACA,QACA,KAAK,MACL,UACA,QACA;KAED,IAAI;AACJ,SAAI,OAAO,iBAAiB,OAAO,KAAK,OAAO,cAAc,CAAC,SAAS,GAAG;AACzE,6BAAuBA,sBAAAA,cAAc,WAAW,UAAU;MAE1D,MAAM,OAAkB;OACvB,GAAG,KAAK;OACR;QACC,MAAM,KAAK;QACX,OAAO,KAAK;QACZ;OACD;QACC,MAAM;QACN,OAAO;QACP;OACD;QACC,MAAM;QACN,OAAO;QACP;OACD;MACD,MAAM,oBAAoBC,6BAAAA,qBAAqB,EAAE,MAAM,CAAC;MAExD,MAAM,yBAAyB,qBAAqB;OACnD,QAAQ,OAAO;OACf,cAAc,KAAK;OACnB;OACA,CAAC;AACF,qBAAe,KAAK,GAAG,uBAAuB,eAAe;AAC7D,uBAAiB,KAAK,GAAG,uBAAuB,iBAAiB;MAEjE,IAAI,cAAc,YAAA,WAAW;;iCAEH,kBAAkB;;;AAG5C,oBAAc,uBAAuB,OAClCJ,gBAAAA,QACA,YAAA,MAAM;8BACc,qBAAqB;cACrC,uBAAuB,KAAK;;aAGhC,YACA,GACAA,gBAAAA,QAAQ,oBAAoB,qBAAqB,MAAM,YAAY;AAEtE,qBAAe,KAAK;OACnB,MAAM;OACN,MAAM;OACN,CAAC;AACF,uBAAiB,KAAK,qBAAqB;;KAG5C,IAAI;AACJ,SAAI,OAAO,UAAU,OAAO,KAAK,OAAO,OAAO,CAAC,SAAS,GAAG;AAC3D,0BAAoBG,sBAAAA,cAAc,WAAW,OAAO;MAEpD,MAAM,OAAkB;OACvB,GAAG,KAAK;OACR;QACC,MAAM,KAAK;QACX,OAAO,KAAK;QACZ;OACD;QACC,MAAM;QACN,OAAO;QACP;OACD;QACC,MAAM;QACN,OAAO;QACP;OACD;MACD,MAAM,oBAAoBC,6BAAAA,qBAAqB,EAAE,MAAM,CAAC;MAExD,MAAM,sBAAsB,qBAAqB;OAChD,QAAQ,OAAO;OACf,cAAc,KAAK;OACnB;OACA,CAAC;AACF,qBAAe,KAAK,GAAG,oBAAoB,eAAe;AAC1D,uBAAiB,KAAK,GAAG,oBAAoB,iBAAiB;MAE9D,IAAI,WAAW,YAAA,WAAW;;8BAEH,kBAAkB;;;AAGzC,iBAAW,oBAAoB,OAC5BJ,gBAAAA,QACA,YAAA,MAAM;8BACc,kBAAkB;cAClC,oBAAoB,KAAK;;aAG7B,SACA,GACAA,gBAAAA,QAAQ,oBAAoB,kBAAkB,MAAM,SAAS;AAEhE,qBAAe,KAAK;OACnB,MAAM;OACN,MAAM;OACN,CAAC;AACF,uBAAiB,KAAK,kBAAkB;;AAGzC,oBAAe,KAAK;MACnB,MAAM;MACN,MAAM,YAAA,WAAW;;wBAEAI,6BAAAA,qBAAqB,EACnC,MAAM,CACL,GAAG,KAAK,MACR;OACC,MAAM,KAAK;OACX,OAAO,KAAK;OACZ,CACD,EACD,CAAC,CAAC;;sBAEU,UAAU,oBAAoB,SAAS,KACpD,uBACG,YAAY,qBAAqB,KACjC,wBACH,IAAI,oBAAoB,YAAY,kBAAkB,KAAK,QAAQ;;MAErE,CAAC;AAEF,iBAAY,KAAK,UAAU;;;GAK9B,MAAM,kBAAkBD,sBAAAA,cACvB,KAAK,KAAK,GAAG,MACb,YACA,QACA,KAAK,MACL,QACA;GACD,MAAM,cAAcF,mBAAAA,WAAW,YAAY;AAC3C,kBAAe,KAAK;IACnB,MAAM;IACN,MAAM,QAAQ,gBAAgB,KAAK;IACnC,CAAC;AACF,oBAAiB,KAAK,gBAAgB;AAEtC,UAAOD,gBAAAA,QAAQ,GAAG,KAAK,sBAAsB,gBAAgB,KAAK,KAAK;AAEvE;;EAGD,QACC,QAAOA,gBAAAA,QAAQ,GAAG,KAAK,aAAa,KAAK;;AAI3C,QAAO;EACN;EACA;EACA;EACA;;AAgBF,SAAgB,qBACf,MACiC;CACjC,IAAI,OAAO;CAEX,MAAM,iBAAkC,EAAE;CAC1C,MAAM,mBAA6B,EAAE;AAErC,MAAK,MAAM,QAAQ,KAAK,QAAQ;EAC/B,MAAM,QAAQ,KAAK,OAAO;EAE1B,MAAM,gBAAgB,mBAAmB;GACxC;GACA;GACA,MAAM,KAAK;GACX,cAAc,KAAK;GACnB,SAAS,KAAK;GACd,CAAC;AAEF,SAAOK,mBAAAA,WAAW,cAAc,MAAM,KAAK;AAE3C,iBAAe,KAAK,GAAG,cAAc,eAAe;AACpD,mBAAiB,KAAK,GAAG,cAAc,iBAAiB;;AAGzD,QAAO;EACN;EACA;EACA;EACA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"buildFieldProperties.js","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,152 +0,0 @@
|
|
|
1
|
-
require("../_virtual/_rolldown/runtime.cjs");
|
|
2
|
-
const require_addSection = require("./addSection.cjs");
|
|
3
|
-
const require_constants = require("../constants.cjs");
|
|
4
|
-
const require_buildTypeName = require("./buildTypeName.cjs");
|
|
5
|
-
const require_getHumanReadableModelName = require("./getHumanReadableModelName.cjs");
|
|
6
|
-
const require_getHumanReadablePath = require("./getHumanReadablePath.cjs");
|
|
7
|
-
const require_buildUnion = require("./buildUnion.cjs");
|
|
8
|
-
const require_buildFieldProperties = require("./buildFieldProperties.cjs");
|
|
9
|
-
const require_getCacheKey = require("./getCacheKey.cjs");
|
|
10
|
-
let common_tags = require("common-tags");
|
|
11
|
-
//#region src/lib/buildSharedSliceType.ts
|
|
12
|
-
function buildSharedSliceType(args) {
|
|
13
|
-
if (args.cache) {
|
|
14
|
-
const key = require_getCacheKey.getCacheKey([args.model, args.fieldConfigs]);
|
|
15
|
-
const cached = args.cache.get(key);
|
|
16
|
-
if (cached) return cached;
|
|
17
|
-
}
|
|
18
|
-
let code = "";
|
|
19
|
-
const auxiliaryTypes = [];
|
|
20
|
-
const contentTypeNames = [];
|
|
21
|
-
const name = require_buildTypeName.buildTypeName(args.model.id, "Slice");
|
|
22
|
-
const humanReadableName = require_getHumanReadableModelName.getHumanReadableModelName({
|
|
23
|
-
name: args.model.id,
|
|
24
|
-
model: args.model
|
|
25
|
-
});
|
|
26
|
-
const variationNames = [];
|
|
27
|
-
for (const variationModel of args.model.variations) {
|
|
28
|
-
const variationName = require_buildTypeName.buildTypeName(name, variationModel.id);
|
|
29
|
-
let primaryInterfaceName;
|
|
30
|
-
if (variationModel.primary && Object.keys(variationModel.primary).length > 0) {
|
|
31
|
-
primaryInterfaceName = require_buildTypeName.buildTypeName(variationName, "Primary");
|
|
32
|
-
const path = [
|
|
33
|
-
{
|
|
34
|
-
name: args.model.id,
|
|
35
|
-
model: args.model
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
name: variationModel.id,
|
|
39
|
-
label: variationModel.name
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
name: "primary",
|
|
43
|
-
label: "Primary"
|
|
44
|
-
}
|
|
45
|
-
];
|
|
46
|
-
const humanReadablePath = require_getHumanReadablePath.getHumanReadablePath({ path });
|
|
47
|
-
const primaryFieldProperties = require_buildFieldProperties.buildFieldProperties({
|
|
48
|
-
fields: variationModel.primary,
|
|
49
|
-
fieldConfigs: args.fieldConfigs,
|
|
50
|
-
path
|
|
51
|
-
});
|
|
52
|
-
auxiliaryTypes.push(...primaryFieldProperties.auxiliaryTypes);
|
|
53
|
-
contentTypeNames.push(...primaryFieldProperties.contentTypeNames);
|
|
54
|
-
contentTypeNames.push(primaryInterfaceName);
|
|
55
|
-
const docs = common_tags.stripIndent`
|
|
56
|
-
/**
|
|
57
|
-
* Primary content in *${humanReadablePath}*
|
|
58
|
-
*/
|
|
59
|
-
`;
|
|
60
|
-
code = require_addSection.addSection(primaryFieldProperties.code ? common_tags.source`
|
|
61
|
-
${docs}
|
|
62
|
-
export interface ${primaryInterfaceName} {
|
|
63
|
-
${primaryFieldProperties.code}
|
|
64
|
-
}
|
|
65
|
-
` : common_tags.source`
|
|
66
|
-
${docs}
|
|
67
|
-
export interface ${primaryInterfaceName} {}
|
|
68
|
-
`, code);
|
|
69
|
-
}
|
|
70
|
-
let itemInterfaceName;
|
|
71
|
-
if (variationModel.items && Object.keys(variationModel.items).length > 0) {
|
|
72
|
-
itemInterfaceName = require_buildTypeName.buildTypeName(variationName, "Item");
|
|
73
|
-
const path = [{
|
|
74
|
-
name: args.model.id,
|
|
75
|
-
model: args.model
|
|
76
|
-
}, {
|
|
77
|
-
name: "items",
|
|
78
|
-
label: "Items"
|
|
79
|
-
}];
|
|
80
|
-
const humanReadablePath = require_getHumanReadablePath.getHumanReadablePath({ path });
|
|
81
|
-
const itemFieldProperties = require_buildFieldProperties.buildFieldProperties({
|
|
82
|
-
fields: variationModel.items,
|
|
83
|
-
fieldConfigs: args.fieldConfigs,
|
|
84
|
-
path
|
|
85
|
-
});
|
|
86
|
-
auxiliaryTypes.push(...itemFieldProperties.auxiliaryTypes);
|
|
87
|
-
contentTypeNames.push(...itemFieldProperties.contentTypeNames);
|
|
88
|
-
contentTypeNames.push(itemInterfaceName);
|
|
89
|
-
const docs = common_tags.stripIndent`
|
|
90
|
-
/**
|
|
91
|
-
* Primary content in *${humanReadablePath}*
|
|
92
|
-
*/
|
|
93
|
-
`;
|
|
94
|
-
code = require_addSection.addSection(itemFieldProperties.code ? common_tags.source`
|
|
95
|
-
${docs}
|
|
96
|
-
export interface ${itemInterfaceName} {
|
|
97
|
-
${itemFieldProperties.code}
|
|
98
|
-
}
|
|
99
|
-
` : common_tags.source`
|
|
100
|
-
${docs}
|
|
101
|
-
export interface ${itemInterfaceName} {}
|
|
102
|
-
`, code);
|
|
103
|
-
}
|
|
104
|
-
code = require_addSection.addSection(common_tags.source`
|
|
105
|
-
/**
|
|
106
|
-
* ${variationModel.name} variation for ${humanReadableName} Slice
|
|
107
|
-
*
|
|
108
|
-
* - **API ID**: \`${variationModel.id}\`
|
|
109
|
-
* - **Description**: ${variationModel.description || "*None*"}
|
|
110
|
-
* - **Documentation**: ${require_constants.SHARED_SLICES_DOCUMENTATION_URL}
|
|
111
|
-
*/
|
|
112
|
-
export type ${variationName} = prismic.SharedSliceVariation<"${variationModel.id}", ${primaryInterfaceName ? `Simplify<${primaryInterfaceName}>` : `Record<string, never>`}, ${itemInterfaceName ? `Simplify<${itemInterfaceName}>` : `never`}>;
|
|
113
|
-
`, code);
|
|
114
|
-
variationNames.push(variationName);
|
|
115
|
-
}
|
|
116
|
-
const variationUnionName = require_buildTypeName.buildTypeName(name, "Variation");
|
|
117
|
-
const variationsUnion = require_buildUnion.buildUnion(variationNames);
|
|
118
|
-
contentTypeNames.push(variationUnionName);
|
|
119
|
-
contentTypeNames.push(...variationNames);
|
|
120
|
-
code = require_addSection.addSection(common_tags.source`
|
|
121
|
-
/**
|
|
122
|
-
* Slice variation for *${humanReadableName}*
|
|
123
|
-
*/
|
|
124
|
-
type ${variationUnionName} = ${variationNames.length > 0 ? variationsUnion : "never"}
|
|
125
|
-
`, code);
|
|
126
|
-
code = require_addSection.addSection(common_tags.source`
|
|
127
|
-
/**
|
|
128
|
-
* ${humanReadableName} Shared Slice
|
|
129
|
-
*
|
|
130
|
-
* - **API ID**: \`${args.model.id}\`
|
|
131
|
-
* - **Description**: ${args.model.description || "*None*"}
|
|
132
|
-
* - **Documentation**: ${require_constants.SHARED_SLICES_DOCUMENTATION_URL}
|
|
133
|
-
*/
|
|
134
|
-
export type ${name} = prismic.SharedSlice<"${args.model.id}", ${variationUnionName}>;
|
|
135
|
-
`, code);
|
|
136
|
-
const result = {
|
|
137
|
-
name,
|
|
138
|
-
variationNames,
|
|
139
|
-
code,
|
|
140
|
-
auxiliaryTypes,
|
|
141
|
-
contentTypeNames
|
|
142
|
-
};
|
|
143
|
-
if (args.cache) {
|
|
144
|
-
const key = require_getCacheKey.getCacheKey([args.model, args.fieldConfigs]);
|
|
145
|
-
args.cache.set(key, result);
|
|
146
|
-
}
|
|
147
|
-
return result;
|
|
148
|
-
}
|
|
149
|
-
//#endregion
|
|
150
|
-
exports.buildSharedSliceType = buildSharedSliceType;
|
|
151
|
-
|
|
152
|
-
//# sourceMappingURL=buildSharedSliceType.cjs.map
|