prismic-ts-codegen 0.1.11 → 0.1.13

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 (202) hide show
  1. package/dist/_node_modules/quick-lru/index.cjs +234 -0
  2. package/dist/_node_modules/quick-lru/index.cjs.map +1 -0
  3. package/dist/_node_modules/quick-lru/index.js +235 -0
  4. package/dist/_node_modules/quick-lru/index.js.map +1 -0
  5. package/dist/constants.cjs +19 -21
  6. package/dist/constants.cjs.map +1 -1
  7. package/dist/constants.d.ts +2 -3
  8. package/dist/constants.js +19 -21
  9. package/dist/constants.js.map +1 -1
  10. package/dist/generateTypes.cjs +71 -90
  11. package/dist/generateTypes.cjs.map +1 -1
  12. package/dist/generateTypes.d.ts +2 -1
  13. package/dist/generateTypes.js +71 -90
  14. package/dist/generateTypes.js.map +1 -1
  15. package/dist/lib/addBlankLine.cjs +12 -0
  16. package/dist/lib/addBlankLine.cjs.map +1 -0
  17. package/dist/lib/addBlankLine.d.ts +5 -0
  18. package/dist/lib/addBlankLine.js +12 -0
  19. package/dist/lib/addBlankLine.js.map +1 -0
  20. package/dist/lib/addLine.cjs +8 -0
  21. package/dist/lib/addLine.cjs.map +1 -0
  22. package/dist/lib/addLine.d.ts +1 -0
  23. package/dist/lib/addLine.js +8 -0
  24. package/dist/lib/addLine.js.map +1 -0
  25. package/dist/lib/addSection.cjs +8 -0
  26. package/dist/lib/addSection.cjs.map +1 -0
  27. package/dist/lib/addSection.d.ts +1 -0
  28. package/dist/lib/addSection.js +8 -0
  29. package/dist/lib/addSection.js.map +1 -0
  30. package/dist/lib/addTrailingNewLine.cjs +11 -0
  31. package/dist/lib/addTrailingNewLine.cjs.map +1 -0
  32. package/dist/lib/addTrailingNewLine.d.ts +5 -0
  33. package/dist/lib/addTrailingNewLine.js +11 -0
  34. package/dist/lib/addTrailingNewLine.js.map +1 -0
  35. package/dist/lib/buildCustomTypeDataType.cjs +51 -0
  36. package/dist/lib/buildCustomTypeDataType.cjs.map +1 -0
  37. package/dist/lib/buildCustomTypeDataType.d.ts +13 -0
  38. package/dist/lib/buildCustomTypeDataType.js +51 -0
  39. package/dist/lib/buildCustomTypeDataType.js.map +1 -0
  40. package/dist/lib/buildCustomTypeType.cjs +60 -0
  41. package/dist/lib/buildCustomTypeType.cjs.map +1 -0
  42. package/dist/lib/buildCustomTypeType.d.ts +17 -0
  43. package/dist/lib/buildCustomTypeType.js +60 -0
  44. package/dist/lib/buildCustomTypeType.js.map +1 -0
  45. package/dist/lib/buildFieldDocs.cjs +67 -35
  46. package/dist/lib/buildFieldDocs.cjs.map +1 -1
  47. package/dist/lib/buildFieldDocs.d.ts +7 -11
  48. package/dist/lib/buildFieldDocs.js +67 -35
  49. package/dist/lib/buildFieldDocs.js.map +1 -1
  50. package/dist/lib/buildFieldProperties.cjs +300 -0
  51. package/dist/lib/buildFieldProperties.cjs.map +1 -0
  52. package/dist/lib/buildFieldProperties.d.ts +14 -0
  53. package/dist/lib/buildFieldProperties.js +300 -0
  54. package/dist/lib/buildFieldProperties.js.map +1 -0
  55. package/dist/lib/buildSharedSliceType.cjs +140 -0
  56. package/dist/lib/buildSharedSliceType.cjs.map +1 -0
  57. package/dist/lib/buildSharedSliceType.d.ts +16 -0
  58. package/dist/lib/buildSharedSliceType.js +140 -0
  59. package/dist/lib/buildSharedSliceType.js.map +1 -0
  60. package/dist/lib/buildTypeName.cjs +4 -2
  61. package/dist/lib/buildTypeName.cjs.map +1 -1
  62. package/dist/lib/buildTypeName.js +4 -2
  63. package/dist/lib/buildTypeName.js.map +1 -1
  64. package/dist/lib/buildUnion.cjs +7 -0
  65. package/dist/lib/buildUnion.cjs.map +1 -0
  66. package/dist/lib/buildUnion.d.ts +1 -0
  67. package/dist/lib/buildUnion.js +7 -0
  68. package/dist/lib/buildUnion.js.map +1 -0
  69. package/dist/lib/checkHasUIDFIeld.cjs +7 -0
  70. package/dist/lib/checkHasUIDFIeld.cjs.map +1 -0
  71. package/dist/lib/checkHasUIDFIeld.d.ts +2 -0
  72. package/dist/lib/checkHasUIDFIeld.js +7 -0
  73. package/dist/lib/checkHasUIDFIeld.js.map +1 -0
  74. package/dist/lib/getAPIIDPath.cjs +18 -14
  75. package/dist/lib/getAPIIDPath.cjs.map +1 -1
  76. package/dist/lib/getAPIIDPath.d.ts +4 -8
  77. package/dist/lib/getAPIIDPath.js +18 -14
  78. package/dist/lib/getAPIIDPath.js.map +1 -1
  79. package/dist/lib/getCacheKey.cjs +25 -0
  80. package/dist/lib/getCacheKey.cjs.map +1 -0
  81. package/dist/lib/getCacheKey.d.ts +9 -0
  82. package/dist/lib/getCacheKey.js +8 -0
  83. package/dist/lib/getCacheKey.js.map +1 -0
  84. package/dist/lib/getHumanReadableModelName.cjs +13 -17
  85. package/dist/lib/getHumanReadableModelName.cjs.map +1 -1
  86. package/dist/lib/getHumanReadableModelName.d.ts +3 -3
  87. package/dist/lib/getHumanReadableModelName.js +13 -17
  88. package/dist/lib/getHumanReadableModelName.js.map +1 -1
  89. package/dist/lib/{getHumanReadableFieldPath.cjs → getHumanReadablePath.cjs} +8 -8
  90. package/dist/lib/getHumanReadablePath.cjs.map +1 -0
  91. package/dist/lib/getHumanReadablePath.d.ts +6 -0
  92. package/dist/lib/{getHumanReadableFieldPath.js → getHumanReadablePath.js} +8 -8
  93. package/dist/lib/getHumanReadablePath.js.map +1 -0
  94. package/dist/types.d.ts +9 -1
  95. package/package.json +18 -17
  96. package/src/constants.ts +19 -22
  97. package/src/generateTypes.ts +109 -108
  98. package/src/lib/addBlankLine.ts +13 -0
  99. package/src/lib/addLine.ts +5 -0
  100. package/src/lib/addSection.ts +5 -0
  101. package/src/lib/addTrailingNewLine.ts +14 -0
  102. package/src/lib/buildCustomTypeDataType.ts +74 -0
  103. package/src/lib/buildCustomTypeType.ts +101 -0
  104. package/src/lib/buildFieldDocs.ts +128 -68
  105. package/src/lib/buildFieldProperties.ts +513 -0
  106. package/src/lib/buildSharedSliceType.ts +213 -0
  107. package/src/lib/buildTypeName.ts +4 -2
  108. package/src/lib/buildUnion.ts +3 -0
  109. package/src/lib/checkHasUIDFIeld.ts +5 -0
  110. package/src/lib/getAPIIDPath.ts +40 -41
  111. package/src/lib/getCacheKey.ts +13 -0
  112. package/src/lib/getHumanReadableModelName.ts +23 -20
  113. package/src/lib/getHumanReadablePath.ts +24 -0
  114. package/src/types.ts +11 -1
  115. package/dist/lib/addInterfacePropertiesForFields.cjs +0 -489
  116. package/dist/lib/addInterfacePropertiesForFields.cjs.map +0 -1
  117. package/dist/lib/addInterfacePropertiesForFields.d.ts +0 -21
  118. package/dist/lib/addInterfacePropertiesForFields.js +0 -489
  119. package/dist/lib/addInterfacePropertiesForFields.js.map +0 -1
  120. package/dist/lib/addTypeAliasForCustomType.cjs +0 -81
  121. package/dist/lib/addTypeAliasForCustomType.cjs.map +0 -1
  122. package/dist/lib/addTypeAliasForCustomType.d.ts +0 -11
  123. package/dist/lib/addTypeAliasForCustomType.js +0 -81
  124. package/dist/lib/addTypeAliasForCustomType.js.map +0 -1
  125. package/dist/lib/addTypeAliasForSharedSlice.cjs +0 -149
  126. package/dist/lib/addTypeAliasForSharedSlice.cjs.map +0 -1
  127. package/dist/lib/addTypeAliasForSharedSlice.d.ts +0 -10
  128. package/dist/lib/addTypeAliasForSharedSlice.js +0 -149
  129. package/dist/lib/addTypeAliasForSharedSlice.js.map +0 -1
  130. package/dist/lib/buildSharedSliceInterfaceNamePart.cjs +0 -8
  131. package/dist/lib/buildSharedSliceInterfaceNamePart.cjs.map +0 -1
  132. package/dist/lib/buildSharedSliceInterfaceNamePart.d.ts +0 -5
  133. package/dist/lib/buildSharedSliceInterfaceNamePart.js +0 -8
  134. package/dist/lib/buildSharedSliceInterfaceNamePart.js.map +0 -1
  135. package/dist/lib/getFieldDocumentationURL.cjs +0 -8
  136. package/dist/lib/getFieldDocumentationURL.cjs.map +0 -1
  137. package/dist/lib/getFieldDocumentationURL.d.ts +0 -6
  138. package/dist/lib/getFieldDocumentationURL.js +0 -8
  139. package/dist/lib/getFieldDocumentationURL.js.map +0 -1
  140. package/dist/lib/getHumanReadableFieldPath.cjs.map +0 -1
  141. package/dist/lib/getHumanReadableFieldPath.d.ts +0 -10
  142. package/dist/lib/getHumanReadableFieldPath.js.map +0 -1
  143. package/dist/lib/getHumanReadableFieldType.cjs +0 -36
  144. package/dist/lib/getHumanReadableFieldType.cjs.map +0 -1
  145. package/dist/lib/getHumanReadableFieldType.d.ts +0 -6
  146. package/dist/lib/getHumanReadableFieldType.js +0 -36
  147. package/dist/lib/getHumanReadableFieldType.js.map +0 -1
  148. package/dist/lib/getSourceFileText.cjs +0 -9
  149. package/dist/lib/getSourceFileText.cjs.map +0 -1
  150. package/dist/lib/getSourceFileText.d.ts +0 -2
  151. package/dist/lib/getSourceFileText.js +0 -9
  152. package/dist/lib/getSourceFileText.js.map +0 -1
  153. package/dist/lib/hasOwnProperty.cjs +0 -7
  154. package/dist/lib/hasOwnProperty.cjs.map +0 -1
  155. package/dist/lib/hasOwnProperty.d.ts +0 -10
  156. package/dist/lib/hasOwnProperty.js +0 -7
  157. package/dist/lib/hasOwnProperty.js.map +0 -1
  158. package/dist/lib/isCustomTypeModel.cjs +0 -7
  159. package/dist/lib/isCustomTypeModel.cjs.map +0 -1
  160. package/dist/lib/isCustomTypeModel.d.ts +0 -2
  161. package/dist/lib/isCustomTypeModel.js +0 -7
  162. package/dist/lib/isCustomTypeModel.js.map +0 -1
  163. package/dist/lib/isCustomTypeModelField.cjs +0 -7
  164. package/dist/lib/isCustomTypeModelField.cjs.map +0 -1
  165. package/dist/lib/isCustomTypeModelField.d.ts +0 -2
  166. package/dist/lib/isCustomTypeModelField.js +0 -7
  167. package/dist/lib/isCustomTypeModelField.js.map +0 -1
  168. package/dist/lib/isCustomTypeModelSlice.cjs +0 -8
  169. package/dist/lib/isCustomTypeModelSlice.cjs.map +0 -1
  170. package/dist/lib/isCustomTypeModelSlice.d.ts +0 -2
  171. package/dist/lib/isCustomTypeModelSlice.js +0 -8
  172. package/dist/lib/isCustomTypeModelSlice.js.map +0 -1
  173. package/dist/lib/isSharedSliceModel.cjs +0 -8
  174. package/dist/lib/isSharedSliceModel.cjs.map +0 -1
  175. package/dist/lib/isSharedSliceModel.d.ts +0 -2
  176. package/dist/lib/isSharedSliceModel.js +0 -8
  177. package/dist/lib/isSharedSliceModel.js.map +0 -1
  178. package/dist/lib/pascalCase.cjs +0 -8
  179. package/dist/lib/pascalCase.cjs.map +0 -1
  180. package/dist/lib/pascalCase.d.ts +0 -1
  181. package/dist/lib/pascalCase.js +0 -8
  182. package/dist/lib/pascalCase.js.map +0 -1
  183. package/dist/lib/writeFieldDocsDescription.cjs +0 -29
  184. package/dist/lib/writeFieldDocsDescription.cjs.map +0 -1
  185. package/dist/lib/writeFieldDocsDescription.d.ts +0 -13
  186. package/dist/lib/writeFieldDocsDescription.js +0 -29
  187. package/dist/lib/writeFieldDocsDescription.js.map +0 -1
  188. package/src/lib/addInterfacePropertiesForFields.ts +0 -665
  189. package/src/lib/addTypeAliasForCustomType.ts +0 -120
  190. package/src/lib/addTypeAliasForSharedSlice.ts +0 -201
  191. package/src/lib/buildSharedSliceInterfaceNamePart.ts +0 -11
  192. package/src/lib/getFieldDocumentationURL.ts +0 -15
  193. package/src/lib/getHumanReadableFieldPath.ts +0 -36
  194. package/src/lib/getHumanReadableFieldType.ts +0 -55
  195. package/src/lib/getSourceFileText.ts +0 -14
  196. package/src/lib/hasOwnProperty.ts +0 -15
  197. package/src/lib/isCustomTypeModel.ts +0 -5
  198. package/src/lib/isCustomTypeModelField.ts +0 -7
  199. package/src/lib/isCustomTypeModelSlice.ts +0 -14
  200. package/src/lib/isSharedSliceModel.ts +0 -14
  201. package/src/lib/pascalCase.ts +0 -9
  202. package/src/lib/writeFieldDocsDescription.ts +0 -51
