@datocms/cma-client 5.1.10 → 5.1.12

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 (253) hide show
  1. package/README.md +569 -0
  2. package/dist/cjs/fieldTypes/boolean.js +2 -2
  3. package/dist/cjs/fieldTypes/boolean.js.map +1 -1
  4. package/dist/cjs/fieldTypes/color.js +2 -2
  5. package/dist/cjs/fieldTypes/color.js.map +1 -1
  6. package/dist/cjs/fieldTypes/date.js +2 -3
  7. package/dist/cjs/fieldTypes/date.js.map +1 -1
  8. package/dist/cjs/fieldTypes/date_time.js +2 -2
  9. package/dist/cjs/fieldTypes/date_time.js.map +1 -1
  10. package/dist/cjs/fieldTypes/file.js +33 -5
  11. package/dist/cjs/fieldTypes/file.js.map +1 -1
  12. package/dist/cjs/fieldTypes/float.js +2 -2
  13. package/dist/cjs/fieldTypes/float.js.map +1 -1
  14. package/dist/cjs/fieldTypes/gallery.js +20 -5
  15. package/dist/cjs/fieldTypes/gallery.js.map +1 -1
  16. package/dist/cjs/fieldTypes/index.js +2 -2
  17. package/dist/cjs/fieldTypes/index.js.map +1 -1
  18. package/dist/cjs/fieldTypes/integer.js +2 -2
  19. package/dist/cjs/fieldTypes/integer.js.map +1 -1
  20. package/dist/cjs/fieldTypes/json.js +2 -3
  21. package/dist/cjs/fieldTypes/json.js.map +1 -1
  22. package/dist/cjs/fieldTypes/lat_lon.js +2 -2
  23. package/dist/cjs/fieldTypes/lat_lon.js.map +1 -1
  24. package/dist/cjs/fieldTypes/link.js +4 -4
  25. package/dist/cjs/fieldTypes/link.js.map +1 -1
  26. package/dist/cjs/fieldTypes/links.js +5 -3
  27. package/dist/cjs/fieldTypes/links.js.map +1 -1
  28. package/dist/cjs/fieldTypes/rich_text.js +18 -18
  29. package/dist/cjs/fieldTypes/rich_text.js.map +1 -1
  30. package/dist/cjs/fieldTypes/schema.js +3 -0
  31. package/dist/cjs/fieldTypes/schema.js.map +1 -0
  32. package/dist/cjs/fieldTypes/seo.js +2 -3
  33. package/dist/cjs/fieldTypes/seo.js.map +1 -1
  34. package/dist/cjs/fieldTypes/single_block.js +20 -19
  35. package/dist/cjs/fieldTypes/single_block.js.map +1 -1
  36. package/dist/cjs/fieldTypes/slug.js +2 -3
  37. package/dist/cjs/fieldTypes/slug.js.map +1 -1
  38. package/dist/cjs/fieldTypes/string.js +2 -2
  39. package/dist/cjs/fieldTypes/string.js.map +1 -1
  40. package/dist/cjs/fieldTypes/structured_text.js +17 -18
  41. package/dist/cjs/fieldTypes/structured_text.js.map +1 -1
  42. package/dist/cjs/fieldTypes/text.js +2 -3
  43. package/dist/cjs/fieldTypes/text.js.map +1 -1
  44. package/dist/cjs/fieldTypes/video.js +2 -2
  45. package/dist/cjs/fieldTypes/video.js.map +1 -1
  46. package/dist/cjs/generated/Client.js +1 -1
  47. package/dist/cjs/generated/resources/Item.js.map +1 -1
  48. package/dist/cjs/generated/resources/ScheduledPublication.js.map +1 -1
  49. package/dist/cjs/generated/resources/ScheduledUnpublishing.js.map +1 -1
  50. package/dist/cjs/generated/resources/Upload.js.map +1 -1
  51. package/dist/cjs/index.js +5 -4
  52. package/dist/cjs/index.js.map +1 -1
  53. package/dist/cjs/utilities/buildBlockRecord.js +1 -45
  54. package/dist/cjs/utilities/buildBlockRecord.js.map +1 -1
  55. package/dist/cjs/utilities/duplicateBlockRecord.js +49 -0
  56. package/dist/cjs/utilities/duplicateBlockRecord.js.map +1 -0
  57. package/dist/cjs/utilities/inspectItem.js +427 -0
  58. package/dist/cjs/utilities/inspectItem.js.map +1 -0
  59. package/dist/cjs/utilities/{blocks.js → nonRecursiveBlocks.js} +60 -234
  60. package/dist/cjs/utilities/nonRecursiveBlocks.js.map +1 -0
  61. package/dist/cjs/utilities/{fieldValue.js → normalizedFieldValues.js} +53 -41
  62. package/dist/cjs/utilities/normalizedFieldValues.js.map +1 -0
  63. package/dist/cjs/utilities/recursiveBlocks.js +73 -92
  64. package/dist/cjs/utilities/recursiveBlocks.js.map +1 -1
  65. package/dist/cjs/utilities/schemaRepository.js +2 -2
  66. package/dist/esm/fieldTypes/boolean.d.ts +1 -1
  67. package/dist/esm/fieldTypes/boolean.js +2 -2
  68. package/dist/esm/fieldTypes/boolean.js.map +1 -1
  69. package/dist/esm/fieldTypes/color.d.ts +1 -1
  70. package/dist/esm/fieldTypes/color.js +2 -2
  71. package/dist/esm/fieldTypes/color.js.map +1 -1
  72. package/dist/esm/fieldTypes/date.d.ts +1 -1
  73. package/dist/esm/fieldTypes/date.js +2 -3
  74. package/dist/esm/fieldTypes/date.js.map +1 -1
  75. package/dist/esm/fieldTypes/date_time.d.ts +1 -1
  76. package/dist/esm/fieldTypes/date_time.js +2 -2
  77. package/dist/esm/fieldTypes/date_time.js.map +1 -1
  78. package/dist/esm/fieldTypes/file.d.ts +68 -1
  79. package/dist/esm/fieldTypes/file.js +29 -3
  80. package/dist/esm/fieldTypes/file.js.map +1 -1
  81. package/dist/esm/fieldTypes/float.d.ts +1 -1
  82. package/dist/esm/fieldTypes/float.js +2 -2
  83. package/dist/esm/fieldTypes/float.js.map +1 -1
  84. package/dist/esm/fieldTypes/gallery.d.ts +27 -11
  85. package/dist/esm/fieldTypes/gallery.js +17 -4
  86. package/dist/esm/fieldTypes/gallery.js.map +1 -1
  87. package/dist/esm/fieldTypes/index.d.ts +2 -2
  88. package/dist/esm/fieldTypes/index.js +2 -2
  89. package/dist/esm/fieldTypes/index.js.map +1 -1
  90. package/dist/esm/fieldTypes/integer.d.ts +1 -1
  91. package/dist/esm/fieldTypes/integer.js +2 -2
  92. package/dist/esm/fieldTypes/integer.js.map +1 -1
  93. package/dist/esm/fieldTypes/json.d.ts +1 -1
  94. package/dist/esm/fieldTypes/json.js +2 -3
  95. package/dist/esm/fieldTypes/json.js.map +1 -1
  96. package/dist/esm/fieldTypes/lat_lon.d.ts +1 -1
  97. package/dist/esm/fieldTypes/lat_lon.js +2 -2
  98. package/dist/esm/fieldTypes/lat_lon.js.map +1 -1
  99. package/dist/esm/fieldTypes/link.d.ts +1 -1
  100. package/dist/esm/fieldTypes/link.js +4 -4
  101. package/dist/esm/fieldTypes/link.js.map +1 -1
  102. package/dist/esm/fieldTypes/links.d.ts +1 -1
  103. package/dist/esm/fieldTypes/links.js +5 -3
  104. package/dist/esm/fieldTypes/links.js.map +1 -1
  105. package/dist/esm/fieldTypes/rich_text.d.ts +9 -10
  106. package/dist/esm/fieldTypes/rich_text.js +13 -13
  107. package/dist/esm/fieldTypes/rich_text.js.map +1 -1
  108. package/dist/esm/fieldTypes/schema.d.ts +59 -0
  109. package/dist/esm/fieldTypes/schema.js +2 -0
  110. package/dist/esm/fieldTypes/schema.js.map +1 -0
  111. package/dist/esm/fieldTypes/seo.d.ts +1 -1
  112. package/dist/esm/fieldTypes/seo.js +2 -3
  113. package/dist/esm/fieldTypes/seo.js.map +1 -1
  114. package/dist/esm/fieldTypes/single_block.d.ts +31 -16
  115. package/dist/esm/fieldTypes/single_block.js +15 -14
  116. package/dist/esm/fieldTypes/single_block.js.map +1 -1
  117. package/dist/esm/fieldTypes/slug.d.ts +1 -1
  118. package/dist/esm/fieldTypes/slug.js +2 -3
  119. package/dist/esm/fieldTypes/slug.js.map +1 -1
  120. package/dist/esm/fieldTypes/string.d.ts +1 -1
  121. package/dist/esm/fieldTypes/string.js +2 -2
  122. package/dist/esm/fieldTypes/string.js.map +1 -1
  123. package/dist/esm/fieldTypes/structured_text.d.ts +15 -16
  124. package/dist/esm/fieldTypes/structured_text.js +12 -13
  125. package/dist/esm/fieldTypes/structured_text.js.map +1 -1
  126. package/dist/esm/fieldTypes/text.d.ts +1 -1
  127. package/dist/esm/fieldTypes/text.js +2 -3
  128. package/dist/esm/fieldTypes/text.js.map +1 -1
  129. package/dist/esm/fieldTypes/video.d.ts +1 -1
  130. package/dist/esm/fieldTypes/video.js +2 -2
  131. package/dist/esm/fieldTypes/video.js.map +1 -1
  132. package/dist/esm/generated/ApiTypes.d.ts +90 -980
  133. package/dist/esm/generated/Client.js +1 -1
  134. package/dist/esm/generated/RawApiTypes.d.ts +156 -999
  135. package/dist/esm/generated/resources/Field.d.ts +200 -200
  136. package/dist/esm/generated/resources/Item.d.ts +34 -34
  137. package/dist/esm/generated/resources/Item.js.map +1 -1
  138. package/dist/esm/generated/resources/ItemVersion.d.ts +3 -1
  139. package/dist/esm/generated/resources/ScheduledPublication.d.ts +3 -3
  140. package/dist/esm/generated/resources/ScheduledPublication.js.map +1 -1
  141. package/dist/esm/generated/resources/ScheduledUnpublishing.d.ts +3 -3
  142. package/dist/esm/generated/resources/ScheduledUnpublishing.js.map +1 -1
  143. package/dist/esm/generated/resources/Upload.d.ts +6 -6
  144. package/dist/esm/generated/resources/Upload.js.map +1 -1
  145. package/dist/esm/index.d.ts +5 -4
  146. package/dist/esm/index.js +5 -4
  147. package/dist/esm/index.js.map +1 -1
  148. package/dist/esm/utilities/buildBlockRecord.d.ts +3 -5
  149. package/dist/esm/utilities/buildBlockRecord.js +0 -43
  150. package/dist/esm/utilities/buildBlockRecord.js.map +1 -1
  151. package/dist/esm/utilities/duplicateBlockRecord.d.ts +6 -0
  152. package/dist/esm/utilities/duplicateBlockRecord.js +45 -0
  153. package/dist/esm/utilities/duplicateBlockRecord.js.map +1 -0
  154. package/dist/esm/utilities/inspectItem.d.ts +8 -0
  155. package/dist/esm/utilities/inspectItem.js +400 -0
  156. package/dist/esm/utilities/inspectItem.js.map +1 -0
  157. package/dist/esm/utilities/itemDefinition.d.ts +45 -23
  158. package/dist/esm/utilities/nonRecursiveBlocks.d.ts +114 -0
  159. package/dist/esm/utilities/{blocks.js → nonRecursiveBlocks.js} +52 -220
  160. package/dist/esm/utilities/nonRecursiveBlocks.js.map +1 -0
  161. package/dist/{types/utilities/fieldValue.d.ts → esm/utilities/normalizedFieldValues.d.ts} +15 -14
  162. package/dist/esm/utilities/{fieldValue.js → normalizedFieldValues.js} +39 -28
  163. package/dist/esm/utilities/normalizedFieldValues.js.map +1 -0
  164. package/dist/esm/utilities/recursiveBlocks.d.ts +124 -11
  165. package/dist/esm/utilities/recursiveBlocks.js +65 -84
  166. package/dist/esm/utilities/recursiveBlocks.js.map +1 -1
  167. package/dist/esm/utilities/schemaRepository.d.ts +2 -2
  168. package/dist/esm/utilities/schemaRepository.js +2 -2
  169. package/dist/types/fieldTypes/boolean.d.ts +1 -1
  170. package/dist/types/fieldTypes/color.d.ts +1 -1
  171. package/dist/types/fieldTypes/date.d.ts +1 -1
  172. package/dist/types/fieldTypes/date_time.d.ts +1 -1
  173. package/dist/types/fieldTypes/file.d.ts +68 -1
  174. package/dist/types/fieldTypes/float.d.ts +1 -1
  175. package/dist/types/fieldTypes/gallery.d.ts +27 -11
  176. package/dist/types/fieldTypes/index.d.ts +2 -2
  177. package/dist/types/fieldTypes/integer.d.ts +1 -1
  178. package/dist/types/fieldTypes/json.d.ts +1 -1
  179. package/dist/types/fieldTypes/lat_lon.d.ts +1 -1
  180. package/dist/types/fieldTypes/link.d.ts +1 -1
  181. package/dist/types/fieldTypes/links.d.ts +1 -1
  182. package/dist/types/fieldTypes/rich_text.d.ts +9 -10
  183. package/dist/types/fieldTypes/schema.d.ts +59 -0
  184. package/dist/types/fieldTypes/seo.d.ts +1 -1
  185. package/dist/types/fieldTypes/single_block.d.ts +31 -16
  186. package/dist/types/fieldTypes/slug.d.ts +1 -1
  187. package/dist/types/fieldTypes/string.d.ts +1 -1
  188. package/dist/types/fieldTypes/structured_text.d.ts +15 -16
  189. package/dist/types/fieldTypes/text.d.ts +1 -1
  190. package/dist/types/fieldTypes/video.d.ts +1 -1
  191. package/dist/types/generated/ApiTypes.d.ts +90 -980
  192. package/dist/types/generated/RawApiTypes.d.ts +156 -999
  193. package/dist/types/generated/resources/Field.d.ts +200 -200
  194. package/dist/types/generated/resources/Item.d.ts +34 -34
  195. package/dist/types/generated/resources/ItemVersion.d.ts +3 -1
  196. package/dist/types/generated/resources/ScheduledPublication.d.ts +3 -3
  197. package/dist/types/generated/resources/ScheduledUnpublishing.d.ts +3 -3
  198. package/dist/types/generated/resources/Upload.d.ts +6 -6
  199. package/dist/types/index.d.ts +5 -4
  200. package/dist/types/utilities/buildBlockRecord.d.ts +3 -5
  201. package/dist/types/utilities/duplicateBlockRecord.d.ts +6 -0
  202. package/dist/types/utilities/inspectItem.d.ts +8 -0
  203. package/dist/types/utilities/itemDefinition.d.ts +45 -23
  204. package/dist/types/utilities/nonRecursiveBlocks.d.ts +114 -0
  205. package/dist/{esm/utilities/fieldValue.d.ts → types/utilities/normalizedFieldValues.d.ts} +15 -14
  206. package/dist/types/utilities/recursiveBlocks.d.ts +124 -11
  207. package/dist/types/utilities/schemaRepository.d.ts +2 -2
  208. package/package.json +4 -4
  209. package/src/fieldTypes/boolean.ts +5 -3
  210. package/src/fieldTypes/color.ts +5 -3
  211. package/src/fieldTypes/date.ts +5 -4
  212. package/src/fieldTypes/date_time.ts +5 -3
  213. package/src/fieldTypes/file.ts +98 -4
  214. package/src/fieldTypes/float.ts +5 -3
  215. package/src/fieldTypes/gallery.ts +53 -20
  216. package/src/fieldTypes/index.ts +2 -3
  217. package/src/fieldTypes/integer.ts +5 -3
  218. package/src/fieldTypes/json.ts +5 -4
  219. package/src/fieldTypes/lat_lon.ts +5 -3
  220. package/src/fieldTypes/link.ts +7 -5
  221. package/src/fieldTypes/links.ts +8 -4
  222. package/src/fieldTypes/rich_text.ts +33 -31
  223. package/src/fieldTypes/schema.ts +657 -0
  224. package/src/fieldTypes/seo.ts +5 -4
  225. package/src/fieldTypes/single_block.ts +71 -46
  226. package/src/fieldTypes/slug.ts +5 -4
  227. package/src/fieldTypes/string.ts +5 -3
  228. package/src/fieldTypes/structured_text.ts +64 -58
  229. package/src/fieldTypes/text.ts +5 -4
  230. package/src/fieldTypes/video.ts +5 -3
  231. package/src/generated/ApiTypes.ts +217 -1880
  232. package/src/generated/Client.ts +1 -1
  233. package/src/generated/RawApiTypes.ts +272 -2113
  234. package/src/generated/resources/Item.ts +93 -187
  235. package/src/generated/resources/ScheduledPublication.ts +4 -15
  236. package/src/generated/resources/ScheduledUnpublishing.ts +4 -15
  237. package/src/generated/resources/Upload.ts +9 -32
  238. package/src/index.ts +5 -4
  239. package/src/utilities/buildBlockRecord.ts +4 -59
  240. package/src/utilities/duplicateBlockRecord.ts +52 -0
  241. package/src/utilities/inspectItem.ts +602 -0
  242. package/src/utilities/itemDefinition.ts +130 -92
  243. package/src/utilities/nonRecursiveBlocks.ts +406 -0
  244. package/src/utilities/{fieldValue.ts → normalizedFieldValues.ts} +70 -30
  245. package/src/utilities/recursiveBlocks.ts +484 -204
  246. package/src/utilities/schemaRepository.ts +2 -2
  247. package/dist/cjs/utilities/blocks.js.map +0 -1
  248. package/dist/cjs/utilities/fieldValue.js.map +0 -1
  249. package/dist/esm/utilities/blocks.d.ts +0 -180
  250. package/dist/esm/utilities/blocks.js.map +0 -1
  251. package/dist/esm/utilities/fieldValue.js.map +0 -1
  252. package/dist/types/utilities/blocks.d.ts +0 -180
  253. package/src/utilities/blocks.ts +0 -626
