prismic-ts-codegen 0.1.6 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/README.md +5 -5
  2. package/bin/prismic-ts-codegen.mjs +3 -0
  3. package/dist/cli/configSchema.cjs +38 -0
  4. package/dist/cli/configSchema.cjs.map +1 -0
  5. package/dist/cli/configSchema.d.ts +3 -0
  6. package/dist/cli/configSchema.js +38 -0
  7. package/dist/cli/configSchema.js.map +1 -0
  8. package/dist/cli/constants.cjs +5 -0
  9. package/dist/cli/constants.cjs.map +1 -0
  10. package/dist/cli/constants.d.ts +1 -0
  11. package/dist/cli/constants.js +5 -0
  12. package/dist/cli/constants.js.map +1 -0
  13. package/dist/cli/index.d.ts +1 -0
  14. package/dist/cli/loadConfig.cjs +32 -0
  15. package/dist/cli/loadConfig.cjs.map +1 -0
  16. package/dist/cli/loadConfig.d.ts +6 -0
  17. package/dist/cli/loadConfig.js +32 -0
  18. package/dist/cli/loadConfig.js.map +1 -0
  19. package/dist/cli/loadLocaleIDs.cjs +37 -0
  20. package/dist/cli/loadLocaleIDs.cjs.map +1 -0
  21. package/dist/cli/loadLocaleIDs.d.ts +10 -0
  22. package/dist/cli/loadLocaleIDs.js +20 -0
  23. package/dist/cli/loadLocaleIDs.js.map +1 -0
  24. package/dist/cli/loadModels.cjs +79 -0
  25. package/dist/cli/loadModels.cjs.map +1 -0
  26. package/dist/cli/loadModels.d.ts +15 -0
  27. package/dist/cli/loadModels.js +62 -0
  28. package/dist/cli/loadModels.js.map +1 -0
  29. package/dist/cli/types.d.ts +175 -0
  30. package/dist/cli.cjs +119 -0
  31. package/dist/cli.cjs.map +1 -0
  32. package/dist/cli.js +118 -0
  33. package/dist/cli.js.map +1 -0
  34. package/dist/constants.cjs +29 -0
  35. package/dist/constants.cjs.map +1 -0
  36. package/dist/constants.d.ts +5 -0
  37. package/dist/constants.js +29 -0
  38. package/dist/constants.js.map +1 -0
  39. package/dist/detectTypesProvider.cjs +16 -0
  40. package/dist/detectTypesProvider.cjs.map +1 -0
  41. package/dist/detectTypesProvider.d.ts +13 -0
  42. package/dist/detectTypesProvider.js +16 -0
  43. package/dist/detectTypesProvider.js.map +1 -0
  44. package/dist/generateTypes.cjs +109 -0
  45. package/dist/generateTypes.cjs.map +1 -0
  46. package/dist/generateTypes.d.ts +15 -0
  47. package/dist/generateTypes.js +109 -0
  48. package/dist/generateTypes.js.map +1 -0
  49. package/dist/index.cjs +6 -1086
  50. package/dist/index.cjs.map +1 -1
  51. package/dist/index.d.ts +5 -192
  52. package/dist/index.js +5 -1081
  53. package/dist/index.js.map +1 -1
  54. package/dist/lib/addInterfacePropertiesForFields.cjs +490 -0
  55. package/dist/lib/addInterfacePropertiesForFields.cjs.map +1 -0
  56. package/dist/lib/addInterfacePropertiesForFields.d.ts +21 -0
  57. package/dist/lib/addInterfacePropertiesForFields.js +490 -0
  58. package/dist/lib/addInterfacePropertiesForFields.js.map +1 -0
  59. package/dist/lib/addTypeAliasForCustomType.cjs +81 -0
  60. package/dist/lib/addTypeAliasForCustomType.cjs.map +1 -0
  61. package/dist/lib/addTypeAliasForCustomType.d.ts +11 -0
  62. package/dist/lib/addTypeAliasForCustomType.js +81 -0
  63. package/dist/lib/addTypeAliasForCustomType.js.map +1 -0
  64. package/dist/lib/addTypeAliasForSharedSlice.cjs +149 -0
  65. package/dist/lib/addTypeAliasForSharedSlice.cjs.map +1 -0
  66. package/dist/lib/addTypeAliasForSharedSlice.d.ts +10 -0
  67. package/dist/lib/addTypeAliasForSharedSlice.js +149 -0
  68. package/dist/lib/addTypeAliasForSharedSlice.js.map +1 -0
  69. package/dist/lib/buildFieldDocs.cjs +43 -0
  70. package/dist/lib/buildFieldDocs.cjs.map +1 -0
  71. package/dist/lib/buildFieldDocs.d.ts +14 -0
  72. package/dist/lib/buildFieldDocs.js +43 -0
  73. package/dist/lib/buildFieldDocs.js.map +1 -0
  74. package/dist/lib/buildSharedSliceInterfaceNamePart.cjs +8 -0
  75. package/dist/lib/buildSharedSliceInterfaceNamePart.cjs.map +1 -0
  76. package/dist/lib/buildSharedSliceInterfaceNamePart.d.ts +5 -0
  77. package/dist/lib/buildSharedSliceInterfaceNamePart.js +8 -0
  78. package/dist/lib/buildSharedSliceInterfaceNamePart.js.map +1 -0
  79. package/dist/lib/buildTypeName.cjs +12 -0
  80. package/dist/lib/buildTypeName.cjs.map +1 -0
  81. package/dist/lib/buildTypeName.d.ts +1 -0
  82. package/dist/lib/buildTypeName.js +12 -0
  83. package/dist/lib/buildTypeName.js.map +1 -0
  84. package/dist/lib/getAPIIDPath.cjs +23 -0
  85. package/dist/lib/getAPIIDPath.cjs.map +1 -0
  86. package/dist/lib/getAPIIDPath.d.ts +10 -0
  87. package/dist/lib/getAPIIDPath.js +23 -0
  88. package/dist/lib/getAPIIDPath.js.map +1 -0
  89. package/dist/lib/getFieldDocumentationURL.cjs +8 -0
  90. package/dist/lib/getFieldDocumentationURL.cjs.map +1 -0
  91. package/dist/lib/getFieldDocumentationURL.d.ts +6 -0
  92. package/dist/lib/getFieldDocumentationURL.js +8 -0
  93. package/dist/lib/getFieldDocumentationURL.js.map +1 -0
  94. package/dist/lib/getHumanReadableFieldPath.cjs +19 -0
  95. package/dist/lib/getHumanReadableFieldPath.cjs.map +1 -0
  96. package/dist/lib/getHumanReadableFieldPath.d.ts +10 -0
  97. package/dist/lib/getHumanReadableFieldPath.js +19 -0
  98. package/dist/lib/getHumanReadableFieldPath.js.map +1 -0
  99. package/dist/lib/getHumanReadableFieldType.cjs +37 -0
  100. package/dist/lib/getHumanReadableFieldType.cjs.map +1 -0
  101. package/dist/lib/getHumanReadableFieldType.d.ts +6 -0
  102. package/dist/lib/getHumanReadableFieldType.js +37 -0
  103. package/dist/lib/getHumanReadableFieldType.js.map +1 -0
  104. package/dist/lib/getHumanReadableModelName.cjs +24 -0
  105. package/dist/lib/getHumanReadableModelName.cjs.map +1 -0
  106. package/dist/lib/getHumanReadableModelName.d.ts +7 -0
  107. package/dist/lib/getHumanReadableModelName.js +24 -0
  108. package/dist/lib/getHumanReadableModelName.js.map +1 -0
  109. package/dist/lib/getSourceFileText.cjs +9 -0
  110. package/dist/lib/getSourceFileText.cjs.map +1 -0
  111. package/dist/lib/getSourceFileText.d.ts +2 -0
  112. package/dist/lib/getSourceFileText.js +9 -0
  113. package/dist/lib/getSourceFileText.js.map +1 -0
  114. package/dist/lib/hasOwnProperty.cjs +7 -0
  115. package/dist/lib/hasOwnProperty.cjs.map +1 -0
  116. package/dist/lib/hasOwnProperty.d.ts +10 -0
  117. package/dist/lib/hasOwnProperty.js +7 -0
  118. package/dist/lib/hasOwnProperty.js.map +1 -0
  119. package/dist/lib/isCustomTypeModel.cjs +7 -0
  120. package/dist/lib/isCustomTypeModel.cjs.map +1 -0
  121. package/dist/lib/isCustomTypeModel.d.ts +2 -0
  122. package/dist/lib/isCustomTypeModel.js +7 -0
  123. package/dist/lib/isCustomTypeModel.js.map +1 -0
  124. package/dist/lib/isCustomTypeModelField.cjs +7 -0
  125. package/dist/lib/isCustomTypeModelField.cjs.map +1 -0
  126. package/dist/lib/isCustomTypeModelField.d.ts +2 -0
  127. package/dist/lib/isCustomTypeModelField.js +7 -0
  128. package/dist/lib/isCustomTypeModelField.js.map +1 -0
  129. package/dist/lib/isCustomTypeModelSlice.cjs +9 -0
  130. package/dist/lib/isCustomTypeModelSlice.cjs.map +1 -0
  131. package/dist/lib/isCustomTypeModelSlice.d.ts +2 -0
  132. package/dist/lib/isCustomTypeModelSlice.js +9 -0
  133. package/dist/lib/isCustomTypeModelSlice.js.map +1 -0
  134. package/dist/lib/isSharedSliceModel.cjs +9 -0
  135. package/dist/lib/isSharedSliceModel.cjs.map +1 -0
  136. package/dist/lib/isSharedSliceModel.d.ts +2 -0
  137. package/dist/lib/isSharedSliceModel.js +9 -0
  138. package/dist/lib/isSharedSliceModel.js.map +1 -0
  139. package/dist/lib/pascalCase.cjs +8 -0
  140. package/dist/lib/pascalCase.cjs.map +1 -0
  141. package/dist/lib/pascalCase.d.ts +1 -0
  142. package/dist/lib/pascalCase.js +8 -0
  143. package/dist/lib/pascalCase.js.map +1 -0
  144. package/dist/lib/writeFieldDocsDescription.cjs +29 -0
  145. package/dist/lib/writeFieldDocsDescription.cjs.map +1 -0
  146. package/dist/lib/writeFieldDocsDescription.d.ts +13 -0
  147. package/dist/lib/writeFieldDocsDescription.js +29 -0
  148. package/dist/lib/writeFieldDocsDescription.js.map +1 -0
  149. package/dist/types.d.ts +14 -0
  150. package/package.json +45 -36
  151. package/src/cli/configSchema.ts +2 -0
  152. package/src/cli/index.ts +9 -5
  153. package/src/cli/loadConfig.ts +4 -2
  154. package/src/cli/loadModels.ts +3 -3
  155. package/src/cli/types.ts +10 -0
  156. package/src/constants.ts +6 -3
  157. package/src/detectTypesProvider.ts +32 -0
  158. package/src/generateTypes.ts +11 -6
  159. package/src/index.ts +4 -1
  160. package/src/lib/addInterfacePropertiesForFields.ts +27 -27
  161. package/src/lib/addTypeAliasForCustomType.ts +7 -5
  162. package/src/lib/addTypeAliasForSharedSlice.ts +5 -4
  163. package/src/lib/buildFieldDocs.ts +2 -1
  164. package/src/lib/getAPIIDPath.ts +3 -2
  165. package/src/lib/getFieldDocumentationURL.ts +1 -1
  166. package/src/lib/getHumanReadableFieldPath.ts +2 -1
  167. package/src/lib/getHumanReadableFieldType.ts +2 -2
  168. package/src/lib/getHumanReadableModelName.ts +1 -1
  169. package/src/lib/getSourceFileText.ts +1 -1
  170. package/src/lib/isCustomTypeModel.ts +1 -1
  171. package/src/lib/isCustomTypeModelField.ts +1 -1
  172. package/src/lib/isCustomTypeModelSlice.ts +1 -1
  173. package/src/lib/isSharedSliceModel.ts +1 -1
  174. package/src/types.ts +1 -1
  175. package/bin/cli.mjs +0 -1342
