Cater for new/old contracts_call results (#2810)

* Cater for new/old contracts_call results

* Update packages/types/src/interfaces/contracts/definitions.ts

* Allow RPC layer to output JSON

* Typing for json outputs

* Convert results

* RPC compat mapping

* Ensure RPC .json is exposed

* Remove compat layer

* Old error detection

* Map to unknown

* Update packages/rpc-core/src/index.ts

* linting
This commit is contained in:
Jaco Greeff
2020-10-31 11:18:58 +01:00
committed by GitHub
parent 2a0e481710
commit e855d5a9d4
11 changed files with 189 additions and 60 deletions
+23 -5
View File
@@ -1,7 +1,7 @@
// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
/* eslint-disable */
import { Compact, Option, Raw, Vec } from '@polkadot/types/codec';
import { Compact, Json, Option, Raw, Vec } from '@polkadot/types/codec';
import { BitVec, Bytes, Data, DoNotConstruct, Null, StorageKey, Text, Type, U256, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types/primitive';
import { BlockAttestations, IncludedBlocks, MoreAttestations } from '@polkadot/types/interfaces/attestations';
import { RawAuraPreDigest } from '@polkadot/types/interfaces/aura';
@@ -14,7 +14,7 @@ import { PrefixedStorageKey } from '@polkadot/types/interfaces/childstate';
import { EthereumAddress, StatementKind } from '@polkadot/types/interfaces/claims';
import { CollectiveOrigin, MemberCount, ProposalIndex, Votes, VotesTo230 } from '@polkadot/types/interfaces/collective';
import { AuthorityId, RawVRFOutput } from '@polkadot/types/interfaces/consensus';
import { AliveContractInfo, CodeHash, ContractCallRequest, ContractExecResult, ContractExecResultSuccess, ContractExecResultSuccessTo255, ContractExecResultTo255, ContractInfo, ContractStorageKey, Gas, HostFnWeights, InstructionWeights, PrefabWasmModule, PrefabWasmModuleReserved, Schedule, ScheduleTo212, ScheduleTo258, SeedOf, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts';
import { AliveContractInfo, CodeHash, ContractCallRequest, ContractExecResult, ContractExecResultErr, ContractExecResultErrModule, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractInfo, ContractStorageKey, Gas, HostFnWeights, InstructionWeights, PrefabWasmModule, PrefabWasmModuleReserved, Schedule, ScheduleTo212, ScheduleTo258, SeedOf, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts';
import { ContractConstructorSpec, ContractContractSpec, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEventParamSpec, ContractEventSpec, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpec, ContractMessageSpec, ContractProject, ContractProjectContract, ContractProjectSource, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi';
import { AccountVote, AccountVoteSplit, AccountVoteStandard, Conviction, Delegations, PreimageStatus, PreimageStatusAvailable, PriorLock, PropIndex, Proposal, ProxyState, ReferendumIndex, ReferendumInfo, ReferendumInfoFinished, ReferendumInfoTo239, ReferendumStatus, Tally, Voting, VotingDelegating, VotingDirect, VotingDirectVote } from '@polkadot/types/interfaces/democracy';
import { ApprovalFlag, DefunctVoter, Renouncing, SetIndex, Vote, VoteIndex, VoteThreshold, VoterInfo } from '@polkadot/types/interfaces/elections';
@@ -129,6 +129,9 @@ declare module '@polkadot/types/types/registry' {
'Compact<usize>': Compact<usize>;
'Option<usize>': Option<usize>;
'Vec<usize>': Vec<usize>;
Json: Json;
'Option<Json>': Option<Json>;
'Vec<Json>': Vec<Json>;
Raw: Raw;
'Option<Raw>': Option<Raw>;
'Vec<Raw>': Vec<Raw>;
@@ -487,9 +490,24 @@ declare module '@polkadot/types/types/registry' {
ContractExecResultTo255: ContractExecResultTo255;
'Option<ContractExecResultTo255>': Option<ContractExecResultTo255>;
'Vec<ContractExecResultTo255>': Vec<ContractExecResultTo255>;
ContractExecResultSuccess: ContractExecResultSuccess;
'Option<ContractExecResultSuccess>': Option<ContractExecResultSuccess>;
'Vec<ContractExecResultSuccess>': Vec<ContractExecResultSuccess>;
ContractExecResultSuccessTo260: ContractExecResultSuccessTo260;
'Option<ContractExecResultSuccessTo260>': Option<ContractExecResultSuccessTo260>;
'Vec<ContractExecResultSuccessTo260>': Vec<ContractExecResultSuccessTo260>;
ContractExecResultTo260: ContractExecResultTo260;
'Option<ContractExecResultTo260>': Option<ContractExecResultTo260>;
'Vec<ContractExecResultTo260>': Vec<ContractExecResultTo260>;
ContractExecResultErrModule: ContractExecResultErrModule;
'Option<ContractExecResultErrModule>': Option<ContractExecResultErrModule>;
'Vec<ContractExecResultErrModule>': Vec<ContractExecResultErrModule>;
ContractExecResultErr: ContractExecResultErr;
'Option<ContractExecResultErr>': Option<ContractExecResultErr>;
'Vec<ContractExecResultErr>': Vec<ContractExecResultErr>;
ContractExecResultOk: ContractExecResultOk;
'Option<ContractExecResultOk>': Option<ContractExecResultOk>;
'Vec<ContractExecResultOk>': Vec<ContractExecResultOk>;
ContractExecResultResult: ContractExecResultResult;
'Option<ContractExecResultResult>': Option<ContractExecResultResult>;
'Vec<ContractExecResultResult>': Vec<ContractExecResultResult>;
ContractExecResult: ContractExecResult;
'Option<ContractExecResult>': Option<ContractExecResult>;
'Vec<ContractExecResult>': Vec<ContractExecResult>;
@@ -90,17 +90,45 @@ export default {
Error: 'Null'
}
},
ContractExecResultSuccess: {
ContractExecResultSuccessTo260: {
flags: 'u32',
data: 'Bytes',
gasConsumed: 'u64'
},
ContractExecResult: {
ContractExecResultTo260: {
_enum: {
Success: 'ContractExecResultSuccess',
Success: 'ContractExecResultSuccessTo260',
Error: 'Null'
}
},
ContractExecResultErrModule: {
index: 'u8',
error: 'u8',
message: 'Option<Text>'
},
ContractExecResultErr: {
_enum: {
Other: 'Text',
CannotLookup: 'Null',
BadOrigin: 'Null',
Module: 'ContractExecResultErrModule'
}
},
ContractExecResultOk: {
flags: 'u32',
data: 'Bytes'
},
ContractExecResultResult: {
_enum: {
Ok: 'ContractExecResultOk',
Err: 'ContractExecResultErr'
}
},
ContractExecResult: {
gasConsumed: 'u64',
debugMessage: 'Text',
result: 'ContractExecResultResult'
},
ContractInfo: {
_enum: {
Alive: 'AliveContractInfo',
@@ -2,7 +2,7 @@
/* eslint-disable */
import { Compact, Enum, Option, Raw, Struct, U8aFixed } from '@polkadot/types/codec';
import { Bytes, Null, bool, u32, u64, u8 } from '@polkadot/types/primitive';
import { Bytes, Null, Text, bool, u32, u64, u8 } from '@polkadot/types/primitive';
import { AccountId, Balance, BlockNumber, Hash, Weight } from '@polkadot/types/interfaces/runtime';
/** @name AliveContractInfo */
@@ -30,17 +30,41 @@ export interface ContractCallRequest extends Struct {
}
/** @name ContractExecResult */
export interface ContractExecResult extends Enum {
readonly isSuccess: boolean;
readonly asSuccess: ContractExecResultSuccess;
readonly isError: boolean;
export interface ContractExecResult extends Struct {
readonly gasConsumed: u64;
readonly debugMessage: Text;
readonly result: ContractExecResultResult;
}
/** @name ContractExecResultSuccess */
export interface ContractExecResultSuccess extends Struct {
/** @name ContractExecResultErr */
export interface ContractExecResultErr extends Enum {
readonly isOther: boolean;
readonly asOther: Text;
readonly isCannotLookup: boolean;
readonly isBadOrigin: boolean;
readonly isModule: boolean;
readonly asModule: ContractExecResultErrModule;
}
/** @name ContractExecResultErrModule */
export interface ContractExecResultErrModule extends Struct {
readonly index: u8;
readonly error: u8;
readonly message: Option<Text>;
}
/** @name ContractExecResultOk */
export interface ContractExecResultOk extends Struct {
readonly flags: u32;
readonly data: Bytes;
readonly gasConsumed: u64;
}
/** @name ContractExecResultResult */
export interface ContractExecResultResult extends Enum {
readonly isOk: boolean;
readonly asOk: ContractExecResultOk;
readonly isErr: boolean;
readonly asErr: ContractExecResultErr;
}
/** @name ContractExecResultSuccessTo255 */
@@ -49,6 +73,13 @@ export interface ContractExecResultSuccessTo255 extends Struct {
readonly data: Raw;
}
/** @name ContractExecResultSuccessTo260 */
export interface ContractExecResultSuccessTo260 extends Struct {
readonly flags: u32;
readonly data: Bytes;
readonly gasConsumed: u64;
}
/** @name ContractExecResultTo255 */
export interface ContractExecResultTo255 extends Enum {
readonly isSuccess: boolean;
@@ -56,6 +87,13 @@ export interface ContractExecResultTo255 extends Enum {
readonly isError: boolean;
}
/** @name ContractExecResultTo260 */
export interface ContractExecResultTo260 extends Enum {
readonly isSuccess: boolean;
readonly asSuccess: ContractExecResultSuccessTo260;
readonly isError: boolean;
}
/** @name ContractInfo */
export interface ContractInfo extends Enum {
readonly isAlive: boolean;