UNPKG

@eldev/business-central-api

Version:

A Dynamics 365 Business Central client for TypeScript

85 lines 3.04 kB
const errorCategories = [ "AUTHENTICATION", "AUTHORIZATION", "BAD_REQUEST", "NOT_FOUND", "CONFLICT", "SCHEMA_MISMATCH", "NETWORK_ERROR", "UNEXPECTED_RESPONSE", "SERVER_ERROR", "UNKNOWN", ]; const retryStrategies = [ "NO_RETRY", "EXPONENTIAL_BACKOFF", "REFRESH_TOKEN", ]; const errorCodeMappings = new Map([ ["BadRequest_InvalidToken", "AUTHENTICATION"], ["Unauthorized", "AUTHENTICATION"], ["Authentication_TokenError", "AUTHENTICATION"], ["Forbidden", "AUTHORIZATION"], ["Authorization_InsufficientPermissions", "AUTHORIZATION"], ["BadRequest", "BAD_REQUEST"], ["BadRequest_InvalidRequestUrl", "BAD_REQUEST"], ["BadRequest_NotFound", "BAD_REQUEST"], ["BadRequest_MethodNotAllowed", "BAD_REQUEST"], ["BadRequest_MethodNotImplemented", "BAD_REQUEST"], ["BadRequest_RequiredParamNotProvided", "BAD_REQUEST"], ["BadRequest_InvalidOperation", "BAD_REQUEST"], ["SkipTokenIsNoLongerValid", "BAD_REQUEST"], ["Application_FieldValidationException", "BAD_REQUEST"], ["Application_StringExceededLength", "BAD_REQUEST"], ["Application_InvalidGUID", "BAD_REQUEST"], ["Application_FilterErrorException", "BAD_REQUEST"], ["BadRequest_ResourceNotFound", "NOT_FOUND"], ["Internal_RecordNotFound", "NOT_FOUND"], ["Internal_CompanyNotFound", "NOT_FOUND"], ["Internal_DataNotFoundFilter", "NOT_FOUND"], ["Request_EntityChanged", "CONFLICT"], ["Internal_EntityWithSameKeyExists", "CONFLICT"], ["Internal_ServerError", "SERVER_ERROR"], ["Internal_TenantUnavailable", "SERVER_ERROR"], ["Internal_DatabaseConnection", "SERVER_ERROR"], ["Application_DialogException", "BAD_REQUEST"], ["Application_EvaluateException", "BAD_REQUEST"], ["Application_CallbackNotAllowed", "BAD_REQUEST"], ]); const prefixDefaults = new Map([ ["BadRequest_", "BAD_REQUEST"], ["Request_", "CONFLICT"], ["Internal_", "SERVER_ERROR"], ["Application_", "BAD_REQUEST"], ["Authentication_", "AUTHENTICATION"], ["Authorization_", "AUTHORIZATION"], ]); const categoryToRetryStrategy = new Map([ ["AUTHENTICATION", "REFRESH_TOKEN"], ["AUTHORIZATION", "NO_RETRY"], ["BAD_REQUEST", "NO_RETRY"], ["NOT_FOUND", "NO_RETRY"], ["CONFLICT", "NO_RETRY"], ["SCHEMA_MISMATCH", "NO_RETRY"], ["NETWORK_ERROR", "EXPONENTIAL_BACKOFF"], ["UNEXPECTED_RESPONSE", "NO_RETRY"], ["SERVER_ERROR", "EXPONENTIAL_BACKOFF"], ["UNKNOWN", "NO_RETRY"], ]); export function categorizeError(code) { let category = errorCodeMappings.get(code); if (!category) { for (const [prefix, defaultCategory] of prefixDefaults) { if (code.startsWith(prefix)) { category = defaultCategory; break; } } } if (!category) { category = "UNKNOWN"; } const retryStrategy = categoryToRetryStrategy.get(category) ?? "NO_RETRY"; return { category, retryStrategy }; } //# sourceMappingURL=categorize.js.map