@datocms/cma-client 5.1.0 → 5.1.2
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/rich_text.js +7 -7
- package/dist/cjs/fieldTypes/rich_text.js.map +1 -1
- package/dist/cjs/fieldTypes/single_block.js +21 -19
- package/dist/cjs/fieldTypes/single_block.js.map +1 -1
- package/dist/cjs/fieldTypes/structured_text.js +12 -24
- package/dist/cjs/fieldTypes/structured_text.js.map +1 -1
- package/dist/cjs/generated/{SchemaTypes.js → ApiTypes.js} +1 -1
- package/dist/cjs/generated/ApiTypes.js.map +1 -0
- package/dist/cjs/generated/Client.js +1 -1
- package/dist/cjs/generated/{SimpleSchemaTypes.js → RawApiTypes.js} +1 -1
- package/dist/cjs/generated/RawApiTypes.js.map +1 -0
- package/dist/cjs/generated/resources/AccessToken.js.map +1 -1
- package/dist/cjs/generated/resources/AuditLogEvent.js.map +1 -1
- package/dist/cjs/generated/resources/BuildEvent.js.map +1 -1
- package/dist/cjs/generated/resources/BuildTrigger.js.map +1 -1
- package/dist/cjs/generated/resources/EditingSession.js.map +1 -1
- package/dist/cjs/generated/resources/EmojiSuggestions.js.map +1 -1
- package/dist/cjs/generated/resources/Environment.js.map +1 -1
- package/dist/cjs/generated/resources/Field.js.map +1 -1
- package/dist/cjs/generated/resources/Fieldset.js.map +1 -1
- package/dist/cjs/generated/resources/Item.js.map +1 -1
- package/dist/cjs/generated/resources/ItemType.js.map +1 -1
- package/dist/cjs/generated/resources/ItemTypeFilter.js.map +1 -1
- package/dist/cjs/generated/resources/ItemVersion.js.map +1 -1
- package/dist/cjs/generated/resources/JobResult.js.map +1 -1
- package/dist/cjs/generated/resources/MaintenanceMode.js.map +1 -1
- package/dist/cjs/generated/resources/MenuItem.js.map +1 -1
- package/dist/cjs/generated/resources/Plugin.js.map +1 -1
- package/dist/cjs/generated/resources/PublicInfo.js.map +1 -1
- package/dist/cjs/generated/resources/Role.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/SchemaMenuItem.js.map +1 -1
- package/dist/cjs/generated/resources/SearchResult.js.map +1 -1
- package/dist/cjs/generated/resources/Session.js.map +1 -1
- package/dist/cjs/generated/resources/Site.js.map +1 -1
- package/dist/cjs/generated/resources/SiteInvitation.js.map +1 -1
- package/dist/cjs/generated/resources/SsoGroup.js.map +1 -1
- package/dist/cjs/generated/resources/SsoSettings.js.map +1 -1
- package/dist/cjs/generated/resources/SsoUser.js.map +1 -1
- package/dist/cjs/generated/resources/SubscriptionLimit.js.map +1 -1
- package/dist/cjs/generated/resources/Upload.js.map +1 -1
- package/dist/cjs/generated/resources/UploadCollection.js.map +1 -1
- package/dist/cjs/generated/resources/UploadFilter.js.map +1 -1
- package/dist/cjs/generated/resources/UploadRequest.js.map +1 -1
- package/dist/cjs/generated/resources/UploadSmartTag.js.map +1 -1
- package/dist/cjs/generated/resources/UploadTag.js.map +1 -1
- package/dist/cjs/generated/resources/UploadTrack.js.map +1 -1
- package/dist/cjs/generated/resources/UsageCounter.js.map +1 -1
- package/dist/cjs/generated/resources/User.js.map +1 -1
- package/dist/cjs/generated/resources/Webhook.js.map +1 -1
- package/dist/cjs/generated/resources/WebhookCall.js.map +1 -1
- package/dist/cjs/generated/resources/WhiteLabelSettings.js.map +1 -1
- package/dist/cjs/generated/resources/Workflow.js.map +1 -1
- package/dist/cjs/index.js +2 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/resources/Role.js.map +1 -1
- package/dist/cjs/utilities/blocks.js +7 -7
- package/dist/cjs/utilities/blocks.js.map +1 -1
- package/dist/cjs/utilities/buildBlockRecord.js.map +1 -1
- package/dist/cjs/utilities/fieldValue.js +253 -0
- package/dist/cjs/utilities/fieldValue.js.map +1 -0
- package/dist/cjs/utilities/fieldsContainingReferences.js.map +1 -1
- package/dist/cjs/utilities/recursiveBlocks.js +18 -19
- package/dist/cjs/utilities/recursiveBlocks.js.map +1 -1
- package/dist/cjs/utilities/schemaRepository.js.map +1 -1
- package/dist/esm/fieldTypes/rich_text.d.ts +7 -7
- package/dist/esm/fieldTypes/rich_text.js +6 -6
- package/dist/esm/fieldTypes/rich_text.js.map +1 -1
- package/dist/esm/fieldTypes/single_block.d.ts +30 -24
- package/dist/esm/fieldTypes/single_block.js +16 -14
- package/dist/esm/fieldTypes/single_block.js.map +1 -1
- package/dist/esm/fieldTypes/structured_text.d.ts +20 -85
- package/dist/esm/fieldTypes/structured_text.js +11 -23
- package/dist/esm/fieldTypes/structured_text.js.map +1 -1
- package/dist/esm/generated/{SimpleSchemaTypes.d.ts → ApiTypes.d.ts} +13 -8
- package/dist/esm/generated/ApiTypes.js +2 -0
- package/dist/esm/generated/ApiTypes.js.map +1 -0
- package/dist/esm/generated/Client.d.ts +1 -1
- package/dist/esm/generated/Client.js +1 -1
- package/dist/esm/generated/{SchemaTypes.d.ts → RawApiTypes.d.ts} +13 -8
- package/dist/esm/generated/RawApiTypes.js +2 -0
- package/dist/esm/generated/RawApiTypes.js.map +1 -0
- package/dist/esm/generated/resources/AccessToken.d.ts +14 -14
- package/dist/esm/generated/resources/AccessToken.js.map +1 -1
- package/dist/esm/generated/resources/AuditLogEvent.d.ts +4 -4
- package/dist/esm/generated/resources/AuditLogEvent.js.map +1 -1
- package/dist/esm/generated/resources/BuildEvent.d.ts +8 -8
- package/dist/esm/generated/resources/BuildEvent.js.map +1 -1
- package/dist/esm/generated/resources/BuildTrigger.d.ts +16 -16
- package/dist/esm/generated/resources/BuildTrigger.js.map +1 -1
- package/dist/esm/generated/resources/DailyUsage.d.ts +4 -4
- package/dist/esm/generated/resources/EditingSession.d.ts +7 -7
- package/dist/esm/generated/resources/EditingSession.js.map +1 -1
- package/dist/esm/generated/resources/EmojiSuggestions.d.ts +4 -4
- package/dist/esm/generated/resources/EmojiSuggestions.js.map +1 -1
- package/dist/esm/generated/resources/Environment.d.ts +14 -14
- package/dist/esm/generated/resources/Environment.js.map +1 -1
- package/dist/esm/generated/resources/Field.d.ts +213 -213
- package/dist/esm/generated/resources/Field.js.map +1 -1
- package/dist/esm/generated/resources/Fieldset.d.ts +12 -12
- package/dist/esm/generated/resources/Fieldset.js.map +1 -1
- package/dist/esm/generated/resources/Item.d.ts +36 -36
- package/dist/esm/generated/resources/Item.js.map +1 -1
- package/dist/esm/generated/resources/ItemType.d.ts +15 -15
- package/dist/esm/generated/resources/ItemType.js.map +1 -1
- package/dist/esm/generated/resources/ItemTypeFilter.d.ts +12 -12
- package/dist/esm/generated/resources/ItemTypeFilter.js.map +1 -1
- package/dist/esm/generated/resources/ItemVersion.d.ts +10 -10
- package/dist/esm/generated/resources/ItemVersion.js.map +1 -1
- package/dist/esm/generated/resources/JobResult.d.ts +4 -4
- package/dist/esm/generated/resources/JobResult.js.map +1 -1
- package/dist/esm/generated/resources/MaintenanceMode.d.ts +8 -8
- package/dist/esm/generated/resources/MaintenanceMode.js.map +1 -1
- package/dist/esm/generated/resources/MenuItem.d.ts +14 -14
- package/dist/esm/generated/resources/MenuItem.js.map +1 -1
- package/dist/esm/generated/resources/Plugin.d.ts +14 -14
- package/dist/esm/generated/resources/Plugin.js.map +1 -1
- package/dist/esm/generated/resources/PublicInfo.d.ts +4 -4
- package/dist/esm/generated/resources/PublicInfo.js.map +1 -1
- package/dist/esm/generated/resources/Role.d.ts +14 -14
- package/dist/esm/generated/resources/Role.js.map +1 -1
- package/dist/esm/generated/resources/ScheduledPublication.d.ts +6 -6
- package/dist/esm/generated/resources/ScheduledPublication.js.map +1 -1
- package/dist/esm/generated/resources/ScheduledUnpublishing.d.ts +6 -6
- package/dist/esm/generated/resources/ScheduledUnpublishing.js.map +1 -1
- package/dist/esm/generated/resources/SchemaMenuItem.d.ts +14 -14
- package/dist/esm/generated/resources/SchemaMenuItem.js.map +1 -1
- package/dist/esm/generated/resources/SearchResult.d.ts +6 -6
- package/dist/esm/generated/resources/SearchResult.js.map +1 -1
- package/dist/esm/generated/resources/Session.d.ts +4 -4
- package/dist/esm/generated/resources/Session.js.map +1 -1
- package/dist/esm/generated/resources/Site.d.ts +24 -24
- package/dist/esm/generated/resources/Site.js.map +1 -1
- package/dist/esm/generated/resources/SiteInvitation.d.ts +14 -14
- package/dist/esm/generated/resources/SiteInvitation.js.map +1 -1
- package/dist/esm/generated/resources/SsoGroup.d.ts +10 -10
- package/dist/esm/generated/resources/SsoGroup.js.map +1 -1
- package/dist/esm/generated/resources/SsoSettings.d.ts +8 -8
- package/dist/esm/generated/resources/SsoSettings.js.map +1 -1
- package/dist/esm/generated/resources/SsoUser.d.ts +10 -10
- package/dist/esm/generated/resources/SsoUser.js.map +1 -1
- package/dist/esm/generated/resources/SubscriptionFeature.d.ts +4 -4
- package/dist/esm/generated/resources/SubscriptionLimit.d.ts +6 -6
- package/dist/esm/generated/resources/SubscriptionLimit.js.map +1 -1
- package/dist/esm/generated/resources/Upload.d.ts +22 -22
- package/dist/esm/generated/resources/Upload.js.map +1 -1
- package/dist/esm/generated/resources/UploadCollection.d.ts +14 -14
- package/dist/esm/generated/resources/UploadCollection.js.map +1 -1
- package/dist/esm/generated/resources/UploadFilter.d.ts +12 -12
- package/dist/esm/generated/resources/UploadFilter.js.map +1 -1
- package/dist/esm/generated/resources/UploadRequest.d.ts +4 -4
- package/dist/esm/generated/resources/UploadRequest.js.map +1 -1
- package/dist/esm/generated/resources/UploadSmartTag.d.ts +6 -6
- package/dist/esm/generated/resources/UploadSmartTag.js.map +1 -1
- package/dist/esm/generated/resources/UploadTag.d.ts +8 -8
- package/dist/esm/generated/resources/UploadTag.js.map +1 -1
- package/dist/esm/generated/resources/UploadTrack.d.ts +10 -10
- package/dist/esm/generated/resources/UploadTrack.js.map +1 -1
- package/dist/esm/generated/resources/UsageCounter.d.ts +4 -4
- package/dist/esm/generated/resources/UsageCounter.js.map +1 -1
- package/dist/esm/generated/resources/User.d.ts +12 -12
- package/dist/esm/generated/resources/User.js.map +1 -1
- package/dist/esm/generated/resources/Webhook.d.ts +12 -12
- package/dist/esm/generated/resources/Webhook.js.map +1 -1
- package/dist/esm/generated/resources/WebhookCall.d.ts +9 -9
- package/dist/esm/generated/resources/WebhookCall.js.map +1 -1
- package/dist/esm/generated/resources/WhiteLabelSettings.d.ts +6 -6
- package/dist/esm/generated/resources/WhiteLabelSettings.js.map +1 -1
- package/dist/esm/generated/resources/Workflow.d.ts +11 -11
- package/dist/esm/generated/resources/Workflow.js.map +1 -1
- package/dist/esm/index.d.ts +5 -4
- package/dist/esm/index.js +1 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/resources/Role.d.ts +4 -4
- package/dist/esm/resources/Role.js.map +1 -1
- package/dist/esm/utilities/blocks.d.ts +17 -17
- package/dist/esm/utilities/blocks.js +3 -3
- package/dist/esm/utilities/blocks.js.map +1 -1
- package/dist/esm/utilities/buildBlockRecord.d.ts +5 -5
- package/dist/esm/utilities/buildBlockRecord.js.map +1 -1
- package/dist/esm/utilities/fieldValue.d.ts +166 -0
- package/dist/esm/utilities/fieldValue.js +237 -0
- package/dist/esm/utilities/fieldValue.js.map +1 -0
- package/dist/esm/utilities/fieldsContainingReferences.d.ts +4 -4
- package/dist/esm/utilities/fieldsContainingReferences.js.map +1 -1
- package/dist/esm/utilities/recursiveBlocks.d.ts +13 -10
- package/dist/esm/utilities/recursiveBlocks.js +19 -20
- package/dist/esm/utilities/recursiveBlocks.js.map +1 -1
- package/dist/esm/utilities/schemaRepository.d.ts +29 -26
- package/dist/esm/utilities/schemaRepository.js.map +1 -1
- package/dist/types/fieldTypes/rich_text.d.ts +7 -7
- package/dist/types/fieldTypes/single_block.d.ts +30 -24
- package/dist/types/fieldTypes/structured_text.d.ts +20 -85
- package/dist/types/generated/{SimpleSchemaTypes.d.ts → ApiTypes.d.ts} +13 -8
- package/dist/types/generated/Client.d.ts +1 -1
- package/dist/types/generated/{SchemaTypes.d.ts → RawApiTypes.d.ts} +13 -8
- package/dist/types/generated/resources/AccessToken.d.ts +14 -14
- package/dist/types/generated/resources/AuditLogEvent.d.ts +4 -4
- package/dist/types/generated/resources/BuildEvent.d.ts +8 -8
- package/dist/types/generated/resources/BuildTrigger.d.ts +16 -16
- package/dist/types/generated/resources/DailyUsage.d.ts +4 -4
- package/dist/types/generated/resources/EditingSession.d.ts +7 -7
- package/dist/types/generated/resources/EmojiSuggestions.d.ts +4 -4
- package/dist/types/generated/resources/Environment.d.ts +14 -14
- package/dist/types/generated/resources/Field.d.ts +213 -213
- package/dist/types/generated/resources/Fieldset.d.ts +12 -12
- package/dist/types/generated/resources/Item.d.ts +36 -36
- package/dist/types/generated/resources/ItemType.d.ts +15 -15
- package/dist/types/generated/resources/ItemTypeFilter.d.ts +12 -12
- package/dist/types/generated/resources/ItemVersion.d.ts +10 -10
- package/dist/types/generated/resources/JobResult.d.ts +4 -4
- package/dist/types/generated/resources/MaintenanceMode.d.ts +8 -8
- package/dist/types/generated/resources/MenuItem.d.ts +14 -14
- package/dist/types/generated/resources/Plugin.d.ts +14 -14
- package/dist/types/generated/resources/PublicInfo.d.ts +4 -4
- package/dist/types/generated/resources/Role.d.ts +14 -14
- package/dist/types/generated/resources/ScheduledPublication.d.ts +6 -6
- package/dist/types/generated/resources/ScheduledUnpublishing.d.ts +6 -6
- package/dist/types/generated/resources/SchemaMenuItem.d.ts +14 -14
- package/dist/types/generated/resources/SearchResult.d.ts +6 -6
- package/dist/types/generated/resources/Session.d.ts +4 -4
- package/dist/types/generated/resources/Site.d.ts +24 -24
- package/dist/types/generated/resources/SiteInvitation.d.ts +14 -14
- package/dist/types/generated/resources/SsoGroup.d.ts +10 -10
- package/dist/types/generated/resources/SsoSettings.d.ts +8 -8
- package/dist/types/generated/resources/SsoUser.d.ts +10 -10
- package/dist/types/generated/resources/SubscriptionFeature.d.ts +4 -4
- package/dist/types/generated/resources/SubscriptionLimit.d.ts +6 -6
- package/dist/types/generated/resources/Upload.d.ts +22 -22
- package/dist/types/generated/resources/UploadCollection.d.ts +14 -14
- package/dist/types/generated/resources/UploadFilter.d.ts +12 -12
- package/dist/types/generated/resources/UploadRequest.d.ts +4 -4
- package/dist/types/generated/resources/UploadSmartTag.d.ts +6 -6
- package/dist/types/generated/resources/UploadTag.d.ts +8 -8
- package/dist/types/generated/resources/UploadTrack.d.ts +10 -10
- package/dist/types/generated/resources/UsageCounter.d.ts +4 -4
- package/dist/types/generated/resources/User.d.ts +12 -12
- package/dist/types/generated/resources/Webhook.d.ts +12 -12
- package/dist/types/generated/resources/WebhookCall.d.ts +9 -9
- package/dist/types/generated/resources/WhiteLabelSettings.d.ts +6 -6
- package/dist/types/generated/resources/Workflow.d.ts +11 -11
- package/dist/types/index.d.ts +5 -4
- package/dist/types/resources/Role.d.ts +4 -4
- package/dist/types/utilities/blocks.d.ts +17 -17
- package/dist/types/utilities/buildBlockRecord.d.ts +5 -5
- package/dist/types/utilities/fieldValue.d.ts +166 -0
- package/dist/types/utilities/fieldsContainingReferences.d.ts +4 -4
- package/dist/types/utilities/recursiveBlocks.d.ts +13 -10
- package/dist/types/utilities/schemaRepository.d.ts +29 -26
- package/package.json +5 -5
- package/src/fieldTypes/rich_text.ts +14 -14
- package/src/fieldTypes/single_block.ts +48 -33
- package/src/fieldTypes/structured_text.ts +37 -153
- package/src/generated/{SimpleSchemaTypes.ts → ApiTypes.ts} +44 -9
- package/src/generated/Client.ts +2 -2
- package/src/generated/{SchemaTypes.ts → RawApiTypes.ts} +44 -9
- package/src/generated/resources/AccessToken.ts +32 -34
- package/src/generated/resources/AuditLogEvent.ts +8 -8
- package/src/generated/resources/BuildEvent.ts +16 -18
- package/src/generated/resources/BuildTrigger.ts +30 -30
- package/src/generated/resources/DailyUsage.ts +5 -5
- package/src/generated/resources/EditingSession.ts +12 -12
- package/src/generated/resources/EmojiSuggestions.ts +7 -7
- package/src/generated/resources/Environment.ts +33 -39
- package/src/generated/resources/Field.ts +40 -54
- package/src/generated/resources/Fieldset.ts +28 -36
- package/src/generated/resources/Item.ts +99 -126
- package/src/generated/resources/ItemType.ts +37 -45
- package/src/generated/resources/ItemTypeFilter.ts +26 -26
- package/src/generated/resources/ItemVersion.ts +22 -26
- package/src/generated/resources/JobResult.ts +6 -8
- package/src/generated/resources/MaintenanceMode.ts +13 -13
- package/src/generated/resources/MenuItem.ts +34 -44
- package/src/generated/resources/Plugin.ts +30 -42
- package/src/generated/resources/PublicInfo.ts +5 -7
- package/src/generated/resources/Role.ts +29 -44
- package/src/generated/resources/ScheduledPublication.ts +13 -13
- package/src/generated/resources/ScheduledUnpublishing.ts +13 -13
- package/src/generated/resources/SchemaMenuItem.ts +34 -34
- package/src/generated/resources/SearchResult.ts +12 -12
- package/src/generated/resources/Session.ts +8 -10
- package/src/generated/resources/Site.ts +43 -47
- package/src/generated/resources/SiteInvitation.ts +30 -30
- package/src/generated/resources/SsoGroup.ts +20 -24
- package/src/generated/resources/SsoSettings.ts +14 -16
- package/src/generated/resources/SsoUser.ts +18 -22
- package/src/generated/resources/SubscriptionFeature.ts +5 -5
- package/src/generated/resources/SubscriptionLimit.ts +9 -9
- package/src/generated/resources/Upload.ts +57 -73
- package/src/generated/resources/UploadCollection.ts +34 -34
- package/src/generated/resources/UploadFilter.ts +26 -26
- package/src/generated/resources/UploadRequest.ts +8 -8
- package/src/generated/resources/UploadSmartTag.ts +12 -12
- package/src/generated/resources/UploadTag.ts +18 -20
- package/src/generated/resources/UploadTrack.ts +25 -29
- package/src/generated/resources/UsageCounter.ts +8 -8
- package/src/generated/resources/User.ts +28 -39
- package/src/generated/resources/Webhook.ts +26 -34
- package/src/generated/resources/WebhookCall.ts +17 -19
- package/src/generated/resources/WhiteLabelSettings.ts +11 -11
- package/src/generated/resources/Workflow.ts +23 -29
- package/src/index.ts +7 -4
- package/src/resources/Role.ts +6 -6
- package/src/utilities/blocks.ts +36 -36
- package/src/utilities/buildBlockRecord.ts +4 -4
- package/src/utilities/{fieldValueLocalization.ts → fieldValue.ts} +161 -147
- package/src/utilities/fieldsContainingReferences.ts +4 -4
- package/src/utilities/recursiveBlocks.ts +47 -44
- package/src/utilities/schemaRepository.ts +53 -56
- package/dist/cjs/generated/SchemaTypes.js.map +0 -1
- package/dist/cjs/generated/SimpleSchemaTypes.js.map +0 -1
- package/dist/cjs/utilities/fieldValueLocalization.js +0 -218
- package/dist/cjs/utilities/fieldValueLocalization.js.map +0 -1
- package/dist/cjs/utilities/structuredText.js +0 -371
- package/dist/cjs/utilities/structuredText.js.map +0 -1
- package/dist/esm/generated/SchemaTypes.js +0 -2
- package/dist/esm/generated/SchemaTypes.js.map +0 -1
- package/dist/esm/generated/SimpleSchemaTypes.js +0 -2
- package/dist/esm/generated/SimpleSchemaTypes.js.map +0 -1
- package/dist/esm/utilities/fieldValueLocalization.d.ts +0 -123
- package/dist/esm/utilities/fieldValueLocalization.js +0 -204
- package/dist/esm/utilities/fieldValueLocalization.js.map +0 -1
- package/dist/esm/utilities/structuredText.d.ts +0 -177
- package/dist/esm/utilities/structuredText.js +0 -354
- package/dist/esm/utilities/structuredText.js.map +0 -1
- package/dist/types/utilities/fieldValueLocalization.d.ts +0 -123
- package/dist/types/utilities/structuredText.d.ts +0 -177
- package/src/utilities/structuredText.ts +0 -590
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type * as
|
|
2
|
-
import type * as
|
|
1
|
+
import type * as ApiTypes from '../generated/ApiTypes';
|
|
2
|
+
import type * as RawApiTypes from '../generated/RawApiTypes';
|
|
3
3
|
|
|
4
4
|
/*
|
|
5
5
|
* Localized Field Value Operations Utilities
|
|
@@ -18,72 +18,100 @@ import type * as SimpleSchemaTypes from '../generated/SimpleSchemaTypes';
|
|
|
18
18
|
* - Reduces code duplication and potential bugs from inconsistent handling
|
|
19
19
|
* - Supports both synchronous and asynchronous operations
|
|
20
20
|
* - Maintains the original data structure (localized fields remain localized, non-localized remain direct)
|
|
21
|
-
*
|
|
22
|
-
* Example usage:
|
|
23
|
-
* ```typescript
|
|
24
|
-
* // Instead of manually checking localization:
|
|
25
|
-
* if (isLocalized(field)) {
|
|
26
|
-
* const result = {};
|
|
27
|
-
* for (const [locale, value] of Object.entries(fieldValue)) {
|
|
28
|
-
* result[locale] = processValue(value);
|
|
29
|
-
* }
|
|
30
|
-
* return result;
|
|
31
|
-
* } else {
|
|
32
|
-
* return processValue(fieldValue);
|
|
33
|
-
* }
|
|
34
|
-
*
|
|
35
|
-
* // Use the utility:
|
|
36
|
-
* return mapLocalizedFieldValues(field, fieldValue, (locale, value) => processValue(value));
|
|
37
|
-
* ```
|
|
38
21
|
*/
|
|
39
22
|
|
|
40
23
|
/**
|
|
41
|
-
*
|
|
24
|
+
* Represents a localized field value in DatoCMS.
|
|
25
|
+
*
|
|
26
|
+
* In DatoCMS, fields can be localized. In this scenario, their value contains values
|
|
42
27
|
* for various locales structured as an object, such as
|
|
43
|
-
`{ "en": "Hello", "it": "Ciao" }`
|
|
28
|
+
* `{ "en": "Hello", "it": "Ciao" }`
|
|
44
29
|
*/
|
|
45
30
|
export type LocalizedFieldValue = Record<string, unknown>;
|
|
46
31
|
|
|
32
|
+
/**
|
|
33
|
+
* Determines whether a DatoCMS field is localized or not.
|
|
34
|
+
*
|
|
35
|
+
* This function handles both full Schema field objects and simplified Schema field objects
|
|
36
|
+
* by checking the appropriate property based on the object structure.
|
|
37
|
+
*
|
|
38
|
+
* @param field - The DatoCMS field definition (either full or simple schema)
|
|
39
|
+
* @returns true if the field is localized, false otherwise
|
|
40
|
+
*/
|
|
47
41
|
export function isLocalized(
|
|
48
|
-
field:
|
|
42
|
+
field: RawApiTypes.Field | ApiTypes.Field,
|
|
49
43
|
): boolean {
|
|
50
44
|
return 'attributes' in field ? field.attributes.localized : field.localized;
|
|
51
45
|
}
|
|
52
46
|
|
|
53
47
|
/**
|
|
54
|
-
*
|
|
55
|
-
* For localized fields, applies the mapping function to each locale value.
|
|
56
|
-
* For non-localized fields, applies the mapping function directly to the only non-localizeed value.
|
|
48
|
+
* A normalized entry that represents a single value from either a localized or non-localized field.
|
|
57
49
|
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* @returns The mapped value with the same structure as the input
|
|
50
|
+
* For localized fields, each locale produces one entry with `locale` set to the locale code (e.g., "en", "it").
|
|
51
|
+
* For non-localized fields, there's one entry with `locale` set to `undefined`.
|
|
52
|
+
*
|
|
53
|
+
* This uniform structure allows the same processing logic to work with both field types.
|
|
63
54
|
*/
|
|
64
|
-
export
|
|
65
|
-
|
|
55
|
+
export type FieldValueEntry = {
|
|
56
|
+
locale: string | undefined;
|
|
57
|
+
value: unknown;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export type PossiblyLocalizedEntry = FieldValueEntry;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Converts a field value (localized or non-localized) into a uniform array of entries.
|
|
64
|
+
*
|
|
65
|
+
* This function normalizes the handling of field values by converting them into a consistent
|
|
66
|
+
* array format, regardless of whether the field is localized or not.
|
|
67
|
+
*
|
|
68
|
+
* @param field - The DatoCMS field definition that determines localization behavior
|
|
69
|
+
* @param value - The field value to convert (either a localized object or direct value)
|
|
70
|
+
* @returns Array of entries where each entry contains a locale (string for localized, undefined for non-localized) and the corresponding value
|
|
71
|
+
*/
|
|
72
|
+
export function fieldValueToEntries(
|
|
73
|
+
field: RawApiTypes.Field | ApiTypes.Field,
|
|
66
74
|
value: unknown,
|
|
67
|
-
mapFn: (locale: string | undefined, localeValue: unknown) => T,
|
|
68
75
|
) {
|
|
69
76
|
if (isLocalized(field)) {
|
|
70
77
|
const localizedValue = value as LocalizedFieldValue;
|
|
71
78
|
|
|
79
|
+
return Object.entries(localizedValue).map<FieldValueEntry>(
|
|
80
|
+
([locale, value]) => ({ locale, value }),
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return [{ locale: undefined, value }];
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Converts an array of possibly localized entries back into the appropriate field value format.
|
|
89
|
+
*
|
|
90
|
+
* This function is the inverse of `fieldValueToPossiblyLocalizedEntries`. It takes a uniform
|
|
91
|
+
* array of entries and converts them back to either a localized object or a direct value,
|
|
92
|
+
* depending on the field's localization setting.
|
|
93
|
+
*
|
|
94
|
+
* @param field - The DatoCMS field definition that determines the output format
|
|
95
|
+
* @param possiblyLocalizedEntries - Array of entries to convert back to field value format
|
|
96
|
+
* @returns Either a localized object (for localized fields) or the direct value (for non-localized fields)
|
|
97
|
+
*/
|
|
98
|
+
export function entriesToFieldValue(
|
|
99
|
+
field: RawApiTypes.Field | ApiTypes.Field,
|
|
100
|
+
possiblyLocalizedEntries: FieldValueEntry[],
|
|
101
|
+
) {
|
|
102
|
+
if (isLocalized(field)) {
|
|
72
103
|
return Object.fromEntries(
|
|
73
|
-
|
|
74
|
-
locale,
|
|
75
|
-
mapFn(locale, value),
|
|
76
|
-
]),
|
|
104
|
+
possiblyLocalizedEntries.map(({ locale, value }) => [locale, value]),
|
|
77
105
|
);
|
|
78
106
|
}
|
|
79
107
|
|
|
80
|
-
return
|
|
108
|
+
return possiblyLocalizedEntries[0]?.value;
|
|
81
109
|
}
|
|
82
110
|
|
|
83
111
|
/**
|
|
84
|
-
* Maps
|
|
112
|
+
* Maps field values using a provided mapping function.
|
|
85
113
|
* For localized fields, applies the mapping function to each locale value.
|
|
86
|
-
* For non-localized fields, applies the mapping function directly to the
|
|
114
|
+
* For non-localized fields, applies the mapping function directly to the value.
|
|
87
115
|
*
|
|
88
116
|
* @template T - The type that the mapping function returns
|
|
89
117
|
* @param field - The DatoCMS field definition
|
|
@@ -91,28 +119,47 @@ export function mapLocalizedFieldValues<T>(
|
|
|
91
119
|
* @param mapFn - The function to apply to each locale value or the direct value
|
|
92
120
|
* @returns The mapped value with the same structure as the input
|
|
93
121
|
*/
|
|
94
|
-
export
|
|
95
|
-
field:
|
|
122
|
+
export function mapFieldValue<T>(
|
|
123
|
+
field: RawApiTypes.Field | ApiTypes.Field,
|
|
96
124
|
value: unknown,
|
|
97
|
-
mapFn: (locale: string | undefined, localeValue: unknown) =>
|
|
125
|
+
mapFn: (locale: string | undefined, localeValue: unknown) => T,
|
|
98
126
|
) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
),
|
|
107
|
-
),
|
|
108
|
-
);
|
|
109
|
-
}
|
|
127
|
+
const entries = fieldValueToEntries(field, value);
|
|
128
|
+
const mappedEntries = entries.map(({ locale, value }) => ({
|
|
129
|
+
locale,
|
|
130
|
+
value: mapFn(locale, value),
|
|
131
|
+
}));
|
|
132
|
+
return entriesToFieldValue(field, mappedEntries);
|
|
133
|
+
}
|
|
110
134
|
|
|
111
|
-
|
|
135
|
+
/**
|
|
136
|
+
* Maps field values using a provided mapping function (async version).
|
|
137
|
+
* For localized fields, applies the mapping function to each locale value.
|
|
138
|
+
* For non-localized fields, applies the mapping function directly to the value.
|
|
139
|
+
*
|
|
140
|
+
* @template T - The type that the mapping function returns
|
|
141
|
+
* @param field - The DatoCMS field definition
|
|
142
|
+
* @param value - The field value (either localized object or direct value)
|
|
143
|
+
* @param mapFn - The function to apply to each locale value or the direct value
|
|
144
|
+
* @returns The mapped value with the same structure as the input
|
|
145
|
+
*/
|
|
146
|
+
export async function mapFieldValueAsync<T>(
|
|
147
|
+
field: RawApiTypes.Field | ApiTypes.Field,
|
|
148
|
+
value: unknown,
|
|
149
|
+
mapFn: (locale: string | undefined, localeValue: unknown) => Promise<T>,
|
|
150
|
+
) {
|
|
151
|
+
const entries = fieldValueToEntries(field, value);
|
|
152
|
+
const mappedEntries = await Promise.all(
|
|
153
|
+
entries.map(async ({ locale, value }) => ({
|
|
154
|
+
locale,
|
|
155
|
+
value: await mapFn(locale, value),
|
|
156
|
+
})),
|
|
157
|
+
);
|
|
158
|
+
return entriesToFieldValue(field, mappedEntries);
|
|
112
159
|
}
|
|
113
160
|
|
|
114
161
|
/**
|
|
115
|
-
* Filters
|
|
162
|
+
* Filters field values using a provided filter function.
|
|
116
163
|
* For localized fields, filters each locale value.
|
|
117
164
|
* For non-localized fields, returns the value if the filter passes, otherwise undefined.
|
|
118
165
|
*
|
|
@@ -121,26 +168,25 @@ export async function mapLocalizedFieldValuesAsync<T>(
|
|
|
121
168
|
* @param filterFn - The function to test each locale value or the direct value
|
|
122
169
|
* @returns The filtered value with the same structure as the input
|
|
123
170
|
*/
|
|
124
|
-
export function
|
|
125
|
-
field:
|
|
171
|
+
export function filterFieldValue(
|
|
172
|
+
field: RawApiTypes.Field | ApiTypes.Field,
|
|
126
173
|
value: unknown,
|
|
127
174
|
filterFn: (locale: string | undefined, localeValue: unknown) => boolean,
|
|
128
175
|
) {
|
|
129
|
-
|
|
130
|
-
|
|
176
|
+
const entries = fieldValueToEntries(field, value);
|
|
177
|
+
const filteredEntries = entries.filter(({ locale, value }) =>
|
|
178
|
+
filterFn(locale, value),
|
|
179
|
+
);
|
|
131
180
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
filterFn(locale, value),
|
|
135
|
-
),
|
|
136
|
-
);
|
|
181
|
+
if (isLocalized(field)) {
|
|
182
|
+
return entriesToFieldValue(field, filteredEntries);
|
|
137
183
|
}
|
|
138
184
|
|
|
139
|
-
return
|
|
185
|
+
return filteredEntries.length > 0 ? filteredEntries[0]?.value : undefined;
|
|
140
186
|
}
|
|
141
187
|
|
|
142
188
|
/**
|
|
143
|
-
* Filters
|
|
189
|
+
* Filters field values using a provided filter function (async version).
|
|
144
190
|
* For localized fields, filters each locale value.
|
|
145
191
|
* For non-localized fields, returns the value if the filter passes, otherwise undefined.
|
|
146
192
|
*
|
|
@@ -149,39 +195,36 @@ export function filterLocalizedFieldValues(
|
|
|
149
195
|
* @param filterFn - The function to test each locale value or the direct value
|
|
150
196
|
* @returns The filtered value with the same structure as the input
|
|
151
197
|
*/
|
|
152
|
-
export async function
|
|
153
|
-
field:
|
|
198
|
+
export async function filterFieldValueAsync(
|
|
199
|
+
field: RawApiTypes.Field | ApiTypes.Field,
|
|
154
200
|
value: unknown,
|
|
155
201
|
filterFn: (
|
|
156
202
|
locale: string | undefined,
|
|
157
203
|
localeValue: unknown,
|
|
158
204
|
) => Promise<boolean>,
|
|
159
205
|
) {
|
|
160
|
-
|
|
161
|
-
|
|
206
|
+
const entries = fieldValueToEntries(field, value);
|
|
207
|
+
const results = await Promise.all(
|
|
208
|
+
entries.map(async ({ locale, value }) => ({
|
|
209
|
+
locale,
|
|
210
|
+
value,
|
|
211
|
+
passed: await filterFn(locale, value),
|
|
212
|
+
})),
|
|
213
|
+
);
|
|
162
214
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
locale,
|
|
167
|
-
value,
|
|
168
|
-
await filterFn(locale, value),
|
|
169
|
-
],
|
|
170
|
-
),
|
|
171
|
-
);
|
|
215
|
+
const filteredEntries = results
|
|
216
|
+
.filter(({ passed }) => passed)
|
|
217
|
+
.map(({ locale, value }) => ({ locale, value }));
|
|
172
218
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
.filter(([, , passed]) => passed)
|
|
176
|
-
.map(([locale, value]) => [locale, value]),
|
|
177
|
-
);
|
|
219
|
+
if (isLocalized(field)) {
|
|
220
|
+
return entriesToFieldValue(field, filteredEntries);
|
|
178
221
|
}
|
|
179
222
|
|
|
180
|
-
return
|
|
223
|
+
return filteredEntries.length > 0 ? filteredEntries[0]?.value : undefined;
|
|
181
224
|
}
|
|
182
225
|
|
|
183
226
|
/**
|
|
184
|
-
* Tests whether at least one
|
|
227
|
+
* Tests whether at least one field value passes the test implemented by the provided function.
|
|
185
228
|
* For localized fields, tests each locale value.
|
|
186
229
|
* For non-localized fields, tests the direct value.
|
|
187
230
|
*
|
|
@@ -190,24 +233,17 @@ export async function filterLocalizedFieldValuesAsync(
|
|
|
190
233
|
* @param testFn - The function to test each locale value or the direct value
|
|
191
234
|
* @returns true if at least one value passes the test, false otherwise
|
|
192
235
|
*/
|
|
193
|
-
export function
|
|
194
|
-
field:
|
|
236
|
+
export function someFieldValue(
|
|
237
|
+
field: RawApiTypes.Field | ApiTypes.Field,
|
|
195
238
|
value: unknown,
|
|
196
239
|
testFn: (locale: string | undefined, localeValue: unknown) => boolean,
|
|
197
240
|
): boolean {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
return Object.entries(localizedValue).some(([locale, value]) =>
|
|
202
|
-
testFn(locale, value),
|
|
203
|
-
);
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
return testFn(undefined, value);
|
|
241
|
+
const entries = fieldValueToEntries(field, value);
|
|
242
|
+
return entries.some(({ locale, value }) => testFn(locale, value));
|
|
207
243
|
}
|
|
208
244
|
|
|
209
245
|
/**
|
|
210
|
-
* Tests whether at least one
|
|
246
|
+
* Tests whether at least one field value passes the test implemented by the provided function (async version).
|
|
211
247
|
* For localized fields, tests each locale value.
|
|
212
248
|
* For non-localized fields, tests the direct value.
|
|
213
249
|
*
|
|
@@ -216,31 +252,23 @@ export function someLocalizedFieldValues(
|
|
|
216
252
|
* @param testFn - The function to test each locale value or the direct value
|
|
217
253
|
* @returns true if at least one value passes the test, false otherwise
|
|
218
254
|
*/
|
|
219
|
-
export async function
|
|
220
|
-
field:
|
|
255
|
+
export async function someFieldValueAsync(
|
|
256
|
+
field: RawApiTypes.Field | ApiTypes.Field,
|
|
221
257
|
value: unknown,
|
|
222
258
|
testFn: (
|
|
223
259
|
locale: string | undefined,
|
|
224
260
|
localeValue: unknown,
|
|
225
261
|
) => Promise<boolean>,
|
|
226
262
|
): Promise<boolean> {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
async ([locale, value]) => await testFn(locale, value),
|
|
233
|
-
),
|
|
234
|
-
);
|
|
235
|
-
|
|
236
|
-
return results.some((result) => result);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
return await testFn(undefined, value);
|
|
263
|
+
const entries = fieldValueToEntries(field, value);
|
|
264
|
+
const results = await Promise.all(
|
|
265
|
+
entries.map(({ locale, value }) => testFn(locale, value)),
|
|
266
|
+
);
|
|
267
|
+
return results.some((result) => result);
|
|
240
268
|
}
|
|
241
269
|
|
|
242
270
|
/**
|
|
243
|
-
* Tests whether all
|
|
271
|
+
* Tests whether all field values pass the test implemented by the provided function.
|
|
244
272
|
* For localized fields, tests each locale value.
|
|
245
273
|
* For non-localized fields, tests the direct value.
|
|
246
274
|
*
|
|
@@ -249,12 +277,12 @@ export async function someLocalizedFieldValuesAsync(
|
|
|
249
277
|
* @param testFn - The function to test each locale value or the direct value
|
|
250
278
|
* @returns true if all values pass the test, false otherwise
|
|
251
279
|
*/
|
|
252
|
-
export function
|
|
253
|
-
field:
|
|
280
|
+
export function everyFieldValue(
|
|
281
|
+
field: RawApiTypes.Field | ApiTypes.Field,
|
|
254
282
|
value: unknown,
|
|
255
283
|
testFn: (locale: string | undefined, localeValue: unknown) => boolean,
|
|
256
284
|
): boolean {
|
|
257
|
-
return !
|
|
285
|
+
return !someFieldValue(
|
|
258
286
|
field,
|
|
259
287
|
value,
|
|
260
288
|
(locale, localeValue) => !testFn(locale, localeValue),
|
|
@@ -262,7 +290,7 @@ export function everyLocalizedFieldValues(
|
|
|
262
290
|
}
|
|
263
291
|
|
|
264
292
|
/**
|
|
265
|
-
* Tests whether all
|
|
293
|
+
* Tests whether all field values pass the test implemented by the provided function (async version).
|
|
266
294
|
* For localized fields, tests each locale value.
|
|
267
295
|
* For non-localized fields, tests the direct value.
|
|
268
296
|
*
|
|
@@ -271,15 +299,15 @@ export function everyLocalizedFieldValues(
|
|
|
271
299
|
* @param testFn - The function to test each locale value or the direct value
|
|
272
300
|
* @returns true if all values pass the test, false otherwise
|
|
273
301
|
*/
|
|
274
|
-
export async function
|
|
275
|
-
field:
|
|
302
|
+
export async function everyFieldValueAsync(
|
|
303
|
+
field: RawApiTypes.Field | ApiTypes.Field,
|
|
276
304
|
value: unknown,
|
|
277
305
|
testFn: (
|
|
278
306
|
locale: string | undefined,
|
|
279
307
|
localeValue: unknown,
|
|
280
308
|
) => Promise<boolean>,
|
|
281
309
|
): Promise<boolean> {
|
|
282
|
-
return !(await
|
|
310
|
+
return !(await someFieldValueAsync(
|
|
283
311
|
field,
|
|
284
312
|
value,
|
|
285
313
|
async (locale, localeValue) => !(await testFn(locale, localeValue)),
|
|
@@ -287,7 +315,7 @@ export async function everyLocalizedFieldValuesAsync(
|
|
|
287
315
|
}
|
|
288
316
|
|
|
289
317
|
/**
|
|
290
|
-
* Visits each
|
|
318
|
+
* Visits each field value with the provided function.
|
|
291
319
|
* For localized fields, visits each locale value.
|
|
292
320
|
* For non-localized fields, visits the direct value.
|
|
293
321
|
*
|
|
@@ -295,24 +323,19 @@ export async function everyLocalizedFieldValuesAsync(
|
|
|
295
323
|
* @param value - The field value (either localized object or direct value)
|
|
296
324
|
* @param visitFn - The function to call for each locale value or the direct value
|
|
297
325
|
*/
|
|
298
|
-
export function
|
|
299
|
-
field:
|
|
326
|
+
export function visitFieldValue(
|
|
327
|
+
field: RawApiTypes.Field | ApiTypes.Field,
|
|
300
328
|
value: unknown,
|
|
301
329
|
visitFn: (locale: string | undefined, localeValue: unknown) => void,
|
|
302
330
|
): void {
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
for (const [locale, value] of Object.entries(localizedValue)) {
|
|
307
|
-
visitFn(locale, value);
|
|
308
|
-
}
|
|
309
|
-
} else {
|
|
310
|
-
visitFn(undefined, value);
|
|
331
|
+
const entries = fieldValueToEntries(field, value);
|
|
332
|
+
for (const { locale, value } of entries) {
|
|
333
|
+
visitFn(locale, value);
|
|
311
334
|
}
|
|
312
335
|
}
|
|
313
336
|
|
|
314
337
|
/**
|
|
315
|
-
* Visits each
|
|
338
|
+
* Visits each field value with the provided function (async version).
|
|
316
339
|
* For localized fields, visits each locale value.
|
|
317
340
|
* For non-localized fields, visits the direct value.
|
|
318
341
|
*
|
|
@@ -320,20 +343,11 @@ export function visitLocalizedFieldValues(
|
|
|
320
343
|
* @param value - The field value (either localized object or direct value)
|
|
321
344
|
* @param visitFn - The function to call for each locale value or the direct value
|
|
322
345
|
*/
|
|
323
|
-
export async function
|
|
324
|
-
field:
|
|
346
|
+
export async function visitFieldValueAsync(
|
|
347
|
+
field: RawApiTypes.Field | ApiTypes.Field,
|
|
325
348
|
value: unknown,
|
|
326
349
|
visitFn: (locale: string | undefined, localeValue: unknown) => Promise<void>,
|
|
327
350
|
): Promise<void> {
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
await Promise.all(
|
|
332
|
-
Object.entries(localizedValue).map(
|
|
333
|
-
async ([locale, value]) => await visitFn(locale, value),
|
|
334
|
-
),
|
|
335
|
-
);
|
|
336
|
-
} else {
|
|
337
|
-
await visitFn(undefined, value);
|
|
338
|
-
}
|
|
351
|
+
const entries = fieldValueToEntries(field, value);
|
|
352
|
+
await Promise.all(entries.map(({ locale, value }) => visitFn(locale, value)));
|
|
339
353
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type * as
|
|
2
|
-
import type * as
|
|
1
|
+
import type * as ApiTypes from '../generated/ApiTypes';
|
|
2
|
+
import type * as RawApiTypes from '../generated/RawApiTypes';
|
|
3
3
|
|
|
4
4
|
export function modelIdsReferencedInField(
|
|
5
|
-
field:
|
|
5
|
+
field: RawApiTypes.Field | ApiTypes.Field,
|
|
6
6
|
) {
|
|
7
7
|
const attributes = 'attributes' in field ? field.attributes : field;
|
|
8
8
|
|
|
@@ -23,7 +23,7 @@ export function modelIdsReferencedInField(
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
export function blockModelIdsReferencedInField(
|
|
26
|
-
field:
|
|
26
|
+
field: RawApiTypes.Field | ApiTypes.Field,
|
|
27
27
|
) {
|
|
28
28
|
const attributes = 'attributes' in field ? field.attributes : field;
|
|
29
29
|
|