From 2ea6dd0af3240f4a3583a11187444cbd88083aaa Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Thu, 16 Jan 2020 15:21:02 +0100 Subject: [PATCH] Display decoded ExtrinsicFailed errors (#2137) * Display decoded ExtrinsicFailed errors * Revert debug log * Bump API (error lookup) --- package.json | 6 +- packages/app-contracts/package.json | 2 +- packages/react-api/package.json | 2 +- .../react-components/src/Status/Queue.tsx | 35 +++- .../react-components/src/Status/QueueFunc.tsx | 167 ------------------ .../react-params/src/Param/DispatchError.tsx | 46 +++++ packages/react-params/src/Param/Static.tsx | 4 +- .../react-params/src/Param/findComponent.ts | 2 + yarn.lock | 116 ++++++------ 9 files changed, 141 insertions(+), 239 deletions(-) delete mode 100644 packages/react-components/src/Status/QueueFunc.tsx create mode 100644 packages/react-params/src/Param/DispatchError.tsx diff --git a/package.json b/package.json index 8bf0c4c37e..0d18b64dea 100644 --- a/package.json +++ b/package.json @@ -10,10 +10,10 @@ "packages/*" ], "resolutions": { - "@polkadot/api": "^1.0.0-beta.7", - "@polkadot/api-contract": "^1.0.0-beta.7", + "@polkadot/api": "^1.0.0-beta.8", + "@polkadot/api-contract": "^1.0.0-beta.8", "@polkadot/keyring": "^2.0.0-beta.4", - "@polkadot/types": "^1.0.0-beta.7", + "@polkadot/types": "^1.0.0-beta.8", "@polkadot/util": "^2.0.0-beta.4", "@polkadot/util-crypto": "^2.0.0-beta.4", "babel-core": "^7.0.0-bridge.0", diff --git a/packages/app-contracts/package.json b/packages/app-contracts/package.json index 1c75bbc331..d36ed2bcae 100644 --- a/packages/app-contracts/package.json +++ b/packages/app-contracts/package.json @@ -11,6 +11,6 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime": "^7.7.7", - "@polkadot/api-contract": "^1.0.0-beta.7" + "@polkadot/api-contract": "^1.0.0-beta.8" } } diff --git a/packages/react-api/package.json b/packages/react-api/package.json index c2632cd57b..958f38ab23 100644 --- a/packages/react-api/package.json +++ b/packages/react-api/package.json @@ -31,7 +31,7 @@ "homepage": "https://github.com/polkadot-js/ui/tree/master/packages/ui-reactive#readme", "dependencies": { "@babel/runtime": "^7.7.6", - "@polkadot/api": "^1.0.0-beta.7", + "@polkadot/api": "^1.0.0-beta.8", "@polkadot/extension-dapp": "^0.15.0-beta.1", "edgeware-node-types": "^1.0.10", "rxjs-compat": "^6.5.3" diff --git a/packages/react-components/src/Status/Queue.tsx b/packages/react-components/src/Status/Queue.tsx index 42e0927ebc..b8e03f99e6 100644 --- a/packages/react-components/src/Status/Queue.tsx +++ b/packages/react-components/src/Status/Queue.tsx @@ -3,7 +3,8 @@ // of the Apache-2.0 license. See the LICENSE file for details. import { SubmittableExtrinsic } from '@polkadot/api/promise/types'; -import { SignerPayloadJSON } from '@polkadot/types/types'; +import { DispatchError } from '@polkadot/types/interfaces'; +import { ITuple, SignerPayloadJSON } from '@polkadot/types/types'; import { BareProps } from '../types'; import { ActionStatus, PartialQueueTxExtrinsic, PartialQueueTxRpc, QueueStatus, QueueTx, QueueTxExtrinsic, QueueTxRpc, QueueTxStatus, SignerCallback } from './types'; @@ -128,13 +129,31 @@ export default function Queue ({ children }: Props): React.ReactElement { // filter events handled globally, or those we are not interested in, these are // handled by the global overview, so don't add them here .filter((record): boolean => !!record.event && record.event.section !== 'democracy') - .map(({ event: { method, section } }): ActionStatus => ({ - action: `${section}.${method}`, - status: section === 'system' && method === 'ExtrinsicFailed' - ? 'error' - : 'event', - message: 'extrinsic event' - })) + .map(({ event: { data, method, section } }): ActionStatus => { + if (section === 'system' && method === 'ExtrinsicFailed') { + const [dispatchError] = data as unknown as ITuple<[DispatchError]>; + let message = dispatchError.type; + + if (dispatchError.isModule) { + const mod = dispatchError.asModule; + const error = registry.findMetaError(new Uint8Array([mod.index.toNumber(), mod.error.toNumber()])); + + message = `${error.section}.${error.name}`; + } + + return { + action: `${section}.${method}`, + status: 'error', + message + }; + } + + return { + action: `${section}.${method}`, + status: 'event', + message: 'extrinsic event' + }; + }) ); if (STATUS_COMPLETE.includes(status)) { diff --git a/packages/react-components/src/Status/QueueFunc.tsx b/packages/react-components/src/Status/QueueFunc.tsx deleted file mode 100644 index f65a9990f8..0000000000 --- a/packages/react-components/src/Status/QueueFunc.tsx +++ /dev/null @@ -1,167 +0,0 @@ -// Copyright 2017-2020 @polkadot/react-components authors & contributors -// This software may be modified and distributed under the terms -// of the Apache-2.0 license. See the LICENSE file for details. - -import { SubmittableExtrinsic } from '@polkadot/api/promise/types'; -import { SignerPayloadJSON } from '@polkadot/types/types'; -import { BareProps } from '../types'; -import { ActionStatus, PartialQueueTxExtrinsic, PartialQueueTxRpc, QueueStatus, QueueTx, QueueTxExtrinsic, QueueTxRpc, QueueTxStatus, SignerCallback } from './types'; - -import React, { useRef, useState } from 'react'; -import { SubmittableResult } from '@polkadot/api'; -import jsonrpc from '@polkadot/jsonrpc'; -import { registry } from '@polkadot/react-api'; -import { createType } from '@polkadot/types'; - -import { QueueProvider } from './Context'; - -export interface Props extends BareProps { - children: React.ReactNode; -} - -let nextId = 0; - -const REMOVE_TIMEOUT = 7500; -const SUBMIT_RPC = jsonrpc.author.methods.submitAndWatchExtrinsic; -const STATUS_COMPLETE: QueueTxStatus[] = [ - // status from subscription - 'finalized', 'usurped', 'dropped', 'invalid', - // normal completion - 'cancelled', 'error', 'sent' -]; - -export default function Queue ({ children }: Props): React.ReactElement { - const [stqueue, setStQueue] = useState([]); - const [txqueue, setTxQueue] = useState([]); - - const _clearTxStatus = useRef( - (id: number): () => void => - (): void => setTxQueue([...txqueue.map((item): QueueTx => - item.id === id - ? { ...item, status: 'completed' } - : item - )]) - ); - const _addToTxQueue = useRef( - (value: QueueTxExtrinsic | QueueTxRpc | QueueTx): number => { - const id = ++nextId; - - setTxQueue([...txqueue, { - ...value, - id, - removeItem: _clearTxStatus.current(id), - rpc: (value as QueueTxRpc).rpc || SUBMIT_RPC, - status: 'queued' - }]); - - return id; - } - ); - const queueAction = useRef( - (status: ActionStatus | ActionStatus[]): number => { - const todos = (Array.isArray(status) ? status : [status]).map((item: ActionStatus) => { - const id = ++nextId; - const removeItem = (): void => - setStQueue([...stqueue.filter((item): boolean => item.id !== id)]); - - setTimeout(removeItem, REMOVE_TIMEOUT); - - return { - ...item, - id, - isCompleted: false, - removeItem - }; - }); - - setStQueue([...stqueue, ...todos]); - - return todos[0].id; - } - ); - const queueExtrinsic = useRef( - ({ accountId, extrinsic, txFailedCb, txSuccessCb, txStartCb, txUpdateCb, isUnsigned }: PartialQueueTxExtrinsic): number => - _addToTxQueue.current({ - accountId, - extrinsic, - isUnsigned, - txFailedCb, - txSuccessCb, - txStartCb, - txUpdateCb - }) - ); - const queuePayload = useRef( - (payload: SignerPayloadJSON, signerCb: SignerCallback): number => - _addToTxQueue.current({ - accountId: payload.address, - // this is not great, but the Extrinsic we don't need a submittable - extrinsic: createType(registry, 'Extrinsic', - { method: createType(registry, 'Call', payload.method) }, - { version: payload.version } - ) as unknown as SubmittableExtrinsic, - payload, - signerCb - }) - ); - const queueRpc = useRef( - ({ accountId, rpc, values }: PartialQueueTxRpc): number => - _addToTxQueue.current({ - accountId, - rpc, - values - }) - ); - const queueSetTxStatus = useRef( - (id: number, status: QueueTxStatus, result?: SubmittableResult, error?: Error): void => { - setTxQueue([...txqueue.map((item): QueueTx => - item.id === id - ? { - ...item, - error: error === undefined - ? item.error - : error, - result: result === undefined - ? item.result - : result, - status: item.status === 'completed' - ? item.status - : status - } - : item - )]); - - queueAction.current( - ((result && result.events) || []) - // filter events handled globally, or those we are not interested in, these are - // handled by the global overview, so don't add them here - .filter((record): boolean => !!record.event && record.event.section !== 'democracy') - .map(({ event: { method, section } }): ActionStatus => ({ - action: `${section}.${method}`, - status: section === 'system' && method === 'ExtrinsicFailed' - ? 'error' - : 'event', - message: 'extrinsic event' - })) - ); - - if (STATUS_COMPLETE.includes(status)) { - setTimeout(_clearTxStatus.current(id), REMOVE_TIMEOUT); - } - } - ); - - return ( - - {children} - - ); -} diff --git a/packages/react-params/src/Param/DispatchError.tsx b/packages/react-params/src/Param/DispatchError.tsx new file mode 100644 index 0000000000..768a957dc8 --- /dev/null +++ b/packages/react-params/src/Param/DispatchError.tsx @@ -0,0 +1,46 @@ +// Copyright 2017-2020 @polkadot/react-components authors & contributors +// This software may be modified and distributed under the terms +// of the Apache-2.0 license. See the LICENSE file for details. + +import { DispatchError } from '@polkadot/types/interfaces'; +import { Props } from '../types'; + +import React from 'react'; +import { registry } from '@polkadot/react-api'; +import { Input } from '@polkadot/react-components'; + +import { useTranslation } from '../translate'; +import Static from './Static'; +import Unknown from './Unknown'; + +export default function ErrorDisplay (props: Props): React.ReactElement { + const { t } = useTranslation(); + + if (!props.isDisabled || !props.defaultValue?.value?.isModule) { + return ; + } + + const mod = (props.defaultValue.value as DispatchError).asModule; + const error = registry.findMetaError(new Uint8Array([mod.index.toNumber(), mod.error.toNumber()])); + const type = `${error.section}.${error.name}`; + const details = error.documentation.join(', '); + + return ( + + + {details && ( + + )} + + ); +} diff --git a/packages/react-params/src/Param/Static.tsx b/packages/react-params/src/Param/Static.tsx index f10e0c10bb..d481f2614f 100644 --- a/packages/react-params/src/Param/Static.tsx +++ b/packages/react-params/src/Param/Static.tsx @@ -12,11 +12,12 @@ import Bare from './Bare'; interface Props extends BareProps { asHex?: boolean; + children?: React.ReactNode; defaultValue: RawParam; withLabel?: boolean; } -export default function StaticParam ({ asHex, className, defaultValue, label, style }: Props): React.ReactElement { +export default function StaticParam ({ asHex, children, className, defaultValue, label, style }: Props): React.ReactElement { const { t } = useTranslation(); const value = defaultValue && defaultValue.value && defaultValue.value[asHex ? 'toHex' : 'toString'](); @@ -30,6 +31,7 @@ export default function StaticParam ({ asHex, className, defaultValue, label, st label={label} value={value || t('')} /> + {children} ); } diff --git a/packages/react-params/src/Param/findComponent.ts b/packages/react-params/src/Param/findComponent.ts index 66861c2cca..8f6d91445e 100644 --- a/packages/react-params/src/Param/findComponent.ts +++ b/packages/react-params/src/Param/findComponent.ts @@ -15,6 +15,7 @@ import Balance from './Balance'; import Bool from './Bool'; import Bytes from './Bytes'; import Code from './Code'; +import DispatchError from './DispatchError'; import Enum from './Enum'; import Hash256 from './Hash256'; import Hash512 from './Hash512'; @@ -46,6 +47,7 @@ const components: ComponentMap = ([ { c: Bool, t: ['bool'] }, { c: Bytes, t: ['Bytes'] }, { c: Code, t: ['Code'] }, + { c: DispatchError, t: ['DispatchError'] }, { c: Raw, t: ['Raw', 'Keys'] }, { c: Enum, t: ['Enum'] }, { c: Hash256, t: ['BlockHash', 'CodeHash', 'Hash', 'H256', 'SeedOf'] }, diff --git a/yarn.lock b/yarn.lock index 562c437a38..12612870d7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2093,36 +2093,36 @@ dependencies: "@types/node" ">= 8" -"@polkadot/api-contract@^1.0.0-beta.7": - version "1.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@polkadot/api-contract/-/api-contract-1.0.0-beta.7.tgz#10cd98f7162c3ce7fda28769c0cee2c3c520ffc7" - integrity sha512-KNPNKh62NxqAGQjGC2dgIZ+duGtFa9a85TjP/hyGQwwlV31PXDYdceb6e+7qgar0VlO4+Wf6MtJt6pHuM0/CpQ== +"@polkadot/api-contract@^1.0.0-beta.8": + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@polkadot/api-contract/-/api-contract-1.0.0-beta.8.tgz#e5ad53023c1b992d6ca466b13e1f594e8ad21161" + integrity sha512-CnoAL+H8lcMOhLDXvs6zCCiaDNBNtkQ9yiaKJIVOZ9juLsURBh2Dp9B2nNeQEH7CFMjDBtbxka2JikbKJDtYZg== dependencies: "@babel/runtime" "^7.7.7" - "@polkadot/types" "^1.0.0-beta.7" + "@polkadot/types" "^1.0.0-beta.8" -"@polkadot/api-derive@^1.0.0-beta.7": - version "1.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-1.0.0-beta.7.tgz#f48682b16e1473cb1bb06c3e823c4156a5f89f97" - integrity sha512-ZlVzupjDQAb4aLk0Au0CGBmV+2sVzTpRLTREMgn6k6P+qAfYcaMJObeq7KdFbTtdZDMFXVg1cIOuKChj7Xbzbw== +"@polkadot/api-derive@^1.0.0-beta.8": + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-1.0.0-beta.8.tgz#9bf79f4aca19a0bd733aa37e2cd1003f50dd516d" + integrity sha512-J8bPbAte7zMEcfgrIn52wNsDXgMRcDMfkwFLYGvrevuEZadViS4GSCZ9cBAiwp1ZQLCiQAIvvMgTLO8EBKQCag== dependencies: "@babel/runtime" "^7.7.7" - "@polkadot/api" "^1.0.0-beta.7" - "@polkadot/types" "^1.0.0-beta.7" + "@polkadot/api" "^1.0.0-beta.8" + "@polkadot/types" "^1.0.0-beta.8" -"@polkadot/api@^1.0.0-beta.7": - version "1.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-1.0.0-beta.7.tgz#e80a9bbd75e87a4ebe7e099b98fefe7cf48f2aa5" - integrity sha512-A8pUOeiQWAYwTDMD6Qk0HDpYibdGfJOdWGPdb3jrmoGMic3cQ+BHuCGnQwwAPxeL7wHya7HQbvnKH/j04zMhQQ== +"@polkadot/api@^1.0.0-beta.8": + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-1.0.0-beta.8.tgz#065330218f20e5d18a2c4a4e72da90f05035ad01" + integrity sha512-naSIXZQyQXJH8LRaw/xeB4NeNQlViceiRcmUCAeFTPP0CXQ1aXToG1tWD5R7UDVeftuKNiisf3pb5yWcMogqiA== dependencies: "@babel/runtime" "^7.7.7" - "@polkadot/api-derive" "^1.0.0-beta.7" - "@polkadot/keyring" "^2.0.0-beta.2" - "@polkadot/metadata" "^1.0.0-beta.7" - "@polkadot/rpc-core" "^1.0.0-beta.7" - "@polkadot/rpc-provider" "^1.0.0-beta.7" - "@polkadot/types" "^1.0.0-beta.7" - "@polkadot/util-crypto" "^2.0.0-beta.2" + "@polkadot/api-derive" "^1.0.0-beta.8" + "@polkadot/keyring" "^2.0.0-beta.4" + "@polkadot/metadata" "^1.0.0-beta.8" + "@polkadot/rpc-core" "^1.0.0-beta.8" + "@polkadot/rpc-provider" "^1.0.0-beta.8" + "@polkadot/types" "^1.0.0-beta.8" + "@polkadot/util-crypto" "^2.0.0-beta.4" "@polkadot/dev-react@^0.32.14": version "0.32.14" @@ -2226,14 +2226,14 @@ dependencies: "@babel/runtime" "^7.7.7" -"@polkadot/jsonrpc@^1.0.0-beta.7": - version "1.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@polkadot/jsonrpc/-/jsonrpc-1.0.0-beta.7.tgz#64972112d983f427a03f37f3fbebeaad96ca6b14" - integrity sha512-ssfzufC3uo62HPhX4tD0OyXk5UyiuM05wChKYtRXZLmd/0/Pe+os71YDURZrWUWFQxXuDlqgN1iBNduLqr6lsw== +"@polkadot/jsonrpc@^1.0.0-beta.8": + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@polkadot/jsonrpc/-/jsonrpc-1.0.0-beta.8.tgz#42291c3e945f39e427ff2bed358577b912e08788" + integrity sha512-aLMcT99kFGfQVBhiaETvn+fyljyehcgJXATJoUvLu8ZOtJP4K7MWnU8FZ/mulr5uYIo01t5koEvb7BHIkrtU4g== dependencies: "@babel/runtime" "^7.7.7" -"@polkadot/keyring@^2.0.0-beta.2", "@polkadot/keyring@^2.0.0-beta.4": +"@polkadot/keyring@^2.0.0-beta.4": version "2.0.0-beta.4" resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-2.0.0-beta.4.tgz#036b8c49a6ce34a17c2d070125c772f64356fc4f" integrity sha512-Fz+LEIeJzV3uDrb/im2qkJORTO9037dDp4LZVtLvP7H63e401vYd0Q0RbWjKnDq47Um3nuPjog/HmxUUEEnNRw== @@ -2242,15 +2242,15 @@ "@polkadot/util" "^2.0.0-beta.4" "@polkadot/util-crypto" "^2.0.0-beta.4" -"@polkadot/metadata@^1.0.0-beta.7": - version "1.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@polkadot/metadata/-/metadata-1.0.0-beta.7.tgz#fb59f49701733b64beff9833695df63d05a271ab" - integrity sha512-I54dag0cm1gE38i2DWXiYPjPO/lgNLZTBRkiruYbE8ZZ/mWPgRdeqeH5ao/e0y0hAFrrGZeKNlyBlO/QVmSwpA== +"@polkadot/metadata@^1.0.0-beta.8": + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@polkadot/metadata/-/metadata-1.0.0-beta.8.tgz#823fa4acd840cc2b2b3279539b261111a7f99a4d" + integrity sha512-LxPizi7CQJqXMvsb3xIYs4PKmLyvgry/3EQgeSqVRrt34Z/hn02/8fX4R9Gqr685CAwRRolVre6wHhN9dWwaLw== dependencies: "@babel/runtime" "^7.7.7" - "@polkadot/types" "^1.0.0-beta.7" - "@polkadot/util" "^2.0.0-beta.2" - "@polkadot/util-crypto" "^2.0.0-beta.2" + "@polkadot/types" "^1.0.0-beta.8" + "@polkadot/util" "^2.0.0-beta.4" + "@polkadot/util-crypto" "^2.0.0-beta.4" "@polkadot/react-identicon@^0.48.0-beta.12": version "0.48.0-beta.12" @@ -2276,27 +2276,27 @@ qrcode-generator "^1.4.4" react-qr-reader "^2.2.1" -"@polkadot/rpc-core@^1.0.0-beta.7": - version "1.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-1.0.0-beta.7.tgz#14f9e749f7a51f4978476bf1562384de8dacb5cc" - integrity sha512-kze/coKDVDF5lE0h+pscT7wTg9ncWuQrUd1yabEeZ3CrndbWIGW9dFw8Hqo+DMJIOxW3aklgYD9FINRS7DN4aQ== +"@polkadot/rpc-core@^1.0.0-beta.8": + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-1.0.0-beta.8.tgz#c65a25ac2436f76aa2ce22360c06cbd3ec73e6d3" + integrity sha512-pQlD0GM9GLvCNo0dmY+BmVh/yctsPbGCSa0mT9a5Tsboa+HLAUguWR5ijMTfiukX6XfobB/e5V/ByxWPIc5sVQ== dependencies: "@babel/runtime" "^7.7.7" - "@polkadot/jsonrpc" "^1.0.0-beta.7" - "@polkadot/rpc-provider" "^1.0.0-beta.7" - "@polkadot/types" "^1.0.0-beta.7" - "@polkadot/util" "^2.0.0-beta.2" + "@polkadot/jsonrpc" "^1.0.0-beta.8" + "@polkadot/rpc-provider" "^1.0.0-beta.8" + "@polkadot/types" "^1.0.0-beta.8" + "@polkadot/util" "^2.0.0-beta.4" rxjs "^6.5.4" -"@polkadot/rpc-provider@^1.0.0-beta.7": - version "1.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-1.0.0-beta.7.tgz#43fe5bfb87351b9f6b0c54a0b12a0dbd6d1d4e27" - integrity sha512-jvzhJBxKE43NlqiS3KlkwlQnF8kaqSlbyE8JT6bIR4eRKIYWVTefIkNaHRrwuALOzE37V2XiFA01Cb9mp1Ns0g== +"@polkadot/rpc-provider@^1.0.0-beta.8": + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-1.0.0-beta.8.tgz#9e584b21b57b285df98d832c8ff2f61bf10cc716" + integrity sha512-E7Vwxnw4c3ec13kFmeWGyFOjUFAm6D++xOn9FT8KRGtT6+0iF2X02k7FS5cYQfhy6+d78eC1GPAAoqGqsYKMvg== dependencies: "@babel/runtime" "^7.7.7" - "@polkadot/metadata" "^1.0.0-beta.7" - "@polkadot/util" "^2.0.0-beta.2" - "@polkadot/util-crypto" "^2.0.0-beta.2" + "@polkadot/metadata" "^1.0.0-beta.8" + "@polkadot/util" "^2.0.0-beta.4" + "@polkadot/util-crypto" "^2.0.0-beta.4" eventemitter3 "^4.0.0" isomorphic-fetch "^2.2.1" websocket "^1.0.31" @@ -2308,15 +2308,15 @@ dependencies: "@types/chrome" "^0.0.91" -"@polkadot/types@^1.0.0-beta.7": - version "1.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-1.0.0-beta.7.tgz#2b812525ba2be1a7d8fcb14e6f1bd3aab33d5132" - integrity sha512-ZfDKvtUrQNL+RZbqtFAlgRqAd7LOr+MdfXnIefm0jWlF+avh/JSwDHXmhMZ6RCwRiankPRGAigB/WktNIW29oQ== +"@polkadot/types@^1.0.0-beta.8": + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-1.0.0-beta.8.tgz#60104657c810e948a52997c8c28d9812e76931fd" + integrity sha512-OzSSgJjiGdmnvOdqqsQ0sSauWPT2yEzgjjehpEo23O1Rxk3z2X/3QTXESJmsi4s6Ky7MYJ5fF/K6TSYxy/2jhA== dependencies: "@babel/runtime" "^7.7.7" - "@polkadot/metadata" "^1.0.0-beta.7" - "@polkadot/util" "^2.0.0-beta.2" - "@polkadot/util-crypto" "^2.0.0-beta.2" + "@polkadot/metadata" "^1.0.0-beta.8" + "@polkadot/util" "^2.0.0-beta.4" + "@polkadot/util-crypto" "^2.0.0-beta.4" "@types/memoizee" "^0.4.3" memoizee "^0.4.14" @@ -2364,7 +2364,7 @@ "@types/color" "^3.0.1" color "^3.1.2" -"@polkadot/util-crypto@^2.0.0-beta.2", "@polkadot/util-crypto@^2.0.0-beta.4": +"@polkadot/util-crypto@^2.0.0-beta.4": version "2.0.0-beta.4" resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-2.0.0-beta.4.tgz#1828ccf34a4f7246f74cd51de29977263296eaaf" integrity sha512-gKbLx4bm3EyR/C/P0ckFTuB17JRK31CKgY6a7bYxiNzOXLLEVBlFm8IznJv54trYb1St2xb3JpijMdJ2cuBL6w== @@ -2386,7 +2386,7 @@ tweetnacl "^1.0.1" xxhashjs "^0.2.2" -"@polkadot/util@^2.0.0-beta.2", "@polkadot/util@^2.0.0-beta.4": +"@polkadot/util@^2.0.0-beta.4": version "2.0.0-beta.4" resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-2.0.0-beta.4.tgz#f7be2e17abe85596c6860d980ee3af686154467a" integrity sha512-OsmCYd5Go0QQcYPNVcwv8brEGTDw25SLaWgaaU2YPJqLnHkJp/1vZW6VP6TSW15BpAxN0+GhZs84Ja+1gYHM/g==