@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.
- package/README.md +569 -0
- package/dist/cjs/fieldTypes/boolean.js +2 -2
- package/dist/cjs/fieldTypes/boolean.js.map +1 -1
- package/dist/cjs/fieldTypes/color.js +2 -2
- package/dist/cjs/fieldTypes/color.js.map +1 -1
- package/dist/cjs/fieldTypes/date.js +2 -3
- package/dist/cjs/fieldTypes/date.js.map +1 -1
- package/dist/cjs/fieldTypes/date_time.js +2 -2
- package/dist/cjs/fieldTypes/date_time.js.map +1 -1
- package/dist/cjs/fieldTypes/file.js +33 -5
- package/dist/cjs/fieldTypes/file.js.map +1 -1
- package/dist/cjs/fieldTypes/float.js +2 -2
- package/dist/cjs/fieldTypes/float.js.map +1 -1
- package/dist/cjs/fieldTypes/gallery.js +20 -5
- package/dist/cjs/fieldTypes/gallery.js.map +1 -1
- package/dist/cjs/fieldTypes/index.js +2 -2
- package/dist/cjs/fieldTypes/index.js.map +1 -1
- package/dist/cjs/fieldTypes/integer.js +2 -2
- package/dist/cjs/fieldTypes/integer.js.map +1 -1
- package/dist/cjs/fieldTypes/json.js +2 -3
- package/dist/cjs/fieldTypes/json.js.map +1 -1
- package/dist/cjs/fieldTypes/lat_lon.js +2 -2
- package/dist/cjs/fieldTypes/lat_lon.js.map +1 -1
- package/dist/cjs/fieldTypes/link.js +4 -4
- package/dist/cjs/fieldTypes/link.js.map +1 -1
- package/dist/cjs/fieldTypes/links.js +5 -3
- package/dist/cjs/fieldTypes/links.js.map +1 -1
- package/dist/cjs/fieldTypes/rich_text.js +18 -18
- package/dist/cjs/fieldTypes/rich_text.js.map +1 -1
- package/dist/cjs/fieldTypes/schema.js +3 -0
- package/dist/cjs/fieldTypes/schema.js.map +1 -0
- package/dist/cjs/fieldTypes/seo.js +2 -3
- package/dist/cjs/fieldTypes/seo.js.map +1 -1
- package/dist/cjs/fieldTypes/single_block.js +20 -19
- package/dist/cjs/fieldTypes/single_block.js.map +1 -1
- package/dist/cjs/fieldTypes/slug.js +2 -3
- package/dist/cjs/fieldTypes/slug.js.map +1 -1
- package/dist/cjs/fieldTypes/string.js +2 -2
- package/dist/cjs/fieldTypes/string.js.map +1 -1
- package/dist/cjs/fieldTypes/structured_text.js +17 -18
- package/dist/cjs/fieldTypes/structured_text.js.map +1 -1
- package/dist/cjs/fieldTypes/text.js +2 -3
- package/dist/cjs/fieldTypes/text.js.map +1 -1
- package/dist/cjs/fieldTypes/video.js +2 -2
- package/dist/cjs/fieldTypes/video.js.map +1 -1
- package/dist/cjs/generated/Client.js +1 -1
- package/dist/cjs/generated/resources/Item.js.map +1 -1
- package/dist/cjs/generated/resources/ScheduledPublication.js.map +1 -1
- package/dist/cjs/generated/resources/ScheduledUnpublishing.js.map +1 -1
- package/dist/cjs/generated/resources/Upload.js.map +1 -1
- package/dist/cjs/index.js +5 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utilities/buildBlockRecord.js +1 -45
- package/dist/cjs/utilities/buildBlockRecord.js.map +1 -1
- package/dist/cjs/utilities/duplicateBlockRecord.js +49 -0
- package/dist/cjs/utilities/duplicateBlockRecord.js.map +1 -0
- package/dist/cjs/utilities/inspectItem.js +427 -0
- package/dist/cjs/utilities/inspectItem.js.map +1 -0
- package/dist/cjs/utilities/{blocks.js → nonRecursiveBlocks.js} +60 -234
- package/dist/cjs/utilities/nonRecursiveBlocks.js.map +1 -0
- package/dist/cjs/utilities/{fieldValue.js → normalizedFieldValues.js} +53 -41
- package/dist/cjs/utilities/normalizedFieldValues.js.map +1 -0
- package/dist/cjs/utilities/recursiveBlocks.js +73 -92
- package/dist/cjs/utilities/recursiveBlocks.js.map +1 -1
- package/dist/cjs/utilities/schemaRepository.js +2 -2
- package/dist/esm/fieldTypes/boolean.d.ts +1 -1
- package/dist/esm/fieldTypes/boolean.js +2 -2
- package/dist/esm/fieldTypes/boolean.js.map +1 -1
- package/dist/esm/fieldTypes/color.d.ts +1 -1
- package/dist/esm/fieldTypes/color.js +2 -2
- package/dist/esm/fieldTypes/color.js.map +1 -1
- package/dist/esm/fieldTypes/date.d.ts +1 -1
- package/dist/esm/fieldTypes/date.js +2 -3
- package/dist/esm/fieldTypes/date.js.map +1 -1
- package/dist/esm/fieldTypes/date_time.d.ts +1 -1
- package/dist/esm/fieldTypes/date_time.js +2 -2
- package/dist/esm/fieldTypes/date_time.js.map +1 -1
- package/dist/esm/fieldTypes/file.d.ts +68 -1
- package/dist/esm/fieldTypes/file.js +29 -3
- package/dist/esm/fieldTypes/file.js.map +1 -1
- package/dist/esm/fieldTypes/float.d.ts +1 -1
- package/dist/esm/fieldTypes/float.js +2 -2
- package/dist/esm/fieldTypes/float.js.map +1 -1
- package/dist/esm/fieldTypes/gallery.d.ts +27 -11
- package/dist/esm/fieldTypes/gallery.js +17 -4
- package/dist/esm/fieldTypes/gallery.js.map +1 -1
- package/dist/esm/fieldTypes/index.d.ts +2 -2
- package/dist/esm/fieldTypes/index.js +2 -2
- package/dist/esm/fieldTypes/index.js.map +1 -1
- package/dist/esm/fieldTypes/integer.d.ts +1 -1
- package/dist/esm/fieldTypes/integer.js +2 -2
- package/dist/esm/fieldTypes/integer.js.map +1 -1
- package/dist/esm/fieldTypes/json.d.ts +1 -1
- package/dist/esm/fieldTypes/json.js +2 -3
- package/dist/esm/fieldTypes/json.js.map +1 -1
- package/dist/esm/fieldTypes/lat_lon.d.ts +1 -1
- package/dist/esm/fieldTypes/lat_lon.js +2 -2
- package/dist/esm/fieldTypes/lat_lon.js.map +1 -1
- package/dist/esm/fieldTypes/link.d.ts +1 -1
- package/dist/esm/fieldTypes/link.js +4 -4
- package/dist/esm/fieldTypes/link.js.map +1 -1
- package/dist/esm/fieldTypes/links.d.ts +1 -1
- package/dist/esm/fieldTypes/links.js +5 -3
- package/dist/esm/fieldTypes/links.js.map +1 -1
- package/dist/esm/fieldTypes/rich_text.d.ts +9 -10
- package/dist/esm/fieldTypes/rich_text.js +13 -13
- package/dist/esm/fieldTypes/rich_text.js.map +1 -1
- package/dist/esm/fieldTypes/schema.d.ts +59 -0
- package/dist/esm/fieldTypes/schema.js +2 -0
- package/dist/esm/fieldTypes/schema.js.map +1 -0
- package/dist/esm/fieldTypes/seo.d.ts +1 -1
- package/dist/esm/fieldTypes/seo.js +2 -3
- package/dist/esm/fieldTypes/seo.js.map +1 -1
- package/dist/esm/fieldTypes/single_block.d.ts +31 -16
- package/dist/esm/fieldTypes/single_block.js +15 -14
- package/dist/esm/fieldTypes/single_block.js.map +1 -1
- package/dist/esm/fieldTypes/slug.d.ts +1 -1
- package/dist/esm/fieldTypes/slug.js +2 -3
- package/dist/esm/fieldTypes/slug.js.map +1 -1
- package/dist/esm/fieldTypes/string.d.ts +1 -1
- package/dist/esm/fieldTypes/string.js +2 -2
- package/dist/esm/fieldTypes/string.js.map +1 -1
- package/dist/esm/fieldTypes/structured_text.d.ts +15 -16
- package/dist/esm/fieldTypes/structured_text.js +12 -13
- package/dist/esm/fieldTypes/structured_text.js.map +1 -1
- package/dist/esm/fieldTypes/text.d.ts +1 -1
- package/dist/esm/fieldTypes/text.js +2 -3
- package/dist/esm/fieldTypes/text.js.map +1 -1
- package/dist/esm/fieldTypes/video.d.ts +1 -1
- package/dist/esm/fieldTypes/video.js +2 -2
- package/dist/esm/fieldTypes/video.js.map +1 -1
- package/dist/esm/generated/ApiTypes.d.ts +90 -980
- package/dist/esm/generated/Client.js +1 -1
- package/dist/esm/generated/RawApiTypes.d.ts +156 -999
- package/dist/esm/generated/resources/Field.d.ts +200 -200
- package/dist/esm/generated/resources/Item.d.ts +34 -34
- package/dist/esm/generated/resources/Item.js.map +1 -1
- package/dist/esm/generated/resources/ItemVersion.d.ts +3 -1
- package/dist/esm/generated/resources/ScheduledPublication.d.ts +3 -3
- package/dist/esm/generated/resources/ScheduledPublication.js.map +1 -1
- package/dist/esm/generated/resources/ScheduledUnpublishing.d.ts +3 -3
- package/dist/esm/generated/resources/ScheduledUnpublishing.js.map +1 -1
- package/dist/esm/generated/resources/Upload.d.ts +6 -6
- package/dist/esm/generated/resources/Upload.js.map +1 -1
- package/dist/esm/index.d.ts +5 -4
- package/dist/esm/index.js +5 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utilities/buildBlockRecord.d.ts +3 -5
- package/dist/esm/utilities/buildBlockRecord.js +0 -43
- package/dist/esm/utilities/buildBlockRecord.js.map +1 -1
- package/dist/esm/utilities/duplicateBlockRecord.d.ts +6 -0
- package/dist/esm/utilities/duplicateBlockRecord.js +45 -0
- package/dist/esm/utilities/duplicateBlockRecord.js.map +1 -0
- package/dist/esm/utilities/inspectItem.d.ts +8 -0
- package/dist/esm/utilities/inspectItem.js +400 -0
- package/dist/esm/utilities/inspectItem.js.map +1 -0
- package/dist/esm/utilities/itemDefinition.d.ts +45 -23
- package/dist/esm/utilities/nonRecursiveBlocks.d.ts +114 -0
- package/dist/esm/utilities/{blocks.js → nonRecursiveBlocks.js} +52 -220
- package/dist/esm/utilities/nonRecursiveBlocks.js.map +1 -0
- package/dist/{types/utilities/fieldValue.d.ts → esm/utilities/normalizedFieldValues.d.ts} +15 -14
- package/dist/esm/utilities/{fieldValue.js → normalizedFieldValues.js} +39 -28
- package/dist/esm/utilities/normalizedFieldValues.js.map +1 -0
- package/dist/esm/utilities/recursiveBlocks.d.ts +124 -11
- package/dist/esm/utilities/recursiveBlocks.js +65 -84
- package/dist/esm/utilities/recursiveBlocks.js.map +1 -1
- package/dist/esm/utilities/schemaRepository.d.ts +2 -2
- package/dist/esm/utilities/schemaRepository.js +2 -2
- package/dist/types/fieldTypes/boolean.d.ts +1 -1
- package/dist/types/fieldTypes/color.d.ts +1 -1
- package/dist/types/fieldTypes/date.d.ts +1 -1
- package/dist/types/fieldTypes/date_time.d.ts +1 -1
- package/dist/types/fieldTypes/file.d.ts +68 -1
- package/dist/types/fieldTypes/float.d.ts +1 -1
- package/dist/types/fieldTypes/gallery.d.ts +27 -11
- package/dist/types/fieldTypes/index.d.ts +2 -2
- package/dist/types/fieldTypes/integer.d.ts +1 -1
- package/dist/types/fieldTypes/json.d.ts +1 -1
- package/dist/types/fieldTypes/lat_lon.d.ts +1 -1
- package/dist/types/fieldTypes/link.d.ts +1 -1
- package/dist/types/fieldTypes/links.d.ts +1 -1
- package/dist/types/fieldTypes/rich_text.d.ts +9 -10
- package/dist/types/fieldTypes/schema.d.ts +59 -0
- package/dist/types/fieldTypes/seo.d.ts +1 -1
- package/dist/types/fieldTypes/single_block.d.ts +31 -16
- package/dist/types/fieldTypes/slug.d.ts +1 -1
- package/dist/types/fieldTypes/string.d.ts +1 -1
- package/dist/types/fieldTypes/structured_text.d.ts +15 -16
- package/dist/types/fieldTypes/text.d.ts +1 -1
- package/dist/types/fieldTypes/video.d.ts +1 -1
- package/dist/types/generated/ApiTypes.d.ts +90 -980
- package/dist/types/generated/RawApiTypes.d.ts +156 -999
- package/dist/types/generated/resources/Field.d.ts +200 -200
- package/dist/types/generated/resources/Item.d.ts +34 -34
- package/dist/types/generated/resources/ItemVersion.d.ts +3 -1
- package/dist/types/generated/resources/ScheduledPublication.d.ts +3 -3
- package/dist/types/generated/resources/ScheduledUnpublishing.d.ts +3 -3
- package/dist/types/generated/resources/Upload.d.ts +6 -6
- package/dist/types/index.d.ts +5 -4
- package/dist/types/utilities/buildBlockRecord.d.ts +3 -5
- package/dist/types/utilities/duplicateBlockRecord.d.ts +6 -0
- package/dist/types/utilities/inspectItem.d.ts +8 -0
- package/dist/types/utilities/itemDefinition.d.ts +45 -23
- package/dist/types/utilities/nonRecursiveBlocks.d.ts +114 -0
- package/dist/{esm/utilities/fieldValue.d.ts → types/utilities/normalizedFieldValues.d.ts} +15 -14
- package/dist/types/utilities/recursiveBlocks.d.ts +124 -11
- package/dist/types/utilities/schemaRepository.d.ts +2 -2
- package/package.json +4 -4
- package/src/fieldTypes/boolean.ts +5 -3
- package/src/fieldTypes/color.ts +5 -3
- package/src/fieldTypes/date.ts +5 -4
- package/src/fieldTypes/date_time.ts +5 -3
- package/src/fieldTypes/file.ts +98 -4
- package/src/fieldTypes/float.ts +5 -3
- package/src/fieldTypes/gallery.ts +53 -20
- package/src/fieldTypes/index.ts +2 -3
- package/src/fieldTypes/integer.ts +5 -3
- package/src/fieldTypes/json.ts +5 -4
- package/src/fieldTypes/lat_lon.ts +5 -3
- package/src/fieldTypes/link.ts +7 -5
- package/src/fieldTypes/links.ts +8 -4
- package/src/fieldTypes/rich_text.ts +33 -31
- package/src/fieldTypes/schema.ts +657 -0
- package/src/fieldTypes/seo.ts +5 -4
- package/src/fieldTypes/single_block.ts +71 -46
- package/src/fieldTypes/slug.ts +5 -4
- package/src/fieldTypes/string.ts +5 -3
- package/src/fieldTypes/structured_text.ts +64 -58
- package/src/fieldTypes/text.ts +5 -4
- package/src/fieldTypes/video.ts +5 -3
- package/src/generated/ApiTypes.ts +217 -1880
- package/src/generated/Client.ts +1 -1
- package/src/generated/RawApiTypes.ts +272 -2113
- package/src/generated/resources/Item.ts +93 -187
- package/src/generated/resources/ScheduledPublication.ts +4 -15
- package/src/generated/resources/ScheduledUnpublishing.ts +4 -15
- package/src/generated/resources/Upload.ts +9 -32
- package/src/index.ts +5 -4
- package/src/utilities/buildBlockRecord.ts +4 -59
- package/src/utilities/duplicateBlockRecord.ts +52 -0
- package/src/utilities/inspectItem.ts +602 -0
- package/src/utilities/itemDefinition.ts +130 -92
- package/src/utilities/nonRecursiveBlocks.ts +406 -0
- package/src/utilities/{fieldValue.ts → normalizedFieldValues.ts} +70 -30
- package/src/utilities/recursiveBlocks.ts +484 -204
- package/src/utilities/schemaRepository.ts +2 -2
- package/dist/cjs/utilities/blocks.js.map +0 -1
- package/dist/cjs/utilities/fieldValue.js.map +0 -1
- package/dist/esm/utilities/blocks.d.ts +0 -180
- package/dist/esm/utilities/blocks.js.map +0 -1
- package/dist/esm/utilities/fieldValue.js.map +0 -1
- package/dist/types/utilities/blocks.d.ts +0 -180
- 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
|
-
|
|
352
|
-
|
|
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:
|
|
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
|
+
}
|