@@ -1,489 +0,0 @@
1
- import { buildFieldDocs } from "./buildFieldDocs.js";
2
- import { buildSharedSliceInterfaceNamePart } from "./buildSharedSliceInterfaceNamePart.js";
3
- import { buildTypeName } from "./buildTypeName.js";
4
- import { getHumanReadableFieldPath } from "./getHumanReadableFieldPath.js";
5
- const addInterfacePropertyForField = (config) => {
6
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
7
- switch (config.model.type) {
8
- case "UID": {
9
- break;
10
- }
11
- case "Boolean": {
12
- config.interface.addProperty({
13
- name: config.id,
14
- type: "prismic.BooleanField",
15
- docs: buildFieldDocs({
16
- id: config.id,
17
- model: config.model,
18
- path: config.path,
19
- tabName: config.tabName
20
- })
21
- });
22
- break;
23
- }
24
- case "Color": {
25
- config.interface.addProperty({
26
- name: config.id,
27
- type: "prismic.ColorField",
28
- docs: buildFieldDocs({
29
- id: config.id,
30
- model: config.model,
31
- path: config.path,
32
- tabName: config.tabName
33
- })
34
- });
35
- break;
36
- }
37
- case "Date": {
38
- config.interface.addProperty({
39
- name: config.id,
40
- type: "prismic.DateField",
41
- docs: buildFieldDocs({
42
- id: config.id,
43
- model: config.model,
44
- path: config.path,
45
- tabName: config.tabName
46
- })
47
- });
48
- break;
49
- }
50
- case "Embed": {
51
- const providerTypes = [];
52
- if ((_a = config.fieldConfigs.embed) == null ? void 0 : _a.providerTypes) {
53
- for (const providerType in (_b = config.fieldConfigs.embed) == null ? void 0 : _b.providerTypes) {
54
- const configuredProviderType = (_c = config.fieldConfigs.embed) == null ? void 0 : _c.providerTypes[providerType];
55
- providerTypes.push(`({ provider_name: "${providerType}" } & ${configuredProviderType})`);
56
- }
57
- }
58
- config.interface.addProperty({
59
- name: config.id,
60
- type: providerTypes.length > 0 ? `prismic.EmbedField<prismic.AnyOEmbed & prismic.OEmbedExtra & (${providerTypes.join(" | ")})>` : "prismic.EmbedField",
61
- docs: buildFieldDocs({
62
- id: config.id,
63
- model: config.model,
64
- path: config.path,
65
- tabName: config.tabName
66
- })
67
- });
68
- break;
69
- }
70
- case "GeoPoint": {
71
- config.interface.addProperty({
72
- name: config.id,
73
- type: "prismic.GeoPointField",
74
- docs: buildFieldDocs({
75
- id: config.id,
76
- model: config.model,
77
- path: config.path,
78
- tabName: config.tabName
79
- })
80
- });
81
- break;
82
- }
83
- case "Image": {
84
- if (((_d = config.model.config) == null ? void 0 : _d.thumbnails) && config.model.config.thumbnails.length > 0) {
85
- const thumbnailNames = config.model.config.thumbnails.map((thumbnail) => `"${thumbnail.name}"`).join(" | ");
86
- config.interface.addProperty({
87
- name: config.id,
88
- type: `prismic.ImageField<${thumbnailNames}>`,
89
- docs: buildFieldDocs({
90
- id: config.id,
91
- model: config.model,
92
- path: config.path,
93
- tabName: config.tabName
94
- })
95
- });
96
- } else {
97
- config.interface.addProperty({
98
- name: config.id,
99
- type: "prismic.ImageField<never>",
100
- docs: buildFieldDocs({
101
- id: config.id,
102
- model: config.model,
103
- path: config.path,
104
- tabName: config.tabName
105
- })
106
- });
107
- }
108
- break;
109
- }
110
- case "IntegrationFields": {
111
- 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;
112
- config.interface.addProperty({
113
- name: config.id,
114
- type: catalogType ? `prismic.IntegrationField<${catalogType}>` : "prismic.IntegrationField",
115
- docs: buildFieldDocs({
116
- id: config.id,
117
- model: config.model,
118
- path: config.path,
119
- tabName: config.tabName
120
- })
121
- });
122
- break;
123
- }
124
- case "Link": {
125
- switch ((_h = config.model.config) == null ? void 0 : _h.select) {
126
- case "document": {
127
- config.model.config;
128
- config.interface.addProperty({
129
- name: config.id,
130
- type: "customtypes" in config.model.config && config.model.config.customtypes && config.model.config.customtypes.length > 0 ? `prismic.ContentRelationshipField<${config.model.config.customtypes.map((type) => `"${type}"`).join(" | ")}>` : "prismic.ContentRelationshipField",
131
- docs: buildFieldDocs({
132
- id: config.id,
133
- model: config.model,
134
- path: config.path,
135
- tabName: config.tabName
136
- })
137
- });
138
- break;
139
- }
140
- case "media": {
141
- config.interface.addProperty({
142
- name: config.id,
143
- type: "prismic.LinkToMediaField",
144
- docs: buildFieldDocs({
145
- id: config.id,
146
- model: config.model,
147
- path: config.path,
148
- tabName: config.tabName
149
- })
150
- });
151
- break;
152
- }
153
- default: {
154
- config.interface.addProperty({
155
- name: config.id,
156
- type: "prismic.LinkField",
157
- docs: buildFieldDocs({
158
- id: config.id,
159
- model: config.model,
160
- path: config.path,
161
- tabName: config.tabName
162
- })
163
- });
164
- }
165
- }
166
- break;
167
- }
168
- case "Number": {
169
- config.interface.addProperty({
170
- name: config.id,
171
- type: "prismic.NumberField",
172
- docs: buildFieldDocs({
173
- id: config.id,
174
- model: config.model,
175
- path: config.path,
176
- tabName: config.tabName
177
- })
178
- });
179
- break;
180
- }
181
- case "StructuredText": {
182
- const isTitleField = config.model.config && "single" in config.model.config && config.model.config.single && config.model.config.single.split(",").every((blockType) => /heading/.test(blockType));
183
- if (isTitleField) {
184
- config.interface.addProperty({
185
- name: config.id,
186
- type: "prismic.TitleField",
187
- docs: buildFieldDocs({
188
- id: config.id,
189
- model: config.model,
190
- path: config.path,
191
- tabName: config.tabName
192
- })
193
- });
194
- } else {
195
- config.interface.addProperty({
196
- name: config.id,
197
- type: "prismic.RichTextField",
198
- docs: buildFieldDocs({
199
- id: config.id,
200
- model: config.model,
201
- path: config.path,
202
- tabName: config.tabName
203
- })
204
- });
205
- }
206
- break;
207
- }
208
- case "Select": {
209
- const options = (_j = (_i = config.model.config) == null ? void 0 : _i.options) == null ? void 0 : _j.map((option) => `"${option}"`).join(" | ");
210
- const hasDefault = Boolean((_k = config.model.config) == null ? void 0 : _k.default_value);
211
- if (hasDefault) {
212
- config.interface.addProperty({
213
- name: config.id,
214
- type: `prismic.SelectField<${options || "string"}, "filled">`,
215
- docs: buildFieldDocs({
216
- id: config.id,
217
- model: config.model,
218
- path: config.path,
219
- tabName: config.tabName
220
- })
221
- });
222
- } else {
223
- config.interface.addProperty({
224
- name: config.id,
225
- type: `prismic.SelectField<${options}>`,
226
- docs: buildFieldDocs({
227
- id: config.id,
228
- model: config.model,
229
- path: config.path,
230
- tabName: config.tabName
231
- })
232
- });
233
- }
234
- break;
235
- }
236
- case "Text": {
237
- config.interface.addProperty({
238
- name: config.id,
239
- type: "prismic.KeyTextField",
240
- docs: buildFieldDocs({
241
- id: config.id,
242
- model: config.model,
243
- path: config.path,
244
- tabName: config.tabName
245
- })
246
- });
247
- break;
248
- }
249
- case "Timestamp": {
250
- config.interface.addProperty({
251
- name: config.id,
252
- type: "prismic.TimestampField",
253
- docs: buildFieldDocs({
254
- id: config.id,
255
- model: config.model,
256
- path: config.path,
257
- tabName: config.tabName
258
- })
259
- });
260
- break;
261
- }
262
- case "Group": {
263
- const itemInterface = config.sourceFile.addInterface({
264
- name: buildTypeName(config.path[0].id, "Document", "Data", config.id, "Item"),
265
- docs: [
266
- {
267
- description: (writer) => {
268
- const humanReadablePath = getHumanReadableFieldPath({
269
- path: [
270
- ...config.path,
271
- {
272
- id: config.id,
273
- model: config.model
274
- }
275
- ]
276
- });
277
- writer.writeLine(`Item in ${humanReadablePath}`);
278
- }
279
- }
280
- ],
281
- isExported: true
282
- });
283
- if ((_l = config.model.config) == null ? void 0 : _l.fields) {
284
- addInterfacePropertiesForFields({
285
- interface: itemInterface,
286
- sourceFile: config.sourceFile,
287
- fields: config.model.config.fields,
288
- path: [
289
- ...config.path,
290
- {
291
- id: config.id,
292
- model: config.model
293
- }
294
- ],
295
- fieldConfigs: config.fieldConfigs
296
- });
297
- }
298
- config.interface.addProperty({
299
- name: config.id,
300
- type: `prismic.GroupField<Simplify<${itemInterface.getName()}>>`,
301
- docs: buildFieldDocs({
302
- id: config.id,
303
- model: config.model,
304
- path: config.path,
305
- tabName: config.tabName
306
- })
307
- });
308
- break;
309
- }
310
- case "Slices": {
311
- const choiceInterfaceNames = [];
312
- if ((_m = config.model.config) == null ? void 0 : _m.choices) {
313
- for (const choiceId in config.model.config.choices) {
314
- const choice = config.model.config.choices[choiceId];
315
- if (choice.type === "SharedSlice") {
316
- choiceInterfaceNames.push(buildSharedSliceInterfaceNamePart({ id: choiceId }));
317
- } else if (choice.type === "Slice") {
318
- let primaryInterface;
319
- if (choice["non-repeat"] && Object.keys(choice["non-repeat"]).length > 0) {
320
- primaryInterface = config.sourceFile.addInterface({
321
- name: buildTypeName(config.path[0].id, "Document", "Data", config.id, choiceId, "Slice", "Primary"),
322
- docs: [
323
- {
324
- description: (writer) => {
325
- const humanReadablePath = getHumanReadableFieldPath({
326
- path: [
327
- ...config.path,
328
- {
329
- id: config.id,
330
- model: config.model
331
- },
332
- {
333
- id: choiceId,
334
- model: choice
335
- },
336
- {
337
- id: "primary",
338
- label: "Primary"
339
- }
340
- ]
341
- });
342
- writer.writeLine(`Primary content in ${humanReadablePath}`);
343
- }
344
- }
345
- ]
346
- });
347
- addInterfacePropertiesForFields({
348
- interface: primaryInterface,
349
- sourceFile: config.sourceFile,
350
- fields: choice["non-repeat"],
351
- path: [
352
- ...config.path,
353
- {
354
- id: config.id,
355
- model: config.model
356
- },
357
- {
358
- id: choiceId,
359
- model: choice
360
- },
361
- {
362
- id: "primary",
363
- label: "Primary"
364
- }
365
- ],
366
- fieldConfigs: config.fieldConfigs
367
- });
368
- }
369
- let itemInterface;
370
- if (choice.repeat && Object.keys(choice.repeat).length > 0) {
371
- itemInterface = config.sourceFile.addInterface({
372
- name: buildTypeName(config.path[0].id, "Document", "Data", config.id, choiceId, "Slice", "Item"),
373
- docs: [
374
- {
375
- description: (writer) => {
376
- const humanReadablePath = getHumanReadableFieldPath({
377
- path: [
378
- ...config.path,
379
- {
380
- id: config.id,
381
- model: config.model
382
- },
383
- {
384
- id: choiceId,
385
- model: choice
386
- },
387
- {
388
- id: "items",
389
- label: "Items"
390
- }
391
- ]
392
- });
393
- writer.writeLine(`Item in ${humanReadablePath}`);
394
- }
395
- }
396
- ],
397
- isExported: true
398
- });
399
- addInterfacePropertiesForFields({
400
- interface: itemInterface,
401
- sourceFile: config.sourceFile,
402
- fields: choice.repeat,
403
- path: [
404
- ...config.path,
405
- {
406
- id: config.id,
407
- model: config.model
408
- },
409
- {
410
- id: choiceId,
411
- model: choice
412
- },
413
- {
414
- id: "items",
415
- label: "Items"
416
- }
417
- ],
418
- fieldConfigs: config.fieldConfigs
419
- });
420
- }
421
- const sliceType = config.sourceFile.addTypeAlias({
422
- name: buildTypeName(config.path[0].id, "Document", "Data", config.id, choiceId, "Slice"),
423
- type: `prismic.Slice<"${choiceId}", ${primaryInterface ? `Simplify<${primaryInterface.getName()}>` : "Record<string, never>"}, ${itemInterface ? `Simplify<${itemInterface.getName()}>` : "never"}>`,
424
- isExported: true
425
- });
426
- choiceInterfaceNames.push(sliceType.getName());
427
- }
428
- }
429
- }
430
- const slicesType = config.sourceFile.addTypeAlias({
431
- name: buildTypeName(config.path[0].id, "Document", "Data", config.id, "Slice"),
432
- type: choiceInterfaceNames.length > 0 ? choiceInterfaceNames.join(" | ") : "never",
433
- docs: [
434
- {
435
- description: (writer) => {
436
- const humanReadablePath = getHumanReadableFieldPath({
437
- path: [
438
- ...config.path,
439
- {
440
- id: config.id,
441
- model: config.model
442
- }
443
- ]
444
- });
445
- writer.writeLine(`Slice for *${humanReadablePath}*`);
446
- }
447
- }
448
- ]
449
- });
450
- config.interface.addProperty({
451
- name: config.id,
452
- type: `prismic.SliceZone<${slicesType.getName()}>`,
453
- docs: buildFieldDocs({
454
- id: config.id,
455
- model: config.model,
456
- path: config.path,
457
- tabName: config.tabName
458
- })
459
- });
460
- break;
461
- }
462
- default: {
463
- config.interface.addProperty({
464
- name: config.id,
465
- type: "unknown",
466
- docs: buildFieldDocs({
467
- id: config.id,
468
- model: config.model,
469
- path: config.path,
470
- tabName: config.tabName
471
- })
472
- });
473
- }
474
- }
475
- };
476
- const addInterfacePropertiesForFields = (config) => {
477
- for (const name in config.fields) {
478
- addInterfacePropertyForField({
479
- ...config,
480
- id: name.includes("-") || name.includes(":") || /^[0-9]/.test(name) ? `"${name}"` : name,
481
- model: config.fields[name],
482
- tabName: config.tabName
483
- });
484
- }
485
- };
486
- export {
487
- addInterfacePropertiesForFields
488
- };
489
- //# sourceMappingURL=addInterfacePropertiesForFields.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"addInterfacePropertiesForFields.js","sources":["../../../src/lib/addInterfacePropertiesForFields.ts"],"sourcesContent":["import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\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.IntegrationField<${catalogType}>`\n\t\t\t\t\t: \"prismic.IntegrationField\",\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 \"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.ContentRelationshipField<${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.ContentRelationshipField\",\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 \"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 === \"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 === \"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":[],"mappings":"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"}
@@ -1,81 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const constants = require("../constants.cjs");
4
- const addInterfacePropertiesForFields = require("./addInterfacePropertiesForFields.cjs");
5
- const buildTypeName = require("./buildTypeName.cjs");
6
- const collectCustomTypeFields = (model) => {
7
- return Object.assign({}, ...Object.values(model.json));
8
- };
9
- const addTypeAliasForCustomType = ({ model, sourceFile, localeIDs, fieldConfigs }) => {
10
- const { uid: uidField, ...fields } = collectCustomTypeFields(model);
11
- const hasDataFields = Object.keys(fields).length > 0;
12
- const hasUIDField = Boolean(uidField);
13
- let dataInterface;
14
- if (hasDataFields) {
15
- dataInterface = sourceFile.addInterface({
16
- name: buildTypeName.buildTypeName(model.id, "Document", "Data"),
17
- docs: [
18
- {
19
- description: `Content for ${model.label} documents`
20
- }
21
- ]
22
- });
23
- for (const tabName in model.json) {
24
- const { uid: _uidField, ...tabFields } = model.json[tabName];
25
- addInterfacePropertiesForFields.addInterfacePropertiesForFields({
26
- fields: tabFields,
27
- interface: dataInterface,
28
- sourceFile,
29
- path: [
30
- {
31
- id: model.id,
32
- model
33
- }
34
- ],
35
- fieldConfigs,
36
- tabName
37
- });
38
- }
39
- } else {
40
- dataInterface = sourceFile.addTypeAlias({
41
- name: buildTypeName.buildTypeName(model.id, "Document", "Data"),
42
- type: `Record<string, never>`,
43
- docs: [
44
- {
45
- description: `Content for ${model.label} documents`
46
- }
47
- ]
48
- });
49
- }
50
- return sourceFile.addTypeAlias({
51
- name: buildTypeName.buildTypeName(model.id, "Document"),
52
- typeParameters: [
53
- {
54
- name: "Lang",
55
- constraint: "string",
56
- default: localeIDs.length > 0 ? localeIDs.map((localeID) => `"${localeID}"`).join(" | ") : "string"
57
- }
58
- ],
59
- type: hasUIDField ? `prismic.PrismicDocumentWithUID<Simplify<${dataInterface.getName()}>, "${model.id}", Lang>` : `prismic.PrismicDocumentWithoutUID<Simplify<${dataInterface.getName()}>, "${model.id}", Lang>`,
60
- docs: [
61
- {
62
- description: (writer) => {
63
- writer.writeLine(`${model.label} document from Prismic`);
64
- writer.blankLine();
65
- writer.writeLine(`- **API ID**: \`${model.id}\``);
66
- writer.writeLine(`- **Repeatable**: \`${model.repeatable}\``);
67
- writer.writeLine(`- **Documentation**: ${constants.CUSTOM_TYPES_DOCUMENTATION_URL}`);
68
- },
69
- tags: [
70
- {
71
- tagName: "typeParam",
72
- text: "Lang - Language API ID of the document."
73
- }
74
- ]
75
- }
76
- ],
77
- isExported: true
78
- });
79
- };
80
- exports.addTypeAliasForCustomType = addTypeAliasForCustomType;
81
- //# sourceMappingURL=addTypeAliasForCustomType.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"addTypeAliasForCustomType.cjs","sources":["../../../src/lib/addTypeAliasForCustomType.ts"],"sourcesContent":["import type { CustomTypeModel, CustomTypeModelField } from \"@prismicio/client\";\nimport type {\n\tInterfaceDeclaration,\n\tSourceFile,\n\tTypeAliasDeclaration,\n} from \"ts-morph\";\n\nimport { FieldConfigs } from \"../types\";\n\nimport { CUSTOM_TYPES_DOCUMENTATION_URL } from \"../constants\";\n\nimport { addInterfacePropertiesForFields } from \"./addInterfacePropertiesForFields\";\nimport { buildTypeName } from \"./buildTypeName\";\n\nconst collectCustomTypeFields = (\n\tmodel: CustomTypeModel,\n): Record<string, CustomTypeModelField> => {\n\treturn Object.assign({}, ...Object.values(model.json));\n};\n\ntype AddTypeAliasForCustomTypeConfig = {\n\tmodel: CustomTypeModel;\n\tsourceFile: SourceFile;\n\tlocaleIDs: string[];\n\tfieldConfigs: FieldConfigs;\n};\n\nexport const addTypeAliasForCustomType = ({\n\tmodel,\n\tsourceFile,\n\tlocaleIDs,\n\tfieldConfigs,\n}: AddTypeAliasForCustomTypeConfig): TypeAliasDeclaration => {\n\tconst { uid: uidField, ...fields } = collectCustomTypeFields(model);\n\tconst hasDataFields = Object.keys(fields).length > 0;\n\tconst hasUIDField = Boolean(uidField);\n\n\tlet dataInterface: InterfaceDeclaration | TypeAliasDeclaration;\n\tif (hasDataFields) {\n\t\tdataInterface = sourceFile.addInterface({\n\t\t\tname: buildTypeName(model.id, \"Document\", \"Data\"),\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: `Content for ${model.label} documents`,\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\n\t\tfor (const tabName in model.json) {\n\t\t\t// This is destructured to ensure the UID field is\n\t\t\t// ignored.\n\t\t\tconst { uid: _uidField, ...tabFields } = model.json[tabName];\n\n\t\t\taddInterfacePropertiesForFields({\n\t\t\t\tfields: tabFields,\n\t\t\t\tinterface: dataInterface,\n\t\t\t\tsourceFile: sourceFile,\n\t\t\t\tpath: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: model.id,\n\t\t\t\t\t\tmodel: model,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfigs,\n\t\t\t\ttabName,\n\t\t\t});\n\t\t}\n\t} else {\n\t\tdataInterface = sourceFile.addTypeAlias({\n\t\t\tname: buildTypeName(model.id, \"Document\", \"Data\"),\n\t\t\ttype: `Record<string, never>`,\n\t\t\tdocs: [\n\t\t\t\t{\n\t\t\t\t\tdescription: `Content for ${model.label} documents`,\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t}\n\n\treturn sourceFile.addTypeAlias({\n\t\tname: buildTypeName(model.id, \"Document\"),\n\t\ttypeParameters: [\n\t\t\t{\n\t\t\t\tname: \"Lang\",\n\t\t\t\tconstraint: \"string\",\n\t\t\t\tdefault:\n\t\t\t\t\tlocaleIDs.length > 0\n\t\t\t\t\t\t? localeIDs.map((localeID) => `\"${localeID}\"`).join(\" | \")\n\t\t\t\t\t\t: \"string\",\n\t\t\t},\n\t\t],\n\t\ttype: hasUIDField\n\t\t\t? `prismic.PrismicDocumentWithUID<Simplify<${dataInterface.getName()}>, \"${\n\t\t\t\t\tmodel.id\n\t\t\t }\", Lang>`\n\t\t\t: `prismic.PrismicDocumentWithoutUID<Simplify<${dataInterface.getName()}>, \"${\n\t\t\t\t\tmodel.id\n\t\t\t }\", Lang>`,\n\t\tdocs: [\n\t\t\t{\n\t\t\t\tdescription: (writer) => {\n\t\t\t\t\twriter.writeLine(`${model.label} document from Prismic`);\n\t\t\t\t\twriter.blankLine();\n\t\t\t\t\twriter.writeLine(`- **API ID**: \\`${model.id}\\``);\n\t\t\t\t\twriter.writeLine(`- **Repeatable**: \\`${model.repeatable}\\``);\n\t\t\t\t\twriter.writeLine(\n\t\t\t\t\t\t`- **Documentation**: ${CUSTOM_TYPES_DOCUMENTATION_URL}`,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\ttags: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttagName: \"typeParam\",\n\t\t\t\t\t\ttext: \"Lang - Language API ID of the document.\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tisExported: true,\n\t});\n};\n"],"names":["buildTypeName","addInterfacePropertiesForFields","CUSTOM_TYPES_DOCUMENTATION_URL"],"mappings":";;;;;AAcA,MAAM,0BAA0B,CAC/B,UACyC;AAClC,SAAA,OAAO,OAAO,IAAI,GAAG,OAAO,OAAO,MAAM,IAAI,CAAC;AACtD;AASO,MAAM,4BAA4B,CAAC,EACzC,OACA,YACA,WACA,mBAC2D;AAC3D,QAAM,EAAE,KAAK,UAAU,GAAG,OAAM,IAAK,wBAAwB,KAAK;AAClE,QAAM,gBAAgB,OAAO,KAAK,MAAM,EAAE,SAAS;AAC7C,QAAA,cAAc,QAAQ,QAAQ;AAEhC,MAAA;AACJ,MAAI,eAAe;AAClB,oBAAgB,WAAW,aAAa;AAAA,MACvC,MAAMA,cAAAA,cAAc,MAAM,IAAI,YAAY,MAAM;AAAA,MAChD,MAAM;AAAA,QACL;AAAA,UACC,aAAa,eAAe,MAAM;AAAA,QAClC;AAAA,MACD;AAAA,IAAA,CACD;AAEU,eAAA,WAAW,MAAM,MAAM;AAG3B,YAAA,EAAE,KAAK,WAAW,GAAG,UAAc,IAAA,MAAM,KAAK,OAAO;AAE3BC,sEAAA;AAAA,QAC/B,QAAQ;AAAA,QACR,WAAW;AAAA,QACX;AAAA,QACA,MAAM;AAAA,UACL;AAAA,YACC,IAAI,MAAM;AAAA,YACV;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,QACA;AAAA,MAAA,CACA;AAAA,IACD;AAAA,EAAA,OACK;AACN,oBAAgB,WAAW,aAAa;AAAA,MACvC,MAAMD,cAAAA,cAAc,MAAM,IAAI,YAAY,MAAM;AAAA,MAChD,MAAM;AAAA,MACN,MAAM;AAAA,QACL;AAAA,UACC,aAAa,eAAe,MAAM;AAAA,QAClC;AAAA,MACD;AAAA,IAAA,CACD;AAAA,EACD;AAED,SAAO,WAAW,aAAa;AAAA,IAC9B,MAAMA,cAAA,cAAc,MAAM,IAAI,UAAU;AAAA,IACxC,gBAAgB;AAAA,MACf;AAAA,QACC,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,SACC,UAAU,SAAS,IAChB,UAAU,IAAI,CAAC,aAAa,IAAI,WAAW,EAAE,KAAK,KAAK,IACvD;AAAA,MACJ;AAAA,IACD;AAAA,IACD,MAAM,cACH,2CAA2C,cAAc,gBACzD,MAAM,eAEN,8CAA8C,cAAc,gBAC5D,MAAM;AAAA,IAET,MAAM;AAAA,MACL;AAAA,QACC,aAAa,CAAC,WAAU;AAChB,iBAAA,UAAU,GAAG,MAAM,6BAA6B;AACvD,iBAAO,UAAS;AACT,iBAAA,UAAU,mBAAmB,MAAM,MAAM;AACzC,iBAAA,UAAU,uBAAuB,MAAM,cAAc;AACrD,iBAAA,UACN,wBAAwBE,UAAgC,gCAAA;AAAA,QAE1D;AAAA,QACA,MAAM;AAAA,UACL;AAAA,YACC,SAAS;AAAA,YACT,MAAM;AAAA,UACN;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IACD,YAAY;AAAA,EAAA,CACZ;AACF;;"}
@@ -1,11 +0,0 @@
1
- import type { CustomTypeModel } from "@prismicio/client";
2
- import type { SourceFile, TypeAliasDeclaration } from "ts-morph";
3
- import { FieldConfigs } from "../types";
4
- type AddTypeAliasForCustomTypeConfig = {
5
- model: CustomTypeModel;
6
- sourceFile: SourceFile;
7
- localeIDs: string[];
8
- fieldConfigs: FieldConfigs;
9
- };
10
- export declare const addTypeAliasForCustomType: ({ model, sourceFile, localeIDs, fieldConfigs, }: AddTypeAliasForCustomTypeConfig) => TypeAliasDeclaration;
11
- export {};