Rework contracts deploy (#3853)
* Rework contracts deploy * Bump API * Remove .wasm from filename * Remove (instance)
This commit is contained in:
parent
0e1b2895b2
commit
a7d965ef89
@ -33,10 +33,10 @@
|
||||
"afterSign": "electron-builder-notarize"
|
||||
},
|
||||
"resolutions": {
|
||||
"@polkadot/api": "^2.1.2-19",
|
||||
"@polkadot/api-contract": "^2.1.2-19",
|
||||
"@polkadot/api": "^2.1.2-20",
|
||||
"@polkadot/api-contract": "^2.1.2-20",
|
||||
"@polkadot/keyring": "^3.5.1",
|
||||
"@polkadot/types": "^2.1.2-19",
|
||||
"@polkadot/types": "^2.1.2-20",
|
||||
"@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-19"
|
||||
"@polkadot/api-contract": "^2.1.2-20"
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
|
||||
import { StringOrNull } from '@polkadot/react-components/types';
|
||||
|
||||
import React, { useCallback, useMemo, useState } from 'react';
|
||||
import React, { useCallback, useState } from 'react';
|
||||
import { Button, Input, Modal } from '@polkadot/react-components';
|
||||
import { isNull } from '@polkadot/util';
|
||||
import { ABI, InputName } from '../shared';
|
||||
@ -24,16 +24,6 @@ function Add ({ onClose }: Props): React.ReactElement {
|
||||
const [name, setName] = useState<StringOrNull>(null);
|
||||
const { abi, contractAbi, errorText, isAbiError, isAbiSupplied, isAbiValid, onChangeAbi, onRemoveAbi } = useAbi();
|
||||
|
||||
const isNameValid = useMemo(
|
||||
(): boolean => !isNull(name) && name.length > 0,
|
||||
[name]
|
||||
);
|
||||
|
||||
const isValid = useMemo(
|
||||
(): boolean => isCodeHashValid && isNameValid,
|
||||
[isCodeHashValid, isNameValid]
|
||||
);
|
||||
|
||||
const _onSave = useCallback(
|
||||
(): void => {
|
||||
if (!codeHash || !name) {
|
||||
@ -50,6 +40,9 @@ function Add ({ onClose }: Props): React.ReactElement {
|
||||
[abi, codeHash, name, onClose]
|
||||
);
|
||||
|
||||
const isNameValid = !isNull(name) && name.length > 0;
|
||||
const isValid = isCodeHashValid && isNameValid && isAbiSupplied && isAbiValid;
|
||||
|
||||
return (
|
||||
<Modal header={t('Add an existing code hash')}>
|
||||
<Modal.Content>
|
||||
@ -73,7 +66,7 @@ function Add ({ onClose }: Props): React.ReactElement {
|
||||
<ABI
|
||||
contractAbi={contractAbi}
|
||||
errorText={errorText}
|
||||
isError={isAbiError}
|
||||
isError={isAbiError || !isAbiError}
|
||||
isSupplied={isAbiSupplied}
|
||||
isValid={isAbiValid}
|
||||
onChange={onChangeAbi}
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
|
||||
import { Hash } from '@polkadot/types/interfaces';
|
||||
|
||||
import React, { useCallback, useMemo, useState } from 'react';
|
||||
import React, { useCallback, useState } from 'react';
|
||||
import { SubmittableResult } from '@polkadot/api';
|
||||
import { InputAddress, InputFile, Modal, TxButton } from '@polkadot/react-components';
|
||||
import { useAccountId, useNonEmptyString } from '@polkadot/react-hooks';
|
||||
@ -25,15 +25,10 @@ function Upload ({ onClose }: Props): React.ReactElement {
|
||||
const [name, isNameValid, setName] = useNonEmptyString();
|
||||
const { abi, contractAbi, errorText, isAbiError, isAbiSupplied, isAbiValid, onChangeAbi, onRemoveAbi } = useAbi();
|
||||
|
||||
const isSubmittable = useMemo(
|
||||
() => !!accountId && (!isNull(name) && isNameValid) && isWasmValid && (!isAbiSupplied || isAbiValid),
|
||||
[accountId, name, isAbiSupplied, isAbiValid, isNameValid, isWasmValid]
|
||||
);
|
||||
|
||||
const _onAddWasm = useCallback(
|
||||
(wasm: Uint8Array, name: string): void => {
|
||||
setWasm([compactAddLength(wasm), isWasm(wasm)]);
|
||||
setName(name);
|
||||
setName(name.replace('.wasm', ''));
|
||||
},
|
||||
[setName]
|
||||
);
|
||||
@ -49,7 +44,8 @@ function Upload ({ onClose }: Props): React.ReactElement {
|
||||
return;
|
||||
}
|
||||
|
||||
store.saveCode(codeHash as Hash, { abi, name, tags: [] })
|
||||
store
|
||||
.saveCode(codeHash as Hash, { abi, name, tags: [] })
|
||||
.then()
|
||||
.catch((error: any): void => {
|
||||
console.error('Unable to save code', error);
|
||||
@ -59,6 +55,8 @@ function Upload ({ onClose }: Props): React.ReactElement {
|
||||
[abi, name]
|
||||
);
|
||||
|
||||
const isSubmittable = !!accountId && (!isNull(name) && isNameValid) && isWasmValid && isAbiSupplied && isAbiValid;
|
||||
|
||||
return (
|
||||
<Modal header={t('Upload WASM')}>
|
||||
<Modal.Content>
|
||||
@ -89,7 +87,7 @@ function Upload ({ onClose }: Props): React.ReactElement {
|
||||
<ABI
|
||||
contractAbi={contractAbi}
|
||||
errorText={errorText}
|
||||
isError={isAbiError}
|
||||
isError={isAbiError || !isAbiSupplied}
|
||||
isSupplied={isAbiSupplied}
|
||||
isValid={isAbiValid}
|
||||
onChange={onChangeAbi}
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
import { StringOrNull } from '@polkadot/react-components/types';
|
||||
import { ActionStatus } from '@polkadot/react-components/Status/types';
|
||||
|
||||
import React, { useCallback, useMemo, useState } from 'react';
|
||||
import React, { useCallback, useState } from 'react';
|
||||
import { AddressRow, Button, Input, Modal } from '@polkadot/react-components';
|
||||
import { useApi, useNonEmptyString } from '@polkadot/react-hooks';
|
||||
import keyring from '@polkadot/ui-keyring';
|
||||
@ -26,11 +26,6 @@ function Add ({ onClose }: Props): React.ReactElement {
|
||||
const [name, isNameValid, setName] = useNonEmptyString('New Contract');
|
||||
const { abi, contractAbi, errorText, isAbiError, isAbiSupplied, isAbiValid, onChangeAbi, onRemoveAbi } = useAbi([null, null], null, true);
|
||||
|
||||
const isValid = useMemo(
|
||||
(): boolean => isAddressValid && isNameValid && isAbiValid,
|
||||
[isAbiValid, isAddressValid, isNameValid]
|
||||
);
|
||||
|
||||
const _onAdd = useCallback(
|
||||
(): void => {
|
||||
const status: Partial<ActionStatus> = { action: 'create' };
|
||||
@ -66,6 +61,8 @@ function Add ({ onClose }: Props): React.ReactElement {
|
||||
[abi, address, api, name, onClose]
|
||||
);
|
||||
|
||||
const isValid = isAddressValid && isNameValid && isAbiValid;
|
||||
|
||||
return (
|
||||
<Modal header={t('Add an existing contract')}>
|
||||
<Modal.Content>
|
||||
|
||||
@ -5,7 +5,7 @@ import { SubmittableExtrinsic } from '@polkadot/api/types';
|
||||
import { CallResult } from './types';
|
||||
|
||||
import BN from 'bn.js';
|
||||
import React, { useCallback, useState, useEffect, useMemo } from 'react';
|
||||
import React, { useCallback, useState, useEffect } from 'react';
|
||||
import styled from 'styled-components';
|
||||
import { Button, Dropdown, Expander, InputAddress, InputBalance, Modal, TxButton } from '@polkadot/react-components';
|
||||
import { PromiseContract as ApiContract } from '@polkadot/api-contract';
|
||||
@ -35,8 +35,7 @@ function Call ({ className = '', contract, messageIndex, onChangeCallContractAdd
|
||||
const [outcomes, setOutcomes] = useState<CallResult[]>([]);
|
||||
const [execTx, setExecTx] = useState<SubmittableExtrinsic<'promise'> | null>(null);
|
||||
const [params, setParams] = useState<any[]>([]);
|
||||
const useWeightHook = useWeight();
|
||||
const { isValid: isWeightValid, weight } = useWeightHook;
|
||||
const weight = useWeight();
|
||||
|
||||
useEffect((): void => {
|
||||
setParams([]);
|
||||
@ -45,7 +44,7 @@ function Call ({ className = '', contract, messageIndex, onChangeCallContractAdd
|
||||
useEffect((): void => {
|
||||
value && message.isMutating && setExecTx((): SubmittableExtrinsic<'promise'> | null => {
|
||||
try {
|
||||
return contract.exec(message, message.isPayable ? value : 0, weight, ...params);
|
||||
return contract.exec(message, message.isPayable ? value : 0, weight.weight, ...params);
|
||||
} catch (error) {
|
||||
return null;
|
||||
}
|
||||
@ -57,7 +56,7 @@ function Call ({ className = '', contract, messageIndex, onChangeCallContractAdd
|
||||
if (!accountId || !message || !value || !weight) return;
|
||||
|
||||
contract
|
||||
.read(message, message.isPayable ? value : 0, weight, ...params)
|
||||
.read(message, message.isPayable ? value : 0, weight.weight, ...params)
|
||||
.send(accountId)
|
||||
.then((outcome) => setOutcomes([
|
||||
{
|
||||
@ -75,15 +74,12 @@ function Call ({ className = '', contract, messageIndex, onChangeCallContractAdd
|
||||
);
|
||||
|
||||
const _onClearOutcome = useCallback(
|
||||
(outcomeIndex: number) => () => setOutcomes(outcomes.slice(0, outcomeIndex).concat(outcomes.slice(outcomeIndex + 1))),
|
||||
(outcomeIndex: number) =>
|
||||
() => setOutcomes([...outcomes.filter((_, index) => index !== outcomeIndex)]),
|
||||
[outcomes]
|
||||
);
|
||||
|
||||
const isValid = useMemo(
|
||||
() => !!(accountId && isWeightValid && isValueValid),
|
||||
[accountId, isValueValid, isWeightValid]
|
||||
);
|
||||
|
||||
const isValid = !!(accountId && weight.isValid && isValueValid);
|
||||
const isViaRpc = contract.hasRpcContractsCall && !message.isMutating;
|
||||
|
||||
return (
|
||||
@ -142,7 +138,7 @@ function Call ({ className = '', contract, messageIndex, onChangeCallContractAdd
|
||||
<InputMegaGas
|
||||
help={t<string>('The maximum amount of gas to use for this contract call. If the call requires more, it will fail.')}
|
||||
label={t<string>('maximum gas allowed')}
|
||||
{...useWeightHook}
|
||||
{...weight}
|
||||
/>
|
||||
{outcomes.length > 0 && (
|
||||
<Expander
|
||||
@ -175,7 +171,7 @@ function Call ({ className = '', contract, messageIndex, onChangeCallContractAdd
|
||||
accountId={accountId}
|
||||
extrinsic={execTx}
|
||||
icon='sign-in-alt'
|
||||
isDisabled={!isValid}
|
||||
isDisabled={!isValid || !execTx}
|
||||
label={t('Execute')}
|
||||
withSpinner
|
||||
/>
|
||||
|
||||
@ -1,15 +1,16 @@
|
||||
// Copyright 2017-2020 @polkadot/app-contracts authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { SubmittableExtrinsic } from '@polkadot/api/types';
|
||||
import { StringOrNull } from '@polkadot/react-components/types';
|
||||
import { AccountId } from '@polkadot/types/interfaces';
|
||||
import { CodecArg } from '@polkadot/types/types';
|
||||
import { CodeStored } from './types';
|
||||
|
||||
import BN from 'bn.js';
|
||||
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
import { SubmittableResult } from '@polkadot/api';
|
||||
import { PromiseBlueprint } from '@polkadot/api-contract';
|
||||
import { Dropdown, InputAddress, InputBalance, Modal, TxButton } from '@polkadot/react-components';
|
||||
import { useFormField, useNonEmptyString, useNonZeroBn, useApi } from '@polkadot/react-hooks';
|
||||
import keyring from '@polkadot/ui-keyring';
|
||||
@ -21,48 +22,46 @@ import useAbi from './useAbi';
|
||||
import useWeight from './useWeight';
|
||||
import { ENDOWMENT } from './constants';
|
||||
|
||||
type ConstructOptions = { key: string; text: React.ReactNode; value: string }[];
|
||||
|
||||
interface Props {
|
||||
basePath: string;
|
||||
codeHash: string;
|
||||
constructorIndex?: number;
|
||||
constructorIndex: number;
|
||||
onClose: () => void;
|
||||
setConstructorIndex: React.Dispatch<number>;
|
||||
}
|
||||
|
||||
function defaultContractName (name: string) {
|
||||
return `${name} (instance)`;
|
||||
}
|
||||
|
||||
function Deploy ({ basePath, codeHash, constructorIndex = 0, onClose, setConstructorIndex }: Props): React.ReactElement<Props> {
|
||||
const { t } = useTranslation();
|
||||
const { api } = useApi();
|
||||
const history = useHistory();
|
||||
const useWeightHook = useWeight();
|
||||
const { isValid: isWeightValid, weight } = useWeightHook;
|
||||
const weight = useWeight();
|
||||
const [initTx, setInitTx] = useState<SubmittableExtrinsic<'promise'> | null>(null);
|
||||
const [params, setParams] = useState<any[]>([]);
|
||||
const [accountId, isAccountIdValid, setAccountId] = useFormField<StringOrNull>(null);
|
||||
const [endowment, isEndowmentValid, setEndowment] = useNonZeroBn(new BN(ENDOWMENT));
|
||||
|
||||
useEffect((): void => {
|
||||
setParams([]);
|
||||
}, [constructorIndex]);
|
||||
|
||||
const code = useMemo(
|
||||
(): CodeStored => store.getCode(codeHash),
|
||||
[codeHash]
|
||||
);
|
||||
const [accountId, isAccountIdValid, setAccountId] = useFormField<StringOrNull>(null);
|
||||
const [endowment, isEndowmentValid, setEndowment] = useNonZeroBn(new BN(ENDOWMENT));
|
||||
const [name, isNameValid, setName] = useNonEmptyString(t(defaultContractName(code.json.name)));
|
||||
|
||||
const [name, isNameValid, setName] = useNonEmptyString(code.json.name);
|
||||
const { abi, contractAbi, errorText, isAbiError, isAbiSupplied, isAbiValid, onChangeAbi, onRemoveAbi } = useAbi([code.json.abi, code.contractAbi], codeHash, true);
|
||||
|
||||
const isValid = useMemo(
|
||||
() => isNameValid && isEndowmentValid && isWeightValid && isAccountIdValid,
|
||||
[isAccountIdValid, isEndowmentValid, isNameValid, isWeightValid]
|
||||
const blueprint = useMemo(
|
||||
() => codeHash && contractAbi
|
||||
? new PromiseBlueprint(api, contractAbi, codeHash)
|
||||
: null,
|
||||
[api, codeHash, contractAbi]
|
||||
);
|
||||
|
||||
const constructOptions = useMemo(
|
||||
(): ConstructOptions => {
|
||||
if (!contractAbi) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return contractAbi.constructors.map((message, index) => ({
|
||||
() => contractAbi
|
||||
? contractAbi.constructors.map((message, index) => ({
|
||||
key: `${index}`,
|
||||
text: (
|
||||
<MessageSignature
|
||||
@ -70,34 +69,27 @@ function Deploy ({ basePath, codeHash, constructorIndex = 0, onClose, setConstru
|
||||
message={message}
|
||||
/>
|
||||
),
|
||||
value: `${index}`
|
||||
}));
|
||||
},
|
||||
value: index
|
||||
}))
|
||||
: [],
|
||||
[contractAbi]
|
||||
);
|
||||
|
||||
const [params, setParams] = useState<unknown[]>(contractAbi && constructorIndex >= 0 ? contractAbi.constructors[constructorIndex].args : []);
|
||||
useEffect((): void => {
|
||||
endowment && setInitTx((): SubmittableExtrinsic<'promise'> | null => {
|
||||
if (blueprint) {
|
||||
try {
|
||||
return blueprint.instantiate(constructorIndex, endowment, weight.weight, ...params);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
|
||||
useEffect(
|
||||
() => setParams(contractAbi ? contractAbi.constructors[constructorIndex].args : []),
|
||||
[constructorIndex, contractAbi]
|
||||
);
|
||||
|
||||
useEffect(
|
||||
() => setName(t(defaultContractName(code.json.name))),
|
||||
[code, setName, t]
|
||||
);
|
||||
|
||||
const _constructCall = useCallback(
|
||||
(): any[] => {
|
||||
if (!contractAbi || constructorIndex < 0) {
|
||||
return [];
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
return [endowment, weight, codeHash, contractAbi.constructors[constructorIndex](...(params as CodecArg[]))];
|
||||
},
|
||||
[codeHash, constructorIndex, contractAbi, endowment, params, weight]
|
||||
);
|
||||
return null;
|
||||
});
|
||||
}, [blueprint, constructorIndex, endowment, params, weight]);
|
||||
|
||||
const _onSuccess = useCallback(
|
||||
(result: SubmittableResult): void => {
|
||||
@ -126,6 +118,8 @@ function Deploy ({ basePath, codeHash, constructorIndex = 0, onClose, setConstru
|
||||
[abi, api, basePath, history, name, onClose]
|
||||
);
|
||||
|
||||
const isValid = isNameValid && isEndowmentValid && weight.isValid && isAccountIdValid;
|
||||
|
||||
return (
|
||||
<Modal header={t('Add an existing code hash')}>
|
||||
<Modal.Content>
|
||||
@ -143,38 +137,32 @@ function Deploy ({ basePath, codeHash, constructorIndex = 0, onClose, setConstru
|
||||
onChange={setName}
|
||||
value={name || ''}
|
||||
/>
|
||||
{isAbiSupplied
|
||||
? null
|
||||
: (
|
||||
<ABI
|
||||
contractAbi={contractAbi}
|
||||
errorText={errorText}
|
||||
isError={isAbiError}
|
||||
isSupplied={isAbiSupplied}
|
||||
isValid={isAbiValid}
|
||||
onChange={onChangeAbi}
|
||||
onRemove={onRemoveAbi}
|
||||
withLabel
|
||||
/>
|
||||
)
|
||||
}
|
||||
{contractAbi
|
||||
? (
|
||||
<Dropdown
|
||||
help={t<string>('The deployment constructor information for this contract, as provided by the ABI.')}
|
||||
isDisabled={contractAbi.constructors.length <= 1}
|
||||
label={t('deployment constructor')}
|
||||
onChange={setConstructorIndex}
|
||||
options={constructOptions}
|
||||
value={`${constructorIndex}`}
|
||||
/>
|
||||
)
|
||||
: null
|
||||
}
|
||||
{!isAbiSupplied && (
|
||||
<ABI
|
||||
contractAbi={contractAbi}
|
||||
errorText={errorText}
|
||||
isError={isAbiError}
|
||||
isSupplied={isAbiSupplied}
|
||||
isValid={isAbiValid}
|
||||
onChange={onChangeAbi}
|
||||
onRemove={onRemoveAbi}
|
||||
withLabel
|
||||
/>
|
||||
)}
|
||||
{contractAbi && (
|
||||
<Dropdown
|
||||
help={t<string>('The deployment constructor information for this contract, as provided by the ABI.')}
|
||||
isDisabled={contractAbi.constructors.length <= 1}
|
||||
label={t('deployment constructor')}
|
||||
onChange={setConstructorIndex}
|
||||
options={constructOptions}
|
||||
value={constructorIndex}
|
||||
/>
|
||||
)}
|
||||
<Params
|
||||
onChange={setParams}
|
||||
params={
|
||||
contractAbi && constructorIndex >= 0
|
||||
contractAbi
|
||||
? contractAbi.constructors[constructorIndex].args
|
||||
: []
|
||||
}
|
||||
@ -189,19 +177,18 @@ function Deploy ({ basePath, codeHash, constructorIndex = 0, onClose, setConstru
|
||||
<InputMegaGas
|
||||
help={t<string>('The maximum amount of gas that can be used by this deployment, if the code requires more, the deployment will fail.')}
|
||||
label={t<string>('maximum gas allowed')}
|
||||
{...useWeightHook}
|
||||
{...weight}
|
||||
/>
|
||||
</Modal.Content>
|
||||
<Modal.Actions onCancel={onClose}>
|
||||
<TxButton
|
||||
accountId={accountId}
|
||||
extrinsic={initTx}
|
||||
icon='upload'
|
||||
isDisabled={!isValid}
|
||||
isDisabled={!isValid || !initTx}
|
||||
label={t('Deploy')}
|
||||
onClick={onClose}
|
||||
onSuccess={_onSuccess}
|
||||
params={_constructCall}
|
||||
tx='contracts.instantiate'
|
||||
withSpinner
|
||||
/>
|
||||
</Modal.Actions>
|
||||
|
||||
@ -28,9 +28,7 @@ export default function useAbi (initialValue: [string | null | undefined, Abi |
|
||||
|
||||
useEffect(
|
||||
(): void => {
|
||||
if (!!initialValue[0] && abi !== initialValue[0]) {
|
||||
setAbi([initialValue[0], initialValue[1], !!initialValue[1], !isRequired || !!initialValue[1]]);
|
||||
}
|
||||
initialValue[0] && abi !== initialValue[0] && setAbi([initialValue[0], initialValue[1], !!initialValue[1], !isRequired || !!initialValue[1]]);
|
||||
},
|
||||
[abi, initialValue, isRequired]
|
||||
);
|
||||
|
||||
@ -13,23 +13,30 @@ const BN_MILLION = new BN(1e6);
|
||||
export default function useWeight (initialValue: BN = BN_MILLION): UseWeight {
|
||||
const [blockTime] = useBlockTime();
|
||||
const [megaGas, setMegaGas] = useState<BN | undefined>(initialValue);
|
||||
const [executionTime, isValid, percentage, weight] = useMemo(
|
||||
(): [number, boolean, number, BN] => {
|
||||
const [executionTime, percentage, weight, isValid] = useMemo(
|
||||
(): [number, number, BN, boolean] => {
|
||||
if (!megaGas) {
|
||||
return [0, false, 0, BN_ZERO];
|
||||
return [0, 0, BN_ZERO, false];
|
||||
}
|
||||
|
||||
const weight = megaGas.mul(BN_MILLION);
|
||||
const executionTime = megaGas.toNumber() / 1e6;
|
||||
const percentage = Math.round((executionTime / (blockTime / 1000)) * 100);
|
||||
const isValid = !megaGas.isZero() && percentage < 100;
|
||||
|
||||
return [executionTime, isValid, percentage, weight];
|
||||
return [executionTime, percentage, weight, !megaGas.isZero() && percentage < 100];
|
||||
},
|
||||
[blockTime, megaGas]
|
||||
);
|
||||
|
||||
return {
|
||||
executionTime, isValid, megaGas: megaGas || BN_ZERO, percentage, setMegaGas, weight
|
||||
};
|
||||
return useMemo(
|
||||
() => ({
|
||||
executionTime,
|
||||
isValid,
|
||||
megaGas: megaGas || BN_ZERO,
|
||||
percentage,
|
||||
setMegaGas,
|
||||
weight
|
||||
}),
|
||||
[executionTime, isValid, megaGas, percentage, setMegaGas, weight]
|
||||
);
|
||||
}
|
||||
|
||||
@ -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-19",
|
||||
"@polkadot/api": "^2.1.2-20",
|
||||
"@polkadot/extension-dapp": "^0.35.0-beta.12",
|
||||
"rxjs-compat": "^6.6.3"
|
||||
}
|
||||
|
||||
112
yarn.lock
112
yarn.lock
@ -2039,57 +2039,57 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/api-contract@npm:^2.1.2-19":
|
||||
version: 2.1.2-19
|
||||
resolution: "@polkadot/api-contract@npm:2.1.2-19"
|
||||
"@polkadot/api-contract@npm:^2.1.2-20":
|
||||
version: 2.1.2-20
|
||||
resolution: "@polkadot/api-contract@npm:2.1.2-20"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.11.2
|
||||
"@polkadot/api": 2.1.2-19
|
||||
"@polkadot/rpc-core": 2.1.2-19
|
||||
"@polkadot/types": 2.1.2-19
|
||||
"@polkadot/api": 2.1.2-20
|
||||
"@polkadot/rpc-core": 2.1.2-20
|
||||
"@polkadot/types": 2.1.2-20
|
||||
"@polkadot/util": ^3.5.1
|
||||
bn.js: ^5.1.3
|
||||
rxjs: ^6.6.3
|
||||
checksum: c4aab02ecc776e89f662dc6640053f31b5c6a8cf2f2d8345ea1641caae83e93a4f91d9b93716246b4721e895703e01a457340609e21ee2b8b18e4d13be72907b
|
||||
checksum: 138f3f2ec27b6772d87d988b2c69fcbc303c821f2c68d1e99af52afe6eb257a0d3395b3350c450a73f7abc8657cb79fe07f54ca073bf38c13d3dae14fb8b9910
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/api-derive@npm:2.1.2-19":
|
||||
version: 2.1.2-19
|
||||
resolution: "@polkadot/api-derive@npm:2.1.2-19"
|
||||
"@polkadot/api-derive@npm:2.1.2-20":
|
||||
version: 2.1.2-20
|
||||
resolution: "@polkadot/api-derive@npm:2.1.2-20"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.11.2
|
||||
"@polkadot/api": 2.1.2-19
|
||||
"@polkadot/rpc-core": 2.1.2-19
|
||||
"@polkadot/rpc-provider": 2.1.2-19
|
||||
"@polkadot/types": 2.1.2-19
|
||||
"@polkadot/api": 2.1.2-20
|
||||
"@polkadot/rpc-core": 2.1.2-20
|
||||
"@polkadot/rpc-provider": 2.1.2-20
|
||||
"@polkadot/types": 2.1.2-20
|
||||
"@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: 4c333d7b682a9bd37b173d4a7fb70d36452632970fa4739132d102332e124100711c048732fda4f117e93d60b50fe4b0442523ec8fdbf3788542ba71111684ea
|
||||
checksum: c3294b0cf54e499e260faaaf23ffea74b7188df80efc80b3f7ce8630b5afe55f2dfdb209b15a5e7edcba673e1a52837bfdc4f84e7f9b85d5d5fc6ca1560818a5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/api@npm:^2.1.2-19":
|
||||
version: 2.1.2-19
|
||||
resolution: "@polkadot/api@npm:2.1.2-19"
|
||||
"@polkadot/api@npm:^2.1.2-20":
|
||||
version: 2.1.2-20
|
||||
resolution: "@polkadot/api@npm:2.1.2-20"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.11.2
|
||||
"@polkadot/api-derive": 2.1.2-19
|
||||
"@polkadot/api-derive": 2.1.2-20
|
||||
"@polkadot/keyring": ^3.5.1
|
||||
"@polkadot/metadata": 2.1.2-19
|
||||
"@polkadot/rpc-core": 2.1.2-19
|
||||
"@polkadot/rpc-provider": 2.1.2-19
|
||||
"@polkadot/types": 2.1.2-19
|
||||
"@polkadot/types-known": 2.1.2-19
|
||||
"@polkadot/metadata": 2.1.2-20
|
||||
"@polkadot/rpc-core": 2.1.2-20
|
||||
"@polkadot/rpc-provider": 2.1.2-20
|
||||
"@polkadot/types": 2.1.2-20
|
||||
"@polkadot/types-known": 2.1.2-20
|
||||
"@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: c60419fe8cd141737534bad875befe72b11175dedb6871510f25b74fb1806b2619a8925c21e6ac1db87f37debc5e926832c5bb06a249c9ede1747dca39e1ad34
|
||||
checksum: 680d0fe4d9e3613cc888cb309a44e2a589fc8bef6bb727bd3bfba8432242a485348691b2c78b83b591a5767e15d44164dc1f3b93856252e0e2053c26300617c0
|
||||
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-19
|
||||
"@polkadot/api-contract": ^2.1.2-20
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@ -2525,17 +2525,17 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/metadata@npm:2.1.2-19":
|
||||
version: 2.1.2-19
|
||||
resolution: "@polkadot/metadata@npm:2.1.2-19"
|
||||
"@polkadot/metadata@npm:2.1.2-20":
|
||||
version: 2.1.2-20
|
||||
resolution: "@polkadot/metadata@npm:2.1.2-20"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.11.2
|
||||
"@polkadot/types": 2.1.2-19
|
||||
"@polkadot/types-known": 2.1.2-19
|
||||
"@polkadot/types": 2.1.2-20
|
||||
"@polkadot/types-known": 2.1.2-20
|
||||
"@polkadot/util": ^3.5.1
|
||||
"@polkadot/util-crypto": ^3.5.1
|
||||
bn.js: ^5.1.3
|
||||
checksum: cbd10cb11d932967ad3cd3c1bf77221a886032e344e7ff1b851946dc955b9dd0279b1cd3010a9972762575087c59a3ea468086f5a9add89d2b93b10df7ca403e
|
||||
checksum: f08a577035578d691f26142dd5e18ba3202849f176ec422ba2150a1cbdba939701f7e0a699cab4d9d188a165b1c3ddc9ff06f01f0c1663ab31ed44b5137fc0e5
|
||||
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-19
|
||||
"@polkadot/api": ^2.1.2-20
|
||||
"@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-19":
|
||||
version: 2.1.2-19
|
||||
resolution: "@polkadot/rpc-core@npm:2.1.2-19"
|
||||
"@polkadot/rpc-core@npm:2.1.2-20":
|
||||
version: 2.1.2-20
|
||||
resolution: "@polkadot/rpc-core@npm:2.1.2-20"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.11.2
|
||||
"@polkadot/metadata": 2.1.2-19
|
||||
"@polkadot/rpc-provider": 2.1.2-19
|
||||
"@polkadot/types": 2.1.2-19
|
||||
"@polkadot/metadata": 2.1.2-20
|
||||
"@polkadot/rpc-provider": 2.1.2-20
|
||||
"@polkadot/types": 2.1.2-20
|
||||
"@polkadot/util": ^3.5.1
|
||||
memoizee: ^0.4.14
|
||||
rxjs: ^6.6.3
|
||||
checksum: 194f52900cece006e6a21d46d30fecf84a806b251aa9870c38181bdfc3494ed609addf158b5a579c7d1e6757fc25aa2d709887a815e269f5d3566d688cfcd8c4
|
||||
checksum: ff6126e73801ddbd01e9d7b5687be820ac5442be5c4a9d4f0ea1d54ef67cae11c1eff7a7b61bde713f279dfbb3d02217cb58a2b6d801844a1711c261171db14a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/rpc-provider@npm:2.1.2-19":
|
||||
version: 2.1.2-19
|
||||
resolution: "@polkadot/rpc-provider@npm:2.1.2-19"
|
||||
"@polkadot/rpc-provider@npm:2.1.2-20":
|
||||
version: 2.1.2-20
|
||||
resolution: "@polkadot/rpc-provider@npm:2.1.2-20"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.11.2
|
||||
"@polkadot/metadata": 2.1.2-19
|
||||
"@polkadot/types": 2.1.2-19
|
||||
"@polkadot/metadata": 2.1.2-20
|
||||
"@polkadot/types": 2.1.2-20
|
||||
"@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: 58e93610a3b01e26d1ac111cd77a28a6eea401c444a954e23b3fd18aba1cd3fd931cc47af2793a706a90f4cda047942abb03e8b90c75a3b7a6171df9d10879e8
|
||||
checksum: 70033a1b200505cf8a743a7e223aff098aee574e31790e3a912f5f6b1eb2faaa13e851729a202b73f6b56d5eac69e257ad5eaca78e6db9e2deee5544e92b8709
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -2708,31 +2708,31 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/types-known@npm:2.1.2-19":
|
||||
version: 2.1.2-19
|
||||
resolution: "@polkadot/types-known@npm:2.1.2-19"
|
||||
"@polkadot/types-known@npm:2.1.2-20":
|
||||
version: 2.1.2-20
|
||||
resolution: "@polkadot/types-known@npm:2.1.2-20"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.11.2
|
||||
"@polkadot/types": 2.1.2-19
|
||||
"@polkadot/types": 2.1.2-20
|
||||
"@polkadot/util": ^3.5.1
|
||||
bn.js: ^5.1.3
|
||||
checksum: 73e0902549e229c2251a26439ec5d05b189d40b24f528f6af2eea3d009c9b4c643432038db9da57995b83af76f9b2db01cd73e0f98b260cff52dc1b75f75b2d9
|
||||
checksum: 595324baab89b64a248b9b7a957bd84772ba1149ceeb62b95d9d4c4ef4c0c2be1467ebb8dd3debfb9db373d7610e50fb72b5abeed156e87319793f1e13dbac15
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/types@npm:^2.1.2-19":
|
||||
version: 2.1.2-19
|
||||
resolution: "@polkadot/types@npm:2.1.2-19"
|
||||
"@polkadot/types@npm:^2.1.2-20":
|
||||
version: 2.1.2-20
|
||||
resolution: "@polkadot/types@npm:2.1.2-20"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.11.2
|
||||
"@polkadot/metadata": 2.1.2-19
|
||||
"@polkadot/metadata": 2.1.2-20
|
||||
"@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: 72385b2fd521a2c19d43bd8a102df288cb90f5c46dda0cecaacb84165bff951fcf9692ac2650b31b30c3d7bca2194a33777b8bbdeac5793c09a2374d1de38c1a
|
||||
checksum: 16e9885e94e5537031788b7581fa3ebb7aaa8b989ae604b9f67637ed20ea018d1c90b31b06f996d1317ecce769abc71108e4cf0e68614efd596db31524c0541a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user