From 72b361d9dd5566cdd0bcae44b4ac9dbf7b242b78 Mon Sep 17 00:00:00 2001 From: Alexander Gonzalez Date: Fri, 13 May 2022 14:35:00 +0200 Subject: [PATCH 1/2] Allow any integer error code as valid --- src/utils.ts | 23 ++++++----------------- test/serializeError.js | 4 ++-- 2 files changed, 8 insertions(+), 19 deletions(-) diff --git a/src/utils.ts b/src/utils.ts index 2160209..bb829bf 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -2,7 +2,7 @@ import { errorCodes, errorValues } from './error-constants'; import { EthereumRpcError, SerializedEthereumRpcError } from './classes'; const FALLBACK_ERROR_CODE = errorCodes.rpc.internal; -const FALLBACK_MESSAGE = 'Unspecified error message. This is a bug, please report it.'; +const FALLBACK_MESSAGE = 'Invalid internal error. See "data.originalError" for original value. Please report this bug.'; const FALLBACK_ERROR: SerializedEthereumRpcError = { code: FALLBACK_ERROR_CODE, message: getMessageFromCode(FALLBACK_ERROR_CODE), @@ -20,7 +20,7 @@ export function getMessageFromCode( code: number, fallbackMessage: string = FALLBACK_MESSAGE, ): string { - if (Number.isInteger(code)) { + if (isValidCode(code)) { const codeString = code.toString(); if (hasKey(errorValues, codeString)) { @@ -35,24 +35,13 @@ export function getMessageFromCode( /** * Returns whether the given code is valid. - * A code is only valid if it has a message. + * A code is valid if it is an integer number. */ -export function isValidCode(code: number): boolean { - if (!Number.isInteger(code)) { - return false; - } - - const codeString = code.toString(); - if (errorValues[codeString as ErrorValueKey]) { - return true; - } - - if (isJsonRpcServerError(code)) { - return true; - } - return false; + export function isValidCode(code: number): boolean { + return Number.isInteger(code); } + /** * Serializes the given error to an Ethereum JSON RPC-compatible error object. * Merely copies the given error's values if it is already compatible. diff --git a/test/serializeError.js b/test/serializeError.js index 1fee3fb..016496f 100644 --- a/test/serializeError.js +++ b/test/serializeError.js @@ -11,12 +11,12 @@ const dummyMessage = 'baz'; const invalidError0 = 0; const invalidError1 = ['foo', 'bar', 3]; -const invalidError2 = { code: 34 }; +const invalidError2 = { code: "Invalid code, should be an integer" }; const invalidError3 = { code: 4001 }; const invalidError4 = { code: 4001, message: 3, data: Object.assign({}, dummyData) }; const invalidError5 = null; const invalidError6 = undefined; -const invalidError7 = { code: 34, message: dummyMessage, data: Object.assign({}, dummyData) }; +const invalidError7 = { code: "Invalid code, should be an integer", message: dummyMessage, data: Object.assign({}, dummyData) }; const validError0 = { code: 4001, message: dummyMessage }; const validError1 = { code: 4001, message: dummyMessage, data: Object.assign({}, dummyData) }; From 87555f7a4c9ada9ddb87a63dfe3cbb3ce6aefa00 Mon Sep 17 00:00:00 2001 From: Alexander Gonzalez Date: Fri, 13 May 2022 14:50:02 +0200 Subject: [PATCH 2/2] Fix formatting --- src/utils.ts | 3 +-- test/serializeError.js | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/utils.ts b/src/utils.ts index bb829bf..21b7d71 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -37,11 +37,10 @@ export function getMessageFromCode( * Returns whether the given code is valid. * A code is valid if it is an integer number. */ - export function isValidCode(code: number): boolean { +export function isValidCode(code: number): boolean { return Number.isInteger(code); } - /** * Serializes the given error to an Ethereum JSON RPC-compatible error object. * Merely copies the given error's values if it is already compatible. diff --git a/test/serializeError.js b/test/serializeError.js index 016496f..24b037c 100644 --- a/test/serializeError.js +++ b/test/serializeError.js @@ -11,12 +11,12 @@ const dummyMessage = 'baz'; const invalidError0 = 0; const invalidError1 = ['foo', 'bar', 3]; -const invalidError2 = { code: "Invalid code, should be an integer" }; +const invalidError2 = { code: 'Invalid code, should be an integer' }; const invalidError3 = { code: 4001 }; const invalidError4 = { code: 4001, message: 3, data: Object.assign({}, dummyData) }; const invalidError5 = null; const invalidError6 = undefined; -const invalidError7 = { code: "Invalid code, should be an integer", message: dummyMessage, data: Object.assign({}, dummyData) }; +const invalidError7 = { code: 'Invalid code, should be an integer', message: dummyMessage, data: Object.assign({}, dummyData) }; const validError0 = { code: 4001, message: dummyMessage }; const validError1 = { code: 4001, message: dummyMessage, data: Object.assign({}, dummyData) };