33 */
44import fs from 'fs' ;
55import path from 'path' ;
6- import forEach from 'lodash/forEach'
6+ import forEach from 'lodash/forEach' ;
77import { configHandler , cliux , messageHandler , sanitizePath } from '@contentstack/cli-utilities' ;
88import { MergeParams } from '../interfaces' ;
99
@@ -73,7 +73,7 @@ export async function getMergeQueueStatus(stackAPIClient, payload): Promise<any>
7373 . mergeQueue ( mergeJobUID )
7474 . fetch ( )
7575 . then ( ( data ) => data )
76- . catch ( ( err ) => handleErrorMsg ( err ) ) ;
76+ . catch ( ( err ) => handleErrorMsg ( err , ( ) => getMergeQueueStatus ( stackAPIClient , payload ) ) ) ;
7777}
7878
7979export async function executeMergeRequest ( stackAPIClient , payload ) : Promise < any > {
@@ -95,10 +95,18 @@ export async function executeMergeRequest(stackAPIClient, payload): Promise<any>
9595 . branch ( )
9696 . merge ( itemMergeStrategies , queryParams )
9797 . then ( ( data ) => data )
98- . catch ( ( err ) => handleErrorMsg ( err ) ) ;
98+ . catch ( ( err ) => handleErrorMsg ( err , ( ) => executeMergeRequest ( stackAPIClient , payload ) ) ) ;
9999}
100100
101- export function handleErrorMsg ( err ) {
101+ export async function handleErrorMsg ( err , retryCallback ?: ( ) => Promise < any > ) {
102+ // Handle rate limit exceeded (status code 429)
103+ if ( err ?. status === 429 || err ?. response ?. status === 429 ) {
104+ await new Promise ( ( resolve ) => setTimeout ( resolve , 1000 ) ) ; // 1 sec delay
105+ if ( retryCallback ) {
106+ return retryCallback ( ) ; // Retry the request
107+ }
108+ }
109+
102110 if ( err ?. errorMessage ) {
103111 cliux . print ( `Error: ${ err . errorMessage } ` , { color : 'red' } ) ;
104112 } else if ( err ?. message ) {
@@ -116,15 +124,15 @@ export function validateCompareData(branchCompareData) {
116124 forEach ( branchCompareData . content_types , ( value , key ) => {
117125 if ( value ?. length > 0 ) {
118126 validCompareData = true ;
119- }
127+ }
120128 } ) ;
121129 }
122130
123131 if ( branchCompareData . global_fields ) {
124132 forEach ( branchCompareData . global_fields , ( value , key ) => {
125133 if ( value ?. length > 0 ) {
126134 validCompareData = true ;
127- }
135+ }
128136 } ) ;
129137 }
130138
0 commit comments