@datocms/cma-client 5.1.9 → 5.1.11
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 +575 -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 +4 -6
- package/dist/cjs/fieldTypes/rich_text.js.map +1 -1
- package/dist/cjs/fieldTypes/seo.js +2 -3
- package/dist/cjs/fieldTypes/seo.js.map +1 -1
- package/dist/cjs/fieldTypes/single_block.js +7 -7
- 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 +4 -6
- 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/Client.js.map +1 -1
- package/dist/cjs/generated/resources/Item.js.map +1 -1
- package/dist/cjs/generated/resources/Upload.js.map +1 -1
- package/dist/cjs/index.js +4 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utilities/buildBlockRecord.js +8 -7
- package/dist/cjs/utilities/buildBlockRecord.js.map +1 -1
- package/dist/cjs/utilities/inspectItem.js +397 -0
- package/dist/cjs/utilities/inspectItem.js.map +1 -0
- package/dist/cjs/utilities/{blocks.js → nonRecursiveBlocks.js} +106 -111
- 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 +121 -80
- 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 +1 -1
- package/dist/esm/fieldTypes/rich_text.js +4 -6
- package/dist/esm/fieldTypes/rich_text.js.map +1 -1
- 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 +3 -3
- package/dist/esm/fieldTypes/single_block.js +7 -7
- 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 +1 -1
- package/dist/esm/fieldTypes/structured_text.js +4 -6
- 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/Client.js +1 -1
- package/dist/esm/generated/Client.js.map +1 -1
- package/dist/esm/generated/resources/Item.d.ts +46 -28
- package/dist/esm/generated/resources/Item.js.map +1 -1
- package/dist/esm/generated/resources/ScheduledPublication.d.ts +3 -3
- package/dist/esm/generated/resources/ScheduledUnpublishing.d.ts +3 -3
- package/dist/esm/generated/resources/Upload.d.ts +10 -4
- package/dist/esm/generated/resources/Upload.js.map +1 -1
- package/dist/esm/index.d.ts +4 -4
- package/dist/esm/index.js +4 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utilities/buildBlockRecord.d.ts +3 -3
- package/dist/esm/utilities/buildBlockRecord.js +9 -8
- package/dist/esm/utilities/buildBlockRecord.js.map +1 -1
- package/dist/esm/utilities/inspectItem.d.ts +8 -0
- package/dist/esm/utilities/inspectItem.js +393 -0
- package/dist/esm/utilities/inspectItem.js.map +1 -0
- package/dist/esm/utilities/itemDefinition.d.ts +36 -12
- package/dist/esm/utilities/nonRecursiveBlocks.d.ts +179 -0
- package/dist/esm/utilities/{blocks.js → nonRecursiveBlocks.js} +91 -96
- 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 +92 -9
- package/dist/esm/utilities/recursiveBlocks.js +113 -72
- 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 +1 -1
- package/dist/types/fieldTypes/seo.d.ts +1 -1
- package/dist/types/fieldTypes/single_block.d.ts +3 -3
- 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 +1 -1
- package/dist/types/fieldTypes/text.d.ts +1 -1
- package/dist/types/fieldTypes/video.d.ts +1 -1
- package/dist/types/generated/resources/Item.d.ts +46 -28
- 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 +10 -4
- package/dist/types/index.d.ts +4 -4
- package/dist/types/utilities/buildBlockRecord.d.ts +3 -3
- package/dist/types/utilities/inspectItem.d.ts +8 -0
- package/dist/types/utilities/itemDefinition.d.ts +36 -12
- package/dist/types/utilities/nonRecursiveBlocks.d.ts +179 -0
- package/dist/{esm/utilities/fieldValue.d.ts → types/utilities/normalizedFieldValues.d.ts} +15 -14
- package/dist/types/utilities/recursiveBlocks.d.ts +92 -9
- 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 +7 -7
- package/src/fieldTypes/seo.ts +5 -4
- package/src/fieldTypes/single_block.ts +12 -10
- package/src/fieldTypes/slug.ts +5 -4
- package/src/fieldTypes/string.ts +5 -3
- package/src/fieldTypes/structured_text.ts +7 -7
- package/src/fieldTypes/text.ts +5 -4
- package/src/fieldTypes/video.ts +5 -3
- package/src/generated/Client.ts +1 -1
- package/src/generated/resources/Item.ts +129 -92
- package/src/generated/resources/ScheduledPublication.ts +6 -6
- package/src/generated/resources/ScheduledUnpublishing.ts +6 -6
- package/src/generated/resources/Upload.ts +36 -10
- package/src/index.ts +4 -4
- package/src/utilities/buildBlockRecord.ts +24 -31
- package/src/utilities/inspectItem.ts +590 -0
- package/src/utilities/itemDefinition.ts +53 -35
- package/src/utilities/{blocks.ts → nonRecursiveBlocks.ts} +170 -136
- package/src/utilities/{fieldValue.ts → normalizedFieldValues.ts} +70 -30
- package/src/utilities/recursiveBlocks.ts +186 -171
- 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
|
@@ -47,6 +47,25 @@ export function isLocalized(
|
|
|
47
47
|
return 'attributes' in field ? field.attributes.localized : field.localized;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
+
export function isLocalizedFieldValue<T = unknown, L extends string = string>(
|
|
51
|
+
value: unknown,
|
|
52
|
+
): value is LocalizedFieldValue<T, L> {
|
|
53
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const keys = Object.keys(value);
|
|
58
|
+
|
|
59
|
+
if (keys.length === 0) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const localePattern =
|
|
64
|
+
/^[A-Za-z]{2,4}(-[A-Za-z]{4})?(-([A-Za-z]{2}|[0-9]{3}))?$/;
|
|
65
|
+
|
|
66
|
+
return keys.every((key) => localePattern.test(key));
|
|
67
|
+
}
|
|
68
|
+
|
|
50
69
|
/**
|
|
51
70
|
* A normalized entry that represents a single value from either a localized or non-localized field.
|
|
52
71
|
*
|
|
@@ -55,7 +74,10 @@ export function isLocalized(
|
|
|
55
74
|
*
|
|
56
75
|
* This uniform structure allows the same processing logic to work with both field types.
|
|
57
76
|
*/
|
|
58
|
-
export type
|
|
77
|
+
export type NormalizedFieldValueEntry<
|
|
78
|
+
T = unknown,
|
|
79
|
+
L extends string = string,
|
|
80
|
+
> = {
|
|
59
81
|
locale: L | undefined;
|
|
60
82
|
value: T;
|
|
61
83
|
};
|
|
@@ -70,10 +92,13 @@ export type FieldValueEntry<T = unknown, L extends string = string> = {
|
|
|
70
92
|
* @param value - The field value to convert (either a localized object or direct value)
|
|
71
93
|
* @returns Array of entries where each entry contains a locale (string for localized, undefined for non-localized) and the corresponding value
|
|
72
94
|
*/
|
|
73
|
-
export function
|
|
95
|
+
export function toNormalizedFieldValueEntries<
|
|
96
|
+
T = unknown,
|
|
97
|
+
L extends string = string,
|
|
98
|
+
>(
|
|
74
99
|
field: RawApiTypes.Field | ApiTypes.Field,
|
|
75
100
|
value: T | LocalizedFieldValue<T, L>,
|
|
76
|
-
):
|
|
101
|
+
): NormalizedFieldValueEntry<T, L>[] {
|
|
77
102
|
if (isLocalized(field)) {
|
|
78
103
|
const localizedValue = value as LocalizedFieldValue<T, L>;
|
|
79
104
|
|
|
@@ -89,7 +114,7 @@ export function fieldValueToEntries<T = unknown, L extends string = string>(
|
|
|
89
114
|
/**
|
|
90
115
|
* Converts an array of possibly localized entries back into the appropriate field value format.
|
|
91
116
|
*
|
|
92
|
-
* This function is the inverse of `
|
|
117
|
+
* This function is the inverse of `toNormalizedFieldValueEntries`. It takes a uniform
|
|
93
118
|
* array of entries and converts them back to either a localized object or a direct value,
|
|
94
119
|
* depending on the field's localization setting.
|
|
95
120
|
*
|
|
@@ -97,9 +122,12 @@ export function fieldValueToEntries<T = unknown, L extends string = string>(
|
|
|
97
122
|
* @param entries - Array of entries to convert back to field value format
|
|
98
123
|
* @returns Either a localized object (for localized fields) or the direct value (for non-localized fields)
|
|
99
124
|
*/
|
|
100
|
-
export function
|
|
125
|
+
export function fromNormalizedFieldValueEntries<
|
|
126
|
+
T = unknown,
|
|
127
|
+
L extends string = string,
|
|
128
|
+
>(
|
|
101
129
|
field: RawApiTypes.Field | ApiTypes.Field,
|
|
102
|
-
entries:
|
|
130
|
+
entries: NormalizedFieldValueEntry<T, L>[],
|
|
103
131
|
): T | LocalizedFieldValue<T, L> {
|
|
104
132
|
if (isLocalized(field)) {
|
|
105
133
|
return Object.fromEntries(
|
|
@@ -125,7 +153,7 @@ export function entriesToFieldValue<T = unknown, L extends string = string>(
|
|
|
125
153
|
* @param mapFn - The function to apply to each locale value or the direct value
|
|
126
154
|
* @returns The mapped value with the same structure as the input
|
|
127
155
|
*/
|
|
128
|
-
export function
|
|
156
|
+
export function mapNormalizedFieldValues<
|
|
129
157
|
TInput = unknown,
|
|
130
158
|
TOutput = unknown,
|
|
131
159
|
L extends string = string,
|
|
@@ -134,12 +162,12 @@ export function mapFieldValue<
|
|
|
134
162
|
value: TInput | LocalizedFieldValue<TInput, L>,
|
|
135
163
|
mapFn: (locale: L | undefined, localeValue: TInput) => TOutput,
|
|
136
164
|
): TOutput | LocalizedFieldValue<TOutput, L> {
|
|
137
|
-
const entries =
|
|
165
|
+
const entries = toNormalizedFieldValueEntries<TInput, L>(field, value);
|
|
138
166
|
const mappedEntries = entries.map(({ locale, value }) => ({
|
|
139
167
|
locale,
|
|
140
168
|
value: mapFn(locale, value),
|
|
141
169
|
}));
|
|
142
|
-
return
|
|
170
|
+
return fromNormalizedFieldValueEntries<TOutput, L>(field, mappedEntries);
|
|
143
171
|
}
|
|
144
172
|
|
|
145
173
|
/**
|
|
@@ -153,7 +181,7 @@ export function mapFieldValue<
|
|
|
153
181
|
* @param mapFn - The function to apply to each locale value or the direct value
|
|
154
182
|
* @returns The mapped value with the same structure as the input
|
|
155
183
|
*/
|
|
156
|
-
export async function
|
|
184
|
+
export async function mapNormalizedFieldValuesAsync<
|
|
157
185
|
TInput = unknown,
|
|
158
186
|
TOutput = unknown,
|
|
159
187
|
L extends string = string,
|
|
@@ -162,14 +190,14 @@ export async function mapFieldValueAsync<
|
|
|
162
190
|
value: TInput | LocalizedFieldValue<TInput, L>,
|
|
163
191
|
mapFn: (locale: L | undefined, localeValue: TInput) => Promise<TOutput>,
|
|
164
192
|
): Promise<TOutput | LocalizedFieldValue<TOutput, L>> {
|
|
165
|
-
const entries =
|
|
193
|
+
const entries = toNormalizedFieldValueEntries<TInput, L>(field, value);
|
|
166
194
|
const mappedEntries = await Promise.all(
|
|
167
195
|
entries.map(async ({ locale, value }) => ({
|
|
168
196
|
locale,
|
|
169
197
|
value: await mapFn(locale, value),
|
|
170
198
|
})),
|
|
171
199
|
);
|
|
172
|
-
return
|
|
200
|
+
return fromNormalizedFieldValueEntries<TOutput, L>(field, mappedEntries);
|
|
173
201
|
}
|
|
174
202
|
|
|
175
203
|
/**
|
|
@@ -182,18 +210,21 @@ export async function mapFieldValueAsync<
|
|
|
182
210
|
* @param filterFn - The function to test each locale value or the direct value
|
|
183
211
|
* @returns The filtered value with the same structure as the input
|
|
184
212
|
*/
|
|
185
|
-
export function
|
|
213
|
+
export function filterNormalizedFieldValues<
|
|
214
|
+
T = unknown,
|
|
215
|
+
L extends string = string,
|
|
216
|
+
>(
|
|
186
217
|
field: RawApiTypes.Field | ApiTypes.Field,
|
|
187
218
|
value: T | LocalizedFieldValue<T, L>,
|
|
188
219
|
filterFn: (locale: L | undefined, localeValue: T) => boolean,
|
|
189
220
|
): T | LocalizedFieldValue<T, L> | undefined {
|
|
190
|
-
const entries =
|
|
221
|
+
const entries = toNormalizedFieldValueEntries<T, L>(field, value);
|
|
191
222
|
const filteredEntries = entries.filter((entry) =>
|
|
192
223
|
filterFn(entry.locale, entry.value),
|
|
193
224
|
);
|
|
194
225
|
|
|
195
226
|
if (isLocalized(field)) {
|
|
196
|
-
return
|
|
227
|
+
return fromNormalizedFieldValueEntries<T, L>(field, filteredEntries);
|
|
197
228
|
}
|
|
198
229
|
|
|
199
230
|
return filteredEntries.length > 0 ? filteredEntries[0]?.value : undefined;
|
|
@@ -209,7 +240,7 @@ export function filterFieldValue<T = unknown, L extends string = string>(
|
|
|
209
240
|
* @param filterFn - The function to test each locale value or the direct value
|
|
210
241
|
* @returns The filtered value with the same structure as the input
|
|
211
242
|
*/
|
|
212
|
-
export async function
|
|
243
|
+
export async function filterNormalizedFieldValuesAsync<
|
|
213
244
|
T = unknown,
|
|
214
245
|
L extends string = string,
|
|
215
246
|
>(
|
|
@@ -217,7 +248,7 @@ export async function filterFieldValueAsync<
|
|
|
217
248
|
value: T | LocalizedFieldValue<T, L>,
|
|
218
249
|
filterFn: (locale: L | undefined, localeValue: T) => Promise<boolean>,
|
|
219
250
|
): Promise<T | LocalizedFieldValue<T, L> | undefined> {
|
|
220
|
-
const entries =
|
|
251
|
+
const entries = toNormalizedFieldValueEntries<T, L>(field, value);
|
|
221
252
|
const results = await Promise.all(
|
|
222
253
|
entries.map(async ({ locale, value }) => ({
|
|
223
254
|
locale,
|
|
@@ -231,7 +262,7 @@ export async function filterFieldValueAsync<
|
|
|
231
262
|
.map(({ locale, value }) => ({ locale, value }));
|
|
232
263
|
|
|
233
264
|
if (isLocalized(field)) {
|
|
234
|
-
return
|
|
265
|
+
return fromNormalizedFieldValueEntries<T, L>(field, filteredEntries);
|
|
235
266
|
}
|
|
236
267
|
|
|
237
268
|
return filteredEntries.length > 0 ? filteredEntries[0]?.value : undefined;
|
|
@@ -247,12 +278,15 @@ export async function filterFieldValueAsync<
|
|
|
247
278
|
* @param testFn - The function to test each locale value or the direct value
|
|
248
279
|
* @returns true if at least one value passes the test, false otherwise
|
|
249
280
|
*/
|
|
250
|
-
export function
|
|
281
|
+
export function someNormalizedFieldValues<
|
|
282
|
+
T = unknown,
|
|
283
|
+
L extends string = string,
|
|
284
|
+
>(
|
|
251
285
|
field: RawApiTypes.Field | ApiTypes.Field,
|
|
252
286
|
value: T | LocalizedFieldValue<T, L>,
|
|
253
287
|
testFn: (locale: L | undefined, localeValue: T) => boolean,
|
|
254
288
|
): boolean {
|
|
255
|
-
const entries =
|
|
289
|
+
const entries = toNormalizedFieldValueEntries<T, L>(field, value);
|
|
256
290
|
return entries.some(({ locale, value }) => testFn(locale, value));
|
|
257
291
|
}
|
|
258
292
|
|
|
@@ -266,7 +300,7 @@ export function someFieldValue<T = unknown, L extends string = string>(
|
|
|
266
300
|
* @param testFn - The function to test each locale value or the direct value
|
|
267
301
|
* @returns true if at least one value passes the test, false otherwise
|
|
268
302
|
*/
|
|
269
|
-
export async function
|
|
303
|
+
export async function someNormalizedFieldValuesAsync<
|
|
270
304
|
T = unknown,
|
|
271
305
|
L extends string = string,
|
|
272
306
|
>(
|
|
@@ -274,7 +308,7 @@ export async function someFieldValueAsync<
|
|
|
274
308
|
value: T | LocalizedFieldValue<T, L>,
|
|
275
309
|
testFn: (locale: L | undefined, localeValue: T) => Promise<boolean>,
|
|
276
310
|
): Promise<boolean> {
|
|
277
|
-
const entries =
|
|
311
|
+
const entries = toNormalizedFieldValueEntries<T, L>(field, value);
|
|
278
312
|
const results = await Promise.all(
|
|
279
313
|
entries.map(({ locale, value }) => testFn(locale, value)),
|
|
280
314
|
);
|
|
@@ -291,12 +325,15 @@ export async function someFieldValueAsync<
|
|
|
291
325
|
* @param testFn - The function to test each locale value or the direct value
|
|
292
326
|
* @returns true if all values pass the test, false otherwise
|
|
293
327
|
*/
|
|
294
|
-
export function
|
|
328
|
+
export function everyNormalizedFieldValue<
|
|
329
|
+
T = unknown,
|
|
330
|
+
L extends string = string,
|
|
331
|
+
>(
|
|
295
332
|
field: RawApiTypes.Field | ApiTypes.Field,
|
|
296
333
|
value: T | LocalizedFieldValue<T, L>,
|
|
297
334
|
testFn: (locale: L | undefined, localeValue: T) => boolean,
|
|
298
335
|
): boolean {
|
|
299
|
-
return !
|
|
336
|
+
return !someNormalizedFieldValues(
|
|
300
337
|
field,
|
|
301
338
|
value,
|
|
302
339
|
(locale, localeValue) => !testFn(locale, localeValue),
|
|
@@ -313,7 +350,7 @@ export function everyFieldValue<T = unknown, L extends string = string>(
|
|
|
313
350
|
* @param testFn - The function to test each locale value or the direct value
|
|
314
351
|
* @returns true if all values pass the test, false otherwise
|
|
315
352
|
*/
|
|
316
|
-
export async function
|
|
353
|
+
export async function everyNormalizedFieldValueAsync<
|
|
317
354
|
T = unknown,
|
|
318
355
|
L extends string = string,
|
|
319
356
|
>(
|
|
@@ -321,7 +358,7 @@ export async function everyFieldValueAsync<
|
|
|
321
358
|
value: T | LocalizedFieldValue<T, L>,
|
|
322
359
|
testFn: (locale: L | undefined, localeValue: T) => Promise<boolean>,
|
|
323
360
|
): Promise<boolean> {
|
|
324
|
-
return !(await
|
|
361
|
+
return !(await someNormalizedFieldValuesAsync(
|
|
325
362
|
field,
|
|
326
363
|
value,
|
|
327
364
|
async (locale, localeValue) => !(await testFn(locale, localeValue)),
|
|
@@ -337,12 +374,15 @@ export async function everyFieldValueAsync<
|
|
|
337
374
|
* @param value - The field value (either localized object or direct value)
|
|
338
375
|
* @param visitFn - The function to call for each locale value or the direct value
|
|
339
376
|
*/
|
|
340
|
-
export function
|
|
377
|
+
export function visitNormalizedFieldValues<
|
|
378
|
+
T = unknown,
|
|
379
|
+
L extends string = string,
|
|
380
|
+
>(
|
|
341
381
|
field: RawApiTypes.Field | ApiTypes.Field,
|
|
342
382
|
value: T | LocalizedFieldValue<T, L>,
|
|
343
383
|
visitFn: (locale: L | undefined, localeValue: T) => void,
|
|
344
384
|
): void {
|
|
345
|
-
const entries =
|
|
385
|
+
const entries = toNormalizedFieldValueEntries<T, L>(field, value);
|
|
346
386
|
for (const { locale, value } of entries) {
|
|
347
387
|
visitFn(locale, value);
|
|
348
388
|
}
|
|
@@ -357,7 +397,7 @@ export function visitFieldValue<T = unknown, L extends string = string>(
|
|
|
357
397
|
* @param value - The field value (either localized object or direct value)
|
|
358
398
|
* @param visitFn - The function to call for each locale value or the direct value
|
|
359
399
|
*/
|
|
360
|
-
export async function
|
|
400
|
+
export async function visitNormalizedFieldValuesAsync<
|
|
361
401
|
T = unknown,
|
|
362
402
|
L extends string = string,
|
|
363
403
|
>(
|
|
@@ -365,6 +405,6 @@ export async function visitFieldValueAsync<
|
|
|
365
405
|
value: T | LocalizedFieldValue<T, L>,
|
|
366
406
|
visitFn: (locale: L | undefined, localeValue: T) => Promise<void>,
|
|
367
407
|
): Promise<void> {
|
|
368
|
-
const entries =
|
|
408
|
+
const entries = toNormalizedFieldValueEntries<T, L>(field, value);
|
|
369
409
|
await Promise.all(entries.map(({ locale, value }) => visitFn(locale, value)));
|
|
370
410
|
}
|