From a4d4d4382fb60883a127f3b0e4ca26a2b2ed9093 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Thu, 28 Oct 2021 16:32:56 +0200 Subject: [PATCH 1/2] Remove unneeded lint ignores --- packages/cosmwasm-stargate/src/queries/wasm.spec.ts | 1 - packages/cosmwasm-stargate/src/queries/wasm.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/packages/cosmwasm-stargate/src/queries/wasm.spec.ts b/packages/cosmwasm-stargate/src/queries/wasm.spec.ts index 3170269d..994a6f67 100644 --- a/packages/cosmwasm-stargate/src/queries/wasm.spec.ts +++ b/packages/cosmwasm-stargate/src/queries/wasm.spec.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/naming-convention */ import { sha256 } from "@cosmjs/crypto"; import { fromAscii, fromHex, toAscii, toHex } from "@cosmjs/encoding"; import { DirectSecp256k1HdWallet, OfflineDirectSigner, Registry } from "@cosmjs/proto-signing"; diff --git a/packages/cosmwasm-stargate/src/queries/wasm.ts b/packages/cosmwasm-stargate/src/queries/wasm.ts index a9f21f80..8cd7c521 100644 --- a/packages/cosmwasm-stargate/src/queries/wasm.ts +++ b/packages/cosmwasm-stargate/src/queries/wasm.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/naming-convention */ import { fromUtf8, toAscii } from "@cosmjs/encoding"; import { createPagination, createProtobufRpcClient, QueryClient } from "@cosmjs/stargate"; import { From e754fad581f1d8948ed9ce9b4a4f6a25252b1d53 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Thu, 28 Oct 2021 16:29:41 +0200 Subject: [PATCH 2/2] Fix response error handling for smart queries --- CHANGELOG.md | 4 ++++ packages/cosmwasm-stargate/src/queries/wasm.ts | 10 ++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 72d7a936..f9f4891b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ and this project adheres to ## [Unreleased] +### Fixed + +- @cosmjs/cosmwasm-stargate: Fix response error handling for smart queries. + ## [0.26.3] - 2021-10-25 ### Added diff --git a/packages/cosmwasm-stargate/src/queries/wasm.ts b/packages/cosmwasm-stargate/src/queries/wasm.ts index 8cd7c521..1f851f70 100644 --- a/packages/cosmwasm-stargate/src/queries/wasm.ts +++ b/packages/cosmwasm-stargate/src/queries/wasm.ts @@ -120,10 +120,16 @@ export function setupWasmExtension(base: QueryClient): WasmExtension { const request = { address: address, queryData: toAscii(JSON.stringify(query)) }; const { data } = await queryService.SmartContractState(request); // By convention, smart queries must return a valid JSON document (see https://github.com/CosmWasm/cosmwasm/issues/144) + let responseText: string; try { - return JSON.parse(fromUtf8(data)); + responseText = fromUtf8(data); } catch (error) { - throw new Error("Contract did not return valid JSON data"); + throw new Error(`Could not UTF-8 decode smart query response from contract: ${error}`); + } + try { + return JSON.parse(responseText); + } catch (error) { + throw new Error(`Could not JSON parse smart query response from contract: ${error}`); } }, },