Basic parameter passing with storage (#28)

* Basic parameter passing with storage

* Add GH link

* Cleanup param formatting
This commit is contained in:
Jaco Greeff 2018-05-07 17:36:32 +02:00 committed by GitHub
parent a33522298d
commit 724e1e1b3d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 271 additions and 163 deletions

View File

@ -11,9 +11,9 @@
"test": "jest --coverage"
},
"devDependencies": {
"@polkadot/primitives": "^0.12.7",
"@polkadot/primitives-codec": "^0.12.7",
"@polkadot/primitives-json": "^0.12.7",
"@polkadot/primitives": "^0.12.8",
"@polkadot/primitives-codec": "^0.12.8",
"@polkadot/primitives-json": "^0.12.8",
"@polkadot/ui-react-app": "^0.1.11",
"@polkadot/util-crypto": "^0.19.5"
}

View File

@ -11,8 +11,8 @@
"test": "jest --coverage"
},
"devDependencies": {
"@polkadot/extrinsics": "^0.12.7",
"@polkadot/extrinsics-codec": "^0.12.7",
"@polkadot/extrinsics": "^0.12.8",
"@polkadot/extrinsics-codec": "^0.12.8",
"@polkadot/ui-react-app": "^0.1.11",
"react-dropzone": "^4.2.9"
}

View File

@ -61,7 +61,7 @@ export default class ExtrinsicDisplay extends React.PureComponent<Props, State>
/>
</div>
<Params
extrinsic={extrinsic}
item={extrinsic}
onChange={this.onChangeValues}
overrides={paramComponents}
/>

View File

