( primary: Promise<unknown>, legacy: () => Promise<AxiosResponse<ApiEnvelope<T>>>, )
| 209 | } |
| 210 | |
| 211 | function withLegacyFallback<T>( |
| 212 | primary: Promise<unknown>, |
| 213 | legacy: () => Promise<AxiosResponse<ApiEnvelope<T>>>, |
| 214 | ): V1Response<T> { |
| 215 | const legacyRequest = () => |
| 216 | legacy().then((response) => { |
| 217 | const legacyResponse = response as AxiosResponse<ApiEnvelope<T>> & { |
| 218 | legacyFallback?: boolean; |
| 219 | }; |
| 220 | legacyResponse.legacyFallback = true; |
| 221 | return legacyResponse; |
| 222 | }); |
| 223 | |
| 224 | return typed<T>(primary).then((response) => { |
| 225 | const message = response.data?.message || ''; |
| 226 | if ( |
| 227 | response.data?.status === 'error' && |
| 228 | message.toLowerCase().includes('missing api key') |
| 229 | ) { |
| 230 | return legacyRequest(); |
| 231 | } |
| 232 | return response; |
| 233 | }).catch((error) => { |
| 234 | if (isLegacyFallbackError(error)) { |
| 235 | return legacyRequest(); |
| 236 | } |
| 237 | throw error; |
| 238 | }); |
| 239 | } |
| 240 | |
| 241 | function firstSuccessfulResponse<T>( |
| 242 | requests: Array<Promise<AxiosResponse<ApiEnvelope<T>>>>, |
no test coverage detected