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