From 39fb78afd47bff095bd9fe569c1b97f50c4c35c2 Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Thu, 16 Aug 2018 17:35:32 +0200 Subject: [PATCH] Retrieve block information (#229) * Retrieve block information * Render unknown addresses * Don't render extrinsics count (getBlock) if not needed * Fix dep versions --- packages/app-democracy/package.json | 2 +- packages/app-democracy/src/Item.tsx | 3 +- packages/app-example/package.json | 2 +- packages/app-explorer/package.json | 2 +- .../src/BlockByHash/BlockByHash.tsx | 74 ++++++++++++++++ .../app-explorer/src/BlockByHash/index.tsx | 31 +++++++ .../app-explorer/src/BlockHeader/index.tsx | 44 +++++----- packages/app-explorer/src/BlockHeaders.tsx | 1 + packages/app-explorer/src/Main.tsx | 25 ++++++ packages/app-explorer/src/Query.tsx | 73 +++++++++++++++ packages/app-explorer/src/index.css | 50 ++++++++++- packages/app-explorer/src/index.tsx | 13 +-- packages/app-extrinsics/package.json | 2 +- packages/app-staking/package.json | 2 +- packages/ui-app/package.json | 4 +- .../src/Extrinsic.tsx | 10 +-- packages/ui-app/src/InputAddress/index.tsx | 10 ++- .../ui-app/src/Params/Param/Timestamp.tsx | 43 +++++++++ packages/ui-app/src/Params/Param/Unknown.tsx | 13 ++- .../ui-app/src/Params/Param/findComponent.ts | 3 +- packages/ui-app/src/Static.tsx | 5 +- packages/ui-app/src/styles/components.css | 4 +- packages/ui-react-rx/package.json | 6 +- packages/ui-react-rx/src/Api/index.tsx | 23 +---- packages/ui-signer/package.json | 2 +- yarn.lock | 88 +++++++++---------- 26 files changed, 416 insertions(+), 119 deletions(-) create mode 100644 packages/app-explorer/src/BlockByHash/BlockByHash.tsx create mode 100644 packages/app-explorer/src/BlockByHash/index.tsx create mode 100644 packages/app-explorer/src/Main.tsx create mode 100644 packages/app-explorer/src/Query.tsx rename packages/{app-democracy => ui-app}/src/Extrinsic.tsx (77%) create mode 100644 packages/ui-app/src/Params/Param/Timestamp.tsx diff --git a/packages/app-democracy/package.json b/packages/app-democracy/package.json index eb02e2623e..dd88dfe37d 100644 --- a/packages/app-democracy/package.json +++ b/packages/app-democracy/package.json @@ -11,7 +11,7 @@ "license": "ISC", "dependencies": { "@babel/runtime": "^7.0.0-rc.1", - "@polkadot/storage": "^0.28.15", + "@polkadot/storage": "^0.28.16", "@polkadot/ui-react": "^0.19.35", "@polkadot/ui-react-rx": "^0.19.35", "@polkadot/util-keyring": "^0.28.3" diff --git a/packages/app-democracy/src/Item.tsx b/packages/app-democracy/src/Item.tsx index 9e434b0026..051aa372de 100644 --- a/packages/app-democracy/src/Item.tsx +++ b/packages/app-democracy/src/Item.tsx @@ -8,12 +8,12 @@ import { I18nProps } from '@polkadot/ui-app/types'; import BN from 'bn.js'; import React from 'react'; import Card from '@polkadot/ui-app/Card'; +import Extrinsic from '@polkadot/ui-app/Extrinsic'; import classes from '@polkadot/ui-app/util/classes'; import numberFormat from '@polkadot/ui-react-rx/util/numberFormat'; // TODO This would be nice as a shared component, move to ui-app as soon as // we have actual "more-than-one-use" apps -import Extrinsic from './Extrinsic'; import translate from './translate'; type Props = I18nProps & { @@ -23,6 +23,7 @@ type Props = I18nProps & { idNumber: BN }; +// FIXME Duplicated layout here and in explorer, clean up with extrinsics class Item extends React.PureComponent { render () { const { children, className, idNumber, proposal, proposalExtra, style } = this.props; diff --git a/packages/app-example/package.json b/packages/app-example/package.json index 3e7407eedf..8665e1ac14 100644 --- a/packages/app-example/package.json +++ b/packages/app-example/package.json @@ -11,7 +11,7 @@ "license": "ISC", "dependencies": { "@babel/runtime": "^7.0.0-rc.1", - "@polkadot/storage": "^0.28.15", + "@polkadot/storage": "^0.28.16", "@polkadot/ui-react": "^0.19.35", "@polkadot/ui-react-rx": "^0.19.35", "@polkadot/util-keyring": "^0.28.3" diff --git a/packages/app-explorer/package.json b/packages/app-explorer/package.json index 3f333d4eec..761917da48 100644 --- a/packages/app-explorer/package.json +++ b/packages/app-explorer/package.json @@ -11,7 +11,7 @@ "license": "ISC", "dependencies": { "@babel/runtime": "^7.0.0-rc.1", - "@polkadot/primitives": "^0.28.15", + "@polkadot/primitives": "^0.28.16", "@polkadot/ui-app": "^0.19.35", "@polkadot/util-crypto": "^0.28.3" } diff --git a/packages/app-explorer/src/BlockByHash/BlockByHash.tsx b/packages/app-explorer/src/BlockByHash/BlockByHash.tsx new file mode 100644 index 0000000000..c39a1523d4 --- /dev/null +++ b/packages/app-explorer/src/BlockByHash/BlockByHash.tsx @@ -0,0 +1,74 @@ +// Copyright 2017-2018 @polkadot/app-explorer authors & contributors +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. + +import { BareProps } from '@polkadot/ui-app/types'; +import { ApiProps } from '@polkadot/ui-react-rx/types'; + +import React from 'react'; +import withObservable from '@polkadot/ui-react-rx/with/observable'; +import AddressMini from '@polkadot/ui-app/AddressMini'; +import Card from '@polkadot/ui-app/Card'; +import Extrinsic from '@polkadot/ui-app/Extrinsic'; + +import BlockHeader from '../BlockHeader'; +import isHex from '@polkadot/util/is/hex'; + +type Props = ApiProps & BareProps & { + chainGetBlock: any, + value: string +}; + +// FIXME Duplicated layout here and in democracy, clean up with extrinsics +class BlockByHash extends React.PureComponent { + render () { + const { chainGetBlock, value } = this.props; + + if (!chainGetBlock) { + return null; + } + + const { extrinsics, header } = chainGetBlock; + + // TODO Remove, debug info for reverse-engineering + console.log('hash=', value); + console.log('block=', chainGetBlock); + + return ( +
+ +
+ {extrinsics.map((extrinsic: any, index: number) => ( +
+ +
+
+ {extrinsic.extrinsic.section}.{extrinsic.extrinsic.name} +
+
+ {extrinsic.extrinsic.description} +
+
+ {isHex(extrinsic.address) + ? extrinsic.address + : + } +
+
+ +
+
+ ))} +
+
+ ); + } +} + +export default withObservable('chainGetBlock', { paramProp: 'value' })(BlockByHash); diff --git a/packages/app-explorer/src/BlockByHash/index.tsx b/packages/app-explorer/src/BlockByHash/index.tsx new file mode 100644 index 0000000000..6568ef66cd --- /dev/null +++ b/packages/app-explorer/src/BlockByHash/index.tsx @@ -0,0 +1,31 @@ +// Copyright 2017-2018 @polkadot/app-explorer authors & contributors +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. + +import { BareProps } from '@polkadot/ui-app/types'; + +import React from 'react'; + +import BlockByHash from './BlockByHash'; + +type Props = BareProps & { + match: { + params: { + hash: string + } + } +}; + +export default class Entry extends React.PureComponent { + render () { + const { match: { params: { hash } } } = this.props; + + if (!hash) { + return null; + } + + return ( + + ); + } +} diff --git a/packages/app-explorer/src/BlockHeader/index.tsx b/packages/app-explorer/src/BlockHeader/index.tsx index 85866d6bb5..1287e424db 100644 --- a/packages/app-explorer/src/BlockHeader/index.tsx +++ b/packages/app-explorer/src/BlockHeader/index.tsx @@ -4,28 +4,31 @@ import { Header } from '@polkadot/primitives/header'; import { I18nProps } from '@polkadot/ui-app/types'; -import { ApiProps } from '@polkadot/ui-react-rx/types'; import './BlockHeader.css'; import React from 'react'; - +import { Link } from 'react-router-dom'; import headerHash from '@polkadot/primitives/codec/header/hash'; import classes from '@polkadot/ui-app/util/classes'; import numberFormat from '@polkadot/ui-react-rx/util/numberFormat'; -import withApi from '@polkadot/ui-react-rx/with/api'; import u8aToHex from '@polkadot/util/u8a/toHex'; import translate from '../translate'; -import Extrinsics from './Extrinsics'; -type Props = ApiProps & I18nProps & { - value?: Header +// NOTE This add unneeded load, for now just on click-through +import Extrinsics from './Extrinsics'; +// + +type Props = I18nProps & { + value?: Header, + withExtrinsics?: boolean, + withLink?: boolean }; class BlockHeader extends React.PureComponent { render () { - const { className, value, style } = this.props; + const { className, value, style, withExtrinsics = false, withLink = false } = this.props; if (!value) { return null; @@ -34,6 +37,10 @@ class BlockHeader extends React.PureComponent { const hash = headerHash(value); // tslint:disable-next-line:variable-name const { extrinsicsRoot, number, parentHash, stateRoot } = value; + const hashHex = u8aToHex(hash); + const linkable = withLink + ? {hashHex} + : hashHex; return (
{
- {u8aToHex(hash)} + {linkable}
@@ -67,27 +74,16 @@ class BlockHeader extends React.PureComponent { {u8aToHex(stateRoot)} - {this.renderExtrinsics(hash)} + {withExtrinsics + ? + : undefined + }
); } - - private renderExtrinsics (hash: Uint8Array) { - const { apiMethods } = this.props; - - if (!apiMethods['chain_getBlock']) { - return null; - } - - return ( - - ); - } } -export default withApi( - translate(BlockHeader) -); +export default translate(BlockHeader); diff --git a/packages/app-explorer/src/BlockHeaders.tsx b/packages/app-explorer/src/BlockHeaders.tsx index 9596e8007b..78e8e8c8bc 100644 --- a/packages/app-explorer/src/BlockHeaders.tsx +++ b/packages/app-explorer/src/BlockHeaders.tsx @@ -41,6 +41,7 @@ export default withObservableDiv('chainNewHead', apiOptions)( )), { className: 'explorer--BlockHeaders' } diff --git a/packages/app-explorer/src/Main.tsx b/packages/app-explorer/src/Main.tsx new file mode 100644 index 0000000000..130864b6e3 --- /dev/null +++ b/packages/app-explorer/src/Main.tsx @@ -0,0 +1,25 @@ +// Copyright 2017-2018 @polkadot/app-explorer authors & contributors +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. + +import { BareProps } from '@polkadot/ui-app/types'; + +import React from 'react'; + +import Query from './Query'; +import Summary from './Summary'; +import BlockHeaders from './BlockHeaders'; + +type Props = BareProps & { + basePath: string +}; + +export default class Main extends React.PureComponent { + render () { + return [ + , + , + + ]; + } +} diff --git a/packages/app-explorer/src/Query.tsx b/packages/app-explorer/src/Query.tsx new file mode 100644 index 0000000000..699b2ccf5d --- /dev/null +++ b/packages/app-explorer/src/Query.tsx @@ -0,0 +1,73 @@ +// Copyright 2017-2018 @polkadot/app-explorer authors & contributors +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. + +import { I18nProps } from '@polkadot/ui-app/types'; + +import React from 'react'; +import Button from '@polkadot/ui-app/Button'; +import Input from '@polkadot/ui-app/Input'; +import Labelled from '@polkadot/ui-app/Labelled'; +import isHex from '@polkadot/util/is/hex'; + +import translate from './translate'; + +type Props = I18nProps & {}; + +type State = { + hash: string + isValid: boolean +}; + +class Query extends React.PureComponent { + state: State = { + hash: '', + isValid: false + }; + + render () { + const { t } = this.props; + const { hash, isValid } = this.state; + + return ( +
+
+
+
+ + +
+
+
+ ); + } + + private setHash = (hash: string) => { + this.setState({ + hash, + isValid: isHex(hash, 256) + }); + } + + private onQuery = () => { + const { hash } = this.state; + + window.location.hash = `/explorer/hash/${hash}`; + } +} + +export default translate(Query); diff --git a/packages/app-explorer/src/index.css b/packages/app-explorer/src/index.css index fc612d7c85..0636665e38 100644 --- a/packages/app-explorer/src/index.css +++ b/packages/app-explorer/src/index.css @@ -30,12 +30,42 @@ text-align: right; } +.explorer--BlockByHash-extrinsics { + display: flex; + flex-wrap: wrap; + margin-top: 2em; +} + +.explorer--BlockByHash-extrinsic { + flex: 0 0 50%; + min-width: 0; +} + +.explorer--BlockByHash-extrinsic-header { + position: relative; + margin-bottom: 1rem; +} + +.explorer--BlockByHash-extrinsic-header-description { + color: rgba(0, 0, 0, 0.6); +} + +.explorer--BlockByHash-extrinsic-header-name { + font-size: 1.2rem; + line-height: 1.2rem; +} + +.explorer--BlockByHash-header-right { + position: absolute; + top: 0em; + right: 1em; +} + .explorer--Summary { align-items: stretch; display: flex; justify-content: space-between; flex-wrap: wrap; - margin-bottom: 2em; } .explorer--Summary-column { @@ -48,3 +78,21 @@ flex: 0 1 auto; text-align: left; } + +.explorer--Query { + margin-bottom: 2em; +} + +.storage--Query-actionrow { + display: flex; +} + +.storage--Query-actionrow-hash { + flex: 1; + min-width: 0; +} + +.storage--Query-actionrow-button { + flex: 0; + padding: 0 0.25rem; +} diff --git a/packages/app-explorer/src/index.tsx b/packages/app-explorer/src/index.tsx index d15e147bea..80c5004281 100644 --- a/packages/app-explorer/src/index.tsx +++ b/packages/app-explorer/src/index.tsx @@ -8,16 +8,17 @@ import './index.css'; import React from 'react'; import Page from '@polkadot/ui-app/Page'; +import { Route, Switch } from 'react-router'; import classes from '@polkadot/ui-app/util/classes'; -import Summary from './Summary'; -import BlockHeaders from './BlockHeaders'; +import BlockByHash from './BlockByHash'; +import Main from './Main'; type Props = BareProps & { basePath: string }; -export default class ExplorerApp extends React.PureComponent { +export default class ExplorerApp extends React.Component { render () { const { className, style } = this.props; @@ -26,8 +27,10 @@ export default class ExplorerApp extends React.PureComponent { className={classes('explorer--App', className)} style={style} > - - + + + + ); } diff --git a/packages/app-extrinsics/package.json b/packages/app-extrinsics/package.json index a354c1a37b..dadd45a9cd 100644 --- a/packages/app-extrinsics/package.json +++ b/packages/app-extrinsics/package.json @@ -11,7 +11,7 @@ "license": "ISC", "dependencies": { "@babel/runtime": "^7.0.0-rc.1", - "@polkadot/extrinsics": "^0.28.15", + "@polkadot/extrinsics": "^0.28.16", "@polkadot/ui-app": "^0.19.35", "@polkadot/ui-signer": "^0.19.35", "react-dropzone": "^4.3.0" diff --git a/packages/app-staking/package.json b/packages/app-staking/package.json index 025f89be57..2cca076710 100644 --- a/packages/app-staking/package.json +++ b/packages/app-staking/package.json @@ -12,7 +12,7 @@ "dependencies": { "@babel/runtime": "^7.0.0-rc.1", "@polkadot/app-extrinsics": "^0.19.35", - "@polkadot/storage": "^0.28.15", + "@polkadot/storage": "^0.28.16", "@polkadot/ui-app": "^0.19.35", "@polkadot/ui-keyring": "^0.19.35", "@polkadot/ui-react": "^0.19.35", diff --git a/packages/ui-app/package.json b/packages/ui-app/package.json index 57a1ff9954..a78079a1a3 100644 --- a/packages/ui-app/package.json +++ b/packages/ui-app/package.json @@ -11,8 +11,8 @@ "license": "ISC", "dependencies": { "@babel/runtime": "^7.0.0-rc.1", - "@polkadot/extrinsics": "^0.28.15", - "@polkadot/storage": "^0.28.15", + "@polkadot/extrinsics": "^0.28.16", + "@polkadot/storage": "^0.28.16", "@polkadot/ui-keyring": "^0.19.35", "@polkadot/ui-react": "^0.19.35", "@polkadot/ui-react-rx": "^0.19.35", diff --git a/packages/app-democracy/src/Extrinsic.tsx b/packages/ui-app/src/Extrinsic.tsx similarity index 77% rename from packages/app-democracy/src/Extrinsic.tsx rename to packages/ui-app/src/Extrinsic.tsx index a8d4e41331..43b24b689a 100644 --- a/packages/app-democracy/src/Extrinsic.tsx +++ b/packages/ui-app/src/Extrinsic.tsx @@ -3,13 +3,13 @@ // of the ISC license. See the LICENSE file for details. import { ExtrinsicDecoded } from '@polkadot/params/types'; -import { I18nProps } from '@polkadot/ui-app/types'; -import { RawParam } from '@polkadot/ui-app/Params/types'; +import { I18nProps } from './types'; +import { RawParam } from './Params/types'; import React from 'react'; -import Params from '@polkadot/ui-app/Params'; -import classes from '@polkadot/ui-app/util/classes'; +import classes from './util/classes'; +import Params from './Params'; import translate from './translate'; export type Props = I18nProps & { @@ -28,7 +28,7 @@ class Extrinsic extends React.PureComponent { return (
{children} diff --git a/packages/ui-app/src/InputAddress/index.tsx b/packages/ui-app/src/InputAddress/index.tsx index f8e2dde64e..e4165fffea 100644 --- a/packages/ui-app/src/InputAddress/index.tsx +++ b/packages/ui-app/src/InputAddress/index.tsx @@ -12,6 +12,7 @@ import React from 'react'; import keyring from '@polkadot/ui-keyring/index'; import createOptionHeader from '@polkadot/ui-keyring/options/header'; import addressDecode from '@polkadot/util-keyring/address/decode'; +import makeOption from '@polkadot/ui-keyring/options/item'; import Dropdown from '../Dropdown'; import classes from '../util/classes'; @@ -71,6 +72,9 @@ export default class InputAddress extends React.Component { const { className, hideAddress = false, isDisabled = false, isError, label, onChange, type = 'all', style, withLabel } = this.props; const { defaultValue, value } = this.state; const options = keyring.getOptions(type); + const hasValue = !!options.find(({ key }) => + key === defaultValue + ); return ( { label={label} onChange={onChange} onSearch={this.onSearch} - options={options} + options={ + isDisabled && !hasValue && defaultValue + ? [makeOption(defaultValue)] + : options + } style={style} transform={transform} value={value} diff --git a/packages/ui-app/src/Params/Param/Timestamp.tsx b/packages/ui-app/src/Params/Param/Timestamp.tsx new file mode 100644 index 0000000000..491a5e250b --- /dev/null +++ b/packages/ui-app/src/Params/Param/Timestamp.tsx @@ -0,0 +1,43 @@ +// Copyright 2017-2018 @polkadot/ui-app authors & contributors +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. + +import { Props, RawParam$OnChange$Value } from '../types'; + +import React from 'react'; + +import Amount from './Amount'; +import Static from '../../Static'; + +export default class Code extends React.PureComponent { + render () { + const { className, defaultValue, isDisabled, isError, label, style, withLabel } = this.props; + const Component = isDisabled + ? Static + : Amount; + + return ( + + ); + } + + // TODO: Validate that we have actual proper WASM code + onChange = (value: RawParam$OnChange$Value): void => { + const { onChange } = this.props; + + onChange && onChange(value); + } +} diff --git a/packages/ui-app/src/Params/Param/Unknown.tsx b/packages/ui-app/src/Params/Param/Unknown.tsx index b998599716..c37e0da177 100644 --- a/packages/ui-app/src/Params/Param/Unknown.tsx +++ b/packages/ui-app/src/Params/Param/Unknown.tsx @@ -8,16 +8,27 @@ import React from 'react'; import typeToString from '@polkadot/params/typeToString'; +import Static from '../../Static'; import translate from '../../translate'; import Base from './Base'; type Props = BareProps & { + isDiabled?: boolean, defaultValue: RawParam, t: any, // I18Next$Translate? withLabel?: boolean }; -function Unknown ({ defaultValue: { type }, label, t, withLabel }: Props) { +function Unknown ({ defaultValue: { value, type }, isDisabled, label, t, withLabel }: Props) { + if (isDisabled) { + return ( + + ); + } + return ( { render () { - const { className, children, isHidden, label, style, value, withLabel } = this.props; + const { className, children, defaultValue, isHidden, label, style, value, withLabel } = this.props; return ( { withLabel={withLabel} >
- {value} + {value || defaultValue} {children}
diff --git a/packages/ui-app/src/styles/components.css b/packages/ui-app/src/styles/components.css index dc41c6fe84..ddff4c4fd9 100644 --- a/packages/ui-app/src/styles/components.css +++ b/packages/ui-app/src/styles/components.css @@ -129,8 +129,8 @@ } .ui--Card { - background: #fefefe; - border: 1px solid #f5f5f5; + background: #fcfcfc; + border: 1px solid #fafafa; border-radius: 0.25rem; margin: 0.5rem; padding: 1.5rem; diff --git a/packages/ui-react-rx/package.json b/packages/ui-react-rx/package.json index c060846b4a..407af4b30b 100644 --- a/packages/ui-react-rx/package.json +++ b/packages/ui-react-rx/package.json @@ -31,9 +31,9 @@ "homepage": "https://github.com/polkadot-js/ui/tree/master/packages/ui-react-rx#readme", "dependencies": { "@babel/runtime": "^7.0.0-rc.1", - "@polkadot/api-rx": "^0.28.15", - "@polkadot/extrinsics": "^0.28.15", - "@polkadot/storage": "^0.28.15", + "@polkadot/api-rx": "^0.28.16", + "@polkadot/extrinsics": "^0.28.16", + "@polkadot/storage": "^0.28.16", "rxjs-compat": "^6.2.2" }, "devDependencies": { diff --git a/packages/ui-react-rx/src/Api/index.tsx b/packages/ui-react-rx/src/Api/index.tsx index 7296e8aed3..0283e04d61 100644 --- a/packages/ui-react-rx/src/Api/index.tsx +++ b/packages/ui-react-rx/src/Api/index.tsx @@ -17,7 +17,6 @@ import defaults from '@polkadot/api-rx/defaults'; import ApiObservable from '../ApiObservable'; import ApiContext from './Context'; -import isUndefined from '@polkadot/util/is/undefined'; type Props = { api?: RxApiInterface, @@ -119,26 +118,8 @@ export default class Api extends React.PureComponent { private subscribeMethodCheck = (api: RxApiInterface): void => { api.chain .newHead() - .subscribe(async (header?: Header) => { - if (!header || !isUndefined(this.state.apiMethods['chain_getBlock'])) { - return; - } - - let isSupported = false; - - try { - await api.chain.getBlock(header.parentHash).toPromise(); - isSupported = true; - } catch (error) { - // console.error('chain_getBlock not supported, ignoring'); - } - - this.setState(({ apiMethods }: State) => ({ - apiMethods: { - ...apiMethods, - 'chain_getBlock': isSupported - } - })); + .subscribe((header?: Header) => { + // here we can check for missing methods }); } diff --git a/packages/ui-signer/package.json b/packages/ui-signer/package.json index 8a9a0869dc..d0d5f9a5fa 100644 --- a/packages/ui-signer/package.json +++ b/packages/ui-signer/package.json @@ -11,7 +11,7 @@ "license": "ISC", "dependencies": { "@babel/runtime": "^7.0.0-rc.1", - "@polkadot/extrinsics": "^0.28.15", + "@polkadot/extrinsics": "^0.28.16", "@polkadot/ui-app": "^0.19.35", "@polkadot/ui-keyring": "^0.19.35" }, diff --git a/yarn.lock b/yarn.lock index 089107b451..af2ecb38bd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1291,22 +1291,22 @@ version "1.1.0" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz#50c1e2260ac0ed9439a181de3725a0168d59c48a" -"@polkadot/api-format@^0.28.15": - version "0.28.15" - resolved "https://registry.yarnpkg.com/@polkadot/api-format/-/api-format-0.28.15.tgz#0ca2260e980026af402ffa89fa433278e69ba2a1" +"@polkadot/api-format@^0.28.16": + version "0.28.16" + resolved "https://registry.yarnpkg.com/@polkadot/api-format/-/api-format-0.28.16.tgz#3642cac8f22b8af25715b2d6c27eee5c89982efa" dependencies: "@babel/runtime" "^7.0.0-rc.1" - "@polkadot/jsonrpc" "^0.28.15" - "@polkadot/primitives" "^0.28.15" + "@polkadot/jsonrpc" "^0.28.16" + "@polkadot/primitives" "^0.28.16" "@polkadot/util" "^0.28.3" "@polkadot/util-keyring" "^0.28.3" -"@polkadot/api-provider@^0.28.15": - version "0.28.15" - resolved "https://registry.yarnpkg.com/@polkadot/api-provider/-/api-provider-0.28.15.tgz#d96ae577d3a4a4cfcc4b17f2fa2e400f2d046c63" +"@polkadot/api-provider@^0.28.16": + version "0.28.16" + resolved "https://registry.yarnpkg.com/@polkadot/api-provider/-/api-provider-0.28.16.tgz#2c4073dfa86bb426371da5e2e29614785db373e5" dependencies: "@babel/runtime" "^7.0.0-rc.1" - "@polkadot/storage" "^0.28.15" + "@polkadot/storage" "^0.28.16" "@polkadot/util" "^0.28.3" "@polkadot/util-crypto" "^0.28.3" "@polkadot/util-keyring" "^0.28.3" @@ -1315,25 +1315,25 @@ isomorphic-fetch "^2.2.1" websocket "^1.0.25" -"@polkadot/api-rx@^0.28.15": - version "0.28.15" - resolved "https://registry.yarnpkg.com/@polkadot/api-rx/-/api-rx-0.28.15.tgz#521cdd7753cc83dbed29b737014bfb55e88cd2c4" +"@polkadot/api-rx@^0.28.16": + version "0.28.16" + resolved "https://registry.yarnpkg.com/@polkadot/api-rx/-/api-rx-0.28.16.tgz#fc8ff96815a57f5224490bcda3e4d0b80c98a579" dependencies: "@babel/runtime" "^7.0.0-rc.1" - "@polkadot/api" "^0.28.15" - "@polkadot/api-provider" "^0.28.15" + "@polkadot/api" "^0.28.16" + "@polkadot/api-provider" "^0.28.16" "@types/rx" "^4.1.1" rxjs "^6.2.2" -"@polkadot/api@^0.28.15": - version "0.28.15" - resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-0.28.15.tgz#763816de983118f013fd59444acbdfdba4086019" +"@polkadot/api@^0.28.16": + version "0.28.16" + resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-0.28.16.tgz#44ff0f39925bf9d0d31b1914691eb25a0052770f" dependencies: "@babel/runtime" "^7.0.0-rc.1" - "@polkadot/api-format" "^0.28.15" - "@polkadot/api-provider" "^0.28.15" - "@polkadot/jsonrpc" "^0.28.15" - "@polkadot/params" "^0.28.15" + "@polkadot/api-format" "^0.28.16" + "@polkadot/api-provider" "^0.28.16" + "@polkadot/jsonrpc" "^0.28.16" + "@polkadot/params" "^0.28.16" "@polkadot/util" "^0.28.3" "@polkadot/dev-react@^0.20.16": @@ -1401,48 +1401,48 @@ typedoc "^0.11.1" typescript "^3.0.1" -"@polkadot/extrinsics@^0.28.15": - version "0.28.15" - resolved "https://registry.yarnpkg.com/@polkadot/extrinsics/-/extrinsics-0.28.15.tgz#514331541b06198174db36a9a6d6bb888c4db13e" +"@polkadot/extrinsics@^0.28.16": + version "0.28.16" + resolved "https://registry.yarnpkg.com/@polkadot/extrinsics/-/extrinsics-0.28.16.tgz#d94a49de59ec7686db6c2e1dd80a0e10c4cbb199" dependencies: "@babel/runtime" "^7.0.0-rc.1" - "@polkadot/params" "^0.28.15" - "@polkadot/primitives" "^0.28.15" + "@polkadot/params" "^0.28.16" + "@polkadot/primitives" "^0.28.16" "@polkadot/util" "^0.28.3" -"@polkadot/jsonrpc@^0.28.15": - version "0.28.15" - resolved "https://registry.yarnpkg.com/@polkadot/jsonrpc/-/jsonrpc-0.28.15.tgz#a29a707cc8c6fa1c9443c533aea70a32f9128824" +"@polkadot/jsonrpc@^0.28.16": + version "0.28.16" + resolved "https://registry.yarnpkg.com/@polkadot/jsonrpc/-/jsonrpc-0.28.16.tgz#cf60e160e53aec10eb5cc605e16d8af3182ff344" dependencies: - "@polkadot/params" "^0.28.15" + "@polkadot/params" "^0.28.16" babel-runtime "^6.26.0" -"@polkadot/params@^0.28.15": - version "0.28.15" - resolved "https://registry.yarnpkg.com/@polkadot/params/-/params-0.28.15.tgz#f75622235541ab6dd70733d124a7c25ce46ccb63" +"@polkadot/params@^0.28.16": + version "0.28.16" + resolved "https://registry.yarnpkg.com/@polkadot/params/-/params-0.28.16.tgz#79422f73266fb317e0327f5ce2c5d1303d883e93" dependencies: "@babel/runtime" "^7.0.0-rc.1" - "@polkadot/extrinsics" "^0.28.15" - "@polkadot/params" "^0.28.15" - "@polkadot/primitives" "^0.28.15" + "@polkadot/extrinsics" "^0.28.16" + "@polkadot/params" "^0.28.16" + "@polkadot/primitives" "^0.28.16" "@polkadot/util" "^0.28.3" "@polkadot/util-keyring" "^0.28.3" -"@polkadot/primitives@^0.28.15": - version "0.28.15" - resolved "https://registry.yarnpkg.com/@polkadot/primitives/-/primitives-0.28.15.tgz#cba54b01b440a938ae8d153aabb6098307cf3beb" +"@polkadot/primitives@^0.28.16": + version "0.28.16" + resolved "https://registry.yarnpkg.com/@polkadot/primitives/-/primitives-0.28.16.tgz#e44774c077ee3446bd26ac72e09f455ec6d34375" dependencies: "@babel/runtime" "^7.0.0-rc.1" "@polkadot/trie-hash" "^0.28.3" "@polkadot/util" "^0.28.3" -"@polkadot/storage@^0.28.15": - version "0.28.15" - resolved "https://registry.yarnpkg.com/@polkadot/storage/-/storage-0.28.15.tgz#5778f7c16651d6eca7d2d4129edc4031e798fd8e" +"@polkadot/storage@^0.28.16": + version "0.28.16" + resolved "https://registry.yarnpkg.com/@polkadot/storage/-/storage-0.28.16.tgz#7207d8a5aa4b21ecd31183ab734a8087458b7a85" dependencies: "@babel/runtime" "^7.0.0-rc.1" - "@polkadot/params" "^0.28.15" - "@polkadot/primitives" "^0.28.15" + "@polkadot/params" "^0.28.16" + "@polkadot/primitives" "^0.28.16" "@polkadot/util" "^0.28.3" "@polkadot/util-crypto" "^0.28.3" "@polkadot/util-keyring" "^0.28.3"