@datocms/cma-client 5.1.10 → 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.
Files changed (206) hide show
  1. package/README.md +575 -0
  2. package/dist/cjs/fieldTypes/boolean.js +2 -2
  3. package/dist/cjs/fieldTypes/boolean.js.map +1 -1
  4. package/dist/cjs/fieldTypes/color.js +2 -2
  5. package/dist/cjs/fieldTypes/color.js.map +1 -1
  6. package/dist/cjs/fieldTypes/date.js +2 -3
  7. package/dist/cjs/fieldTypes/date.js.map +1 -1
  8. package/dist/cjs/fieldTypes/date_time.js +2 -2
  9. package/dist/cjs/fieldTypes/date_time.js.map +1 -1
  10. package/dist/cjs/fieldTypes/file.js +33 -5
  11. package/dist/cjs/fieldTypes/file.js.map +1 -1
  12. package/dist/cjs/fieldTypes/float.js +2 -2
  13. package/dist/cjs/fieldTypes/float.js.map +1 -1
  14. package/dist/cjs/fieldTypes/gallery.js +20 -5
  15. package/dist/cjs/fieldTypes/gallery.js.map +1 -1
  16. package/dist/cjs/fieldTypes/index.js +2 -2
  17. package/dist/cjs/fieldTypes/index.js.map +1 -1
  18. package/dist/cjs/fieldTypes/integer.js +2 -2
  19. package/dist/cjs/fieldTypes/integer.js.map +1 -1
  20. package/dist/cjs/fieldTypes/json.js +2 -3
  21. package/dist/cjs/fieldTypes/json.js.map +1 -1
  22. package/dist/cjs/fieldTypes/lat_lon.js +2 -2
  23. package/dist/cjs/fieldTypes/lat_lon.js.map +1 -1
  24. package/dist/cjs/fieldTypes/link.js +4 -4
  25. package/dist/cjs/fieldTypes/link.js.map +1 -1
  26. package/dist/cjs/fieldTypes/links.js +5 -3
  27. package/dist/cjs/fieldTypes/links.js.map +1 -1
  28. package/dist/cjs/fieldTypes/rich_text.js +4 -6
  29. package/dist/cjs/fieldTypes/rich_text.js.map +1 -1
  30. package/dist/cjs/fieldTypes/seo.js +2 -3
  31. package/dist/cjs/fieldTypes/seo.js.map +1 -1
  32. package/dist/cjs/fieldTypes/single_block.js +7 -7
  33. package/dist/cjs/fieldTypes/single_block.js.map +1 -1
  34. package/dist/cjs/fieldTypes/slug.js +2 -3
  35. package/dist/cjs/fieldTypes/slug.js.map +1 -1
  36. package/dist/cjs/fieldTypes/string.js +2 -2
  37. package/dist/cjs/fieldTypes/string.js.map +1 -1
  38. package/dist/cjs/fieldTypes/structured_text.js +4 -6
  39. package/dist/cjs/fieldTypes/structured_text.js.map +1 -1
  40. package/dist/cjs/fieldTypes/text.js +2 -3
  41. package/dist/cjs/fieldTypes/text.js.map +1 -1
  42. package/dist/cjs/fieldTypes/video.js +2 -2
  43. package/dist/cjs/fieldTypes/video.js.map +1 -1
  44. package/dist/cjs/generated/Client.js +1 -1
  45. package/dist/cjs/index.js +4 -4
  46. package/dist/cjs/index.js.map +1 -1
  47. package/dist/cjs/utilities/buildBlockRecord.js +8 -7
  48. package/dist/cjs/utilities/buildBlockRecord.js.map +1 -1
  49. package/dist/cjs/utilities/inspectItem.js +397 -0
  50. package/dist/cjs/utilities/inspectItem.js.map +1 -0
  51. package/dist/cjs/utilities/{blocks.js → nonRecursiveBlocks.js} +106 -111
  52. package/dist/cjs/utilities/nonRecursiveBlocks.js.map +1 -0
  53. package/dist/cjs/utilities/{fieldValue.js → normalizedFieldValues.js} +53 -41
  54. package/dist/cjs/utilities/normalizedFieldValues.js.map +1 -0
  55. package/dist/cjs/utilities/recursiveBlocks.js +121 -80
  56. package/dist/cjs/utilities/recursiveBlocks.js.map +1 -1
  57. package/dist/cjs/utilities/schemaRepository.js +2 -2
  58. package/dist/esm/fieldTypes/boolean.d.ts +1 -1
  59. package/dist/esm/fieldTypes/boolean.js +2 -2
  60. package/dist/esm/fieldTypes/boolean.js.map +1 -1
  61. package/dist/esm/fieldTypes/color.d.ts +1 -1
  62. package/dist/esm/fieldTypes/color.js +2 -2
  63. package/dist/esm/fieldTypes/color.js.map +1 -1
  64. package/dist/esm/fieldTypes/date.d.ts +1 -1
  65. package/dist/esm/fieldTypes/date.js +2 -3
  66. package/dist/esm/fieldTypes/date.js.map +1 -1
  67. package/dist/esm/fieldTypes/date_time.d.ts +1 -1
  68. package/dist/esm/fieldTypes/date_time.js +2 -2
  69. package/dist/esm/fieldTypes/date_time.js.map +1 -1
  70. package/dist/esm/fieldTypes/file.d.ts +68 -1
  71. package/dist/esm/fieldTypes/file.js +29 -3
  72. package/dist/esm/fieldTypes/file.js.map +1 -1
  73. package/dist/esm/fieldTypes/float.d.ts +1 -1
  74. package/dist/esm/fieldTypes/float.js +2 -2
  75. package/dist/esm/fieldTypes/float.js.map +1 -1
  76. package/dist/esm/fieldTypes/gallery.d.ts +27 -11
  77. package/dist/esm/fieldTypes/gallery.js +17 -4
  78. package/dist/esm/fieldTypes/gallery.js.map +1 -1
  79. package/dist/esm/fieldTypes/index.d.ts +2 -2
  80. package/dist/esm/fieldTypes/index.js +2 -2
  81. package/dist/esm/fieldTypes/index.js.map +1 -1
  82. package/dist/esm/fieldTypes/integer.d.ts +1 -1
  83. package/dist/esm/fieldTypes/integer.js +2 -2
  84. package/dist/esm/fieldTypes/integer.js.map +1 -1
  85. package/dist/esm/fieldTypes/json.d.ts +1 -1
  86. package/dist/esm/fieldTypes/json.js +2 -3
  87. package/dist/esm/fieldTypes/json.js.map +1 -1
  88. package/dist/esm/fieldTypes/lat_lon.d.ts +1 -1
  89. package/dist/esm/fieldTypes/lat_lon.js +2 -2
  90. package/dist/esm/fieldTypes/lat_lon.js.map +1 -1
  91. package/dist/esm/fieldTypes/link.d.ts +1 -1
  92. package/dist/esm/fieldTypes/link.js +4 -4
  93. package/dist/esm/fieldTypes/link.js.map +1 -1
  94. package/dist/esm/fieldTypes/links.d.ts +1 -1
  95. package/dist/esm/fieldTypes/links.js +5 -3
  96. package/dist/esm/fieldTypes/links.js.map +1 -1
  97. package/dist/esm/fieldTypes/rich_text.d.ts +1 -1
  98. package/dist/esm/fieldTypes/rich_text.js +4 -6
  99. package/dist/esm/fieldTypes/rich_text.js.map +1 -1
  100. package/dist/esm/fieldTypes/seo.d.ts +1 -1
  101. package/dist/esm/fieldTypes/seo.js +2 -3
  102. package/dist/esm/fieldTypes/seo.js.map +1 -1
  103. package/dist/esm/fieldTypes/single_block.d.ts +1 -1
  104. package/dist/esm/fieldTypes/single_block.js +7 -7
  105. package/dist/esm/fieldTypes/single_block.js.map +1 -1
  106. package/dist/esm/fieldTypes/slug.d.ts +1 -1
  107. package/dist/esm/fieldTypes/slug.js +2 -3
  108. package/dist/esm/fieldTypes/slug.js.map +1 -1
  109. package/dist/esm/fieldTypes/string.d.ts +1 -1
  110. package/dist/esm/fieldTypes/string.js +2 -2
  111. package/dist/esm/fieldTypes/string.js.map +1 -1
  112. package/dist/esm/fieldTypes/structured_text.d.ts +1 -1
  113. package/dist/esm/fieldTypes/structured_text.js +4 -6
  114. package/dist/esm/fieldTypes/structured_text.js.map +1 -1
  115. package/dist/esm/fieldTypes/text.d.ts +1 -1
  116. package/dist/esm/fieldTypes/text.js +2 -3
  117. package/dist/esm/fieldTypes/text.js.map +1 -1
  118. package/dist/esm/fieldTypes/video.d.ts +1 -1
  119. package/dist/esm/fieldTypes/video.js +2 -2
  120. package/dist/esm/fieldTypes/video.js.map +1 -1
  121. package/dist/esm/generated/Client.js +1 -1
  122. package/dist/esm/index.d.ts +4 -4
  123. package/dist/esm/index.js +4 -4
  124. package/dist/esm/index.js.map +1 -1
  125. package/dist/esm/utilities/buildBlockRecord.js +9 -8
  126. package/dist/esm/utilities/buildBlockRecord.js.map +1 -1
  127. package/dist/esm/utilities/inspectItem.d.ts +8 -0
  128. package/dist/esm/utilities/inspectItem.js +393 -0
  129. package/dist/esm/utilities/inspectItem.js.map +1 -0
  130. package/dist/esm/utilities/itemDefinition.d.ts +28 -4
  131. package/dist/esm/utilities/nonRecursiveBlocks.d.ts +179 -0
  132. package/dist/esm/utilities/{blocks.js → nonRecursiveBlocks.js} +91 -96
  133. package/dist/esm/utilities/nonRecursiveBlocks.js.map +1 -0
  134. package/dist/{types/utilities/fieldValue.d.ts → esm/utilities/normalizedFieldValues.d.ts} +15 -14
  135. package/dist/esm/utilities/{fieldValue.js → normalizedFieldValues.js} +39 -28
  136. package/dist/esm/utilities/normalizedFieldValues.js.map +1 -0
  137. package/dist/esm/utilities/recursiveBlocks.d.ts +92 -9
  138. package/dist/esm/utilities/recursiveBlocks.js +113 -72
  139. package/dist/esm/utilities/recursiveBlocks.js.map +1 -1
  140. package/dist/esm/utilities/schemaRepository.d.ts +2 -2
  141. package/dist/esm/utilities/schemaRepository.js +2 -2
  142. package/dist/types/fieldTypes/boolean.d.ts +1 -1
  143. package/dist/types/fieldTypes/color.d.ts +1 -1
  144. package/dist/types/fieldTypes/date.d.ts +1 -1
  145. package/dist/types/fieldTypes/date_time.d.ts +1 -1
  146. package/dist/types/fieldTypes/file.d.ts +68 -1
  147. package/dist/types/fieldTypes/float.d.ts +1 -1
  148. package/dist/types/fieldTypes/gallery.d.ts +27 -11
  149. package/dist/types/fieldTypes/index.d.ts +2 -2
  150. package/dist/types/fieldTypes/integer.d.ts +1 -1
  151. package/dist/types/fieldTypes/json.d.ts +1 -1
  152. package/dist/types/fieldTypes/lat_lon.d.ts +1 -1
  153. package/dist/types/fieldTypes/link.d.ts +1 -1
  154. package/dist/types/fieldTypes/links.d.ts +1 -1
  155. package/dist/types/fieldTypes/rich_text.d.ts +1 -1
  156. package/dist/types/fieldTypes/seo.d.ts +1 -1
  157. package/dist/types/fieldTypes/single_block.d.ts +1 -1
  158. package/dist/types/fieldTypes/slug.d.ts +1 -1
  159. package/dist/types/fieldTypes/string.d.ts +1 -1
  160. package/dist/types/fieldTypes/structured_text.d.ts +1 -1
  161. package/dist/types/fieldTypes/text.d.ts +1 -1
  162. package/dist/types/fieldTypes/video.d.ts +1 -1
  163. package/dist/types/index.d.ts +4 -4
  164. package/dist/types/utilities/inspectItem.d.ts +8 -0
  165. package/dist/types/utilities/itemDefinition.d.ts +28 -4
  166. package/dist/types/utilities/nonRecursiveBlocks.d.ts +179 -0
  167. package/dist/{esm/utilities/fieldValue.d.ts → types/utilities/normalizedFieldValues.d.ts} +15 -14
  168. package/dist/types/utilities/recursiveBlocks.d.ts +92 -9
  169. package/dist/types/utilities/schemaRepository.d.ts +2 -2
  170. package/package.json +3 -3
  171. package/src/fieldTypes/boolean.ts +5 -3
  172. package/src/fieldTypes/color.ts +5 -3
  173. package/src/fieldTypes/date.ts +5 -4
  174. package/src/fieldTypes/date_time.ts +5 -3
  175. package/src/fieldTypes/file.ts +98 -4
  176. package/src/fieldTypes/float.ts +5 -3
  177. package/src/fieldTypes/gallery.ts +53 -20
  178. package/src/fieldTypes/index.ts +2 -3
  179. package/src/fieldTypes/integer.ts +5 -3
  180. package/src/fieldTypes/json.ts +5 -4
  181. package/src/fieldTypes/lat_lon.ts +5 -3
  182. package/src/fieldTypes/link.ts +7 -5
  183. package/src/fieldTypes/links.ts +8 -4
  184. package/src/fieldTypes/rich_text.ts +7 -7
  185. package/src/fieldTypes/seo.ts +5 -4
  186. package/src/fieldTypes/single_block.ts +10 -8
  187. package/src/fieldTypes/slug.ts +5 -4
  188. package/src/fieldTypes/string.ts +5 -3
  189. package/src/fieldTypes/structured_text.ts +7 -7
  190. package/src/fieldTypes/text.ts +5 -4
  191. package/src/fieldTypes/video.ts +5 -3
  192. package/src/generated/Client.ts +1 -1
  193. package/src/index.ts +4 -4
  194. package/src/utilities/buildBlockRecord.ts +16 -15
  195. package/src/utilities/inspectItem.ts +590 -0
  196. package/src/utilities/itemDefinition.ts +30 -3
  197. package/src/utilities/{blocks.ts → nonRecursiveBlocks.ts} +170 -136
  198. package/src/utilities/{fieldValue.ts → normalizedFieldValues.ts} +70 -30
  199. package/src/utilities/recursiveBlocks.ts +186 -171
  200. package/src/utilities/schemaRepository.ts +2 -2
  201. package/dist/cjs/utilities/blocks.js.map +0 -1
  202. package/dist/cjs/utilities/fieldValue.js.map +0 -1
  203. package/dist/esm/utilities/blocks.d.ts +0 -180
  204. package/dist/esm/utilities/blocks.js.map +0 -1
  205. package/dist/esm/utilities/fieldValue.js.map +0 -1
  206. package/dist/types/utilities/blocks.d.ts +0 -180