@ -35,7 +35,7 @@ function Decoded ({ className, style, t, value: { extrinsic: { name, section },
<div className='expanded'>
<p>
<Trans i18nkey='decoded.short'>
You are about to sign a message from <span className='code'>{from}</span> calling <span className='code'>{section}_{name}</span> with an index of <span className='code'>{nonce.toString()}</span>
You are about to sign a message from <span className='code'>{from}</span> calling <span className='code'>{section}.{name}</span> with an index of <span className='code'>{nonce.toString()}</span>
</Trans>
</p>
<p>

View File

@ -1,37 +0,0 @@
// Copyright 2017-2018 Jaco Greeff
// This software may be modified and distributed under the terms
// of the ISC license. See the LICENSE file for details.
// @flow
import type BN from 'bn.js';
import type { StorageDef$Key } from '@polkadot/storage/types';
import withStorageDiv from '@polkadot/ui-react-rx/with/storageDiv';
import u8aToHexShort from '@polkadot/util/u8a/toHexShort';
import isU8a from '@polkadot/util/is/u8a';
export default function cached (key: StorageDef$Key, params?: Array<*> = []): React$ComponentType<*> {
return withStorageDiv(key, { params })(
(value?: boolean | BN | Date | Uint8Array): string => {
if (typeof value === typeof true) {
// flowlint-next-line sketchy-null-bool:off
return value
? 'Yes'
: 'No';
}
// flowlint-next-line sketchy-null-bool:off
if (!value) {
return 'unknown';
}
if (isU8a(value)) {
// $FlowFixMe type has been determined
return u8aToHexShort(value, 256);
}
return value.toString();
},
{ className: 'ui disabled dropdown selection' }
);
}

View File

@ -0,0 +1,67 @@
// Copyright 2017-2018 Jaco Greeff
// This software may be modified and distributed under the terms
// of the ISC license. See the LICENSE file for details.
// @flow
import type { Param$Type, Param$TypeArray } from '@polkadot/primitives/param';
import React from 'react';
// import IdentityIcon from '@polkadot/ui-react/IdentityIcon';
import addressEncode from '@polkadot/util-keyring/address/encode';
import u8aToBn from '@polkadot/util/u8a/toBn';
import u8aToHexShort from '@polkadot/util/u8a/toHexShort';
import isU8a from '@polkadot/util/is/u8a';
// flowlint-next-line unclear-type:off
export default function format (type: Param$Type | Param$TypeArray, value?: any, fontSize?: number = 14): any {
if (type === 'bool') {
return (
<span>{value
? 'Yes'
: 'No'
}</span>
);
}
if (!value) {
return (
<span>unknown</span>
);
}
// FIXME: this is a hack, but just to get it going, we should be going through and decoding arrays properly
if (Array.isArray(type)) {
const u8a = (value: Uint8Array);
const length = u8aToBn(u8a.slice(0, 4), true).toNumber();
const result = [];
let offset = 4;
// FIXME: 32? Only for Hash & AccountId ...
for (let i = 0; i < length; i++, offset += 32) {
result.push(format(type[0], u8a.slice(offset, offset + 32), fontSize));
}
return result;
}
if (type === 'AccountId') {
const address = addressEncode((value: Uint8Array));
// const size = Math.floor(fontSize + (fontSize / 14) * 18);
// <IdentityIcon size={size} value={address} />
return (
<span>{address}</span>
);
}
if (isU8a(value)) {
return (
<span>{u8aToHexShort((value: Uint8Array), 256)}</span>
);
}
return (
<span>{value.toString()}</span>
);
}

View File

@ -9,9 +9,11 @@ import type { StorageQuery } from '../types';
import React from 'react';
import Button from 'semantic-ui-react/dist/es/elements/Button';
import Label from 'semantic-ui-react/dist/es/elements/Label';
import typeToText from '@polkadot/ui-react-app/src/Params/typeToText';
import withStorageDiv from '@polkadot/ui-react-rx/with/storageDiv';
import translate from '../translate';
import createCached from './cached';
import format from './format';
type Props = I18nProps & {
onRemove: (id: number) => void,
@ -23,7 +25,13 @@ const cache = [];
function Query ({ className, onRemove, style, value: { id, key, params } }: Props): React$Node {
const CachedQuery = (() => {
if (!cache[id]) {
cache[id] = createCached(key, params);
const values = params.map(({ value }) => value);
cache[id] = withStorageDiv(key, { params: values })(
(value) =>
format(key.type, value),
{ className: 'ui disabled dropdown selection' }
);
}
return cache[id];
@ -37,18 +45,23 @@ function Query ({ className, onRemove, style, value: { id, key, params } }: Prop
const inputs = Object
.keys(key.params || {})
// $FlowFixMe key.params exists
.map((name) => `${name}: ${key.params[name].type}`)
.join(', ');
.map((name, index) => {
// $FlowFixMe key.params exists
const formatted = format(key.params[name].type, params[index].value, 12);
return (
<span>{name}={formatted}</span>
);
});
return (
<div
className={['storage--Queries-Query', 'storage--actionrow', className].join(' ')}
className={['storage--Query', 'storage--actionrow', className].join(' ')}
style={style}
>
<div className='storage--actionrow-value'>
<Label>
{key.section}_{key.name}({inputs}): {key.type}
{key.section}.{key.name}({inputs}): {typeToText(key.type)}
</Label>
<CachedQuery />
</div>

View File

@ -5,13 +5,17 @@
import type { StorageDef$Key } from '@polkadot/storage/types';
import type { I18nProps } from '@polkadot/ui-react-app/types';
import type { RawParams } from '@polkadot/ui-react-app/Params/types';
import type { StorageQuery } from './types';
import React from 'react';
import Button from 'semantic-ui-react/dist/es/elements/Button';
import Label from 'semantic-ui-react/dist/es/elements/Label';
// import encode from '@polkadot/extrinsics-codec/encode/params';
import storage from '@polkadot/storage-substrate/keys';
import InputStorage from '@polkadot/ui-react-app/src/InputStorage';
import Params from '@polkadot/ui-react-app/src/Params';
import isUndefined from '@polkadot/util/is/undefined';
import translate from './translate';
@ -20,7 +24,9 @@ type Props = I18nProps & {
};
type State = {
key: StorageDef$Key
isValid: boolean,
key: StorageDef$Key,
params: RawParams
};
const defaultValue = storage.timestamp.keys.current;
@ -30,14 +36,14 @@ class Selection extends React.PureComponent<Props, State> {
constructor (props: Props) {
super(props);
this.state = {
this.state = ({
key: defaultValue
};
}: $Shape<State>);
}
render (): React$Node {
const { className, style, t } = this.props;
const { key } = this.state;
const { isValid, key } = this.state;
return (
<div
@ -50,13 +56,17 @@ class Selection extends React.PureComponent<Props, State> {
labelSection={t('selection.section', {
defaultValue: 'query storage area'
})}
onChange={this.onChangeStorage}
onChange={this.onChangeKey}
/>
<Params
item={key}
onChange={this.onChangeParams}
/>
</div>
<div className='storage--actionrow-button'>
<Label>&nbsp;</Label>
<Button
disabled={!key}
disabled={!isValid}
icon='plus'
onClick={this.onAdd}
primary
@ -66,19 +76,45 @@ class Selection extends React.PureComponent<Props, State> {
);
}
nextState (newState: $Shape<State>): void {
this.setState(
(prevState: State) => {
const { key = prevState.key, params = prevState.params } = newState;
const keyParams = Object.values(key.params || {});
const valParams = params || [];
const isValid = valParams.length === keyParams.length &&
keyParams.reduce((isValid, param, index) =>
isValid &&
!isUndefined(valParams[index]) &&
!isUndefined(valParams[index].value) &&
valParams[index].isValid, true);
return {
isValid,
key,
params
};
}
);
}
onAdd = (): void => {
const { onAdd } = this.props;
const { key } = this.state;
const { key, params } = this.state;
onAdd({
id: ++id,
key,
params: []
params
});
}
onChangeStorage = (key: StorageDef$Key): void => {
this.setState({ key });
onChangeKey = (key: StorageDef$Key): void => {
this.nextState({ key });
}
onChangeParams = (params?: RawParams = []): void => {
this.nextState({ params });
}
}

View File

@ -7,7 +7,26 @@
}
.storage--Queries {
margin-top: 1em;
margin-top: 2em;
}
.storage--Query {
margin-bottom: 0.25em;
padding: 0.25em 0.75em;
}
.storage--Query .ui.disabled.dropdown.selection {
color: #aaa;
opacity: 1;
}
.storage--Query span+span {
margin-left: 0.5em;
}
.storage--Query .ui--IdentityIcon {
margin: -10px 0;
vertical-align: middle;
}
.storage--actionrow {

View File

@ -7,9 +7,16 @@
flex-shrink: 0;
min-width: 12em;
padding: 0.75em 0 0 0.75em;
position: relative;
text-align: left;
}
.apps--SideBar .ui.vertical.menu {
margin: 0;
}
.apps--SideBar-github {
position: absolute;
bottom: 1.5em;
left: 1.5em;
}

View File

@ -8,6 +8,7 @@ import type { I18nProps } from '@polkadot/ui-react-app/types';
import './SideBar.css';
import React from 'react';
import Icon from 'semantic-ui-react/dist/es/elements/Icon';
import Menu from 'semantic-ui-react/dist/es/collections/Menu';
import routing from '../routing';
@ -37,6 +38,7 @@ function SideBar ({ className, style, t }: Props): React$Node {
))
}
</Menu>
<a className='apps--SideBar-github' href='https://github.com/polkadot-js/apps'><Icon name='github' /> GitHub</a>
</div>
);
}

View File

@ -11,10 +11,10 @@
"test": "jest --coverage"
},
"dependencies": {
"@polkadot/extrinsics-substrate": "^0.12.7",
"@polkadot/storage-substrate": "^0.12.7",
"@polkadot/ui-react": "^0.11.1",
"@polkadot/ui-react-rx": "^0.11.1",
"@polkadot/extrinsics-substrate": "^0.12.8",
"@polkadot/storage-substrate": "^0.12.8",
"@polkadot/ui-react": "^0.11.2",
"@polkadot/ui-react-rx": "^0.11.2",
"@polkadot/util": "^0.19.5",
"@polkadot/util-keyring": "^0.19.5",
"i18next": "^11.1.1",

View File

@ -20,9 +20,9 @@ export default function createOptions (sectionName: any): Array<*> {
.keys(section.keys)
.sort()
.filter((name) => {
const { isDeprecated = false, isHidden = false, params = {} } = section.keys[name];
const { isDeprecated = false, isHidden = false } = section.keys[name];
return !isDeprecated && !isHidden && Object.keys(params).length === 0;
return !isDeprecated && !isHidden;
})
.map((name) => {
const { description = '', params = {} } = section.keys[name];

View File

@ -14,9 +14,9 @@ export default function createOptions (): Array<*> {
const methods = Object
.keys(keys)
.filter((name) => {
const { isDeprecated = false, isHidden = false, params = {} } = keys[name];
const { isDeprecated = false, isHidden = false } = keys[name];
return !isDeprecated && !isHidden && Object.keys(params).length === 0;
return !isDeprecated && !isHidden;
});
return !isDeprecated && methods.length !== 0;

View File

@ -26,7 +26,6 @@ export default function Account ({ index, isError, label, onChange, t, value: {
>
<InputAddress
defaultValue={defaultValue}
label={label}
onChange={_onChange}
placeholder='0x...'
/>

View File

@ -3,9 +3,9 @@
// of the ISC license. See the LICENSE file for details.
// @flow
import type { Extrinsic } from '@polkadot/extrinsics/types';
import type { Section$Item } from '@polkadot/primitives/param';
import type { I18nProps } from '../types';
import type { ComponentMap, RawParam } from './types';
import type { ComponentMap, RawParam, RawParams } from './types';
import './Params.css';
@ -15,17 +15,15 @@ import translate from '../translate';
import Param from './Param';
import createValues from './values';
type RawParams = Array<RawParam>;
type Props = I18nProps & {
extrinsic: Extrinsic,
item: Section$Item,
onChange: (value: RawParams) => void,
overrides?: ComponentMap
};
type State = {
extrinsic: Extrinsic,
values: Array<RawParam>
item: Section$Item,
values: RawParams
};
class Params extends React.PureComponent<Props, State> {
@ -38,37 +36,39 @@ class Params extends React.PureComponent<Props, State> {
this.state = ({}: $Shape<State>);
}
static getDerivedStateFromProps ({ extrinsic, onChange }: Props, { extrinsic: { name, section } = {} }: State): $Shape<State> | null {
if (name === extrinsic.name && section === extrinsic.section) {
static getDerivedStateFromProps ({ item, onChange }: Props, { item: { name, section } = {} }: State): $Shape<State> | null {
if (name === item.name && section === item.section) {
return null;
}
const { params = {} } = extrinsic;
const { params = {} } = item;
const values = createValues(params);
onChange(values);
return {
extrinsic,
item,
values: createValues(params)
};
}
render (): React$Node {
const { className, overrides, style, extrinsic } = this.props;
const { className, item, overrides, style } = this.props;
const { values } = this.state;
if (!values.length) {
return null;
}
const { name, params = {} } = extrinsic;
const { name, params = {} } = item;
const paramNames = Object.keys(params);
if (paramNames.length === 0) {
return null;
}
console.log('Params', paramNames, params);
return (
<div
className={['ui--Params', 'ui--form', className].join(' ')}

View File

@ -11,6 +11,8 @@ export type RawParam = {
value: mixed,
}
export type RawParams = Array<RawParam>;
export type BaseProps = BareProps & {
onChange: (index: number, value: RawParam) => void,
value: Param

158
yarn.lock
View File

@ -622,25 +622,25 @@
call-me-maybe "^1.0.1"
glob-to-regexp "^0.3.0"
"@polkadot/api-format@^0.10.1":
version "0.10.1"
resolved "https://registry.yarnpkg.com/@polkadot/api-format/-/api-format-0.10.1.tgz#7e9f734b6736b06b67fe1fc97463544c3813308f"
"@polkadot/api-format@^0.10.2":
version "0.10.2"
resolved "https://registry.yarnpkg.com/@polkadot/api-format/-/api-format-0.10.2.tgz#867816c0fcc00e9e88197b1e0546849649f06be9"
dependencies:
"@polkadot/primitives-json" "^0.12.7"
"@polkadot/primitives-json" "^0.12.8"
"@polkadot/util" "^0.19.5"
babel-runtime "^6.26.0"
"@polkadot/api-jsonrpc@^0.10.1":
version "0.10.1"
resolved "https://registry.yarnpkg.com/@polkadot/api-jsonrpc/-/api-jsonrpc-0.10.1.tgz#8f5e49caebb913bb4d37b3df3364449a4656333a"
"@polkadot/api-jsonrpc@^0.10.2":
version "0.10.2"
resolved "https://registry.yarnpkg.com/@polkadot/api-jsonrpc/-/api-jsonrpc-0.10.2.tgz#55836832ee3e48437edfabeca3e8f5fd20367f13"
dependencies:
babel-runtime "^6.26.0"
"@polkadot/api-provider@^0.10.1":
version "0.10.1"
resolved "https://registry.yarnpkg.com/@polkadot/api-provider/-/api-provider-0.10.1.tgz#7a16b3c4ddadd30ea9369231edd10cff5a65f230"
"@polkadot/api-provider@^0.10.2":
version "0.10.2"
resolved "https://registry.yarnpkg.com/@polkadot/api-provider/-/api-provider-0.10.2.tgz#4d84bdabed2e548277d3ffe87bbdc0e9f0976592"
dependencies:
"@polkadot/storage-substrate" "^0.12.7"
"@polkadot/storage-substrate" "^0.12.8"
"@polkadot/util" "^0.19.5"
"@polkadot/util-crypto" "^0.19.5"
"@polkadot/util-keyring" "^0.19.5"
@ -649,21 +649,21 @@
isomorphic-fetch "^2.2.1"
websocket "^1.0.25"
"@polkadot/api-rx@^0.10.1":
version "0.10.1"
resolved "https://registry.yarnpkg.com/@polkadot/api-rx/-/api-rx-0.10.1.tgz#7d5b44efa2e61cdda409b80dc67940d35ebcba4e"
"@polkadot/api-rx@^0.10.2":
version "0.10.2"
resolved "https://registry.yarnpkg.com/@polkadot/api-rx/-/api-rx-0.10.2.tgz#d38187b0d604e7033bfd92be40db8064ae8dc588"
dependencies:
"@polkadot/api" "^0.10.1"
"@polkadot/api-provider" "^0.10.1"
"@polkadot/api" "^0.10.2"
"@polkadot/api-provider" "^0.10.2"
rxjs "^5.5.10"
"@polkadot/api@^0.10.1":
version "0.10.1"
resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-0.10.1.tgz#ae9d3576e804654fe11a610a17e418a9e5f9810b"
"@polkadot/api@^0.10.2":
version "0.10.2"
resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-0.10.2.tgz#8b8e28b1b73a42daaeccfb486171669520274073"
dependencies:
"@polkadot/api-format" "^0.10.1"
"@polkadot/api-jsonrpc" "^0.10.1"
"@polkadot/api-provider" "^0.10.1"
"@polkadot/api-format" "^0.10.2"
"@polkadot/api-jsonrpc" "^0.10.2"
"@polkadot/api-provider" "^0.10.2"
"@polkadot/util" "^0.19.5"
babel-runtime "^6.26.0"
@ -705,115 +705,115 @@
stylelint "^9.1.1"
stylelint-config-standard "^18.2.0"
"@polkadot/extrinsics-codec@^0.12.7":
version "0.12.7"
resolved "https://registry.yarnpkg.com/@polkadot/extrinsics-codec/-/extrinsics-codec-0.12.7.tgz#8ef0afb2e98b13ce03fb6ca03b073e5063de226b"
"@polkadot/extrinsics-codec@^0.12.8":
version "0.12.8"
resolved "https://registry.yarnpkg.com/@polkadot/extrinsics-codec/-/extrinsics-codec-0.12.8.tgz#ea42e663ce337969b977efad8fa5eaace798c414"
dependencies:
"@polkadot/util" "^0.19.5"
babel-runtime "^6.26.0"
bn.js "^4.11.8"
"@polkadot/extrinsics-substrate@^0.12.7":
version "0.12.7"
resolved "https://registry.yarnpkg.com/@polkadot/extrinsics-substrate/-/extrinsics-substrate-0.12.7.tgz#d985d8a608002fcc9d4407479317524306ff7dfc"
"@polkadot/extrinsics-substrate@^0.12.8":
version "0.12.8"
resolved "https://registry.yarnpkg.com/@polkadot/extrinsics-substrate/-/extrinsics-substrate-0.12.8.tgz#c1929885fb6b155203109b96a561f74af496c897"
dependencies:
"@polkadot/extrinsics" "^0.12.7"
"@polkadot/extrinsics" "^0.12.8"
babel-runtime "^6.26.0"
"@polkadot/extrinsics@^0.12.7":
version "0.12.7"
resolved "https://registry.yarnpkg.com/@polkadot/extrinsics/-/extrinsics-0.12.7.tgz#40a458ccdd98aa9600fc06a40b775b89d52b0f54"
"@polkadot/extrinsics@^0.12.8":
version "0.12.8"
resolved "https://registry.yarnpkg.com/@polkadot/extrinsics/-/extrinsics-0.12.8.tgz#0e9201621cbe24a642e72233ff7303558b318d6a"
dependencies:
"@polkadot/primitives" "^0.12.7"
"@polkadot/primitives" "^0.12.8"
"@polkadot/util" "^0.19.5"
babel-runtime "^6.26.0"
"@polkadot/primitives-builder@^0.12.7":
version "0.12.7"
resolved "https://registry.yarnpkg.com/@polkadot/primitives-builder/-/primitives-builder-0.12.7.tgz#89c5963377783b4b58dc5d46b21d1007b852232d"
"@polkadot/primitives-builder@^0.12.8":
version "0.12.8"
resolved "https://registry.yarnpkg.com/@polkadot/primitives-builder/-/primitives-builder-0.12.8.tgz#448e7ef4830b9c182a43e82a364e7b731336f140"
dependencies:
"@polkadot/primitives" "^0.12.7"
"@polkadot/primitives-codec" "^0.12.7"
"@polkadot/primitives" "^0.12.8"
"@polkadot/primitives-codec" "^0.12.8"
"@polkadot/util" "^0.19.5"
"@polkadot/util-crypto" "^0.19.5"
"@polkadot/util-triehash" "^0.19.5"
babel-runtime "^6.26.0"
"@polkadot/primitives-codec@^0.12.7":
version "0.12.7"
resolved "https://registry.yarnpkg.com/@polkadot/primitives-codec/-/primitives-codec-0.12.7.tgz#891241e04b665d4616ee34c05085548d6aa7c386"
"@polkadot/primitives-codec@^0.12.8":
version "0.12.8"
resolved "https://registry.yarnpkg.com/@polkadot/primitives-codec/-/primitives-codec-0.12.8.tgz#503e925a7efd86342f96cc4e389bb2e9f9fe9f90"
dependencies:
"@polkadot/primitives" "^0.12.7"
"@polkadot/primitives-builder" "^0.12.7"
"@polkadot/primitives-rlp" "^0.12.7"
"@polkadot/primitives" "^0.12.8"
"@polkadot/primitives-builder" "^0.12.8"
"@polkadot/primitives-rlp" "^0.12.8"
"@polkadot/util" "^0.19.5"
"@polkadot/util-keyring" "^0.19.5"
babel-runtime "^6.26.0"
"@polkadot/primitives-json@^0.12.7":
version "0.12.7"
resolved "https://registry.yarnpkg.com/@polkadot/primitives-json/-/primitives-json-0.12.7.tgz#eb2a941ef76d8b8d8b5162401a5dfee6102fe58f"
"@polkadot/primitives-json@^0.12.8":
version "0.12.8"
resolved "https://registry.yarnpkg.com/@polkadot/primitives-json/-/primitives-json-0.12.8.tgz#0e218ad1e5b822319e949b5ef9651e27c280b6b8"
dependencies:
"@polkadot/primitives" "^0.12.7"
"@polkadot/primitives-builder" "^0.12.7"
"@polkadot/primitives" "^0.12.8"
"@polkadot/primitives-builder" "^0.12.8"
"@polkadot/util" "^0.19.5"
babel-runtime "^6.26.0"
"@polkadot/primitives-rlp@^0.12.7":
version "0.12.7"
resolved "https://registry.yarnpkg.com/@polkadot/primitives-rlp/-/primitives-rlp-0.12.7.tgz#c13c8737dcd383b43cb12885a5b590c379c279dc"
"@polkadot/primitives-rlp@^0.12.8":
version "0.12.8"
resolved "https://registry.yarnpkg.com/@polkadot/primitives-rlp/-/primitives-rlp-0.12.8.tgz#0701a328b9cb4bd855b6e02d77965691cdb81182"
dependencies:
"@polkadot/primitives" "^0.12.7"
"@polkadot/primitives-builder" "^0.12.7"
"@polkadot/primitives-json" "^0.12.7"
"@polkadot/primitives" "^0.12.8"
"@polkadot/primitives-builder" "^0.12.8"
"@polkadot/primitives-json" "^0.12.8"
"@polkadot/util" "^0.19.5"
"@polkadot/util-crypto" "^0.19.5"
babel-runtime "^6.26.0"
"@polkadot/primitives@^0.12.7":
version "0.12.7"
resolved "https://registry.yarnpkg.com/@polkadot/primitives/-/primitives-0.12.7.tgz#e4a93ab2899d239fb9c2ea9f15808228b32a547c"
"@polkadot/primitives@^0.12.8":
version "0.12.8"
resolved "https://registry.yarnpkg.com/@polkadot/primitives/-/primitives-0.12.8.tgz#f1efe01c498e52013ce0c59784fa1bc248c15b1d"
dependencies:
"@polkadot/util" "^0.19.5"
babel-runtime "^6.26.0"
"@polkadot/storage-substrate@^0.12.7":
version "0.12.7"
resolved "https://registry.yarnpkg.com/@polkadot/storage-substrate/-/storage-substrate-0.12.7.tgz#1368fdc68016b10a1ac452f17b1bca48067ac4d4"
"@polkadot/storage-substrate@^0.12.8":
version "0.12.8"
resolved "https://registry.yarnpkg.com/@polkadot/storage-substrate/-/storage-substrate-0.12.8.tgz#5b74436958415cfd3b5f87285b9038a96bfbe64a"
dependencies:
"@polkadot/storage" "^0.12.7"
"@polkadot/storage" "^0.12.8"
"@polkadot/util" "^0.19.5"
babel-runtime "^6.26.0"
"@polkadot/storage@^0.12.7":
version "0.12.7"
resolved "https://registry.yarnpkg.com/@polkadot/storage/-/storage-0.12.7.tgz#5ef2561019636ef80c99ddb4fc468d2b9f2f53c5"
"@polkadot/storage@^0.12.8":
version "0.12.8"
resolved "https://registry.yarnpkg.com/@polkadot/storage/-/storage-0.12.8.tgz#47438ec44b10e42898f8ac19e27ce6c5769f2c11"
dependencies:
"@polkadot/primitives" "^0.12.7"
"@polkadot/primitives" "^0.12.8"
"@polkadot/util" "^0.19.5"
babel-runtime "^6.26.0"
"@polkadot/ui-identicon@^0.11.1":
version "0.11.1"
resolved "https://registry.yarnpkg.com/@polkadot/ui-identicon/-/ui-identicon-0.11.1.tgz#4b8e5c46995acb4b94539f44ba2b6bb02e134cbd"
"@polkadot/ui-identicon@^0.11.2":
version "0.11.2"
resolved "https://registry.yarnpkg.com/@polkadot/ui-identicon/-/ui-identicon-0.11.2.tgz#5141d3d52f0272f7e3a8dabea86d5ec5292216d1"
dependencies:
babel-runtime "^6.26.0"
color "^3.0.0"
"@polkadot/ui-react-rx@^0.11.1":
version "0.11.1"
resolved "https://registry.yarnpkg.com/@polkadot/ui-react-rx/-/ui-react-rx-0.11.1.tgz#fa975024e17321084eb832c83d9168636107815c"
"@polkadot/ui-react-rx@^0.11.2":
version "0.11.2"
resolved "https://registry.yarnpkg.com/@polkadot/ui-react-rx/-/ui-react-rx-0.11.2.tgz#6f2af3f25a23b2c4fb650bda6498f57d6f564b42"
dependencies:
"@polkadot/api-rx" "^0.10.1"
"@polkadot/primitives" "^0.12.7"
"@polkadot/storage-substrate" "^0.12.7"
"@polkadot/api-rx" "^0.10.2"
"@polkadot/primitives" "^0.12.8"
"@polkadot/storage-substrate" "^0.12.8"
"@polkadot/util" "^0.19.5"
"@polkadot/ui-react@^0.11.1":
version "0.11.1"
resolved "https://registry.yarnpkg.com/@polkadot/ui-react/-/ui-react-0.11.1.tgz#edc116a6e6ef947dc06b1808a2abed51853ca5cb"
"@polkadot/ui-react@^0.11.2":
version "0.11.2"
resolved "https://registry.yarnpkg.com/@polkadot/ui-react/-/ui-react-0.11.2.tgz#a5d48d99a998c3cd9718663252d6e80f6c25cbd1"
dependencies:
"@polkadot/ui-identicon" "^0.11.1"
"@polkadot/ui-identicon" "^0.11.2"
babel-runtime "^6.26.0"
"@polkadot/util-crypto@^0.19.5":