@@ -1,32 +1,36 @@
1
1
  import type {
2
+ BlockInNestedResponse,
3
+ BlockInRequest,
2
4
  BooleanFieldValue,
3
5
  ColorFieldValue,
4
6
  DateFieldValue,
5
7
  DateTimeFieldValue,
6
8
  FileFieldValue,
9
+ FileFieldValueInRequest,
7
10
  FloatFieldValue,
8
11
  GalleryFieldValue,
12
+ GalleryFieldValueInRequest,
9
13
  IntegerFieldValue,
10
14
  JsonFieldValue,
11
15
  LatLonFieldValue,
12
16
  LinkFieldValue,
13
17
  LinksFieldValue,
14
18
  RichTextFieldValue,
15
- RichTextFieldValueAsRequest,
16
- RichTextFieldValueWithNestedBlocks,
19
+ RichTextFieldValueInNestedResponse,
20
+ RichTextFieldValueInRequest,
17
21
  SeoFieldValue,
18
22
  SingleBlockFieldValue,
19
- SingleBlockFieldValueAsRequest,
20
- SingleBlockFieldValueWithNestedBlocks,
23
+ SingleBlockFieldValueInNestedResponse,
24
+ SingleBlockFieldValueInRequest,
21
25
  SlugFieldValue,
22
26
  StringFieldValue,
23
27
  StructuredTextFieldValue,
24
- StructuredTextFieldValueAsRequest,
25
- StructuredTextFieldValueWithNestedBlocks,
28
+ StructuredTextFieldValueInNestedResponse,
29
+ StructuredTextFieldValueInRequest,
26
30
  TextFieldValue,
27
31
  VideoFieldValue,
28
32
  } from '../fieldTypes';