@@ -3,33 +3,43 @@ import {
3
3
  isItemWithOptionalIdAndMeta,
4
4
  } from '../fieldTypes';
5
5
  import type * as ApiTypes from '../generated/ApiTypes';
6
- import type * as RawApiTypes from '../generated/RawApiTypes';
7
6
  import {
8
- nonRecursiveFilterBlocksInFieldValueAsync,
9
- nonRecursiveFindAllBlocksInFieldValueAsync,
10
- nonRecursiveMapBlocksInFieldValueAsync,
11
- nonRecursiveReduceBlocksInFieldValueAsync,
12
- nonRecursiveSomeBlocksInFieldValueAsync,
13
- nonRecursiveVisitBlocksInFieldValueAsync,
14
- } from './blocks';
15
- import { mapFieldValueAsync, visitFieldValueAsync } from './fieldValue';
7
+ nonRecursiveFilterBlocksInNonLocalizedFieldValueAsync,
8
+ nonRecursiveFindAllBlocksInNonLocalizedFieldValueAsync,
9
+ nonRecursiveMapBlocksInNonLocalizedFieldValueAsync,
10
+ nonRecursiveReduceBlocksInNonLocalizedFieldValueAsync,
11
+ nonRecursiveSomeBlocksInNonLocalizedFieldValueAsync,
12
+ nonRecursiveVisitBlocksInNonLocalizedFieldValueAsync,
13
+ } from './nonRecursiveBlocks';
16
14
  import type { SchemaRepository } from './schemaRepository';
