UNPKG

@wener/console

Version:

Base console UI toolkit

82 lines (81 loc) 3.04 kB
import { getHttpStatusText } from "@wener/utils"; export function resolveErrorMessage(error) { if (!error) { return; } if (!(error instanceof Error)) { if (error && typeof error === 'object') { if ('message' in error) { return error.message; } if ('detail' in error) { return error.detail; } } return String(error); } try { if (isZodError(error)) { return error.issues.map((v)=>`${v.path.join('.')}: ${v.message}`).join(';'); } if (isTypeBoxError(error)) { const { path, type, message } = error.error; return `${path}: ${message} (${type})`; } if (URQLError.is(error)) { return error.response.errors.map((v)=>v.message).join(';'); } const buildGraphQLError = (errors = [])=>{ return errors.map((v)=>{ return `${v.message}`; }).join(';'); }; const buildGraphQLResponseError = ({ response })=>{ let s = [ '' ]; let status = response.status; if (status !== 200) { s.push(`${status} ${getHttpStatusText(status)}`); } if (response.errors) { s.push(buildGraphQLError(response.errors)); } return s.join(' '); }; if (GraphQL.isClientError(error)) { return buildGraphQLResponseError(error); } if (typeof error === 'object' && 'message' in error) { return error.message; } } catch (e) { console.error('resolveErrorMessage', e); } return String(error); } (function(GraphQL) { function isClientError(error) { // graphql-client _ClientError // https://github.com/graffle-js/graffle/blob/graphql-request/src/legacy/classes/ClientError.ts return typeof error.response === 'object' && typeof error.request === 'object' && typeof error.response.status === 'number' && typeof error.request.query === 'string' && (error.response.errors === undefined || error.response.errors === null || Array.isArray(error.response.errors)); } GraphQL.isClientError = isClientError; })(GraphQL || (GraphQL = {})); function isTypeBoxError(error) { return error.error?.path && error.error.type && error.error.message && error instanceof Error; } function isZodError(error) { return error instanceof Error && Array.isArray(error.issues); } // https://commerce.nearform.com/open-source/urql/docs/basics/errors/ // https://github.com/urql-graphql/urql/blob/main/packages/core/src/utils/error.ts // urql CombinedError (function(URQLError) { function is(error) { return Array.isArray(error?.graphQLErrors) && error.name === 'CombinedError' && error instanceof Error; } URQLError.is = is; })(URQLError || (URQLError = {})); var GraphQL, URQLError; //# sourceMappingURL=resolveErrorMessage.js.map