29
- import type { LocalizedFieldValue } from './fieldValue';
33
+ import type { LocalizedFieldValue } from './normalizedFieldValues';
30
34
 
31
35
  /** Base field definition */
32
36
  type BaseFieldDefinition<Type extends string> = {
@@ -85,16 +89,7 @@ export type ItemTypeDefinition<
85
89
  fields: FieldDefinitions;
86
90
  };
87
91
 
88
- /** Item definition */
89
- export type ItemDefinition<
90
- ItemTypeId extends string = string,
91
- FieldValues extends Record<string, unknown> = Record<string, unknown>,
92
- > = {
93
- itemTypeId: ItemTypeId;
94
- fields: FieldValues;
95
- };
96
-
97
- /** Standard field values */
92
+ /** Standard field values (response format) */
98
93
  type FieldTypeToValue = {
99
94
  boolean: BooleanFieldValue;
100
95
  color: ColorFieldValue;
@@ -119,6 +114,31 @@ type FieldTypeToValue = {
119
114
  unknown: unknown;
120
115
  };
121
116
 
117
+ /** Request field values (request format with optional metadata) */
118
+ type FieldTypeToValueInRequest = {
119
+ boolean: BooleanFieldValue;
120
+ color: ColorFieldValue;
121
+ date: DateFieldValue;
122
+ date_time: DateTimeFieldValue;
123
+ file: FileFieldValueInRequest;
124
+ float: FloatFieldValue;
125
+ gallery: GalleryFieldValueInRequest;
126
+ integer: IntegerFieldValue;
127
+ json: JsonFieldValue;
128
+ lat_lon: LatLonFieldValue;
129
+ link: LinkFieldValue;
130
+ links: LinksFieldValue;
131
+ rich_text: RichTextFieldValueInRequest;
132
+ seo: SeoFieldValue;
133
+ single_block: SingleBlockFieldValueInRequest;
134
+ slug: SlugFieldValue;
135
+ string: StringFieldValue;
136
+ structured_text: StructuredTextFieldValueInRequest;
137
+ text: TextFieldValue;
138
+ video: VideoFieldValue;
139
+ unknown: unknown;
140
+ };
141
+
122
142
  /** Localized wrapper */
123
143
  type LocalizeIfNeeded<
124
144
  T extends FieldDefinition,
@@ -132,116 +152,134 @@ type FieldDefinitionToFieldValue<
132
152
  Locales extends string,
133
153
  > = LocalizeIfNeeded<T, FieldTypeToValue[T['type']], Locales>;
134
154
 
135
- /** AsRequest mapping (block fields become generic over allowed blocks) */
136
- type FieldDefinitionToFieldValueAsRequest<
155
+ /** InRequest mapping (block fields become generic over allowed blocks) */
156
+ type FieldDefinitionToFieldValueInRequest<
137
157
  T extends FieldDefinition,
138
158
  Locales extends string,
139
159
  > = T extends RichTextFieldDefinition<infer B>
140
- ? LocalizeIfNeeded<
141
- T,
142
- RichTextFieldValueAsRequest<ToItemDefinitionAsRequest<B>>,
143
- Locales
144
- >
160
+ ? LocalizeIfNeeded<T, RichTextFieldValueInRequest<B>, Locales>
145
161
  : T extends SingleBlockFieldDefinition<infer B>
146
- ? LocalizeIfNeeded<
147
- T,
148
- SingleBlockFieldValueAsRequest<ToItemDefinitionAsRequest<B>>,
149
- Locales
150
- >
162
+ ? LocalizeIfNeeded<T, SingleBlockFieldValueInRequest<B>, Locales>
151
163
  : T extends StructuredTextFieldDefinition<infer B, infer I>
152
164
  ? LocalizeIfNeeded<
153
165
  T,
154
- StructuredTextFieldValueAsRequest<
155
- T extends { blocks: any } ? ToItemDefinitionAsRequest<B> : never,
156
- T extends { inline_blocks: any }
157
- ? ToItemDefinitionAsRequest<I>
158
- : never
166
+ StructuredTextFieldValueInRequest<
167
+ T extends { blocks: any } ? B : never,
168
+ T extends { inline_blocks: any } ? I : never
159
169
  >,
160
170
  Locales
161
171
  >
162
- : LocalizeIfNeeded<T, FieldTypeToValue[T['type']], Locales>;
172
+ : LocalizeIfNeeded<T, FieldTypeToValueInRequest[T['type']], Locales>;
163
173
 
164
- type FieldDefinitionToFieldValueWithNestedBlocks<
174
+ type FieldDefinitionToFieldValueInNestedResponse<
165
175
  T extends FieldDefinition,
166
176
  Locales extends string,
167
177
  > = T extends RichTextFieldDefinition<infer B>
168
- ? LocalizeIfNeeded<
169
- T,
170
- RichTextFieldValueWithNestedBlocks<ToItemDefinitionWithNestedBlocks<B>>,
171
- Locales
172
- >
178
+ ? LocalizeIfNeeded<T, RichTextFieldValueInNestedResponse<B>, Locales>
173
179
  : T extends SingleBlockFieldDefinition<infer B>
174
- ? LocalizeIfNeeded<
175
- T,
176
- SingleBlockFieldValueWithNestedBlocks<
177
- ToItemDefinitionWithNestedBlocks<B>
178
- >,
179
- Locales
180
- >
180
+ ? LocalizeIfNeeded<T, SingleBlockFieldValueInNestedResponse<B>, Locales>
181
181
  : T extends StructuredTextFieldDefinition<infer B, infer I>
182
182
  ? LocalizeIfNeeded<
183
183
  T,
184
- StructuredTextFieldValueWithNestedBlocks<
185
- T extends { blocks: any }
186
- ? ToItemDefinitionWithNestedBlocks<B>
187
- : never,
188
- T extends { inline_blocks: any }
189
- ? ToItemDefinitionWithNestedBlocks<I>
190
- : never
184
+ StructuredTextFieldValueInNestedResponse<
185
+ T extends { blocks: any } ? B : never,
186
+ T extends { inline_blocks: any } ? I : never
191
187
  >,
192
188
  Locales
193
189
  >
194
190
  : LocalizeIfNeeded<T, FieldTypeToValue[T['type']], Locales>;
195
191
 
196
192
  /** Transformers */
197
- export type ToItemDefinition<T extends ItemTypeDefinition<any, any, any>> =
193
+ export type ToItemAttributes<T extends ItemTypeDefinition<any, any, any>> =
198
194
  T extends ItemTypeDefinition<infer Settings, infer ItemTypeId, infer Fields>
199
195
  ? keyof Fields extends never
200
- ? ItemDefinition<ItemTypeId>
201
- : ItemDefinition<
202
- ItemTypeId,
203
- {
204
- [K in keyof Fields]: Fields[K] extends FieldDefinition
205
- ? FieldDefinitionToFieldValue<Fields[K], Settings['locales']>
206
- : never;
207
- }
208
- >
196
+ ? Record<string, unknown>
197
+ : {
198
+ [K in keyof Fields]: Fields[K] extends FieldDefinition
199
+ ? FieldDefinitionToFieldValue<Fields[K], Settings['locales']>
200
+ : never;
201
+ }
209
202
  : never;
210
203
 
211
- export type ToItemDefinitionAsRequest<
204
+ export type ToItemAttributesInRequest<
212
205
  T extends ItemTypeDefinition<any, any, any>,
213
206
  > = T extends ItemTypeDefinition<infer Settings, infer ItemTypeId, infer Fields>
214
207
  ? keyof Fields extends never
215
- ? ItemDefinition<ItemTypeId>
216
- : ItemDefinition<
217
- ItemTypeId,
218
- Partial<{
219
- [K in keyof Fields]: Fields[K] extends FieldDefinition
220
- ? FieldDefinitionToFieldValueAsRequest<
221
- Fields[K],
222
- Settings['locales']
223
- >
224
- : never;
225
- }>
226
- >
208
+ ? Record<string, unknown>
209
+ : Partial<{
210
+ [K in keyof Fields]: Fields[K] extends FieldDefinition
211
+ ? FieldDefinitionToFieldValueInRequest<Fields[K], Settings['locales']>
212
+ : never;
213
+ }>
227
214
  : never;
228
215
 
229
- export type ToItemDefinitionWithNestedBlocks<
216
+ export type ToItemAttributesInNestedResponse<
230
217
  T extends ItemTypeDefinition<any, any, any>,
231
218
  > = T extends ItemTypeDefinition<infer Settings, infer ItemTypeId, infer Fields>
232
219
  ? keyof Fields extends never
233
- ? ItemDefinition<ItemTypeId>
234
- : ItemDefinition<
235
- ItemTypeId,
236
- {
237
- [K in keyof Fields]: Fields[K] extends FieldDefinition
238
- ? FieldDefinitionToFieldValueWithNestedBlocks<
239
- Fields[K],
240
- Settings['locales']
241
- >
242
- : never;
243
- }
244
- >
220
+ ? Record<string, unknown>
221
+ : {
222
+ [K in keyof Fields]: Fields[K] extends FieldDefinition
223
+ ? FieldDefinitionToFieldValueInNestedResponse<
224
+ Fields[K],
225
+ Settings['locales']
226
+ >
227
+ : never;
228
+ }
229
+ : never;
230
+
231
+ type NestedItemTypeDefinitions<
232
+ T extends ItemTypeDefinition<any, any, any>,
233
+ Seen extends string = never,
234
+ > = T extends ItemTypeDefinition<any, infer Id, infer Fields>
235
+ ? Id extends Seen
236
+ ? never // we already visited this item type -> stop recursing
237
+ : {
238
+ [K in keyof Fields]: Fields[K] extends RichTextFieldDefinition<infer B>
239
+ ? B | NestedItemTypeDefinitions<B, Seen | Id>
240
+ : Fields[K] extends SingleBlockFieldDefinition<infer B>
241
+ ? B | NestedItemTypeDefinitions<B, Seen | Id>
242
+ : Fields[K] extends StructuredTextFieldDefinition<infer B, infer I>
243
+ ?
244
+ | B
245
+ | I
246
+ | NestedItemTypeDefinitions<B, Seen | Id>
247
+ | NestedItemTypeDefinitions<I, Seen | Id>
248
+ : never;
249
+ }[keyof Fields]
245
250
  : never;
246
251
 
247
- export type UnknownField = Record<string, unknown>;
252
+ export type ExtractNestedBlocksFromFieldValue<T> =
253
+ T extends RichTextFieldValueInNestedResponse<infer D>
254
+ ?
255
+ | BlockInNestedResponse<D>
256
+ | BlockInNestedResponse<NestedItemTypeDefinitions<D>>
257
+ : T extends SingleBlockFieldValueInNestedResponse<infer D>
258
+ ?
259
+ | BlockInNestedResponse<D>
260
+ | BlockInNestedResponse<NestedItemTypeDefinitions<D>>
261
+ : T extends StructuredTextFieldValueInNestedResponse<infer DB, infer DI>
262
+ ?
263
+ | BlockInNestedResponse<DB>
264
+ | BlockInNestedResponse<NestedItemTypeDefinitions<DB>>
265
+ | BlockInNestedResponse<DI>
266
+ | BlockInNestedResponse<NestedItemTypeDefinitions<DI>>
267
+ : T extends StructuredTextFieldValueInNestedResponse<infer D>
268
+ ?
269
+ | BlockInNestedResponse<D>
270
+ | BlockInNestedResponse<NestedItemTypeDefinitions<D>>
271
+ : T extends RichTextFieldValueInRequest<infer D>
272
+ ? BlockInRequest<D> | BlockInRequest<NestedItemTypeDefinitions<D>>
273
+ : T extends SingleBlockFieldValueInRequest<infer D>
274
+ ? BlockInRequest<D> | BlockInRequest<NestedItemTypeDefinitions<D>>
275
+ : T extends StructuredTextFieldValueInRequest<infer DB, infer DI>
276
+ ?
277
+ | BlockInRequest<DB>
278
+ | BlockInRequest<NestedItemTypeDefinitions<DB>>
279
+ | BlockInRequest<DI>
280
+ | BlockInRequest<NestedItemTypeDefinitions<DI>>
281
+ : T extends StructuredTextFieldValueInRequest<infer D>
282
+ ?
283
+ | BlockInRequest<D>
284
+ | BlockInRequest<NestedItemTypeDefinitions<D>>
285
+ : never;