From 2b93c6af220bd38856b91649f4e5288595e47553 Mon Sep 17 00:00:00 2001 From: Xu Jianxiang Date: Thu, 11 Jul 2024 20:45:40 +0800 Subject: [PATCH 1/2] fix(web3-errors): the undefined data in Eip838ExecutionError (#6905) * fix(web3-errors): handle the undefined data in Eip838ExecutionError constructor(#6433) * doc: update changelog * Update CHANGELOG.md * Update CHANGELOG.md --------- Co-authored-by: Muhammad Altabba <24407834+Muhammad-Altabba@users.noreply.github.com> Co-authored-by: Junaid <86780488+jdevcs@users.noreply.github.com> --- packages/web3-errors/CHANGELOG.md | 2 +- packages/web3-errors/src/errors/contract_errors.ts | 2 +- .../test/unit/__snapshots__/errors.test.ts.snap | 11 +++++++++++ packages/web3-errors/test/unit/errors.test.ts | 7 +++++++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/web3-errors/CHANGELOG.md b/packages/web3-errors/CHANGELOG.md index 7f9b132283b..1d29cdd0b61 100644 --- a/packages/web3-errors/CHANGELOG.md +++ b/packages/web3-errors/CHANGELOG.md @@ -172,4 +172,4 @@ Documentation: - Added `InvalidIntegerError` error for fromWei and toWei (#7052) -## [Unreleased] \ No newline at end of file +## [Unreleased] diff --git a/packages/web3-errors/src/errors/contract_errors.ts b/packages/web3-errors/src/errors/contract_errors.ts index 3710d9f60f0..ccd2b7dd46a 100644 --- a/packages/web3-errors/src/errors/contract_errors.ts +++ b/packages/web3-errors/src/errors/contract_errors.ts @@ -159,7 +159,7 @@ export class Eip838ExecutionError extends Web3ContractError { // error.data, error.data.data or error.data.originalError.data (https://github.com/web3/web3.js/issues/4454#issuecomment-1485953455) if (typeof error.data === 'object') { let originalError: { data: string }; - if ('originalError' in error.data) { + if (error.data && 'originalError' in error.data) { originalError = error.data.originalError; } else { // Ganache has no `originalError` sub-object unlike others diff --git a/packages/web3-errors/test/unit/__snapshots__/errors.test.ts.snap b/packages/web3-errors/test/unit/__snapshots__/errors.test.ts.snap index 2eefbaa0814..22a863812e8 100644 --- a/packages/web3-errors/test/unit/__snapshots__/errors.test.ts.snap +++ b/packages/web3-errors/test/unit/__snapshots__/errors.test.ts.snap @@ -156,6 +156,17 @@ exports[`errors Eip838ExecutionError should get the data from error.data.origina } `; +exports[`errors Eip838ExecutionError should return correctly when data is undefined 1`] = ` +{ + "cause": undefined, + "code": undefined, + "data": undefined, + "innerError": undefined, + "message": "Error", + "name": "Eip838ExecutionError", +} +`; + exports[`errors InvalidConnectionError should have valid json structure 1`] = ` { "cause": undefined, diff --git a/packages/web3-errors/test/unit/errors.test.ts b/packages/web3-errors/test/unit/errors.test.ts index 7428cc9b6b3..0731f4dff37 100644 --- a/packages/web3-errors/test/unit/errors.test.ts +++ b/packages/web3-errors/test/unit/errors.test.ts @@ -329,6 +329,13 @@ describe('errors', () => { } as JsonRpcError).toJSON(), ).toMatchSnapshot(); }); + it('should return correctly when data is undefined', () => { + expect( + new contractErrors.Eip838ExecutionError({ + data: undefined, + } as JsonRpcError).toJSON(), + ).toMatchSnapshot(); + }); }); describe('ResponseError', () => { From 4c00d88fbf111b62ff0435b2fde0d085475510ef Mon Sep 17 00:00:00 2001 From: jdevcs Date: Thu, 11 Jul 2024 14:55:06 +0200 Subject: [PATCH 2/2] changelog update --- packages/web3-errors/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/web3-errors/CHANGELOG.md b/packages/web3-errors/CHANGELOG.md index 1d29cdd0b61..25ae481c3df 100644 --- a/packages/web3-errors/CHANGELOG.md +++ b/packages/web3-errors/CHANGELOG.md @@ -173,3 +173,7 @@ Documentation: - Added `InvalidIntegerError` error for fromWei and toWei (#7052) ## [Unreleased] + +### Fixed + +- Fixed the undefined data in `Eip838ExecutionError` constructor (#6905) \ No newline at end of file