@mobile-wallet-protocol/client
Version:
Client SDK for the Mobile Wallet Protocol
41 lines (40 loc) • 1.52 kB
JavaScript
;
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;
}