UNPKG

@mobile-wallet-protocol/client

Version:
41 lines (40 loc) 1.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.serializeError = serializeError; exports.isErrorResponse = isErrorResponse; const version_1 = require("../../version"); const constants_1 = require("./constants"); const utils_1 = require("./utils"); /** * Serializes an error to a format that is compatible with the Ethereum JSON RPC error format. * See https://docs.cloud.coinbase.com/wallet-sdk/docs/errors * for more information. */ function serializeError(error) { const serialized = (0, utils_1.serialize)(getErrorObject(error), { shouldIncludeStack: true, }); const docUrl = new URL('https://docs.cloud.coinbase.com/wallet-sdk/docs/errors'); docUrl.searchParams.set('version', version_1.LIB_VERSION); docUrl.searchParams.set('code', serialized.code.toString()); docUrl.searchParams.set('message', serialized.message); return Object.assign(Object.assign({}, serialized), { docUrl: docUrl.href }); } function isErrorResponse(response) { return response.errorMessage !== undefined; } /** * Converts an error to a serializable object. */ function getErrorObject(error) { if (typeof error === 'string') { return { message: error, code: constants_1.standardErrorCodes.rpc.internal, }; } else if (isErrorResponse(error)) { return Object.assign(Object.assign({}, error), { message: error.errorMessage, code: error.errorCode, data: { method: error.method } }); } return error; }