17
15
 
18
16
  /**
19
- * Path through a field value (ie. ['content', 0, 'attributes', 'title'])
17
+ * Path through a non-localized field value (ie. ['content', 0, 'attributes', 'title'])
20
18
  */
21
19
  export type TreePath = readonly (string | number)[];
22
20
 
23
- export async function visitBlocksInFieldValues(
21
+ /**
22
+ * Recursively visit every block in a non-localized field value and all nested blocks within those blocks.
23
+ * This function traverses not only the direct blocks in the non-localized field value but also recursively
24
+ * visits blocks contained within the attributes of each block, creating a complete traversal
25
+ * of the entire block hierarchy.
26
+ *
27
+ * @param schemaRepository - Repository for accessing DatoCMS schema information to resolve block structures
28
+ * @param fieldType - The type of DatoCMS field definition that determines how the value is processed
29
+ * @param nonLocalizedFieldValue - The non-localized field value containing blocks to visit
30
+ * @param visitor - Asynchronous function called for each block found, including nested blocks
31
+ * @returns Promise that resolves when all blocks and nested blocks have been visited
32
+ */
33
+ export async function visitBlocksInNonLocalizedFieldValue(
24
34
  schemaRepository: SchemaRepository,
25
- field: RawApiTypes.Field | ApiTypes.Field,
26
- value: unknown,
35
+ fieldType: ApiTypes.Field['field_type'],
36
+ nonLocalizedFieldValue: unknown,
27
37
  visitor: (item: BlockItemInARequest, path: TreePath) => void | Promise<void>,
28
38
  path: TreePath = [],
29
39
  ): Promise<void> {
30
- await nonRecursiveVisitBlocksInFieldValueAsync(
31
- field,
32
- value,
40
+ await nonRecursiveVisitBlocksInNonLocalizedFieldValueAsync(
41
+ fieldType,
42
+ nonLocalizedFieldValue,
33
43
  async (block, innerPath) => {
34
44
  await visitor(block, [...path, ...innerPath]);
35
45
 
@@ -44,33 +54,33 @@ export async function visitBlocksInFieldValues(
44
54
  const fields = await schemaRepository.getRawItemTypeFields(itemType);
45
55
 
46
56
  for (const field of fields) {
47
- await visitFieldValueAsync(
48
- field,
57
+ await visitBlocksInNonLocalizedFieldValue(
58
+ schemaRepository,
59
+ fieldType,
49
60
  block.attributes[field.attributes.api_key],
50
- (locale, valueForLocale) =>
51
- visitBlocksInFieldValues(
52
- schemaRepository,
53
- field,
54
- valueForLocale,
55
- visitor,
56
- [
57
- ...path,
58
- ...innerPath,
59
- 'attributes',
60
- field.attributes.api_key,
61
- ...(locale ? [locale] : []),
62
- ],
63
- ),
61
+ visitor,
62
+ [...path, ...innerPath, 'attributes', field.attributes.api_key],
64
63
  );
65
64
  }
66
65
  },
67
66
  );
68
67
  }
69
68
 
70
- export async function findAllBlocksInFieldValues(
69
+ /**
70
+ * Recursively find all blocks that match the predicate function in a non-localized field value.
71
+ * Searches through all direct blocks and recursively through nested blocks within
72
+ * the attributes of each block, returning all matches found throughout the hierarchy.
73
+ *
74
+ * @param schemaRepository - Repository for accessing DatoCMS schema information to resolve block structures
75
+ * @param fieldType - The type of DatoCMS field definition that determines how the value is processed
76
+ * @param nonLocalizedFieldValue - The non-localized field value containing blocks to search
77
+ * @param predicate - Asynchronous function that tests each block, including nested ones
78
+ * @returns Promise that resolves to an array of objects, each containing a matching block and its full path
79
+ */
80
+ export async function findAllBlocksInNonLocalizedFieldValue(
71
81
  schemaRepository: SchemaRepository,
72
- field: RawApiTypes.Field | ApiTypes.Field,
73
- value: unknown,
82
+ fieldType: ApiTypes.Field['field_type'],
83
+ nonLocalizedFieldValue: unknown,
74
84
  predicate: (
75
85
  item: BlockItemInARequest,
76
86
  path: TreePath,
@@ -79,11 +89,13 @@ export async function findAllBlocksInFieldValues(
79
89
  ): Promise<Array<{ item: BlockItemInARequest; path: TreePath }>> {
80
90
  const results: Array<{ item: BlockItemInARequest; path: TreePath }> = [];
81
91
 
82
- const directMatches = await nonRecursiveFindAllBlocksInFieldValueAsync(
83
- field,
84
- value,
85
- async (block, innerPath) => await predicate(block, [...path, ...innerPath]),
86
- );
92
+ const directMatches =
93
+ await nonRecursiveFindAllBlocksInNonLocalizedFieldValueAsync(
94
+ fieldType,
95
+ nonLocalizedFieldValue,
96
+ async (block, innerPath) =>
97
+ await predicate(block, [...path, ...innerPath]),
98
+ );
87
99
 
88
100
  results.push(
89
101
  ...directMatches.map(({ item, path: innerPath }) => ({
@@ -92,9 +104,9 @@ export async function findAllBlocksInFieldValues(
92
104
  })),
93
105
  );
94
106
 
95
- await nonRecursiveVisitBlocksInFieldValueAsync(
96
- field,
97
- value,
107
+ await nonRecursiveVisitBlocksInNonLocalizedFieldValueAsync(
108
+ fieldType,
109
+ nonLocalizedFieldValue,
98
110
  async (block, innerPath) => {
99
111
  if (!isItemWithOptionalIdAndMeta(block)) {
100
112
  return;
@@ -107,26 +119,14 @@ export async function findAllBlocksInFieldValues(
107
119
  const fields = await schemaRepository.getRawItemTypeFields(itemType);
108
120
 
109
121
  for (const field of fields) {
110
- await visitFieldValueAsync(
111
- field,
122
+ const nestedResults = await findAllBlocksInNonLocalizedFieldValue(
123
+ schemaRepository,
124
+ fieldType,
112
125
  block.attributes[field.attributes.api_key],
113
- async (locale, valueForLocale) => {
114
- const nestedResults = await findAllBlocksInFieldValues(
115
- schemaRepository,
116
- field,
117
- valueForLocale,
118
- predicate,
119
- [
120
- ...path,
121
- ...innerPath,
122
- 'attributes',
123
- field.attributes.api_key,
124
- ...(locale ? [locale] : []),
125
- ],
126
- );
127
- results.push(...nestedResults);
128
- },
126
+ predicate,
127
+ [...path, ...innerPath, 'attributes', field.attributes.api_key],
129
128
  );
129
+ results.push(...nestedResults);
130
130
  }
131
131
  },
132
132
  );
@@ -134,19 +134,31 @@ export async function findAllBlocksInFieldValues(
134
134
  return results;
135
135
  }
136
136
 
137
- export async function filterBlocksInFieldValues(
137
+ /**
138
+ * Recursively filter blocks in a non-localized field value, removing those that don't match the predicate.
139
+ * Creates a new non-localized field value structure containing only blocks that pass the predicate test,
140
+ * including recursive filtering of nested blocks within block attributes. The filtering
141
+ * preserves the original non-localized field value structure and hierarchy.
142
+ *
143
+ * @param schemaRepository - Repository for accessing DatoCMS schema information to resolve block structures
144
+ * @param fieldType - The type of DatoCMS field definition that determines how the value is processed
145
+ * @param nonLocalizedFieldValue - The non-localized field value containing blocks to filter
146
+ * @param predicate - Asynchronous function that tests each block, including nested ones
147
+ * @returns Promise that resolves to the new non-localized field value with recursively filtered blocks
148
+ */
149
+ export async function filterBlocksInNonLocalizedFieldValue(
138
150
  schemaRepository: SchemaRepository,
139
- field: RawApiTypes.Field | ApiTypes.Field,
140
- value: unknown,
151
+ fieldType: ApiTypes.Field['field_type'],
152
+ nonLocalizedFieldValue: unknown,
141
153
  predicate: (
142
154
  item: BlockItemInARequest,
143
155
  path: TreePath,
144
156
  ) => boolean | Promise<boolean>,
145
157
  path: TreePath = [],
146
158
  ): Promise<unknown> {
147
- return nonRecursiveFilterBlocksInFieldValueAsync(
148
- field,
149
- value,
159
+ return nonRecursiveFilterBlocksInNonLocalizedFieldValueAsync(
160
+ fieldType,
161
+ nonLocalizedFieldValue,
150
162
  async (block, innerPath) => {
151
163
  const blockPath = [...path, ...innerPath];
152
164
  const passes = await predicate(block, blockPath);
@@ -166,23 +178,14 @@ export async function filterBlocksInFieldValues(
166
178
  const fields = await schemaRepository.getRawItemTypeFields(itemType);
167
179
 
168
180
  for (const field of fields) {
169
- block.attributes[field.attributes.api_key] = await mapFieldValueAsync(
170
- field,
171
- block.attributes[field.attributes.api_key],
172
- (locale, valueForLocale) =>
173
- filterBlocksInFieldValues(
174
- schemaRepository,
175
- field,
176
- valueForLocale,
177
- predicate,
178
- [
179
- ...blockPath,
180
- 'attributes',
181
- field.attributes.api_key,
182
- ...(locale ? [locale] : []),
183
- ],
184
- ),
185
- );
181
+ block.attributes[field.attributes.api_key] =
182
+ await filterBlocksInNonLocalizedFieldValue(
183
+ schemaRepository,
184
+ fieldType,
185
+ block.attributes[field.attributes.api_key],
186
+ predicate,
187
+ [...blockPath, 'attributes', field.attributes.api_key],
188
+ );
186
189
  }
187
190
 
188
191
  return true;
@@ -190,10 +193,23 @@ export async function filterBlocksInFieldValues(
190
193
  );
191
194
  }
192
195
 
193
- export async function reduceBlocksInFieldValues<R>(
196
+ /**
197
+ * Recursively reduce all blocks in a non-localized field value to a single value by applying a reducer function.
198
+ * Processes each direct block and recursively processes nested blocks within block attributes,
199
+ * accumulating results from the entire block hierarchy into a single value.
200
+ *
201
+ * @template R - The type of the accumulated result
202
+ * @param schemaRepository - Repository for accessing DatoCMS schema information to resolve block structures
203
+ * @param fieldType - The type of DatoCMS field definition that determines how the value is processed
204
+ * @param nonLocalizedFieldValue - The non-localized field value containing blocks to reduce
205
+ * @param reducer - Asynchronous function that processes each block and updates the accumulator
206
+ * @param initialNonLocalizedFieldValue - The initial value for the accumulator
207
+ * @returns Promise that resolves to the final accumulated value from all blocks in the hierarchy
208
+ */
209
+ export async function reduceBlocksInNonLocalizedFieldValue<R>(
194
210
  schemaRepository: SchemaRepository,
195
- field: RawApiTypes.Field | ApiTypes.Field,
196
- value: unknown,
211
+ fieldType: ApiTypes.Field['field_type'],
212
+ nonLocalizedFieldValue: unknown,
197
213
  reducer: (
198
214
  accumulator: R,
199
215
  item: BlockItemInARequest,
@@ -202,17 +218,17 @@ export async function reduceBlocksInFieldValues<R>(
202
218
  initialValue: R,
203
219
  path: TreePath = [],
204
220
  ): Promise<R> {
205
- let accumulator = await nonRecursiveReduceBlocksInFieldValueAsync(
206
- field,
207
- value,
221
+ let accumulator = await nonRecursiveReduceBlocksInNonLocalizedFieldValueAsync(
222
+ fieldType,
223
+ nonLocalizedFieldValue,
208
224
  async (acc, block, innerPath) =>
209
225
  await reducer(acc, block, [...path, ...innerPath]),
210
226
  initialValue,
211
227
  );
212
228
 
213
- await nonRecursiveVisitBlocksInFieldValueAsync(
214
- field,
215
- value,
229
+ await nonRecursiveVisitBlocksInNonLocalizedFieldValueAsync(
230
+ fieldType,
231
+ nonLocalizedFieldValue,
216
232
  async (block, innerPath) => {
217
233
  if (!isItemWithOptionalIdAndMeta(block)) {
218
234
  return;
@@ -225,25 +241,13 @@ export async function reduceBlocksInFieldValues<R>(
225
241
  const fields = await schemaRepository.getRawItemTypeFields(itemType);
226
242
 
227
243
  for (const field of fields) {
228
- await visitFieldValueAsync(
229
- field,
244
+ accumulator = await reduceBlocksInNonLocalizedFieldValue(
245
+ schemaRepository,
246
+ fieldType,
230
247
  block.attributes[field.attributes.api_key],
231
- async (locale, valueForLocale) => {
232
- accumulator = await reduceBlocksInFieldValues(
233
- schemaRepository,
234
- field,
235
- valueForLocale,
236
- reducer,
237
- accumulator,
238
- [
239
- ...path,
240
- ...innerPath,
241
- 'attributes',
242
- field.attributes.api_key,
243
- ...(locale ? [locale] : []),
244
- ],
245
- );
246
- },
248
+ reducer,
249
+ accumulator,
250
+ [...path, ...innerPath, 'attributes', field.attributes.api_key],
247
251
  );
248
252
  }
249
253
  },
@@ -252,19 +256,31 @@ export async function reduceBlocksInFieldValues<R>(
252
256
  return accumulator;
253
257
  }
254
258
 
255
- export async function someBlocksInFieldValues(
259
+ /**
260
+ * Recursively check if any block in the non-localized field value matches the predicate function.
261
+ * Tests both direct blocks and recursively tests nested blocks within block attributes.
262
+ * Returns true as soon as the first matching block is found anywhere in the hierarchy
263
+ * (short-circuit evaluation).
264
+ *
265
+ * @param schemaRepository - Repository for accessing DatoCMS schema information to resolve block structures
266
+ * @param fieldType - The type of DatoCMS field definition that determines how the value is processed
267
+ * @param nonLocalizedFieldValue - The non-localized field value containing blocks to test
268
+ * @param predicate - Asynchronous function that tests each block, including nested ones
269
+ * @returns Promise that resolves to true if any block in the hierarchy matches, false otherwise
270
+ */
271
+ export async function someBlocksInNonLocalizedFieldValue(
256
272
  schemaRepository: SchemaRepository,
257
- field: RawApiTypes.Field | ApiTypes.Field,
258
- value: unknown,
273
+ fieldType: ApiTypes.Field['field_type'],
274
+ nonLocalizedFieldValue: unknown,
259
275
  predicate: (
260
276
  item: BlockItemInARequest,
261
277
  path: TreePath,
262
278
  ) => boolean | Promise<boolean>,
263
279
  path: TreePath = [],
264
280
  ): Promise<boolean> {
265
- const directMatch = await nonRecursiveSomeBlocksInFieldValueAsync(
266
- field,
267
- value,
281
+ const directMatch = await nonRecursiveSomeBlocksInNonLocalizedFieldValueAsync(
282
+ fieldType,
283
+ nonLocalizedFieldValue,
268
284
  async (block, innerPath) => await predicate(block, [...path, ...innerPath]),
269
285
  );
270
286
 
@@ -273,9 +289,9 @@ export async function someBlocksInFieldValues(
273
289
  }
274
290
 
275
291
  let found = false;
276
- await nonRecursiveVisitBlocksInFieldValueAsync(
277
- field,
278
- value,
292
+ await nonRecursiveVisitBlocksInNonLocalizedFieldValueAsync(
293
+ fieldType,
294
+ nonLocalizedFieldValue,
279
295
  async (block, innerPath) => {
280
296
  if (found || !isItemWithOptionalIdAndMeta(block)) {
281
297
  return;
@@ -290,31 +306,17 @@ export async function someBlocksInFieldValues(
290
306
  for (const field of fields) {
291
307
  if (found) break;
292
308
 
293
- await visitFieldValueAsync(
294
- field,
309
+ const nestedMatch = await someBlocksInNonLocalizedFieldValue(
310
+ schemaRepository,
311
+ fieldType,
295
312
  block.attributes[field.attributes.api_key],
296
- async (locale, valueForLocale) => {
297
- if (found) return;
298
-
299
- const nestedMatch = await someBlocksInFieldValues(
300
- schemaRepository,
301
- field,
302
- valueForLocale,
303
- predicate,
304
- [
305
- ...path,
306
- ...innerPath,
307
- 'attributes',
308
- field.attributes.api_key,
309
- ...(locale ? [locale] : []),
310
- ],
311
- );
312
-
313
- if (nestedMatch) {
314
- found = true;
315
- }
316
- },
313
+ predicate,
314
+ [...path, ...innerPath, 'attributes', field.attributes.api_key],
317
315
  );
316
+
317
+ if (nestedMatch) {
318
+ found = true;
319
+ }
318
320
  }
319
321
  },
320
322
  );
@@ -322,38 +324,62 @@ export async function someBlocksInFieldValues(
322
324
  return found;
323
325
  }
324
326
 
325
- export async function everyBlockInFieldValues(
327
+ /**
328
+ * Recursively check if every block in the non-localized field value matches the predicate function.
329
+ * Tests both direct blocks and recursively tests nested blocks within block attributes.
330
+ * Returns false as soon as the first non-matching block is found anywhere in the hierarchy
331
+ * (short-circuit evaluation).
332
+ *
333
+ * @param schemaRepository - Repository for accessing DatoCMS schema information to resolve block structures
334
+ * @param fieldType - The type of DatoCMS field definition that determines how the value is processed
335
+ * @param nonLocalizedFieldValue - The non-localized field value containing blocks to test
336
+ * @param predicate - Asynchronous function that tests each block, including nested ones
337
+ * @returns Promise that resolves to true if all blocks in the hierarchy match, false otherwise
338
+ */
339
+ export async function everyBlockInNonLocalizedFieldValue(
326
340
  schemaRepository: SchemaRepository,
327
- field: RawApiTypes.Field | ApiTypes.Field,
328
- value: unknown,
341
+ fieldType: ApiTypes.Field['field_type'],
342
+ nonLocalizedFieldValue: unknown,
329
343
  predicate: (
330
344
  item: BlockItemInARequest,
331
345
  path: TreePath,
332
346
  ) => boolean | Promise<boolean>,
333
347
  path: TreePath = [],
334
348
  ): Promise<boolean> {
335
- return !(await someBlocksInFieldValues(
349
+ return !(await someBlocksInNonLocalizedFieldValue(
336
350
  schemaRepository,
337
- field,
338
- value,
351
+ fieldType,
352
+ nonLocalizedFieldValue,
339
353
  async (item, path) => !(await predicate(item, path)),
340
354
  path,
341
355
  ));
342
356
  }
343
357
 
344
- export async function mapBlocksInFieldValues(
358
+ /**
359
+ * Recursively transform blocks in a non-localized field value by applying a mapping function to each block.
360
+ * Creates a new non-localized field value structure with transformed blocks while preserving the original
361
+ * structure. Applies the mapping function to both direct blocks and recursively to nested
362
+ * blocks within block attributes throughout the entire hierarchy.
363
+ *
364
+ * @param schemaRepository - Repository for accessing DatoCMS schema information to resolve block structures
365
+ * @param fieldType - The type of DatoCMS field definition that determines how the value is processed
366
+ * @param nonLocalizedFieldValue - The non-localized field value containing blocks to transform
367
+ * @param mapper - Asynchronous function that transforms each block, including nested ones
368
+ * @returns Promise that resolves to the new non-localized field value with recursively transformed blocks
369
+ */
370
+ export async function mapBlocksInNonLocalizedFieldValue(
345
371
  schemaRepository: SchemaRepository,
346
- field: RawApiTypes.Field | ApiTypes.Field,
347
- value: unknown,
372
+ fieldType: ApiTypes.Field['field_type'],
373
+ nonLocalizedFieldValue: unknown,
348
374
  mapper: (
349
375
  item: BlockItemInARequest,
350
376
  path: TreePath,
351
377
  ) => BlockItemInARequest | Promise<BlockItemInARequest>,
352
378
  path: TreePath = [],
353
379
  ) {
354
- return nonRecursiveMapBlocksInFieldValueAsync(
355
- field,
356
- value,
380
+ return nonRecursiveMapBlocksInNonLocalizedFieldValueAsync(
381
+ fieldType,
382
+ nonLocalizedFieldValue,
357
383
  async (block, innerPath) => {
358
384
  const newBlock = await mapper(block, [...path, ...innerPath]);
359
385
 
@@ -369,23 +395,12 @@ export async function mapBlocksInFieldValues(
369
395
 
370
396
  for (const field of fields) {
371
397
  newBlock.attributes[field.attributes.api_key] =
372
- await mapFieldValueAsync(
373
- field,
398
+ await mapBlocksInNonLocalizedFieldValue(
399
+ schemaRepository,
400
+ fieldType,
374
401
  newBlock.attributes[field.attributes.api_key],
375
- (locale, valueForLocale) =>
376
- mapBlocksInFieldValues(
377
- schemaRepository,
378
- field,
379
- valueForLocale,
380
- mapper,
381
- [
382
- ...path,
383
- ...innerPath,
384
- 'attributes',
385
- field.attributes.api_key,
386
- ...(locale ? [locale] : []),
387
- ],
388
- ),
402
+ mapper,
403
+ [...path, ...innerPath, 'attributes', field.attributes.api_key],
389
404
  );
390
405
  }
391
406
 
@@ -34,7 +34,7 @@ interface GenericClient {
34
34
  * - **Caching schema entities**: Automatically caches item types, fields, fieldsets,
35
35
  * and plugins after the first API request, returning cached results on subsequent calls
36
36
  * - **Complex traversal operations**: Essential when using utilities like
37
- * `mapBlocksInFieldValues()` that need to repeatedly lookup block models and fields
37
+ * `mapBlocksInNonLocalizedFieldValue()` that need to repeatedly lookup block models and fields
38
38
  * while traversing nested content structures
39
39
  * - **Bulk operations**: Ideal for scripts that process multiple records of different
40
40
  * types and need efficient access to schema information
@@ -66,7 +66,7 @@ interface GenericClient {
66
66
  * const sameBlogPost = await schemaRepository.getItemTypeByApiKey('blog_post');
67
67
  *
68
68
  * // Pass the repository to utilities that need schema information
69
- * await mapBlocksInFieldValues(schemaRepository, record, (block) => {
69
+ * await mapBlocksInNonLocalizedFieldValue(schemaRepository, record, (block) => {
70
70
  * // The utility will use the cached schema data internally
71
71
  * });
72
72
  * ```
@@ -1 +0,0 @@
1
- {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../src/utilities/blocks.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fieldValue.js","sourceRoot":"","sources":["../../../src/utilities/fieldValue.ts"],"names":[],"mappings":"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"}