@datocms/cma-client 5.1.3 → 5.1.4
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/dist/cjs/fieldTypes/lat_lon.js +6 -6
- package/dist/cjs/fieldTypes/lat_lon.js.map +1 -1
- package/dist/cjs/fieldTypes/rich_text.js.map +1 -1
- package/dist/cjs/fieldTypes/single_block.js.map +1 -1
- package/dist/cjs/fieldTypes/structured_text.js.map +1 -1
- package/dist/cjs/generated/Client.js +1 -1
- package/dist/cjs/generated/resources/Item.js +41 -23
- package/dist/cjs/generated/resources/Item.js.map +1 -1
- package/dist/cjs/generated/resources/ScheduledPublication.js +4 -2
- package/dist/cjs/generated/resources/ScheduledPublication.js.map +1 -1
- package/dist/cjs/generated/resources/ScheduledUnpublishing.js +4 -2
- package/dist/cjs/generated/resources/ScheduledUnpublishing.js.map +1 -1
- package/dist/cjs/generated/resources/Upload.js +4 -2
- package/dist/cjs/generated/resources/Upload.js.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utilities/buildBlockRecord.js.map +1 -1
- package/dist/cjs/utilities/itemDefinition.js +3 -0
- package/dist/cjs/utilities/itemDefinition.js.map +1 -0
- package/dist/esm/fieldTypes/lat_lon.d.ts +5 -5
- package/dist/esm/fieldTypes/lat_lon.js +3 -3
- package/dist/esm/fieldTypes/lat_lon.js.map +1 -1
- package/dist/esm/fieldTypes/rich_text.d.ts +8 -7
- package/dist/esm/fieldTypes/rich_text.js.map +1 -1
- package/dist/esm/fieldTypes/single_block.d.ts +15 -14
- package/dist/esm/fieldTypes/single_block.js.map +1 -1
- package/dist/esm/fieldTypes/structured_text.d.ts +13 -12
- package/dist/esm/fieldTypes/structured_text.js.map +1 -1
- package/dist/esm/generated/ApiTypes.d.ts +67 -62
- package/dist/esm/generated/Client.js +1 -1
- package/dist/esm/generated/RawApiTypes.d.ts +116 -121
- package/dist/esm/generated/resources/Field.d.ts +230 -230
- package/dist/esm/generated/resources/Item.d.ts +42 -24
- package/dist/esm/generated/resources/Item.js +41 -23
- package/dist/esm/generated/resources/Item.js.map +1 -1
- package/dist/esm/generated/resources/ItemVersion.d.ts +1 -1
- package/dist/esm/generated/resources/ScheduledPublication.d.ts +5 -2
- package/dist/esm/generated/resources/ScheduledPublication.js +4 -2
- package/dist/esm/generated/resources/ScheduledPublication.js.map +1 -1
- package/dist/esm/generated/resources/ScheduledUnpublishing.d.ts +5 -2
- package/dist/esm/generated/resources/ScheduledUnpublishing.js +4 -2
- package/dist/esm/generated/resources/ScheduledUnpublishing.js.map +1 -1
- package/dist/esm/generated/resources/Upload.d.ts +10 -2
- package/dist/esm/generated/resources/Upload.js +4 -2
- package/dist/esm/generated/resources/Upload.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utilities/buildBlockRecord.d.ts +5 -31
- package/dist/esm/utilities/buildBlockRecord.js.map +1 -1
- package/dist/esm/utilities/itemDefinition.d.ts +74 -0
- package/dist/esm/utilities/itemDefinition.js +2 -0
- package/dist/esm/utilities/itemDefinition.js.map +1 -0
- package/dist/types/fieldTypes/lat_lon.d.ts +5 -5
- package/dist/types/fieldTypes/rich_text.d.ts +8 -7
- package/dist/types/fieldTypes/single_block.d.ts +15 -14
- package/dist/types/fieldTypes/structured_text.d.ts +13 -12
- package/dist/types/generated/ApiTypes.d.ts +67 -62
- package/dist/types/generated/RawApiTypes.d.ts +116 -121
- package/dist/types/generated/resources/Field.d.ts +230 -230
- package/dist/types/generated/resources/Item.d.ts +42 -24
- package/dist/types/generated/resources/ItemVersion.d.ts +1 -1
- package/dist/types/generated/resources/ScheduledPublication.d.ts +5 -2
- package/dist/types/generated/resources/ScheduledUnpublishing.d.ts +5 -2
- package/dist/types/generated/resources/Upload.d.ts +10 -2
- package/dist/types/index.d.ts +1 -0
- package/dist/types/utilities/buildBlockRecord.d.ts +5 -31
- package/dist/types/utilities/itemDefinition.d.ts +74 -0
- package/package.json +5 -5
- package/resources.json +564 -0
- package/src/fieldTypes/lat_lon.ts +7 -9
- package/src/fieldTypes/rich_text.ts +22 -13
- package/src/fieldTypes/single_block.ts +42 -32
- package/src/fieldTypes/structured_text.ts +60 -23
- package/src/generated/ApiTypes.ts +110 -70
- package/src/generated/Client.ts +1 -1
- package/src/generated/RawApiTypes.ts +160 -138
- package/src/generated/resources/Item.ts +360 -108
- package/src/generated/resources/ScheduledPublication.ts +31 -11
- package/src/generated/resources/ScheduledUnpublishing.ts +31 -11
- package/src/generated/resources/Upload.ts +54 -12
- package/src/index.ts +1 -0
- package/src/utilities/buildBlockRecord.ts +19 -3
- package/src/utilities/itemDefinition.ts +229 -0
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import * as Utils from '@datocms/rest-client-utils';
|
|
2
2
|
import BaseResource from '../../BaseResource';
|
|
3
|
+
import type {
|
|
4
|
+
ItemTypeDefinition,
|
|
5
|
+
ItemTypeDefinitionToItemDefinition,
|
|
6
|
+
ItemTypeDefinitionToItemDefinitionAsRequest,
|
|
7
|
+
ItemTypeDefinitionToItemDefinitionWithNestedBlocks,
|
|
8
|
+
} from '../../utilities/itemDefinition';
|
|
3
9
|
import type * as ApiTypes from '../ApiTypes';
|
|
4
10
|
import type * as RawApiTypes from '../RawApiTypes';
|
|
5
11
|
|
|
12
|
+
type NoInfer<T> = [T][T extends any ? 0 : never];
|
|
13
|
+
|
|
6
14
|
export default class ScheduledPublication extends BaseResource {
|
|
7
15
|
static readonly TYPE = 'scheduled_publication' as const;
|
|
8
16
|
|
|
@@ -64,11 +72,15 @@ export default class ScheduledPublication extends BaseResource {
|
|
|
64
72
|
* @throws {ApiError}
|
|
65
73
|
* @throws {TimeoutError}
|
|
66
74
|
*/
|
|
67
|
-
destroy
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
75
|
+
destroy<D extends ItemTypeDefinition = ItemTypeDefinition>(
|
|
76
|
+
itemId: string | ApiTypes.ItemData,
|
|
77
|
+
) {
|
|
78
|
+
return this.rawDestroy<D>(Utils.toId(itemId)).then((body) =>
|
|
79
|
+
Utils.deserializeResponseBody<
|
|
80
|
+
ApiTypes.ScheduledPublicationDestroyTargetSchema<
|
|
81
|
+
ItemTypeDefinitionToItemDefinition<NoInfer<D>>
|
|
82
|
+
>
|
|
83
|
+
>(body),
|
|
72
84
|
);
|
|
73
85
|
}
|
|
74
86
|
|
|
@@ -80,14 +92,22 @@ export default class ScheduledPublication extends BaseResource {
|
|
|
80
92
|
* @throws {ApiError}
|
|
81
93
|
* @throws {TimeoutError}
|
|
82
94
|
*/
|
|
83
|
-
rawDestroy(
|
|
95
|
+
rawDestroy<D extends ItemTypeDefinition = ItemTypeDefinition>(
|
|
84
96
|
itemId: string,
|
|
85
|
-
): Promise<
|
|
86
|
-
|
|
87
|
-
|
|
97
|
+
): Promise<
|
|
98
|
+
RawApiTypes.ScheduledPublicationDestroyTargetSchema<
|
|
99
|
+
ItemTypeDefinitionToItemDefinitionWithNestedBlocks<NoInfer<D>>
|
|
100
|
+
>
|
|
101
|
+
> {
|
|
102
|
+
return this.client
|
|
103
|
+
.request({
|
|
88
104
|
method: 'DELETE',
|
|
89
105
|
url: `/items/${itemId}/scheduled-publication`,
|
|
90
|
-
}
|
|
91
|
-
|
|
106
|
+
})
|
|
107
|
+
.then<
|
|
108
|
+
RawApiTypes.ScheduledPublicationDestroyTargetSchema<
|
|
109
|
+
ItemTypeDefinitionToItemDefinitionWithNestedBlocks<NoInfer<D>>
|
|
110
|
+
>
|
|
111
|
+
>(Utils.deserializeRawResponseBodyWithItems);
|
|
92
112
|
}
|
|
93
113
|
}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import * as Utils from '@datocms/rest-client-utils';
|
|
2
2
|
import BaseResource from '../../BaseResource';
|
|
3
|
+
import type {
|
|
4
|
+
ItemTypeDefinition,
|
|
5
|
+
ItemTypeDefinitionToItemDefinition,
|
|
6
|
+
ItemTypeDefinitionToItemDefinitionAsRequest,
|
|
7
|
+
ItemTypeDefinitionToItemDefinitionWithNestedBlocks,
|
|
8
|
+
} from '../../utilities/itemDefinition';
|
|
3
9
|
import type * as ApiTypes from '../ApiTypes';
|
|
4
10
|
import type * as RawApiTypes from '../RawApiTypes';
|
|
5
11
|
|
|
12
|
+
type NoInfer<T> = [T][T extends any ? 0 : never];
|
|
13
|
+
|
|
6
14
|
export default class ScheduledUnpublishing extends BaseResource {
|
|
7
15
|
static readonly TYPE = 'scheduled_unpublishing' as const;
|
|
8
16
|
|
|
@@ -64,11 +72,15 @@ export default class ScheduledUnpublishing extends BaseResource {
|
|
|
64
72
|
* @throws {ApiError}
|
|
65
73
|
* @throws {TimeoutError}
|
|
66
74
|
*/
|
|
67
|
-
destroy
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
75
|
+
destroy<D extends ItemTypeDefinition = ItemTypeDefinition>(
|
|
76
|
+
itemId: string | ApiTypes.ItemData,
|
|
77
|
+
) {
|
|
78
|
+
return this.rawDestroy<D>(Utils.toId(itemId)).then((body) =>
|
|
79
|
+
Utils.deserializeResponseBody<
|
|
80
|
+
ApiTypes.ScheduledUnpublishingDestroyTargetSchema<
|
|
81
|
+
ItemTypeDefinitionToItemDefinition<NoInfer<D>>
|
|
82
|
+
>
|
|
83
|
+
>(body),
|
|
72
84
|
);
|
|
73
85
|
}
|
|
74
86
|
|
|
@@ -80,14 +92,22 @@ export default class ScheduledUnpublishing extends BaseResource {
|
|
|
80
92
|
* @throws {ApiError}
|
|
81
93
|
* @throws {TimeoutError}
|
|
82
94
|
*/
|
|
83
|
-
rawDestroy(
|
|
95
|
+
rawDestroy<D extends ItemTypeDefinition = ItemTypeDefinition>(
|
|
84
96
|
itemId: string,
|
|
85
|
-
): Promise<
|
|
86
|
-
|
|
87
|
-
|
|
97
|
+
): Promise<
|
|
98
|
+
RawApiTypes.ScheduledUnpublishingDestroyTargetSchema<
|
|
99
|
+
ItemTypeDefinitionToItemDefinitionWithNestedBlocks<NoInfer<D>>
|
|
100
|
+
>
|
|
101
|
+
> {
|
|
102
|
+
return this.client
|
|
103
|
+
.request({
|
|
88
104
|
method: 'DELETE',
|
|
89
105
|
url: `/items/${itemId}/scheduled-unpublishing`,
|
|
90
|
-
}
|
|
91
|
-
|
|
106
|
+
})
|
|
107
|
+
.then<
|
|
108
|
+
RawApiTypes.ScheduledUnpublishingDestroyTargetSchema<
|
|
109
|
+
ItemTypeDefinitionToItemDefinitionWithNestedBlocks<NoInfer<D>>
|
|
110
|
+
>
|
|
111
|
+
>(Utils.deserializeRawResponseBodyWithItems);
|
|
92
112
|
}
|
|
93
113
|
}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import * as Utils from '@datocms/rest-client-utils';
|
|
2
2
|
import BaseResource from '../../BaseResource';
|
|
3
|
+
import type {
|
|
4
|
+
ItemTypeDefinition,
|
|
5
|
+
ItemTypeDefinitionToItemDefinition,
|
|
6
|
+
ItemTypeDefinitionToItemDefinitionAsRequest,
|
|
7
|
+
ItemTypeDefinitionToItemDefinitionWithNestedBlocks,
|
|
8
|
+
} from '../../utilities/itemDefinition';
|
|
3
9
|
import type * as ApiTypes from '../ApiTypes';
|
|
4
10
|
import type * as RawApiTypes from '../RawApiTypes';
|
|
5
11
|
|
|
12
|
+
type NoInfer<T> = [T][T extends any ? 0 : never];
|
|
13
|
+
|
|
6
14
|
export default class Upload extends BaseResource {
|
|
7
15
|
static readonly TYPE = 'upload' as const;
|
|
8
16
|
|
|
@@ -256,14 +264,38 @@ export default class Upload extends BaseResource {
|
|
|
256
264
|
* @throws {ApiError}
|
|
257
265
|
* @throws {TimeoutError}
|
|
258
266
|
*/
|
|
259
|
-
references(
|
|
267
|
+
references<D extends ItemTypeDefinition = ItemTypeDefinition>(
|
|
268
|
+
uploadId: string | ApiTypes.UploadData,
|
|
269
|
+
queryParams: ApiTypes.UploadReferencesHrefSchema & { nested: true },
|
|
270
|
+
): Promise<
|
|
271
|
+
ApiTypes.UploadReferencesTargetSchema<
|
|
272
|
+
ItemTypeDefinitionToItemDefinitionWithNestedBlocks<NoInfer<D>>
|
|
273
|
+
>
|
|
274
|
+
>;
|
|
275
|
+
references<D extends ItemTypeDefinition = ItemTypeDefinition>(
|
|
276
|
+
uploadId: string | ApiTypes.UploadData,
|
|
277
|
+
queryParams?: ApiTypes.UploadReferencesHrefSchema & {
|
|
278
|
+
nested?: false | undefined;
|
|
279
|
+
},
|
|
280
|
+
): Promise<
|
|
281
|
+
ApiTypes.UploadReferencesTargetSchema<
|
|
282
|
+
ItemTypeDefinitionToItemDefinition<NoInfer<D>>
|
|
283
|
+
>
|
|
284
|
+
>;
|
|
285
|
+
/**
|
|
286
|
+
* Referenced records
|
|
287
|
+
*
|
|
288
|
+
* Read more: https://www.datocms.com/docs/content-management-api/resources/upload/references
|
|
289
|
+
*
|
|
290
|
+
* @throws {ApiError}
|
|
291
|
+
* @throws {TimeoutError}
|
|
292
|
+
*/
|
|
293
|
+
references<D extends ItemTypeDefinition = ItemTypeDefinition>(
|
|
260
294
|
uploadId: string | ApiTypes.UploadData,
|
|
261
295
|
queryParams?: ApiTypes.UploadReferencesHrefSchema,
|
|
262
296
|
) {
|
|
263
|
-
return this.rawReferences(Utils.toId(uploadId), queryParams).then(
|
|
264
|
-
Utils.deserializeResponseBody
|
|
265
|
-
body,
|
|
266
|
-
),
|
|
297
|
+
return this.rawReferences<D>(Utils.toId(uploadId), queryParams).then(
|
|
298
|
+
(body) => Utils.deserializeResponseBody(body),
|
|
267
299
|
);
|
|
268
300
|
}
|
|
269
301
|
|
|
@@ -275,15 +307,25 @@ export default class Upload extends BaseResource {
|
|
|
275
307
|
* @throws {ApiError}
|
|
276
308
|
* @throws {TimeoutError}
|
|
277
309
|
*/
|
|
278
|
-
rawReferences(
|
|
310
|
+
rawReferences<D extends ItemTypeDefinition = ItemTypeDefinition>(
|
|
279
311
|
uploadId: string,
|
|
280
312
|
queryParams?: RawApiTypes.UploadReferencesHrefSchema,
|
|
281
|
-
): Promise<
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
313
|
+
): Promise<
|
|
314
|
+
RawApiTypes.UploadReferencesTargetSchema<
|
|
315
|
+
ItemTypeDefinitionToItemDefinitionWithNestedBlocks<NoInfer<D>>
|
|
316
|
+
>
|
|
317
|
+
> {
|
|
318
|
+
return this.client
|
|
319
|
+
.request({
|
|
320
|
+
method: 'GET',
|
|
321
|
+
url: `/uploads/${uploadId}/references`,
|
|
322
|
+
queryParams,
|
|
323
|
+
})
|
|
324
|
+
.then<
|
|
325
|
+
RawApiTypes.UploadReferencesTargetSchema<
|
|
326
|
+
ItemTypeDefinitionToItemDefinitionWithNestedBlocks<NoInfer<D>>
|
|
327
|
+
>
|
|
328
|
+
>(Utils.deserializeRawResponseBodyWithItems);
|
|
287
329
|
}
|
|
288
330
|
|
|
289
331
|
/**
|
package/src/index.ts
CHANGED
|
@@ -10,6 +10,7 @@ export * from './utilities/fieldValue';
|
|
|
10
10
|
export * from './utilities/id';
|
|
11
11
|
export * from './utilities/recursiveBlocks';
|
|
12
12
|
export * from './utilities/schemaRepository';
|
|
13
|
+
export * from './utilities/itemDefinition';
|
|
13
14
|
export * from './fieldTypes';
|
|
14
15
|
export type { ApiTypes, RawApiTypes };
|
|
15
16
|
// Legacy names
|
|
@@ -1,10 +1,26 @@
|
|
|
1
1
|
import * as Utils from '@datocms/rest-client-utils';
|
|
2
|
+
import type { NewBlockInARequest } from '../fieldTypes';
|
|
2
3
|
import type * as ApiTypes from '../generated/ApiTypes';
|
|
3
|
-
import type * as RawApiTypes from '../generated/RawApiTypes';
|
|
4
4
|
import { Item } from '../generated/resources';
|
|
5
|
+
import type {
|
|
6
|
+
ItemTypeDefinition,
|
|
7
|
+
ItemTypeDefinitionToItemDefinitionAsRequest,
|
|
8
|
+
} from './itemDefinition';
|
|
5
9
|
|
|
6
|
-
|
|
7
|
-
|
|
10
|
+
type NoInfer<T> = [T][T extends any ? 0 : never];
|
|
11
|
+
|
|
12
|
+
export function buildBlockRecord<
|
|
13
|
+
D extends ItemTypeDefinition = ItemTypeDefinition,
|
|
14
|
+
>(
|
|
15
|
+
body: ApiTypes.ItemUpdateSchema<
|
|
16
|
+
ItemTypeDefinitionToItemDefinitionAsRequest<NoInfer<D>>
|
|
17
|
+
>,
|
|
18
|
+
): NewBlockInARequest<ItemTypeDefinitionToItemDefinitionAsRequest<NoInfer<D>>> {
|
|
19
|
+
return Utils.serializeRequestBody<{
|
|
20
|
+
data: NewBlockInARequest<
|
|
21
|
+
ItemTypeDefinitionToItemDefinitionAsRequest<NoInfer<D>>
|
|
22
|
+
>;
|
|
23
|
+
}>(body, {
|
|
8
24
|
type: Item.TYPE,
|
|
9
25
|
attributes: '*',
|
|
10
26
|
relationships: ['item_type'],
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
BooleanFieldValue,
|
|
3
|
+
ColorFieldValue,
|
|
4
|
+
DateFieldValue,
|
|
5
|
+
DateTimeFieldValue,
|
|
6
|
+
FileFieldValue,
|
|
7
|
+
FloatFieldValue,
|
|
8
|
+
GalleryFieldValue,
|
|
9
|
+
IntegerFieldValue,
|
|
10
|
+
JsonFieldValue,
|
|
11
|
+
LatLonFieldValue,
|
|
12
|
+
LinkFieldValue,
|
|
13
|
+
LinksFieldValue,
|
|
14
|
+
RichTextFieldValue,
|
|
15
|
+
RichTextFieldValueAsRequest,
|
|
16
|
+
RichTextFieldValueWithNestedBlocks,
|
|
17
|
+
SeoFieldValue,
|
|
18
|
+
SingleBlockFieldValue,
|
|
19
|
+
SingleBlockFieldValueAsRequest,
|
|
20
|
+
SingleBlockFieldValueWithNestedBlocks,
|
|
21
|
+
SlugFieldValue,
|
|
22
|
+
StringFieldValue,
|
|
23
|
+
StructuredTextFieldValue,
|
|
24
|
+
StructuredTextFieldValueAsRequest,
|
|
25
|
+
StructuredTextFieldValueWithNestedBlocks,
|
|
26
|
+
TextFieldValue,
|
|
27
|
+
VideoFieldValue,
|
|
28
|
+
} from '../fieldTypes';
|
|
29
|
+
import type { LocalizedFieldValue } from './fieldValue';
|
|
30
|
+
|
|
31
|
+
/** Base field definition */
|
|
32
|
+
type BaseFieldDefinition<Type extends string> = {
|
|
33
|
+
type: Type;
|
|
34
|
+
localized?: boolean;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
type RichTextFieldDefinition<
|
|
38
|
+
AllowedBlocks extends ItemTypeDefinition = ItemTypeDefinition,
|
|
39
|
+
> = BaseFieldDefinition<'rich_text'> & { blocks: AllowedBlocks };
|
|
40
|
+
type SingleBlockFieldDefinition<
|
|
41
|
+
AllowedBlocks extends ItemTypeDefinition = ItemTypeDefinition,
|
|
42
|
+
> = BaseFieldDefinition<'single_block'> & { blocks: AllowedBlocks };
|
|
43
|
+
type StructuredTextFieldDefinition<
|
|
44
|
+
AllowedBlocks extends ItemTypeDefinition = ItemTypeDefinition,
|
|
45
|
+
AllowedInlineBlocks extends ItemTypeDefinition = ItemTypeDefinition,
|
|
46
|
+
> = BaseFieldDefinition<'structured_text'> & {
|
|
47
|
+
blocks: AllowedBlocks;
|
|
48
|
+
inline_blocks: AllowedInlineBlocks;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
/** Field definition union */
|
|
52
|
+
export type FieldDefinition =
|
|
53
|
+
| BaseFieldDefinition<
|
|
54
|
+
| 'boolean'
|
|
55
|
+
| 'color'
|
|
56
|
+
| 'date'
|
|
57
|
+
| 'date_time'
|
|
58
|
+
| 'file'
|
|
59
|
+
| 'float'
|
|
60
|
+
| 'gallery'
|
|
61
|
+
| 'integer'
|
|
62
|
+
| 'json'
|
|
63
|
+
| 'lat_lon'
|
|
64
|
+
| 'link'
|
|
65
|
+
| 'links'
|
|
66
|
+
| 'seo'
|
|
67
|
+
| 'slug'
|
|
68
|
+
| 'string'
|
|
69
|
+
| 'text'
|
|
70
|
+
| 'video'
|
|
71
|
+
| 'unknown'
|
|
72
|
+
>
|
|
73
|
+
| RichTextFieldDefinition
|
|
74
|
+
| SingleBlockFieldDefinition
|
|
75
|
+
| StructuredTextFieldDefinition;
|
|
76
|
+
|
|
77
|
+
/** Item type definition */
|
|
78
|
+
export type ItemTypeDefinition<
|
|
79
|
+
ItemTypeId extends string = string,
|
|
80
|
+
FieldDefinitions extends Record<string, FieldDefinition> = {},
|
|
81
|
+
> = {
|
|
82
|
+
itemTypeId: ItemTypeId;
|
|
83
|
+
fields: FieldDefinitions;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
/** Item definition */
|
|
87
|
+
export type ItemDefinition<
|
|
88
|
+
ItemTypeId extends string = string,
|
|
89
|
+
FieldValues extends Record<string, unknown> = Record<string, unknown>,
|
|
90
|
+
> = {
|
|
91
|
+
itemTypeId: ItemTypeId;
|
|
92
|
+
fields: FieldValues;
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
/** Standard field values */
|
|
96
|
+
type FieldTypeToValue = {
|
|
97
|
+
boolean: BooleanFieldValue;
|
|
98
|
+
color: ColorFieldValue;
|
|
99
|
+
date: DateFieldValue;
|
|
100
|
+
date_time: DateTimeFieldValue;
|
|
101
|
+
file: FileFieldValue;
|
|
102
|
+
float: FloatFieldValue;
|
|
103
|
+
gallery: GalleryFieldValue;
|
|
104
|
+
integer: IntegerFieldValue;
|
|
105
|
+
json: JsonFieldValue;
|
|
106
|
+
lat_lon: LatLonFieldValue;
|
|
107
|
+
link: LinkFieldValue;
|
|
108
|
+
links: LinksFieldValue;
|
|
109
|
+
rich_text: RichTextFieldValue;
|
|
110
|
+
seo: SeoFieldValue;
|
|
111
|
+
single_block: SingleBlockFieldValue;
|
|
112
|
+
slug: SlugFieldValue;
|
|
113
|
+
string: StringFieldValue;
|
|
114
|
+
structured_text: StructuredTextFieldValue;
|
|
115
|
+
text: TextFieldValue;
|
|
116
|
+
video: VideoFieldValue;
|
|
117
|
+
unknown: unknown;
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
/** Localized wrapper */
|
|
121
|
+
type LocalizeIfNeeded<T extends FieldDefinition, Value> = T extends {
|
|
122
|
+
localized: true;
|
|
123
|
+
}
|
|
124
|
+
? LocalizedFieldValue<Value>
|
|
125
|
+
: Value;
|
|
126
|
+
|
|
127
|
+
/** Standard mapping */
|
|
128
|
+
type FieldDefinitionToFieldValue<T extends FieldDefinition> = LocalizeIfNeeded<
|
|
129
|
+
T,
|
|
130
|
+
FieldTypeToValue[T['type']]
|
|
131
|
+
>;
|
|
132
|
+
|
|
133
|
+
/** AsRequest mapping (block fields become generic over allowed blocks) */
|
|
134
|
+
type FieldDefinitionToFieldValueAsRequest<T extends FieldDefinition> =
|
|
135
|
+
T extends RichTextFieldDefinition<infer B>
|
|
136
|
+
? LocalizeIfNeeded<
|
|
137
|
+
T,
|
|
138
|
+
RichTextFieldValueAsRequest<
|
|
139
|
+
ItemTypeDefinitionToItemDefinitionAsRequest<B>
|
|
140
|
+
>
|
|
141
|
+
>
|
|
142
|
+
: T extends SingleBlockFieldDefinition<infer B>
|
|
143
|
+
? LocalizeIfNeeded<
|
|
144
|
+
T,
|
|
145
|
+
SingleBlockFieldValueAsRequest<
|
|
146
|
+
ItemTypeDefinitionToItemDefinitionAsRequest<B>
|
|
147
|
+
>
|
|
148
|
+
>
|
|
149
|
+
: T extends StructuredTextFieldDefinition<infer B, infer I>
|
|
150
|
+
? LocalizeIfNeeded<
|
|
151
|
+
T,
|
|
152
|
+
StructuredTextFieldValueAsRequest<
|
|
153
|
+
ItemTypeDefinitionToItemDefinitionAsRequest<B>,
|
|
154
|
+
ItemTypeDefinitionToItemDefinitionAsRequest<I>
|
|
155
|
+
>
|
|
156
|
+
>
|
|
157
|
+
: LocalizeIfNeeded<T, FieldTypeToValue[T['type']]>;
|
|
158
|
+
|
|
159
|
+
type FieldDefinitionToFieldValueWithNestedBlocks<T extends FieldDefinition> =
|
|
160
|
+
T extends RichTextFieldDefinition<infer B>
|
|
161
|
+
? LocalizeIfNeeded<
|
|
162
|
+
T,
|
|
163
|
+
RichTextFieldValueWithNestedBlocks<
|
|
164
|
+
ItemTypeDefinitionToItemDefinitionWithNestedBlocks<B>
|
|
165
|
+
>
|
|
166
|
+
>
|
|
167
|
+
: T extends SingleBlockFieldDefinition<infer B>
|
|
168
|
+
? LocalizeIfNeeded<
|
|
169
|
+
T,
|
|
170
|
+
SingleBlockFieldValueWithNestedBlocks<
|
|
171
|
+
ItemTypeDefinitionToItemDefinitionWithNestedBlocks<B>
|
|
172
|
+
>
|
|
173
|
+
>
|
|
174
|
+
: T extends StructuredTextFieldDefinition<infer B, infer I>
|
|
175
|
+
? LocalizeIfNeeded<
|
|
176
|
+
T,
|
|
177
|
+
StructuredTextFieldValueWithNestedBlocks<
|
|
178
|
+
ItemTypeDefinitionToItemDefinitionWithNestedBlocks<B>,
|
|
179
|
+
ItemTypeDefinitionToItemDefinitionWithNestedBlocks<I>
|
|
180
|
+
>
|
|
181
|
+
>
|
|
182
|
+
: LocalizeIfNeeded<T, FieldTypeToValue[T['type']]>;
|
|
183
|
+
|
|
184
|
+
/** Transformers */
|
|
185
|
+
export type ItemTypeDefinitionToItemDefinition<T extends ItemTypeDefinition> =
|
|
186
|
+
T extends ItemTypeDefinition
|
|
187
|
+
? keyof T['fields'] extends never
|
|
188
|
+
? ItemDefinition<T['itemTypeId']>
|
|
189
|
+
: ItemDefinition<
|
|
190
|
+
T['itemTypeId'],
|
|
191
|
+
{
|
|
192
|
+
[K in keyof T['fields']]: T['fields'][K] extends FieldDefinition
|
|
193
|
+
? FieldDefinitionToFieldValue<T['fields'][K]>
|
|
194
|
+
: never;
|
|
195
|
+
}
|
|
196
|
+
>
|
|
197
|
+
: never;
|
|
198
|
+
|
|
199
|
+
export type ItemTypeDefinitionToItemDefinitionAsRequest<
|
|
200
|
+
T extends ItemTypeDefinition,
|
|
201
|
+
> = T extends ItemTypeDefinition
|
|
202
|
+
? keyof T['fields'] extends never
|
|
203
|
+
? ItemDefinition<T['itemTypeId']>
|
|
204
|
+
: ItemDefinition<
|
|
205
|
+
T['itemTypeId'],
|
|
206
|
+
Partial<{
|
|
207
|
+
[K in keyof T['fields']]: T['fields'][K] extends FieldDefinition
|
|
208
|
+
? FieldDefinitionToFieldValueAsRequest<T['fields'][K]>
|
|
209
|
+
: never;
|
|
210
|
+
}>
|
|
211
|
+
>
|
|
212
|
+
: never;
|
|
213
|
+
|
|
214
|
+
export type ItemTypeDefinitionToItemDefinitionWithNestedBlocks<
|
|
215
|
+
T extends ItemTypeDefinition,
|
|
216
|
+
> = T extends ItemTypeDefinition
|
|
217
|
+
? keyof T['fields'] extends never
|
|
218
|
+
? ItemDefinition<T['itemTypeId']>
|
|
219
|
+
: ItemDefinition<
|
|
220
|
+
T['itemTypeId'],
|
|
221
|
+
{
|
|
222
|
+
[K in keyof T['fields']]: T['fields'][K] extends FieldDefinition
|
|
223
|
+
? FieldDefinitionToFieldValueWithNestedBlocks<T['fields'][K]>
|
|
224
|
+
: never;
|
|
225
|
+
}
|
|
226
|
+
>
|
|
227
|
+
: never;
|
|
228
|
+
|
|
229
|
+
export type UnknownField = Record<string, unknown>;
|