UNPKG

@devasher/kuru-sdk

Version:

Ethers v6 SDK to interact with Kuru (forked from @kuru-labs/kuru-sdk)

215 lines 10.5 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.extractErrorMessage = exports.searchForErrorCode = void 0; const errors_json_1 = __importDefault(require("./errors.json")); function searchForErrorCode(data) { if (!data || typeof data !== 'string') return null; // Remove '0x' prefix if present const cleanedData = data.startsWith('0x') ? data.slice(2) : data; for (const [errorName, errorCode] of Object.entries(errors_json_1.default)) { if (cleanedData.includes(errorCode)) { return errorName; } } return null; } exports.searchForErrorCode = searchForErrorCode; function parseJsonBody(body) { try { return JSON.parse(body); } catch (e) { return null; } } function extractErrorMessage(error) { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y; try { // Handle null or undefined input if (!error) { return { message: 'Failed to extract error message', originalError: error, }; } // Don't parse if already an object let jsonObj = error; if (typeof error === 'string') { try { jsonObj = JSON.parse(error); } catch (e) { return { message: 'Failed to extract error message', details: e instanceof Error ? e.message : 'Unknown error occurred', originalError: error, }; } } // NEW CASE: Handle nested ethers error structure with error.error if ((_b = (_a = jsonObj === null || jsonObj === void 0 ? void 0 : jsonObj.error) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.body) { const bodyError = parseJsonBody(jsonObj.error.error.body); if ((_c = bodyError === null || bodyError === void 0 ? void 0 : bodyError.error) === null || _c === void 0 ? void 0 : _c.data) { const knownError = searchForErrorCode(bodyError.error.data); if (knownError) { return { message: knownError, code: bodyError.error.code, details: jsonObj.reason || jsonObj.message, originalError: jsonObj, }; } } } // Case: Handle UNPREDICTABLE_GAS_LIMIT error with nested error.error structure if ((jsonObj === null || jsonObj === void 0 ? void 0 : jsonObj.code) === 'UNPREDICTABLE_GAS_LIMIT' && ((_e = (_d = jsonObj === null || jsonObj === void 0 ? void 0 : jsonObj.error) === null || _d === void 0 ? void 0 : _d.error) === null || _e === void 0 ? void 0 : _e.body)) { const bodyError = parseJsonBody(jsonObj.error.error.body); if ((_f = bodyError === null || bodyError === void 0 ? void 0 : bodyError.error) === null || _f === void 0 ? void 0 : _f.data) { const knownError = searchForErrorCode(bodyError.error.data); if (knownError) { return { message: knownError, code: bodyError.error.code, details: jsonObj.reason || jsonObj.message, originalError: jsonObj, }; } } // Return unpredictable gas limit error if no known error found return { message: jsonObj.message || jsonObj.reason, code: jsonObj.code, details: ((_g = jsonObj.error) === null || _g === void 0 ? void 0 : _g.reason) || ((_h = jsonObj.error) === null || _h === void 0 ? void 0 : _h.message), originalError: jsonObj, }; } // Case: Handle Privy wallet error format if ((jsonObj === null || jsonObj === void 0 ? void 0 : jsonObj.body) && ((_j = jsonObj === null || jsonObj === void 0 ? void 0 : jsonObj.error) === null || _j === void 0 ? void 0 : _j.data)) { const bodyError = parseJsonBody(jsonObj.body); if ((_k = bodyError === null || bodyError === void 0 ? void 0 : bodyError.error) === null || _k === void 0 ? void 0 : _k.data) { const knownError = searchForErrorCode(bodyError.error.data); if (knownError) { return { message: knownError, code: bodyError.error.code, details: bodyError.error.message, originalError: jsonObj, }; } } // Try direct error data if body parsing fails const knownError = searchForErrorCode(jsonObj.error.data); if (knownError) { return { message: knownError, code: jsonObj.error.code, details: ((_l = bodyError === null || bodyError === void 0 ? void 0 : bodyError.error) === null || _l === void 0 ? void 0 : _l.message) || 'Unknown error', originalError: jsonObj, }; } } // Case 1: Already parsed error with known error code if ((jsonObj === null || jsonObj === void 0 ? void 0 : jsonObj.message) && ((_o = (_m = jsonObj === null || jsonObj === void 0 ? void 0 : jsonObj.originalError) === null || _m === void 0 ? void 0 : _m.error) === null || _o === void 0 ? void 0 : _o.body)) { const bodyError = parseJsonBody(jsonObj.originalError.error.body); if ((_p = bodyError === null || bodyError === void 0 ? void 0 : bodyError.error) === null || _p === void 0 ? void 0 : _p.data) { const knownError = searchForErrorCode(bodyError.error.data); if (knownError) { return { message: knownError, code: bodyError.error.code, details: jsonObj.originalError.reason || jsonObj.details, originalError: jsonObj.originalError, }; } } return jsonObj; } // Case 2: Nested error structure from ethers.js if ((_r = (_q = jsonObj === null || jsonObj === void 0 ? void 0 : jsonObj.originalError) === null || _q === void 0 ? void 0 : _q.error) === null || _r === void 0 ? void 0 : _r.body) { const bodyError = parseJsonBody(jsonObj.originalError.error.body); if ((_s = bodyError === null || bodyError === void 0 ? void 0 : bodyError.error) === null || _s === void 0 ? void 0 : _s.data) { const knownError = searchForErrorCode(bodyError.error.data); if (knownError) { return { message: knownError, code: bodyError.error.code, details: jsonObj.reason || jsonObj.message, originalError: jsonObj, }; } } } // Case 3: Direct error body structure if ((_t = jsonObj === null || jsonObj === void 0 ? void 0 : jsonObj.error) === null || _t === void 0 ? void 0 : _t.body) { const bodyError = parseJsonBody(jsonObj.error.body); if ((_u = bodyError === null || bodyError === void 0 ? void 0 : bodyError.error) === null || _u === void 0 ? void 0 : _u.data) { const knownError = searchForErrorCode(bodyError.error.data); if (knownError) { return { message: knownError, code: bodyError.error.code, details: jsonObj.reason || jsonObj.message, originalError: jsonObj, }; } } } // Case 4: Wrapped RPC error if ((_w = (_v = jsonObj === null || jsonObj === void 0 ? void 0 : jsonObj.error) === null || _v === void 0 ? void 0 : _v.data) === null || _w === void 0 ? void 0 : _w.data) { const knownError = searchForErrorCode(jsonObj.error.data.data); if (knownError) { return { message: knownError, code: jsonObj.error.data.code, details: jsonObj.error.data.message, originalError: jsonObj, }; } } // Case 5: Direct RPC error if ((_x = jsonObj === null || jsonObj === void 0 ? void 0 : jsonObj.data) === null || _x === void 0 ? void 0 : _x.data) { const knownError = searchForErrorCode(jsonObj.data.data); if (knownError) { return { message: knownError, code: jsonObj.data.code, details: jsonObj.data.message, originalError: jsonObj, }; } } // Case 6: Check error.data directly if it has a known error code if ((_y = jsonObj === null || jsonObj === void 0 ? void 0 : jsonObj.error) === null || _y === void 0 ? void 0 : _y.data) { const knownError = searchForErrorCode(jsonObj.error.data); if (knownError) { return { message: knownError, code: jsonObj.error.code, details: jsonObj.error.message, originalError: jsonObj, }; } } // Fallback to original message/reason return { message: jsonObj.reason || jsonObj.message || 'Unknown error', code: jsonObj.code, details: jsonObj.details, originalError: jsonObj, }; } catch (e) { console.error('Error while extracting error message:', e); return { message: 'Failed to extract error message', details: e instanceof Error ? e.message : 'Unknown error occurred', originalError: error, }; } } exports.extractErrorMessage = extractErrorMessage; //# sourceMappingURL=errorExtractor.js.map