@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,11 +1,6 @@
1
1
  import * as Utils from '@datocms/rest-client-utils';
2
2
  import BaseResource from '../../BaseResource';
3
- import type {
4
- ItemTypeDefinition,
5
- ToItemDefinition,
6
- ToItemDefinitionAsRequest,
7
- ToItemDefinitionWithNestedBlocks,
8
- } from '../../utilities/itemDefinition';
3
+ import type { ItemTypeDefinition } from '../../utilities/itemDefinition';
9
4
  import type * as ApiTypes from '../ApiTypes';
10
5
  import type * as RawApiTypes from '../RawApiTypes';
11
6
 
@@ -267,19 +262,13 @@ export default class Upload extends BaseResource {
267
262
  references<D extends ItemTypeDefinition = ItemTypeDefinition>(
268
263
  uploadId: string | ApiTypes.UploadData,
269
264
  queryParams: ApiTypes.UploadReferencesHrefSchema & { nested: true },
270
- ): Promise<
271
- ApiTypes.UploadReferencesTargetSchema<
272
- ToItemDefinitionWithNestedBlocks<NoInfer<D>>
273
- >
274
- >;
265
+ ): Promise<ApiTypes.UploadReferencesTargetSchema<NoInfer<D>, true>>;
275
266
  references<D extends ItemTypeDefinition = ItemTypeDefinition>(
276
267
  uploadId: string | ApiTypes.UploadData,
277
268
  queryParams?: ApiTypes.UploadReferencesHrefSchema & {
278
269
  nested?: false | undefined;
279
270
  },
280
- ): Promise<
281
- ApiTypes.UploadReferencesTargetSchema<ToItemDefinition<NoInfer<D>>>
282
- >;
271
+ ): Promise<ApiTypes.UploadReferencesTargetSchema<NoInfer<D>, false>>;
283
272
  /**
284
273
  * Referenced records
285
274
  *
@@ -308,27 +297,17 @@ export default class Upload extends BaseResource {
308
297
  rawReferences<D extends ItemTypeDefinition = ItemTypeDefinition>(
309
298
  uploadId: string,
310
299
  queryParams: RawApiTypes.UploadReferencesHrefSchema & { nested: true },
311
- ): Promise<
312
- RawApiTypes.UploadReferencesTargetSchema<
313
- ToItemDefinitionWithNestedBlocks<NoInfer<D>>
314
- >
315
- >;
300
+ ): Promise<RawApiTypes.UploadReferencesTargetSchema<NoInfer<D>, true>>;
316
301
  rawReferences<D extends ItemTypeDefinition = ItemTypeDefinition>(
317
302
  uploadId: string,
318
303
  queryParams?: RawApiTypes.UploadReferencesHrefSchema & {
319
304
  nested?: false | undefined;
320
305
  },
321
- ): Promise<
322
- RawApiTypes.UploadReferencesTargetSchema<ToItemDefinition<NoInfer<D>>>
323
- >;
306
+ ): Promise<RawApiTypes.UploadReferencesTargetSchema<NoInfer<D>, false>>;
324
307
  rawReferences<D extends ItemTypeDefinition = ItemTypeDefinition>(
325
308
  uploadId: string,
326
309
  queryParams?: RawApiTypes.UploadReferencesHrefSchema,
327
- ): Promise<
328
- RawApiTypes.UploadReferencesTargetSchema<
329
- ToItemDefinitionWithNestedBlocks<NoInfer<D>>
330
- >
331
- >;
310
+ ): Promise<RawApiTypes.UploadReferencesTargetSchema<NoInfer<D>, true>>;
332
311
  /**
333
312
  * Referenced records
334
313
  *
@@ -347,11 +326,9 @@ export default class Upload extends BaseResource {
347
326
  url: `/uploads/${uploadId}/references`,
348
327
  queryParams,
349
328
  })
350
- .then<
351
- RawApiTypes.UploadReferencesTargetSchema<
352
- ToItemDefinitionWithNestedBlocks<NoInfer<D>>
353
- >
354
- >(Utils.deserializeRawResponseBodyWithItems);
329
+ .then<RawApiTypes.UploadReferencesTargetSchema<NoInfer<D>, true>>(
330
+ Utils.deserializeRawResponseBodyWithItems,
331
+ );
355
332
  }
356
333
 
357
334
  /**
package/src/index.ts CHANGED
@@ -1,17 +1,18 @@
1
1
  export { ApiError, LogLevel, TimeoutError } from '@datocms/rest-client-utils';
2
2
  export * from './buildClient';
3
+ export * from './fieldTypes';
3
4
  export { Client } from './generated/Client';
4
5
  export type { ClientConfigOptions } from './generated/Client';
5
6
  export * as Resources from './generated/resources';
6
- export * from './utilities/blocks';
7
7
  export * from './utilities/buildBlockRecord';
8
+ export * from './utilities/duplicateBlockRecord';
8
9
  export * from './utilities/fieldsContainingReferences';
9
- export * from './utilities/fieldValue';
10
10
  export * from './utilities/id';
11
+ export * from './utilities/inspectItem';
12
+ export * from './utilities/itemDefinition';
13
+ export * from './utilities/normalizedFieldValues';
11
14
  export * from './utilities/recursiveBlocks';
12
15
  export * from './utilities/schemaRepository';
13
- export * from './utilities/itemDefinition';
14
- export * from './fieldTypes';
15
16
  export type { ApiTypes, RawApiTypes };
16
17
  // Legacy names
17
18
  export type { ApiTypes as SchemaTypes, RawApiTypes as SimpleSchemaTypes };
@@ -1,74 +1,19 @@
1
1
  import * as Utils from '@datocms/rest-client-utils';
2
- import type {
3
- ItemWithOptionalIdAndMeta,
4
- NewBlockInARequest,
5
- } from '../fieldTypes';
2
+ import type { NewBlockInRequest } from '../fieldTypes';
6
3
  import type * as ApiTypes from '../generated/ApiTypes';
7
4
  import { Item } from '../generated/resources';
8
- import type {
9
- ItemTypeDefinition,
10
- ToItemDefinitionAsRequest,
11
- ToItemDefinitionWithNestedBlocks,
12
- } from './itemDefinition';
13
- import { mapBlocksInFieldValues } from './recursiveBlocks';
14
- import type { SchemaRepository } from './schemaRepository';
5
+ import type { ItemTypeDefinition } from './itemDefinition';
15
6
 
16
7
  type NoInfer<T> = [T][T extends any ? 0 : never];
17
8
 
18
9
  export function buildBlockRecord<
19
10
  D extends ItemTypeDefinition = ItemTypeDefinition,
20
- >(
21
- body: ApiTypes.ItemUpdateSchema<ToItemDefinitionAsRequest<NoInfer<D>>>,
22
- ): NewBlockInARequest<ToItemDefinitionAsRequest<NoInfer<D>>> {
11
+ >(body: ApiTypes.ItemUpdateSchema<NoInfer<D>>): NewBlockInRequest<NoInfer<D>> {
23
12
  return Utils.serializeRequestBody<{
24
- data: NewBlockInARequest<ToItemDefinitionAsRequest<NoInfer<D>>>;
13
+ data: NewBlockInRequest<NoInfer<D>>;
25
14
  }>(body, {
26
15
  type: Item.TYPE,
27
16
  attributes: '*',
28
17
  relationships: ['item_type'],
29
18
  }).data;
30
19
  }
31
-
32
- export async function duplicateBlockRecord<
33
- D extends ItemTypeDefinition = ItemTypeDefinition,
34
- >(
35
- existingBlock: ItemWithOptionalIdAndMeta<
36
- ToItemDefinitionWithNestedBlocks<NoInfer<D>>
37
- >,
38
- schemaRepository: SchemaRepository,
39
- ): Promise<NewBlockInARequest<ToItemDefinitionAsRequest<NoInfer<D>>>> {
40
- const { type, attributes, relationships } = existingBlock;
41
-
42
- const itemType = await schemaRepository.getRawItemTypeById(
43
- existingBlock.relationships.item_type.data.id,
44
- );
45
-
46
- const newBlock = {
47
- type,
48
- relationships,
49
- attributes,
50
- } as NewBlockInARequest;
51
-
52
- const fields = await schemaRepository.getRawItemTypeFields(itemType);
53
-
54
- for (const field of fields) {
55
- newBlock.attributes[field.attributes.api_key] = mapBlocksInFieldValues(
56
- schemaRepository,
57
- field,
58
- newBlock.attributes[field.attributes.api_key],
59
- (block, path) => {
60
- if (typeof block === 'string') {
61
- throw new Error(
62
- `Block cannot be duplicated as it contains nested block at ${path.join('.')} that is expressed as ID (${block}) instead of full object!`,
63
- );
64
- }
65
-
66
- const { id, meta, ...blockWithoutIdAndMeta } = block;
67
-
68
- return blockWithoutIdAndMeta;
69
- },
70
- );
71
- }
72
-
73
- return newBlock as NewBlockInARequest<ToItemDefinitionAsRequest<NoInfer<D>>>;
74
- }
@@ -0,0 +1,52 @@
1
+ import type {
2
+ ItemWithOptionalIdAndMeta,
3
+ NewBlockInRequest,
4
+ } from '../fieldTypes';
5
+ import type { ItemTypeDefinition } from './itemDefinition';
6
+ import { mapBlocksInNonLocalizedFieldValue } from './recursiveBlocks';
7
+ import type { SchemaRepository } from './schemaRepository';
8
+
9
+ type NoInfer<T> = [T][T extends any ? 0 : never];
10
+
11
+ export async function duplicateBlockRecord<
12
+ D extends ItemTypeDefinition = ItemTypeDefinition,
13
+ >(
14
+ existingBlock: ItemWithOptionalIdAndMeta<NoInfer<D>>,
15
+ schemaRepository: SchemaRepository,
16
+ ): Promise<NewBlockInRequest<NoInfer<D>>> {
17
+ const { type, attributes, relationships } = existingBlock;
18
+
19
+ const itemType = await schemaRepository.getRawItemTypeById(
20
+ existingBlock.relationships.item_type.data.id,
21
+ );
22
+
23
+ const newBlock = {
24
+ type,
25
+ relationships,
26
+ attributes,
27
+ } as NewBlockInRequest;
28
+
29
+ const fields = await schemaRepository.getRawItemTypeFields(itemType);
30
+
31
+ for (const field of fields) {
32
+ newBlock.attributes[field.attributes.api_key] =
33
+ await mapBlocksInNonLocalizedFieldValue(
34
+ newBlock.attributes[field.attributes.api_key],
35
+ field.attributes.field_type,
36
+ schemaRepository,
37
+ (block, path) => {
38
+ if (typeof block === 'string') {
39
+ throw new Error(
40
+ `Block cannot be duplicated as it contains nested block at ${path.join('.')} that is expressed as ID (${block}) instead of full object!`,
41
+ );
42
+ }
43
+
44
+ const { id, meta, ...blockWithoutIdAndMeta } = block;
45
+
46
+ return blockWithoutIdAndMeta as NewBlockInRequest;
47
+ },
48
+ );
49
+ }
50
+
51
+ return newBlock as NewBlockInRequest<NoInfer<D>>;
52
+ }