mirror of https://github.com/nocodb/nocodb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.5 KiB
60 lines
1.5 KiB
import { NcErrorType } from 'nocodb-sdk' |
|
|
|
export async function extractSdkResponseErrorMsg(e: Error & { response: any }) { |
|
if (!e || !e.response) return e.message |
|
let msg |
|
let errors: any[] | null = null |
|
if (e.response.data instanceof Blob) { |
|
try { |
|
const parsedData = JSON.parse(await e.response.data.text()) |
|
msg = parsedData.msg |
|
errors = parsedData.errors |
|
} catch { |
|
msg = 'Some internal error occurred' |
|
} |
|
} else { |
|
msg = e.response.data.msg || e.response.data.message || 'Some internal error occurred' |
|
errors = e.response.data.errors |
|
} |
|
|
|
if (Array.isArray(errors) && errors.length) { |
|
return errors.map((e: any) => (e.instancePath ? `${e.instancePath} - ` : '') + e.message).join(', ') |
|
} |
|
|
|
return msg || 'Some error occurred' |
|
} |
|
|
|
export async function extractSdkResponseErrorMsgv2(e: Error & { response: any }): Promise<{ |
|
error: NcErrorType |
|
message: string |
|
details?: any |
|
}> { |
|
const unknownError = { |
|
error: NcErrorType.UNKNOWN_ERROR, |
|
message: 'Something went wrong', |
|
} |
|
|
|
if (!e || !e.response) { |
|
return unknownError |
|
} |
|
|
|
if (e.response.data instanceof Blob) { |
|
try { |
|
const parsedError = JSON.parse(await e.response.data.text()) |
|
if (parsedError.error && parsedError.error in NcErrorType) { |
|
return parsedError |
|
} |
|
return unknownError |
|
} catch { |
|
return unknownError |
|
} |
|
} else { |
|
if (e.response.data.error && e.response.data.error in NcErrorType) { |
|
return e.response.data |
|
} |
|
|
|
return unknownError |
|
} |
|
} |
|
|
|
export { NcErrorType }
|
|
|