From 36f73fc34dc19c7cb74b2691b5f8e6e587bc43a2 Mon Sep 17 00:00:00 2001 From: Erik van den Brink Date: Mon, 15 Aug 2022 20:41:18 +0200 Subject: [PATCH 1/2] possible solution --- packages/neon-core/src/rpc/Query.ts | 3 ++- packages/neon-core/src/sc/ContractParam.ts | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/neon-core/src/rpc/Query.ts b/packages/neon-core/src/rpc/Query.ts index da08f291..e882e70f 100644 --- a/packages/neon-core/src/rpc/Query.ts +++ b/packages/neon-core/src/rpc/Query.ts @@ -5,6 +5,7 @@ import { ContractParam, StackItemJson, NEFJson, + isContractParam, } from "../sc"; import { BlockJson, Validator, BlockHeaderJson } from "../types"; import { HexString } from "../u"; @@ -573,7 +574,7 @@ export class Query { params: [ scriptHash, operation, - params.map((p) => (p instanceof ContractParam ? p.toJson() : p)), + params.map((p) => (isContractParam(p) ? p.toJson() : p)), signers.map((s) => (s instanceof Signer ? s.toJson() : s)), ], }); diff --git a/packages/neon-core/src/sc/ContractParam.ts b/packages/neon-core/src/sc/ContractParam.ts index df84de45..0974e945 100644 --- a/packages/neon-core/src/sc/ContractParam.ts +++ b/packages/neon-core/src/sc/ContractParam.ts @@ -502,3 +502,17 @@ export function likeContractParam( cp.value !== undefined ); } + +// eslint-disable-next-line +export function isContractParam(value: any): value is ContractParam { + if (value instanceof ContractParam) { + return true; + } + + return ( + value.type !== undefined && + value.type in ContractParamType && + value.value !== null && + value.value !== undefined + ); +} From 6507a8a1e68d8aa74d157474a417064cff3f8c9a Mon Sep 17 00:00:00 2001 From: Erik van den Brink Date: Tue, 16 Aug 2022 08:40:39 +0200 Subject: [PATCH 2/2] stricter detection to fix tests --- packages/neon-core/src/sc/ContractParam.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/neon-core/src/sc/ContractParam.ts b/packages/neon-core/src/sc/ContractParam.ts index 0974e945..a717aedf 100644 --- a/packages/neon-core/src/sc/ContractParam.ts +++ b/packages/neon-core/src/sc/ContractParam.ts @@ -513,6 +513,7 @@ export function isContractParam(value: any): value is ContractParam { value.type !== undefined && value.type in ContractParamType && value.value !== null && - value.value !== undefined + value.value !== undefined && + typeof value.toJson === "function" ); }