@@ -17,7 +17,6 @@ type Args = {
1717 mergeLocaleActions : ( ( ) => void ) [ ]
1818 operation : Operation
1919 path : string
20- promises : Promise < void > [ ]
2120 req : PayloadRequest
2221 siblingData : Record < string , unknown >
2322 siblingDoc : Record < string , unknown >
@@ -44,7 +43,6 @@ export const promise = async ({
4443 mergeLocaleActions,
4544 operation,
4645 path,
47- promises,
4846 req,
4947 siblingData,
5048 siblingDoc,
@@ -171,15 +169,11 @@ export const promise = async ({
171169 }
172170
173171 case 'group' : {
174- let groupData = siblingData [ field . name ] as Record < string , unknown > ;
175- let groupDoc = siblingDoc [ field . name ] as Record < string , unknown > ;
176- let groupDocWithLocales = siblingDocWithLocales [ field . name ] as Record < string , unknown > ;
172+ if ( typeof siblingData [ field . name ] !== 'object' ) siblingData [ field . name ] = { } ;
173+ if ( typeof siblingDoc [ field . name ] !== 'object' ) siblingDoc [ field . name ] = { } ;
174+ if ( typeof siblingDocWithLocales [ field . name ] !== 'object' ) siblingDocWithLocales [ field . name ] = { } ;
177175
178- if ( typeof siblingData [ field . name ] !== 'object' ) groupData = { } ;
179- if ( typeof siblingDoc [ field . name ] !== 'object' ) groupDoc = { } ;
180- if ( typeof siblingDocWithLocales [ field . name ] !== 'object' ) groupDocWithLocales = { } ;
181-
182- traverseFields ( {
176+ await traverseFields ( {
183177 data,
184178 doc,
185179 docWithLocales,
@@ -189,11 +183,10 @@ export const promise = async ({
189183 mergeLocaleActions,
190184 operation,
191185 path : `${ path } ${ field . name } .` ,
192- promises,
193186 req,
194- siblingData : groupData ,
195- siblingDoc : groupDoc ,
196- siblingDocWithLocales : groupDocWithLocales ,
187+ siblingData : siblingData [ field . name ] as Record < string , unknown > ,
188+ siblingDoc : siblingDoc [ field . name ] as Record < string , unknown > ,
189+ siblingDocWithLocales : siblingDocWithLocales [ field . name ] as Record < string , unknown > ,
197190 skipValidation : skipValidationFromHere ,
198191 } ) ;
199192
@@ -203,9 +196,11 @@ export const promise = async ({
203196 case 'array' : {
204197 const rows = siblingData [ field . name ] ;
205198
199+ const promises = [ ] ;
200+
206201 if ( Array . isArray ( rows ) ) {
207202 rows . forEach ( ( row , i ) => {
208- traverseFields ( {
203+ promises . push ( traverseFields ( {
209204 data,
210205 doc,
211206 docWithLocales,
@@ -215,27 +210,31 @@ export const promise = async ({
215210 mergeLocaleActions,
216211 operation,
217212 path : `${ path } ${ field . name } .${ i } .` ,
218- promises,
219213 req,
220214 siblingData : row ,
221215 siblingDoc : getExistingRowDoc ( row , siblingDoc [ field . name ] ?. [ i ] ) ,
222216 siblingDocWithLocales : getExistingRowDoc ( row , siblingDocWithLocales [ field . name ] ?. [ i ] ) ,
223217 skipValidation : skipValidationFromHere ,
224- } ) ;
218+ } ) ) ;
225219 } ) ;
226220 }
221+
222+ await Promise . all ( promises ) ;
223+
227224 break ;
228225 }
229226
230227 case 'blocks' : {
231228 const rows = siblingData [ field . name ] ;
232229
230+ const promises = [ ] ;
231+
233232 if ( Array . isArray ( rows ) ) {
234233 rows . forEach ( ( row , i ) => {
235234 const block = field . blocks . find ( ( blockType ) => blockType . slug === row . blockType ) ;
236235
237236 if ( block ) {
238- traverseFields ( {
237+ promises . push ( traverseFields ( {
239238 data,
240239 doc,
241240 docWithLocales,
@@ -245,23 +244,25 @@ export const promise = async ({
245244 mergeLocaleActions,
246245 operation,
247246 path : `${ path } ${ field . name } .${ i } .` ,
248- promises,
249247 req,
250248 siblingData : row ,
251249 siblingDoc : getExistingRowDoc ( row , siblingDoc [ field . name ] ?. [ i ] ) ,
252250 siblingDocWithLocales : getExistingRowDoc ( row , siblingDocWithLocales [ field . name ] ?. [ i ] ) ,
253251 skipValidation : skipValidationFromHere ,
254- } ) ;
252+ } ) ) ;
255253 }
256254 } ) ;
257255 }
258256
257+ await Promise . all ( promises ) ;
258+
259259 break ;
260260 }
261261
262262 case 'row' :
263263 case 'collapsible' : {
264- traverseFields ( {
264+ const promises = [ ] ;
265+ promises . push ( traverseFields ( {
265266 data,
266267 doc,
267268 docWithLocales,
@@ -271,20 +272,22 @@ export const promise = async ({
271272 mergeLocaleActions,
272273 operation,
273274 path,
274- promises,
275275 req,
276276 siblingData,
277277 siblingDoc,
278278 siblingDocWithLocales,
279279 skipValidation : skipValidationFromHere ,
280- } ) ;
280+ } ) ) ;
281+
282+ await Promise . all ( promises ) ;
281283
282284 break ;
283285 }
284286
285287 case 'tabs' : {
288+ const promises = [ ] ;
286289 field . tabs . forEach ( ( tab ) => {
287- traverseFields ( {
290+ promises . push ( traverseFields ( {
288291 data,
289292 doc,
290293 docWithLocales,
@@ -294,14 +297,16 @@ export const promise = async ({
294297 mergeLocaleActions,
295298 operation,
296299 path,
297- promises,
298300 req,
299301 siblingData,
300302 siblingDoc,
301303 siblingDocWithLocales,
302304 skipValidation : skipValidationFromHere ,
303- } ) ;
305+ } ) ) ;
304306 } ) ;
307+
308+ await Promise . all ( promises ) ;
309+
305310 break ;
306311 }
307312
0 commit comments