@@ -0,0 +1,490 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const prismic = require("@prismicio/client");
4
+ const buildFieldDocs = require("./buildFieldDocs.cjs");
5
+ const buildSharedSliceInterfaceNamePart = require("./buildSharedSliceInterfaceNamePart.cjs");
6
+ const buildTypeName = require("./buildTypeName.cjs");
7
+ const getHumanReadableFieldPath = require("./getHumanReadableFieldPath.cjs");
8
+ const addInterfacePropertyForField = (config) => {
9
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
10
+ switch (config.model.type) {
11
+ case "UID": {
12
+ break;
13
+ }
14
+ case "Boolean": {
15
+ config.interface.addProperty({
16
+ name: config.id,
17
+ type: "prismic.BooleanField",
18
+ docs: buildFieldDocs.buildFieldDocs({
19
+ id: config.id,
20
+ model: config.model,
21
+ path: config.path,
22
+ tabName: config.tabName
23
+ })
24
+ });
25
+ break;
26
+ }
27
+ case "Color": {
28
+ config.interface.addProperty({
29
+ name: config.id,
30
+ type: "prismic.ColorField",
31
+ docs: buildFieldDocs.buildFieldDocs({
32
+ id: config.id,
33
+ model: config.model,
34
+ path: config.path,
35
+ tabName: config.tabName
36
+ })
37
+ });
38
+ break;
39
+ }
40
+ case "Date": {
41
+ config.interface.addProperty({
42
+ name: config.id,
43
+ type: "prismic.DateField",
44
+ docs: buildFieldDocs.buildFieldDocs({
45
+ id: config.id,
46
+ model: config.model,
47
+ path: config.path,
48
+ tabName: config.tabName
49
+ })
50
+ });
51
+ break;
52
+ }
53
+ case "Embed": {
54
+ const providerTypes = [];
55
+ if ((_a = config.fieldConfigs.embed) == null ? void 0 : _a.providerTypes) {
56
+ for (const providerType in (_b = config.fieldConfigs.embed) == null ? void 0 : _b.providerTypes) {
57
+ const configuredProviderType = (_c = config.fieldConfigs.embed) == null ? void 0 : _c.providerTypes[providerType];
58
+ providerTypes.push(`({ provider_name: "${providerType}" } & ${configuredProviderType})`);
59
+ }
60
+ }
61
+ config.interface.addProperty({
62
+ name: config.id,
63
+ type: providerTypes.length > 0 ? `prismic.EmbedField<prismic.AnyOEmbed & prismic.OEmbedExtra & (${providerTypes.join(" | ")})>` : "prismic.EmbedField",
64
+ docs: buildFieldDocs.buildFieldDocs({
65
+ id: config.id,
66
+ model: config.model,
67
+ path: config.path,
68
+ tabName: config.tabName
69
+ })
70
+ });
71
+ break;
72
+ }
73
+ case "GeoPoint": {
74
+ config.interface.addProperty({
75
+ name: config.id,
76
+ type: "prismic.GeoPointField",
77
+ docs: buildFieldDocs.buildFieldDocs({
78
+ id: config.id,
79
+ model: config.model,
80
+ path: config.path,
81
+ tabName: config.tabName
82
+ })
83
+ });
84
+ break;
85
+ }
86
+ case "Image": {
87
+ if (((_d = config.model.config) == null ? void 0 : _d.thumbnails) && config.model.config.thumbnails.length > 0) {
88
+ const thumbnailNames = config.model.config.thumbnails.map((thumbnail) => `"${thumbnail.name}"`).join(" | ");
89
+ config.interface.addProperty({
90
+ name: config.id,
91
+ type: `prismic.ImageField<${thumbnailNames}>`,
92
+ docs: buildFieldDocs.buildFieldDocs({
93
+ id: config.id,
94
+ model: config.model,
95
+ path: config.path,
96
+ tabName: config.tabName
97
+ })
98
+ });
99
+ } else {
100
+ config.interface.addProperty({
101
+ name: config.id,
102
+ type: "prismic.ImageField<never>",
103
+ docs: buildFieldDocs.buildFieldDocs({
104
+ id: config.id,
105
+ model: config.model,
106
+ path: config.path,
107
+ tabName: config.tabName
108
+ })
109
+ });
110
+ }
111
+ break;
112
+ }
113
+ case "IntegrationFields": {
114
+ const catalogType = ((_e = config.model.config) == null ? void 0 : _e.catalog) ? (_g = (_f = config.fieldConfigs.integrationFields) == null ? void 0 : _f.catalogTypes) == null ? void 0 : _g[config.model.config.catalog] : void 0;
115
+ config.interface.addProperty({
116
+ name: config.id,
117
+ type: catalogType ? `prismic.IntegrationFields<${catalogType}>` : "prismic.IntegrationFields",
118
+ docs: buildFieldDocs.buildFieldDocs({
119
+ id: config.id,
120
+ model: config.model,
121
+ path: config.path,
122
+ tabName: config.tabName
123
+ })
124
+ });
125
+ break;
126
+ }
127
+ case "Link": {
128
+ switch ((_h = config.model.config) == null ? void 0 : _h.select) {
129
+ case prismic.CustomTypeModelLinkSelectType.Document: {
130
+ config.model.config;
131
+ config.interface.addProperty({
132
+ name: config.id,
133
+ type: "customtypes" in config.model.config && config.model.config.customtypes && config.model.config.customtypes.length > 0 ? `prismic.RelationField<${config.model.config.customtypes.map((type) => `"${type}"`).join(" | ")}>` : "prismic.RelationField",
134
+ docs: buildFieldDocs.buildFieldDocs({
135
+ id: config.id,
136
+ model: config.model,
137
+ path: config.path,
138
+ tabName: config.tabName
139
+ })
140
+ });
141
+ break;
142
+ }
143
+ case prismic.CustomTypeModelLinkSelectType.Media: {
144
+ config.interface.addProperty({
145
+ name: config.id,
146
+ type: "prismic.LinkToMediaField",
147
+ docs: buildFieldDocs.buildFieldDocs({
148
+ id: config.id,
149
+ model: config.model,
150
+ path: config.path,
151
+ tabName: config.tabName
152
+ })
153
+ });
154
+ break;
155
+ }
156
+ default: {
157
+ config.interface.addProperty({
158
+ name: config.id,
159
+ type: "prismic.LinkField",
160
+ docs: buildFieldDocs.buildFieldDocs({
161
+ id: config.id,
162
+ model: config.model,
163
+ path: config.path,
164
+ tabName: config.tabName
165
+ })
166
+ });
167
+ }
168
+ }
169
+ break;
170
+ }
171
+ case "Number": {
172
+ config.interface.addProperty({
173
+ name: config.id,
174
+ type: "prismic.NumberField",
175
+ docs: buildFieldDocs.buildFieldDocs({
176
+ id: config.id,
177
+ model: config.model,
178
+ path: config.path,
179
+ tabName: config.tabName
180
+ })
181
+ });
182
+ break;
183
+ }
184
+ case "StructuredText": {
185
+ const isTitleField = config.model.config && "single" in config.model.config && config.model.config.single && config.model.config.single.split(",").every((blockType) => /heading/.test(blockType));
186
+ if (isTitleField) {
187
+ config.interface.addProperty({
188
+ name: config.id,
189
+ type: "prismic.TitleField",
190
+ docs: buildFieldDocs.buildFieldDocs({
191
+ id: config.id,
192
+ model: config.model,
193
+ path: config.path,
194
+ tabName: config.tabName
195
+ })
196
+ });
197
+ } else {
198
+ config.interface.addProperty({
199
+ name: config.id,
200
+ type: "prismic.RichTextField",
201
+ docs: buildFieldDocs.buildFieldDocs({
202
+ id: config.id,
203
+ model: config.model,
204
+ path: config.path,
205
+ tabName: config.tabName
206
+ })
207
+ });
208
+ }
209
+ break;
210
+ }
211
+ case "Select": {
212
+ const options = (_j = (_i = config.model.config) == null ? void 0 : _i.options) == null ? void 0 : _j.map((option) => `"${option}"`).join(" | ");
213
+ const hasDefault = Boolean((_k = config.model.config) == null ? void 0 : _k.default_value);
214
+ if (hasDefault) {
215
+ config.interface.addProperty({
216
+ name: config.id,
217
+ type: `prismic.SelectField<${options || "string"}, "filled">`,
218
+ docs: buildFieldDocs.buildFieldDocs({
219
+ id: config.id,
220
+ model: config.model,
221
+ path: config.path,
222
+ tabName: config.tabName
223
+ })
224
+ });
225
+ } else {
226
+ config.interface.addProperty({
227
+ name: config.id,
228
+ type: `prismic.SelectField<${options}>`,
229
+ docs: buildFieldDocs.buildFieldDocs({
230
+ id: config.id,
231
+ model: config.model,
232
+ path: config.path,
233
+ tabName: config.tabName
234
+ })
235
+ });
236
+ }
237
+ break;
238
+ }
239
+ case "Text": {
240
+ config.interface.addProperty({
241
+ name: config.id,
242
+ type: "prismic.KeyTextField",
243
+ docs: buildFieldDocs.buildFieldDocs({
244
+ id: config.id,
245
+ model: config.model,
246
+ path: config.path,
247
+ tabName: config.tabName
248
+ })
249
+ });
250
+ break;
251
+ }
252
+ case "Timestamp": {
253
+ config.interface.addProperty({
254
+ name: config.id,
255
+ type: "prismic.TimestampField",
256
+ docs: buildFieldDocs.buildFieldDocs({
257
+ id: config.id,
258
+ model: config.model,
259
+ path: config.path,
260
+ tabName: config.tabName
261
+ })
262
+ });
263
+ break;
264
+ }
265
+ case "Group": {
266
+ const itemInterface = config.sourceFile.addInterface({
267
+ name: buildTypeName.buildTypeName(config.path[0].id, "Document", "Data", config.id, "Item"),
268
+ docs: [
269
+ {
270
+ description: (writer) => {
271
+ const humanReadablePath = getHumanReadableFieldPath.getHumanReadableFieldPath({
272
+ path: [
273
+ ...config.path,
274
+ {
275
+ id: config.id,
276
+ model: config.model
277
+ }
278
+ ]
279
+ });
280
+ writer.writeLine(`Item in ${humanReadablePath}`);
281
+ }
282
+ }
283
+ ],
284
+ isExported: true
285
+ });
286
+ if ((_l = config.model.config) == null ? void 0 : _l.fields) {
287
+ addInterfacePropertiesForFields({
288
+ interface: itemInterface,
289
+ sourceFile: config.sourceFile,
290
+ fields: config.model.config.fields,
291
+ path: [
292
+ ...config.path,
293
+ {
294
+ id: config.id,
295
+ model: config.model
296
+ }
297
+ ],
298
+ fieldConfigs: config.fieldConfigs
299
+ });
300
+ }
301
+ config.interface.addProperty({
302
+ name: config.id,
303
+ type: `prismic.GroupField<Simplify<${itemInterface.getName()}>>`,
304
+ docs: buildFieldDocs.buildFieldDocs({
305
+ id: config.id,
306
+ model: config.model,
307
+ path: config.path,
308
+ tabName: config.tabName
309
+ })
310
+ });
311
+ break;
312
+ }
313
+ case "Slices": {
314
+ const choiceInterfaceNames = [];
315
+ if ((_m = config.model.config) == null ? void 0 : _m.choices) {
316
+ for (const choiceId in config.model.config.choices) {
317
+ const choice = config.model.config.choices[choiceId];
318
+ if (choice.type === prismic.CustomTypeModelSliceType.SharedSlice) {
319
+ choiceInterfaceNames.push(buildSharedSliceInterfaceNamePart.buildSharedSliceInterfaceNamePart({ id: choiceId }));
320
+ } else if (choice.type === prismic.CustomTypeModelSliceType.Slice) {
321
+ let primaryInterface;
322
+ if (choice["non-repeat"] && Object.keys(choice["non-repeat"]).length > 0) {
323
+ primaryInterface = config.sourceFile.addInterface({
324
+ name: buildTypeName.buildTypeName(config.path[0].id, "Document", "Data", config.id, choiceId, "Slice", "Primary"),
325
+ docs: [
326
+ {
327
+ description: (writer) => {
328
+ const humanReadablePath = getHumanReadableFieldPath.getHumanReadableFieldPath({
329
+ path: [
330
+ ...config.path,
331
+ {
332
+ id: config.id,
333
+ model: config.model
334
+ },
335
+ {
336
+ id: choiceId,
337
+ model: choice
338
+ },
339
+ {
340
+ id: "primary",
341
+ label: "Primary"
342
+ }
343
+ ]
344
+ });
345
+ writer.writeLine(`Primary content in ${humanReadablePath}`);
346
+ }
347
+ }
348
+ ]
349
+ });
350
+ addInterfacePropertiesForFields({
351
+ interface: primaryInterface,
352
+ sourceFile: config.sourceFile,
353
+ fields: choice["non-repeat"],
354
+ path: [
355
+ ...config.path,
356
+ {
357
+ id: config.id,
358
+ model: config.model
359
+ },
360
+ {
361
+ id: choiceId,
362
+ model: choice
363
+ },
364
+ {
365
+ id: "primary",
366
+ label: "Primary"
367
+ }
368
+ ],
369
+ fieldConfigs: config.fieldConfigs
370
+ });
371
+ }
372
+ let itemInterface;
373
+ if (choice.repeat && Object.keys(choice.repeat).length > 0) {
374
+ itemInterface = config.sourceFile.addInterface({
375
+ name: buildTypeName.buildTypeName(config.path[0].id, "Document", "Data", config.id, choiceId, "Slice", "Item"),
376
+ docs: [
377
+ {
378
+ description: (writer) => {
379
+ const humanReadablePath = getHumanReadableFieldPath.getHumanReadableFieldPath({
380
+ path: [
381
+ ...config.path,
382
+ {
383
+ id: config.id,
384
+ model: config.model
385
+ },
386
+ {
387
+ id: choiceId,
388
+ model: choice
389
+ },
390
+ {
391
+ id: "items",
392
+ label: "Items"
393
+ }
394
+ ]
395
+ });
396
+ writer.writeLine(`Item in ${humanReadablePath}`);
397
+ }
398
+ }
399
+ ],
400
+ isExported: true
401
+ });
402
+ addInterfacePropertiesForFields({
403
+ interface: itemInterface,
404
+ sourceFile: config.sourceFile,
405
+ fields: choice.repeat,
406
+ path: [
407
+ ...config.path,
408
+ {
409
+ id: config.id,
410
+ model: config.model
411
+ },
412
+ {
413
+ id: choiceId,
414
+ model: choice
415
+ },
416
+ {
417
+ id: "items",
418
+ label: "Items"
419
+ }
420
+ ],
421
+ fieldConfigs: config.fieldConfigs
422
+ });
423
+ }
424
+ const sliceType = config.sourceFile.addTypeAlias({
425
+ name: buildTypeName.buildTypeName(config.path[0].id, "Document", "Data", config.id, choiceId, "Slice"),
426
+ type: `prismic.Slice<"${choiceId}", ${primaryInterface ? `Simplify<${primaryInterface.getName()}>` : "Record<string, never>"}, ${itemInterface ? `Simplify<${itemInterface.getName()}>` : "never"}>`,
427
+ isExported: true
428
+ });
429
+ choiceInterfaceNames.push(sliceType.getName());
430
+ }
431
+ }
432
+ }
433
+ const slicesType = config.sourceFile.addTypeAlias({
434
+ name: buildTypeName.buildTypeName(config.path[0].id, "Document", "Data", config.id, "Slice"),
435
+ type: choiceInterfaceNames.length > 0 ? choiceInterfaceNames.join(" | ") : "never",
436
+ docs: [
437
+ {
438
+ description: (writer) => {
439
+ const humanReadablePath = getHumanReadableFieldPath.getHumanReadableFieldPath({
440
+ path: [
441
+ ...config.path,
442
+ {
443
+ id: config.id,
444
+ model: config.model
445
+ }
446
+ ]
447
+ });
448
+ writer.writeLine(`Slice for *${humanReadablePath}*`);
449
+ }
450
+ }
451
+ ]
452
+ });
453
+ config.interface.addProperty({
454
+ name: config.id,
455
+ type: `prismic.SliceZone<${slicesType.getName()}>`,
456
+ docs: buildFieldDocs.buildFieldDocs({
457
+ id: config.id,
458
+ model: config.model,
459
+ path: config.path,
460
+ tabName: config.tabName
461
+ })
462
+ });
463
+ break;
464
+ }
465
+ default: {
466
+ config.interface.addProperty({
467
+ name: config.id,
468
+ type: "unknown",
469
+ docs: buildFieldDocs.buildFieldDocs({
470
+ id: config.id,
471
+ model: config.model,
472
+ path: config.path,
473
+ tabName: config.tabName
474
+ })
475
+ });
476
+ }
477
+ }
478
+ };
479
+ const addInterfacePropertiesForFields = (config) => {
480
+ for (const name in config.fields) {
481
+ addInterfacePropertyForField({
482
+ ...config,
483
+ id: name.includes("-") || name.includes(":") || /^[0-9]/.test(name) ? `"${name}"` : name,
484
+ model: config.fields[name],
485
+ tabName: config.tabName
486
+ });
487
+ }
488
+ };
489
+ exports.addInterfacePropertiesForFields = addInterfacePropertiesForFields;
490
+ //# sourceMappingURL=addInterfacePropertiesForFields.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addInterfacePropertiesForFields.cjs","sources":["../../../src/lib/addInterfacePropertiesForFields.ts"],"sourcesContent":["import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/client\";\nimport {\n\tCustomTypeModelLinkSelectType,\n\tCustomTypeModelSliceType,\n} from \"@prismicio/client\";\nimport type { InterfaceDeclaration, SourceFile } from \"ts-morph\";\n\nimport { FieldConfigs, PathElement } from \"../types\";\n\nimport { buildFieldDocs } from \"./buildFieldDocs\";\nimport { buildSharedSliceInterfaceNamePart } from \"./buildSharedSliceInterfaceNamePart\";\nimport { buildTypeName } from \"./buildTypeName\";\nimport { getHumanReadableFieldPath } from \"./getHumanReadableFieldPath\";\n\ntype AddInterfacePropertyFromFieldConfig = {\n\tid: string;\n\tmodel: CustomTypeModelField;\n\tinterface: InterfaceDeclaration;\n\tsourceFile: SourceFile;\n\tpath: [\n\t\tPathElement<CustomTypeModel | SharedSliceModel>,\n\t\t...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],\n\t];\n\tfieldConfigs: FieldConfigs;\n\ttabName?: string;\n};\n\nconst addInterfacePropertyForField = (\n\tconfig: AddInterfacePropertyFromFieldConfig,\n) => {\n\tswitch (config.model.type) {\n\t\tcase \"UID\": {\n\t\t\t// UID fields are not included in Data.\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Boolean\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismic.BooleanField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Color\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismic.ColorField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Date\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismic.DateField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Embed\": {\n\t\t\tconst providerTypes: string[] = [];\n\n\t\t\tif (config.fieldConfigs.embed?.providerTypes) {\n\t\t\t\tfor (const providerType in config.fieldConfigs.embed?.providerTypes) {\n\t\t\t\t\tconst configuredProviderType =\n\t\t\t\t\t\tconfig.fieldConfigs.embed?.providerTypes[providerType];\n\n\t\t\t\t\tproviderTypes.push(\n\t\t\t\t\t\t`({ provider_name: \"${providerType}\" } & ${configuredProviderType})`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype:\n\t\t\t\t\tproviderTypes.length > 0\n\t\t\t\t\t\t? `prismic.EmbedField<prismic.AnyOEmbed & prismic.OEmbedExtra & (${providerTypes.join(\n\t\t\t\t\t\t\t\t\" | \",\n\t\t\t\t\t\t )})>`\n\t\t\t\t\t\t: \"prismic.EmbedField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"GeoPoint\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismic.GeoPointField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Image\": {\n\t\t\tif (\n\t\t\t\tconfig.model.config?.thumbnails &&\n\t\t\t\tconfig.model.config.thumbnails.length > 0\n\t\t\t) {\n\t\t\t\tconst thumbnailNames = config.model.config.thumbnails\n\t\t\t\t\t.map((thumbnail) => `\"${thumbnail.name}\"`)\n\t\t\t\t\t.join(\" | \");\n\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismic.ImageField<${thumbnailNames}>`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismic.ImageField<never>\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"IntegrationFields\": {\n\t\t\tconst catalogType = config.model.config?.catalog\n\t\t\t\t? config.fieldConfigs.integrationFields?.catalogTypes?.[\n\t\t\t\t\t\tconfig.model.config.catalog\n\t\t\t\t ]\n\t\t\t\t: undefined;\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: catalogType\n\t\t\t\t\t? `prismic.IntegrationFields<${catalogType}>`\n\t\t\t\t\t: \"prismic.IntegrationFields\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tswitch (config.model.config?.select) {\n\t\t\t\tcase CustomTypeModelLinkSelectType.Document: {\n\t\t\t\t\tconfig.model.config;\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\t\"customtypes\" in config.model.config &&\n\t\t\t\t\t\t\tconfig.model.config.customtypes &&\n\t\t\t\t\t\t\tconfig.model.config.customtypes.length > 0\n\t\t\t\t\t\t\t\t? `prismic.RelationField<${config.model.config.customtypes\n\t\t\t\t\t\t\t\t\t\t.map((type) => `\"${type}\"`)\n\t\t\t\t\t\t\t\t\t\t.join(\" | \")}>`\n\t\t\t\t\t\t\t\t: \"prismic.RelationField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CustomTypeModelLinkSelectType.Media: {\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype: \"prismic.LinkToMediaField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\t\tname: config.id,\n\t\t\t\t\t\ttype: \"prismic.LinkField\",\n\t\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Number\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismic.NumberField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"StructuredText\": {\n\t\t\tconst isTitleField =\n\t\t\t\tconfig.model.config &&\n\t\t\t\t\"single\" in config.model.config &&\n\t\t\t\tconfig.model.config.single &&\n\t\t\t\tconfig.model.config.single\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.every((blockType) => /heading/.test(blockType));\n\n\t\t\tif (isTitleField) {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismic.TitleField\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: \"prismic.RichTextField\",\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Select\": {\n\t\t\tconst options = config.model.config?.options\n\t\t\t\t?.map((option) => `\"${option}\"`)\n\t\t\t\t.join(\" | \");\n\t\t\tconst hasDefault = Boolean(config.model.config?.default_value);\n\n\t\t\tif (hasDefault) {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismic.SelectField<${options || \"string\"}, \"filled\">`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconfig.interface.addProperty({\n\t\t\t\t\tname: config.id,\n\t\t\t\t\ttype: `prismic.SelectField<${options}>`,\n\t\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\tpath: config.path,\n\t\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Text\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismic.KeyTextField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Timestamp\": {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"prismic.TimestampField\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Group\": {\n\t\t\tconst itemInterface = config.sourceFile.addInterface({\n\t\t\t\tname: buildTypeName(\n\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\"Document\",\n\t\t\t\t\t\"Data\",\n\t\t\t\t\tconfig.id,\n\t\t\t\t\t\"Item\",\n\t\t\t\t),\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tisExported: true,\n\t\t\t});\n\n\t\t\tif (config.model.config?.fields) {\n\t\t\t\taddInterfacePropertiesForFields({\n\t\t\t\t\tinterface: itemInterface,\n\t\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\t\tfields: config.model.config.fields,\n\t\t\t\t\tpath: [\n\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: `prismic.GroupField<Simplify<${itemInterface.getName()}>>`,\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\tconst choiceInterfaceNames: string[] = [];\n\n\t\t\tif (config.model.config?.choices) {\n\t\t\t\tfor (const choiceId in config.model.config.choices) {\n\t\t\t\t\tconst choice = config.model.config.choices[choiceId];\n\n\t\t\t\t\tif (choice.type === CustomTypeModelSliceType.SharedSlice) {\n\t\t\t\t\t\tchoiceInterfaceNames.push(\n\t\t\t\t\t\t\tbuildSharedSliceInterfaceNamePart({ id: choiceId }),\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (choice.type === CustomTypeModelSliceType.Slice) {\n\t\t\t\t\t\tlet primaryInterface: InterfaceDeclaration | undefined;\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tchoice[\"non-repeat\"] &&\n\t\t\t\t\t\t\tObject.keys(choice[\"non-repeat\"]).length > 0\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tprimaryInterface = config.sourceFile.addInterface({\n\t\t\t\t\t\t\t\tname: buildTypeName(\n\t\t\t\t\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\t\t\t\t\"Document\",\n\t\t\t\t\t\t\t\t\t\"Data\",\n\t\t\t\t\t\t\t\t\tconfig.id,\n\t\t\t\t\t\t\t\t\tchoiceId,\n\t\t\t\t\t\t\t\t\t\"Slice\",\n\t\t\t\t\t\t\t\t\t\"Primary\",\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tdocs: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t\t\t\t\t\t\t`Primary content in ${humanReadablePath}`,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\taddInterfacePropertiesForFields({\n\t\t\t\t\t\t\t\tinterface: primaryInterface,\n\t\t\t\t\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\t\t\t\t\tfields: choice[\"non-repeat\"],\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"primary\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet itemInterface: InterfaceDeclaration | undefined;\n\t\t\t\t\t\tif (choice.repeat && Object.keys(choice.repeat).length > 0) {\n\t\t\t\t\t\t\titemInterface = config.sourceFile.addInterface({\n\t\t\t\t\t\t\t\tname: buildTypeName(\n\t\t\t\t\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\t\t\t\t\"Document\",\n\t\t\t\t\t\t\t\t\t\"Data\",\n\t\t\t\t\t\t\t\t\tconfig.id,\n\t\t\t\t\t\t\t\t\tchoiceId,\n\t\t\t\t\t\t\t\t\t\"Slice\",\n\t\t\t\t\t\t\t\t\t\"Item\",\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tdocs: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\t\twriter.writeLine(`Item in ${humanReadablePath}`);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tisExported: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\taddInterfacePropertiesForFields({\n\t\t\t\t\t\t\t\tinterface: itemInterface,\n\t\t\t\t\t\t\t\tsourceFile: config.sourceFile,\n\t\t\t\t\t\t\t\tfields: choice.repeat,\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: choiceId,\n\t\t\t\t\t\t\t\t\t\tmodel: choice,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"items\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tfieldConfigs: config.fieldConfigs,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst sliceType = config.sourceFile.addTypeAlias({\n\t\t\t\t\t\t\tname: buildTypeName(\n\t\t\t\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\t\t\t\"Document\",\n\t\t\t\t\t\t\t\t\"Data\",\n\t\t\t\t\t\t\t\tconfig.id,\n\t\t\t\t\t\t\t\tchoiceId,\n\t\t\t\t\t\t\t\t\"Slice\",\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\ttype: `prismic.Slice<\"${choiceId}\", ${\n\t\t\t\t\t\t\t\tprimaryInterface\n\t\t\t\t\t\t\t\t\t? `Simplify<${primaryInterface.getName()}>`\n\t\t\t\t\t\t\t\t\t: \"Record<string, never>\"\n\t\t\t\t\t\t\t}, ${\n\t\t\t\t\t\t\t\titemInterface ? `Simplify<${itemInterface.getName()}>` : \"never\"\n\t\t\t\t\t\t\t}>`,\n\t\t\t\t\t\t\tisExported: true,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tchoiceInterfaceNames.push(sliceType.getName());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst slicesType = config.sourceFile.addTypeAlias({\n\t\t\t\tname: buildTypeName(\n\t\t\t\t\tconfig.path[0].id,\n\t\t\t\t\t\"Document\",\n\t\t\t\t\t\"Data\",\n\t\t\t\t\tconfig.id,\n\t\t\t\t\t\"Slice\",\n\t\t\t\t),\n\t\t\t\ttype:\n\t\t\t\t\tchoiceInterfaceNames.length > 0\n\t\t\t\t\t\t? choiceInterfaceNames.join(\" | \")\n\t\t\t\t\t\t: \"never\",\n\t\t\t\tdocs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: (writer) => {\n\t\t\t\t\t\t\tconst humanReadablePath = getHumanReadableFieldPath({\n\t\t\t\t\t\t\t\tpath: [\n\t\t\t\t\t\t\t\t\t...config.path,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: config.id,\n\t\t\t\t\t\t\t\t\t\tmodel: config.model,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\twriter.writeLine(`Slice for *${humanReadablePath}*`);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: `prismic.SliceZone<${slicesType.getName()}>`,\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\tconfig.interface.addProperty({\n\t\t\t\tname: config.id,\n\t\t\t\ttype: \"unknown\",\n\t\t\t\tdocs: buildFieldDocs({\n\t\t\t\t\tid: config.id,\n\t\t\t\t\tmodel: config.model,\n\t\t\t\t\tpath: config.path,\n\t\t\t\t\ttabName: config.tabName,\n\t\t\t\t}),\n\t\t\t});\n\t\t}\n\t}\n};\n\ntype AddInterfacePropertiesForFieldsConfig = Omit<\n\tAddInterfacePropertyFromFieldConfig,\n\t\"id\" | \"model\"\n> & {\n\tfields: Record<string, AddInterfacePropertyFromFieldConfig[\"model\"]>;\n\ttabName?: string;\n};\n\nexport const addInterfacePropertiesForFields = (\n\tconfig: AddInterfacePropertiesForFieldsConfig,\n) => {\n\tfor (const name in config.fields) {\n\t\taddInterfacePropertyForField({\n\t\t\t...config,\n\t\t\tid:\n\t\t\t\tname.includes(\"-\") || name.includes(\":\") || /^[0-9]/.test(name)\n\t\t\t\t\t? `\"${name}\"`\n\t\t\t\t\t: name,\n\t\t\tmodel: config.fields[name],\n\t\t\ttabName: config.tabName,\n\t\t});\n\t}\n};\n"],"names":["buildFieldDocs","CustomTypeModelLinkSelectType","buildTypeName","getHumanReadableFieldPath","CustomTypeModelSliceType","buildSharedSliceInterfaceNamePart"],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { CustomTypeModel, CustomTypeModelField, CustomTypeModelSlice, SharedSliceModel } from "@prismicio/client";
2
+ import type { InterfaceDeclaration, SourceFile } from "ts-morph";
3
+ import { FieldConfigs, PathElement } from "../types";
4
+ type AddInterfacePropertyFromFieldConfig = {
5
+ id: string;
6
+ model: CustomTypeModelField;
7
+ interface: InterfaceDeclaration;
8
+ sourceFile: SourceFile;
9
+ path: [
10
+ PathElement<CustomTypeModel | SharedSliceModel>,
11
+ ...PathElement<CustomTypeModelField | CustomTypeModelSlice>[]
12
+ ];
13
+ fieldConfigs: FieldConfigs;
14
+ tabName?: string;
15
+ };
16
+ type AddInterfacePropertiesForFieldsConfig = Omit<AddInterfacePropertyFromFieldConfig, "id" | "model"> & {
17
+ fields: Record<string, AddInterfacePropertyFromFieldConfig["model"]>;
18
+ tabName?: string;
19
+ };
20
+ export declare const addInterfacePropertiesForFields: (config: AddInterfacePropertiesForFieldsConfig) => void;
21
+ export {};