Display on-chain status for contract code & instances (#3851)
This commit is contained in:
parent
6ac81ce997
commit
d58852558c
@ -33,10 +33,10 @@
|
||||
"afterSign": "electron-builder-notarize"
|
||||
},
|
||||
"resolutions": {
|
||||
"@polkadot/api": "^2.1.2-17",
|
||||
"@polkadot/api-contract": "^2.1.2-17",
|
||||
"@polkadot/api": "^2.1.2-18",
|
||||
"@polkadot/api-contract": "^2.1.2-18",
|
||||
"@polkadot/keyring": "^3.5.1",
|
||||
"@polkadot/types": "^2.1.2-17",
|
||||
"@polkadot/types": "^2.1.2-18",
|
||||
"@polkadot/util": "^3.5.1",
|
||||
"@polkadot/util-crypto": "^3.5.1",
|
||||
"@polkadot/wasm-crypto": "^1.4.1",
|
||||
|
||||
@ -12,6 +12,6 @@
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.11.2",
|
||||
"@polkadot/api-contract": "^2.1.2-17"
|
||||
"@polkadot/api-contract": "^2.1.2-18"
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,11 +1,13 @@
|
||||
// Copyright 2017-2020 @polkadot/app-staking authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { Codec } from '@polkadot/types/types';
|
||||
import { CodeStored } from '../types';
|
||||
|
||||
import React, { useCallback } from 'react';
|
||||
import { Button, Card, Forget } from '@polkadot/react-components';
|
||||
import { useToggle } from '@polkadot/react-hooks';
|
||||
import { useApi, useCall, useToggle } from '@polkadot/react-hooks';
|
||||
import { Option } from '@polkadot/types';
|
||||
|
||||
import { ABI, CodeRow } from '../shared';
|
||||
import RemoveABI from '../RemoveABI';
|
||||
@ -21,6 +23,8 @@ interface Props {
|
||||
|
||||
function Code ({ className, code, onShowDeploy }: Props): React.ReactElement<Props> {
|
||||
const { t } = useTranslation();
|
||||
const { api } = useApi();
|
||||
const optCode = useCall<Option<Codec>>(api.query.contracts.codeStorage, [code.json.codeHash]);
|
||||
const [isForgetOpen, toggleIsForgetOpen] = useToggle();
|
||||
const [isRemoveABIOpen, toggleIsRemoveABIOpen] = useToggle();
|
||||
const { contractAbi, isAbiError, isAbiSupplied, isAbiValid, onChangeAbi, onRemoveAbi } = useAbi([code.json.abi, code.contractAbi], code.json.codeHash, true);
|
||||
@ -97,6 +101,11 @@ function Code ({ className, code, onShowDeploy }: Props): React.ReactElement<Pro
|
||||
withMessages={false}
|
||||
/>
|
||||
</td>
|
||||
<td className='start together'>
|
||||
{optCode && (
|
||||
optCode.isSome ? t<string>('Available') : t<string>('Not on-chain')
|
||||
)}
|
||||
</td>
|
||||
<td className='button'>
|
||||
<Button
|
||||
icon='trash'
|
||||
|
||||
@ -19,7 +19,9 @@ function Codes ({ onShowDeploy }: Props): React.ReactElement<Props> {
|
||||
|
||||
const headerRef = useRef<[string?, string?, number?][]>([
|
||||
[t('code hashes'), 'start'],
|
||||
[undefined, undefined, 2]
|
||||
[],
|
||||
[t('status'), 'start'],
|
||||
[]
|
||||
]);
|
||||
|
||||
return (
|
||||
|
||||
@ -2,12 +2,12 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { SubmittableExtrinsic } from '@polkadot/api/types';
|
||||
import { ContractCallOutcome } from '@polkadot/api-contract/types';
|
||||
import { CallResult } from './types';
|
||||
|
||||
import BN from 'bn.js';
|
||||
import React, { useCallback, useState, useEffect, useMemo } from 'react';
|
||||
import styled from 'styled-components';
|
||||
import { Button, Dropdown, IconLink, InputAddress, InputBalance, Modal, TxButton } from '@polkadot/react-components';
|
||||
import { Button, Dropdown, Expander, InputAddress, InputBalance, Modal, TxButton } from '@polkadot/react-components';
|
||||
import { PromiseContract as ApiContract } from '@polkadot/api-contract';
|
||||
import { useAccountId, useFormField } from '@polkadot/react-hooks';
|
||||
import { BN_ZERO } from '@polkadot/util';
|
||||
@ -31,8 +31,8 @@ function Call ({ className = '', contract, messageIndex, onChangeCallContractAdd
|
||||
const { t } = useTranslation();
|
||||
const message = contract.abi.messages[messageIndex];
|
||||
const [accountId, setAccountId] = useAccountId();
|
||||
const [endowment, isEndowmentValid, setEndowment] = useFormField<BN>(BN_ZERO);
|
||||
const [outcomes, setOutcomes] = useState<ContractCallOutcome[]>([]);
|
||||
const [value, isValueValid, setEndowment] = useFormField<BN>(BN_ZERO);
|
||||
const [outcomes, setOutcomes] = useState<CallResult[]>([]);
|
||||
const [execTx, setExecTx] = useState<SubmittableExtrinsic<'promise'> | null>(null);
|
||||
const [params, setParams] = useState<any[]>([]);
|
||||
const useWeightHook = useWeight();
|
||||
@ -43,33 +43,35 @@ function Call ({ className = '', contract, messageIndex, onChangeCallContractAdd
|
||||
}, [contract, messageIndex]);
|
||||
|
||||
useEffect((): void => {
|
||||
endowment && message.isMutating && setExecTx((): SubmittableExtrinsic<'promise'> | null => {
|
||||
value && message.isMutating && setExecTx((): SubmittableExtrinsic<'promise'> | null => {
|
||||
try {
|
||||
return contract.exec(message, message.isPayable ? endowment : 0, weight, ...params);
|
||||
return contract.exec(message, message.isPayable ? value : 0, weight, ...params);
|
||||
} catch (error) {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}, [accountId, contract, endowment, message, weight, params]);
|
||||
}, [accountId, contract, message, value, weight, params]);
|
||||
|
||||
const _onSubmitRpc = useCallback(
|
||||
(): void => {
|
||||
if (!accountId || !message || !endowment || !weight) return;
|
||||
if (!accountId || !message || !value || !weight) return;
|
||||
|
||||
contract
|
||||
.read(message, 0, weight, ...params)
|
||||
// when we make calls to mutables, we want the endowment & weight
|
||||
// .read(callMessage, endowment, weight, ...params)
|
||||
.read(message, message.isPayable ? value : 0, weight, ...params)
|
||||
.send(accountId)
|
||||
.then((outcome: ContractCallOutcome) => setOutcomes([outcome, ...outcomes]))
|
||||
.then((outcome) => setOutcomes([
|
||||
{
|
||||
...outcome,
|
||||
from: accountId,
|
||||
message,
|
||||
params,
|
||||
when: new Date()
|
||||
},
|
||||
...outcomes
|
||||
]))
|
||||
.catch(console.error);
|
||||
},
|
||||
[accountId, contract, endowment, message, weight, outcomes, params]
|
||||
);
|
||||
|
||||
const _onClearOutcomes = useCallback(
|
||||
() => setOutcomes([]),
|
||||
[]
|
||||
[accountId, contract, message, value, weight, outcomes, params]
|
||||
);
|
||||
|
||||
const _onClearOutcome = useCallback(
|
||||
@ -78,8 +80,8 @@ function Call ({ className = '', contract, messageIndex, onChangeCallContractAdd
|
||||
);
|
||||
|
||||
const isValid = useMemo(
|
||||
() => !!(accountId && isWeightValid && isEndowmentValid),
|
||||
[accountId, isEndowmentValid, isWeightValid]
|
||||
() => !!(accountId && isWeightValid && isValueValid),
|
||||
[accountId, isValueValid, isWeightValid]
|
||||
);
|
||||
|
||||
const isViaRpc = contract.hasRpcContractsCall && !message.isMutating;
|
||||
@ -127,14 +129,14 @@ function Call ({ className = '', contract, messageIndex, onChangeCallContractAdd
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
{!isViaRpc && message.isPayable && (
|
||||
{message.isPayable && (
|
||||
<InputBalance
|
||||
help={t<string>('The allotted value for this contract, i.e. the amount transferred to the contract as part of this call.')}
|
||||
isError={!isEndowmentValid}
|
||||
isError={!isValueValid}
|
||||
isZeroable
|
||||
label={t<string>('value')}
|
||||
onChange={setEndowment}
|
||||
value={endowment}
|
||||
value={value}
|
||||
/>
|
||||
)}
|
||||
<InputMegaGas
|
||||
@ -143,26 +145,19 @@ function Call ({ className = '', contract, messageIndex, onChangeCallContractAdd
|
||||
{...useWeightHook}
|
||||
/>
|
||||
{outcomes.length > 0 && (
|
||||
<div>
|
||||
<h3>
|
||||
{t<string>('Call results')}
|
||||
<IconLink
|
||||
className='clear-all'
|
||||
icon='times'
|
||||
label={t<string>('Clear all')}
|
||||
onClick={_onClearOutcomes}
|
||||
<Expander
|
||||
className='outcomes'
|
||||
isOpen
|
||||
summary={t<string>('Call results')}
|
||||
>
|
||||
{outcomes.map((outcome, index): React.ReactNode => (
|
||||
<Outcome
|
||||
key={`outcome-${index}`}
|
||||
onClear={_onClearOutcome(index)}
|
||||
outcome={outcome}
|
||||
/>
|
||||
</h3>
|
||||
<div>
|
||||
{outcomes.map((outcome, index): React.ReactNode => (
|
||||
<Outcome
|
||||
key={`outcome-${index}`}
|
||||
onClear={_onClearOutcome(index)}
|
||||
outcome={outcome}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</Expander>
|
||||
)}
|
||||
</Modal.Content>
|
||||
<Modal.Actions onCancel={onClose}>
|
||||
@ -201,4 +196,8 @@ export default React.memo(styled(Call)`
|
||||
.clear-all {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.outcomes {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
`);
|
||||
|
||||
@ -2,12 +2,15 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { ActionStatus } from '@polkadot/react-components/Status/types';
|
||||
import { ContractInfo } from '@polkadot/types/interfaces';
|
||||
|
||||
import React, { useCallback } from 'react';
|
||||
import keyring from '@polkadot/ui-keyring';
|
||||
import { PromiseContract } from '@polkadot/api-contract';
|
||||
import { AddressInfo, AddressMini, Button, Forget } from '@polkadot/react-components';
|
||||
import { useToggle } from '@polkadot/react-hooks';
|
||||
import { useApi, useCall, useToggle } from '@polkadot/react-hooks';
|
||||
import { Option } from '@polkadot/types';
|
||||
import { isUndefined } from '@polkadot/util';
|
||||
|
||||
import Messages from '../shared/Messages';
|
||||
import { useTranslation } from '../translate';
|
||||
@ -18,8 +21,14 @@ interface Props {
|
||||
onCall: (index?: number) => void;
|
||||
}
|
||||
|
||||
function transformInfo (optInfo: Option<ContractInfo>): ContractInfo | null {
|
||||
return optInfo.unwrapOr(null);
|
||||
}
|
||||
|
||||
function Contract ({ className, contract, onCall }: Props): React.ReactElement<Props> | null {
|
||||
const { t } = useTranslation();
|
||||
const { api } = useApi();
|
||||
const info = useCall<ContractInfo | null>(api.query.contracts.contractInfoOf, [contract.address], { transform: transformInfo });
|
||||
const [isForgetOpen, toggleIsForgetOpen] = useToggle();
|
||||
|
||||
const _onForget = useCallback(
|
||||
@ -74,6 +83,13 @@ function Contract ({ className, contract, onCall }: Props): React.ReactElement<P
|
||||
withExtended={false}
|
||||
/>
|
||||
</td>
|
||||
<td className='start together'>
|
||||
{!isUndefined(info) && (
|
||||
info
|
||||
? info.type
|
||||
: t<string>('Not on-chain')
|
||||
)}
|
||||
</td>
|
||||
<td className='button'>
|
||||
<Button
|
||||
icon='trash'
|
||||
|
||||
@ -1,101 +1,57 @@
|
||||
// Copyright 2017-2020 @polkadot/app-contracts authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { ContractCallOutcome } from '@polkadot/api-contract/types';
|
||||
import { CallResult } from './types';
|
||||
|
||||
import React from 'react';
|
||||
import styled from 'styled-components';
|
||||
import { AddressMini, Button, Output } from '@polkadot/react-components';
|
||||
import { Button, IdentityIcon, Output } from '@polkadot/react-components';
|
||||
|
||||
import MessageSignature from '../shared/MessageSignature';
|
||||
|
||||
interface Props {
|
||||
className?: string;
|
||||
onClear?: () => void;
|
||||
outcome: ContractCallOutcome;
|
||||
outcome: CallResult;
|
||||
}
|
||||
|
||||
function Outcome ({ className = '', onClear, outcome: { isSuccess, message, origin, output, params, time } }: Props): React.ReactElement<Props> | null {
|
||||
const dateTime = new Date(time);
|
||||
|
||||
function Outcome ({ className = '', onClear, outcome: { from, message, output, params, result, when } }: Props): React.ReactElement<Props> | null {
|
||||
return (
|
||||
<div className={className}>
|
||||
<div className='info'>
|
||||
<AddressMini
|
||||
className='origin'
|
||||
isPadded={false}
|
||||
value={origin}
|
||||
withAddress={false}
|
||||
/>
|
||||
<MessageSignature
|
||||
message={message}
|
||||
params={params}
|
||||
/>
|
||||
<span className='date-time'>
|
||||
{dateTime.toLocaleDateString()}
|
||||
{' '}
|
||||
{dateTime.toLocaleTimeString()}
|
||||
</span>
|
||||
<Button
|
||||
className='icon-button clear-btn'
|
||||
icon='times'
|
||||
onClick={onClear}
|
||||
/>
|
||||
</div>
|
||||
<IdentityIcon value={from} />
|
||||
<Output
|
||||
className='output'
|
||||
isError={!isSuccess}
|
||||
isError={!result.isSuccess}
|
||||
isFull
|
||||
label={
|
||||
<MessageSignature
|
||||
message={message}
|
||||
params={params}
|
||||
/>
|
||||
}
|
||||
labelExtra={
|
||||
<span className='date-time'>
|
||||
{when.toLocaleDateString()}
|
||||
{' '}
|
||||
{when.toLocaleTimeString()}
|
||||
</span>
|
||||
}
|
||||
value={(output || '()').toString()}
|
||||
withLabel={false}
|
||||
/>
|
||||
<Button
|
||||
icon='times'
|
||||
onClick={onClear}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default React.memo(styled(Outcome)`
|
||||
& {
|
||||
.info {
|
||||
display: inline-flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 0.5rem;
|
||||
align-items: center;
|
||||
display: flex;
|
||||
|
||||
& > *:not(:first-child) {
|
||||
padding-left: 1.5rem !important;
|
||||
}
|
||||
}
|
||||
|
||||
.clear-btn {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.date-time {
|
||||
color: #aaa;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.origin {
|
||||
padding-left: 0 !important;
|
||||
|
||||
* {
|
||||
margin-left: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
.output {
|
||||
font-family: monospace;
|
||||
margin-left: 3.5rem;
|
||||
|
||||
.ui--output {
|
||||
border-color: #aaa;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
.clear-btn {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
.output {
|
||||
flex: 1 1;
|
||||
margin: 0.25rem 0.5rem;
|
||||
}
|
||||
`);
|
||||
|
||||
@ -34,7 +34,9 @@ function Contracts ({ contracts: keyringContracts }: Props): React.ReactElement<
|
||||
|
||||
const headerRef = useRef<[string?, string?, number?][]>([
|
||||
[t('contracts'), 'start'],
|
||||
[undefined, undefined, 3]
|
||||
[undefined, undefined, 2],
|
||||
[t('status'), 'start'],
|
||||
[]
|
||||
]);
|
||||
|
||||
const contracts = useMemo(
|
||||
|
||||
11
packages/page-contracts/src/Contracts/types.ts
Normal file
11
packages/page-contracts/src/Contracts/types.ts
Normal file
@ -0,0 +1,11 @@
|
||||
// Copyright 2017-2020 @polkadot/app-staking authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { AbiMessage, ContractCallOutcome } from '@polkadot/api-contract/types';
|
||||
|
||||
export interface CallResult extends ContractCallOutcome {
|
||||
from: string;
|
||||
message: AbiMessage;
|
||||
params: any[];
|
||||
when: Date;
|
||||
}
|
||||
@ -65,7 +65,7 @@ function Message ({ className = '', index, lastResult, message, onSelect }: Prop
|
||||
<Button
|
||||
className='accessory'
|
||||
icon='play'
|
||||
isDisabled={lastResult?.isSuccess}
|
||||
isDisabled={lastResult?.result.isSuccess}
|
||||
label={message.isMutating ? t<string>('exec') : t<string>('read')}
|
||||
onClick={_onSelect}
|
||||
/>
|
||||
@ -86,7 +86,7 @@ function Message ({ className = '', index, lastResult, message, onSelect }: Prop
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
{lastResult && lastResult.isSuccess && lastResult.output && (
|
||||
{lastResult && lastResult.result.isSuccess && lastResult.output && (
|
||||
<Output
|
||||
className='result'
|
||||
isFull
|
||||
|
||||
@ -2,12 +2,14 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { AbiMessage, ContractCallOutcome } from '@polkadot/api-contract/types';
|
||||
import { ContractInfo } from '@polkadot/types/interfaces';
|
||||
|
||||
import React, { useCallback, useEffect, useState } from 'react';
|
||||
import styled from 'styled-components';
|
||||
import { Abi, PromiseContract } from '@polkadot/api-contract';
|
||||
import { Expander, IconLink } from '@polkadot/react-components';
|
||||
import { useApi, useCall } from '@polkadot/react-hooks';
|
||||
import { Option } from '@polkadot/types';
|
||||
|
||||
import Message from './Message';
|
||||
import { useTranslation } from '../translate';
|
||||
@ -44,7 +46,7 @@ function sortMessages (messages: AbiMessage[]): [AbiMessage, number][] {
|
||||
function Messages ({ className = '', contract, contractAbi: { constructors, messages }, isLabelled, isRemovable, isWatching, onRemove = NOOP, onSelect, onSelectConstructor, withConstructors, withMessages } : Props): React.ReactElement<Props> {
|
||||
const { t } = useTranslation();
|
||||
const { api } = useApi();
|
||||
const bestNumber = useCall(api.derive.chain.bestNumber);
|
||||
const optInfo = useCall<Option<ContractInfo>>(contract && api.query.contracts.contractInfoOf, [contract?.address]);
|
||||
const [isUpdating, setIsUpdating] = useState(false);
|
||||
const [lastResults, setLastResults] = useState<(ContractCallOutcome | undefined)[]>([]);
|
||||
|
||||
@ -58,7 +60,7 @@ function Messages ({ className = '', contract, contractAbi: { constructors, mess
|
||||
useEffect((): void => {
|
||||
const maxWeight = api.consts.system.maximumBlockWeight.muln(64).divn(100);
|
||||
|
||||
bestNumber && contract && isUpdating && Promise
|
||||
isUpdating && optInfo && contract && Promise
|
||||
.all(messages.map((m) =>
|
||||
m.isMutating || m.args.length !== 0
|
||||
? Promise.resolve(undefined)
|
||||
@ -66,7 +68,7 @@ function Messages ({ className = '', contract, contractAbi: { constructors, mess
|
||||
))
|
||||
.then(setLastResults)
|
||||
.catch(console.error);
|
||||
}, [api, bestNumber, contract, isUpdating, isWatching, messages]);
|
||||
}, [api, contract, isUpdating, isWatching, messages, optInfo]);
|
||||
|
||||
return (
|
||||
<div className={`ui--Messages ${className} ${isLabelled ? 'labelled' : ''}`}>
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
"homepage": "https://github.com/polkadot-js/ui/tree/master/packages/ui-reactive#readme",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.11.2",
|
||||
"@polkadot/api": "^2.1.2-17",
|
||||
"@polkadot/api": "^2.1.2-18",
|
||||
"@polkadot/extension-dapp": "^0.35.0-beta.12",
|
||||
"rxjs-compat": "^6.6.3"
|
||||
}
|
||||
|
||||
@ -19,12 +19,13 @@ interface Props {
|
||||
isSmall?: boolean;
|
||||
isTrimmed?: boolean;
|
||||
label?: React.ReactNode;
|
||||
labelExtra?: React.ReactNode;
|
||||
value?: string;
|
||||
withCopy?: boolean;
|
||||
withLabel?: boolean;
|
||||
}
|
||||
|
||||
function Output ({ children, className = '', help, isError, isFull, isHidden, isMonospace, isSmall, isTrimmed, label, value, withCopy = false, withLabel }: Props): React.ReactElement<Props> {
|
||||
function Output ({ children, className = '', help, isError, isFull, isHidden, isMonospace, isSmall, isTrimmed, label, labelExtra, value, withCopy = false, withLabel }: Props): React.ReactElement<Props> {
|
||||
return (
|
||||
<Labelled
|
||||
className={className}
|
||||
@ -33,6 +34,7 @@ function Output ({ children, className = '', help, isError, isFull, isHidden, is
|
||||
isHidden={isHidden}
|
||||
isSmall={isSmall}
|
||||
label={label}
|
||||
labelExtra={labelExtra}
|
||||
withLabel={withLabel}
|
||||
>
|
||||
<div className={classes('ui--output', isError && 'error', isMonospace && 'monospace')}>
|
||||
|
||||
112
yarn.lock
112
yarn.lock
@ -2039,57 +2039,57 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/api-contract@npm:^2.1.2-17":
|
||||
version: 2.1.2-17
|
||||
resolution: "@polkadot/api-contract@npm:2.1.2-17"
|
||||
"@polkadot/api-contract@npm:^2.1.2-18":
|
||||
version: 2.1.2-18
|
||||
resolution: "@polkadot/api-contract@npm:2.1.2-18"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.11.2
|
||||
"@polkadot/api": 2.1.2-17
|
||||
"@polkadot/rpc-core": 2.1.2-17
|
||||
"@polkadot/types": 2.1.2-17
|
||||
"@polkadot/api": 2.1.2-18
|
||||
"@polkadot/rpc-core": 2.1.2-18
|
||||
"@polkadot/types": 2.1.2-18
|
||||
"@polkadot/util": ^3.5.1
|
||||
bn.js: ^5.1.3
|
||||
rxjs: ^6.6.3
|
||||
checksum: 4c0d515986518a52a021e6e7c80c0516217d3ea5bfaade47886d5b0e154216ddcde8736550720bae1b8f484dbab4ddb221b6b04b8a534d017871819089e390e5
|
||||
checksum: fcdb707d1d6b6bd7cf5415dd211c18ea2609282605516fa756c4a4c88f9dbf988bbec344d2ebbf81973b76a1caed5fedee056d5f4e7bc01723e7b9f5bf425171
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/api-derive@npm:2.1.2-17":
|
||||
version: 2.1.2-17
|
||||
resolution: "@polkadot/api-derive@npm:2.1.2-17"
|
||||
"@polkadot/api-derive@npm:2.1.2-18":
|
||||
version: 2.1.2-18
|
||||
resolution: "@polkadot/api-derive@npm:2.1.2-18"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.11.2
|
||||
"@polkadot/api": 2.1.2-17
|
||||
"@polkadot/rpc-core": 2.1.2-17
|
||||
"@polkadot/rpc-provider": 2.1.2-17
|
||||
"@polkadot/types": 2.1.2-17
|
||||
"@polkadot/api": 2.1.2-18
|
||||
"@polkadot/rpc-core": 2.1.2-18
|
||||
"@polkadot/rpc-provider": 2.1.2-18
|
||||
"@polkadot/types": 2.1.2-18
|
||||
"@polkadot/util": ^3.5.1
|
||||
"@polkadot/util-crypto": ^3.5.1
|
||||
bn.js: ^5.1.3
|
||||
memoizee: ^0.4.14
|
||||
rxjs: ^6.6.3
|
||||
checksum: 7722eaf10d13fbc3244463f97aff21e87eda1ba8377b1be0c5814eae4f876683aeff7eaeab3ce400000048fd63d94108ea792878ad6a06d124f2104764bd3688
|
||||
checksum: 3b07c908c4584b573431942fde47c9ef052708a10e6ccc8f98e9872344ea56813f306ccc80e072f5e95dcdb45cfa499dad9241b7345e635876e1bbb329a4c3e3
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/api@npm:^2.1.2-17":
|
||||
version: 2.1.2-17
|
||||
resolution: "@polkadot/api@npm:2.1.2-17"
|
||||
"@polkadot/api@npm:^2.1.2-18":
|
||||
version: 2.1.2-18
|
||||
resolution: "@polkadot/api@npm:2.1.2-18"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.11.2
|
||||
"@polkadot/api-derive": 2.1.2-17
|
||||
"@polkadot/api-derive": 2.1.2-18
|
||||
"@polkadot/keyring": ^3.5.1
|
||||
"@polkadot/metadata": 2.1.2-17
|
||||
"@polkadot/rpc-core": 2.1.2-17
|
||||
"@polkadot/rpc-provider": 2.1.2-17
|
||||
"@polkadot/types": 2.1.2-17
|
||||
"@polkadot/types-known": 2.1.2-17
|
||||
"@polkadot/metadata": 2.1.2-18
|
||||
"@polkadot/rpc-core": 2.1.2-18
|
||||
"@polkadot/rpc-provider": 2.1.2-18
|
||||
"@polkadot/types": 2.1.2-18
|
||||
"@polkadot/types-known": 2.1.2-18
|
||||
"@polkadot/util": ^3.5.1
|
||||
"@polkadot/util-crypto": ^3.5.1
|
||||
bn.js: ^5.1.3
|
||||
eventemitter3: ^4.0.7
|
||||
rxjs: ^6.6.3
|
||||
checksum: 0c634331a64628f61f63a6fe3f85fdbac238fd12172f864d0b610d5265583dcb3b852c498a1f227be1a0edc6699fad47bc4c0288050d2b8530a40c7ebca59a9b
|
||||
checksum: 136f6eba5b20829f8d9dc85415da3d428970e4c0c651d2a32c3f50700a3a3886a53aeb57bbee46187d8a52ff33bab760dbe17ea90f0f94a08b2bcfd1d1a33518
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -2145,7 +2145,7 @@ __metadata:
|
||||
resolution: "@polkadot/app-contracts@workspace:packages/page-contracts"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.11.2
|
||||
"@polkadot/api-contract": ^2.1.2-17
|
||||
"@polkadot/api-contract": ^2.1.2-18
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@ -2525,17 +2525,17 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/metadata@npm:2.1.2-17":
|
||||
version: 2.1.2-17
|
||||
resolution: "@polkadot/metadata@npm:2.1.2-17"
|
||||
"@polkadot/metadata@npm:2.1.2-18":
|
||||
version: 2.1.2-18
|
||||
resolution: "@polkadot/metadata@npm:2.1.2-18"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.11.2
|
||||
"@polkadot/types": 2.1.2-17
|
||||
"@polkadot/types-known": 2.1.2-17
|
||||
"@polkadot/types": 2.1.2-18
|
||||
"@polkadot/types-known": 2.1.2-18
|
||||
"@polkadot/util": ^3.5.1
|
||||
"@polkadot/util-crypto": ^3.5.1
|
||||
bn.js: ^5.1.3
|
||||
checksum: afdaa5ffd1f48bf5eb723a08bd7bcd678f410436156c2f1363c383d8f66d5b9109c769a125f1213b69bc114b2c7eb32ec63b6090c93fc21ef57c81f105c87f71
|
||||
checksum: 9c7f9c005a12a90b6853c36abbdab4ac7e06651fa602eb6a5da50fdf4fdc4071a7c162e1e0e47a7728db85b03a2c3a90e765691bf02ca0e44ebcf479e663a6a6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -2544,7 +2544,7 @@ __metadata:
|
||||
resolution: "@polkadot/react-api@workspace:packages/react-api"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.11.2
|
||||
"@polkadot/api": ^2.1.2-17
|
||||
"@polkadot/api": ^2.1.2-18
|
||||
"@polkadot/extension-dapp": ^0.35.0-beta.12
|
||||
rxjs-compat: ^6.6.3
|
||||
languageName: unknown
|
||||
@ -2667,35 +2667,35 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@polkadot/rpc-core@npm:2.1.2-17":
|
||||
version: 2.1.2-17
|
||||
resolution: "@polkadot/rpc-core@npm:2.1.2-17"
|
||||
"@polkadot/rpc-core@npm:2.1.2-18":
|
||||
version: 2.1.2-18
|
||||
resolution: "@polkadot/rpc-core@npm:2.1.2-18"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.11.2
|
||||
"@polkadot/metadata": 2.1.2-17
|
||||
"@polkadot/rpc-provider": 2.1.2-17
|
||||
"@polkadot/types": 2.1.2-17
|
||||
"@polkadot/metadata": 2.1.2-18
|
||||
"@polkadot/rpc-provider": 2.1.2-18
|
||||
"@polkadot/types": 2.1.2-18
|
||||
"@polkadot/util": ^3.5.1
|
||||
memoizee: ^0.4.14
|
||||
rxjs: ^6.6.3
|
||||
checksum: fa86d07caa1e285a798ed6427e2f82baa7c4865155c13c9d539b86c590a522d0e906d27dd257520b10ca6e9b88f62798d502ab6ef65090fbe5bf5a07d44a76db
|
||||
checksum: 8b85855c38ecf3fed778c630b9c4d6cbab9b0cea4b934710fd95d397af5112d2910244dd6dec57ffd783c679594778bf87766420b4873a3d96a553ad8615fea2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/rpc-provider@npm:2.1.2-17":
|
||||
version: 2.1.2-17
|
||||
resolution: "@polkadot/rpc-provider@npm:2.1.2-17"
|
||||
"@polkadot/rpc-provider@npm:2.1.2-18":
|
||||
version: 2.1.2-18
|
||||
resolution: "@polkadot/rpc-provider@npm:2.1.2-18"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.11.2
|
||||
"@polkadot/metadata": 2.1.2-17
|
||||
"@polkadot/types": 2.1.2-17
|
||||
"@polkadot/metadata": 2.1.2-18
|
||||
"@polkadot/types": 2.1.2-18
|
||||
"@polkadot/util": ^3.5.1
|
||||
"@polkadot/util-crypto": ^3.5.1
|
||||
"@polkadot/x-fetch": ^0.3.2
|
||||
"@polkadot/x-ws": ^0.3.2
|
||||
bn.js: ^5.1.3
|
||||
eventemitter3: ^4.0.7
|
||||
checksum: f441c6fe9709f6de489bc173ef47f141571156326d769e281425240ccbdbd7c2103121cc7241bc46ae8e4720baa93ff4af8b6a3c312691845c23b6ac00310086
|
||||
checksum: 4ce0bb154ff3fce6e31c331112223c21208e4c3300a8e2b94e3693cf9608b7bc67829fed53fd05c4224ea3b0702ca41ef7099fb8481209190cb84103478201e2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -2708,31 +2708,31 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/types-known@npm:2.1.2-17":
|
||||
version: 2.1.2-17
|
||||
resolution: "@polkadot/types-known@npm:2.1.2-17"
|
||||
"@polkadot/types-known@npm:2.1.2-18":
|
||||
version: 2.1.2-18
|
||||
resolution: "@polkadot/types-known@npm:2.1.2-18"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.11.2
|
||||
"@polkadot/types": 2.1.2-17
|
||||
"@polkadot/types": 2.1.2-18
|
||||
"@polkadot/util": ^3.5.1
|
||||
bn.js: ^5.1.3
|
||||
checksum: d815be3cb6a7df1aff65da5bafadef08c89db049bcbc958996f5f1e7dbab36b6e156c9a9371d1498500c5934b4db8a2557745730d1ba2421a3da31ab810532f6
|
||||
checksum: 0aac5a51900d5547258dd9ca50e04097fd4d6797ac9dad9e3d6e45b904cac013b29e2d470b823592ad5d2caaa9ac885c8d67a96c61d02c45bb14f5b8d1703daf
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/types@npm:^2.1.2-17":
|
||||
version: 2.1.2-17
|
||||
resolution: "@polkadot/types@npm:2.1.2-17"
|
||||
"@polkadot/types@npm:^2.1.2-18":
|
||||
version: 2.1.2-18
|
||||
resolution: "@polkadot/types@npm:2.1.2-18"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.11.2
|
||||
"@polkadot/metadata": 2.1.2-17
|
||||
"@polkadot/metadata": 2.1.2-18
|
||||
"@polkadot/util": ^3.5.1
|
||||
"@polkadot/util-crypto": ^3.5.1
|
||||
"@types/bn.js": ^4.11.6
|
||||
bn.js: ^5.1.3
|
||||
memoizee: ^0.4.14
|
||||
rxjs: ^6.6.3
|
||||
checksum: 6e9f4f41677f83c0802d3f5024540ccca75c3a858bc94446eded09b50611b704ba692e4571f4bc11991a1e335915f73771b157ac627913f7ccd458832e5f3b61
|
||||
checksum: 08affa43f668261cf5952733286309016e01e9be1f5a5ab372f4716c814219950d6b6864c789943ccf134e5ebc322831f78978bf58f0266a30ff78ec57f4d3a4
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user