Use actual contract exec (#3841)

* Use actual contract exec

* Bump API
This commit is contained in:
Jaco Greeff 2020-10-10 18:22:52 +02:00 committed by GitHub
parent 474dd51487
commit d6fa316406
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 164 additions and 205 deletions

View File

@ -33,10 +33,10 @@
"afterSign": "electron-builder-notarize"
},
"resolutions": {
"@polkadot/api": "^2.1.2-13",
"@polkadot/api-contract": "^2.1.2-13",
"@polkadot/api": "^2.1.2-15",
"@polkadot/api-contract": "^2.1.2-15",
"@polkadot/keyring": "^3.5.1",
"@polkadot/types": "^2.1.2-13",
"@polkadot/types": "^2.1.2-15",
"@polkadot/util": "^3.5.1",
"@polkadot/util-crypto": "^3.5.1",
"@polkadot/wasm-crypto": "^1.4.1",

View File

@ -12,6 +12,6 @@
"license": "Apache-2.0",
"dependencies": {
"@babel/runtime": "^7.11.2",
"@polkadot/api-contract": "^2.1.2-13"
"@polkadot/api-contract": "^2.1.2-15"
}
}

View File

@ -16,41 +16,38 @@ import { useTranslation } from '../translate';
interface Props {
className?: string;
code: CodeStored;
onShowDeploy: (codeHash?: string, constructorIndex?: number) => () => void;
onShowDeploy: (codeHash: string, constructorIndex: number) => void;
}
function Code ({ className, code, onShowDeploy }: Props): React.ReactElement<Props> {
const { json: { codeHash } } = code;
const { t } = useTranslation();
const [isForgetOpen, toggleIsForgetOpen] = useToggle();
const [isRemoveABIOpen, toggleIsRemoveABIOpen] = useToggle();
const { contractAbi, isAbiError, isAbiSupplied, isAbiValid, onChangeAbi, onRemoveAbi } = useAbi([code.json.abi || null, code.contractAbi || null], codeHash, true);
const { contractAbi, isAbiError, isAbiSupplied, isAbiValid, onChangeAbi, onRemoveAbi } = useAbi([code.json.abi, code.contractAbi], code.json.codeHash, true);
const _onShowDeploy = useCallback(
() => onShowDeploy(codeHash)(),
[codeHash, onShowDeploy]
() => onShowDeploy(code.json.codeHash, 0),
[code, onShowDeploy]
);
const _onDeployConstructor = useCallback(
(constructorIndex = 0) => codeHash && onShowDeploy && onShowDeploy(codeHash, constructorIndex)(),
[codeHash, onShowDeploy]
(constructorIndex = 0): void => {
onShowDeploy && onShowDeploy(code.json.codeHash, constructorIndex);
},
[code, onShowDeploy]
);
const _onForget = useCallback(
(): void => {
if (!codeHash) {
return;
}
try {
store.forgetCode(codeHash);
store.forgetCode(code.json.codeHash);
} catch (error) {
console.error(error);
} finally {
toggleIsForgetOpen();
}
},
[codeHash, toggleIsForgetOpen]
[code, toggleIsForgetOpen]
);
return (

View File

@ -10,7 +10,7 @@ import { useTranslation } from '../translate';
import Code from './Code';
interface Props {
onShowDeploy: (codeHash?: string, constructorIndex?: number) => () => void;
onShowDeploy: (codeHash: string, constructorIndex: number) => void;
updated: number;
}
@ -27,15 +27,13 @@ function Codes ({ onShowDeploy }: Props): React.ReactElement<Props> {
empty={t<string>('No code hashes available')}
header={headerRef.current}
>
{contracts.getAllCode().map((code): React.ReactNode => {
return (
<Code
code={code}
key={code.json.codeHash}
onShowDeploy={onShowDeploy}
/>
);
})}
{contracts.getAllCode().map((code): React.ReactNode => (
<Code
code={code}
key={code.json.codeHash}
onShowDeploy={onShowDeploy}
/>
))}
</Table>
);
}

View File

@ -1,6 +1,7 @@
// Copyright 2017-2020 @polkadot/app-contracts authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { SubmittableExtrinsic } from '@polkadot/api/types';
import { ContractCallOutcome } from '@polkadot/api-contract/types';
import { StringOrNull } from '@polkadot/react-components/types';
@ -35,6 +36,7 @@ function Call ({ callContract, callMessageIndex, className = '', onChangeCallCon
const [endowment, isEndowmentValid, setEndowment] = useFormField<BN>(BN_ZERO);
const [isBusy, , setIsBusy] = useToggle();
const [outcomes, setOutcomes] = useState<ContractCallOutcome[]>([]);
const [execTx, setExecTx] = useState<SubmittableExtrinsic<'promise'> | null>(null);
const [params, setParams] = useState<any[]>(callMessage ? callMessage.args.map(({ type }) => createValue({ type })) : []);
const useWeightHook = useWeight();
const { isValid: isWeightValid, weight } = useWeightHook;
@ -46,8 +48,10 @@ function Call ({ callContract, callMessageIndex, className = '', onChangeCallCon
}, [callContract, callMessageIndex]);
useEffect((): void => {
setOutcomes([]);
}, [callContract]);
endowment && callContract.hasRpcContractsCall && callMessage.isMutating && setExecTx(
() => callContract.exec(callMessage, endowment, weight, ...params)
);
}, [accountId, callContract, callMessage, endowment, weight, params]);
const _onChangeCallMessageIndexString = useCallback(
(callMessageIndexString: string): void => {
@ -58,17 +62,6 @@ function Call ({ callContract, callMessageIndex, className = '', onChangeCallCon
[onChangeCallMessageIndex]
);
const _constructTx = useCallback(
(): unknown[] => {
if (!accountId || !callMessage || !callContract.address) {
return [];
}
return [callContract.address.toString(), endowment, weight, callMessage(...params)];
},
[accountId, callContract, callMessage, endowment, weight, params]
);
const _onSubmitRpc = useCallback(
(): void => {
if (!accountId || !callMessage || !endowment || !weight) return;
@ -108,68 +101,64 @@ function Call ({ callContract, callMessageIndex, className = '', onChangeCallCon
onClose={onClose}
>
<Modal.Content>
{callContract && (
<div className='contracts--CallControls'>
<InputAddress
defaultValue={accountId}
help={t<string>('Specify the user account to use for this contract call. And fees will be deducted from this account.')}
isDisabled={isBusy}
label={t<string>('call from account')}
onChange={setAccountId}
type='account'
value={accountId}
/>
<InputAddress
help={t<string>('A deployed contract that has either been deployed or attached. The address and ABI are used to construct the parameters.')}
isDisabled={isBusy}
label={t<string>('contract to use')}
onChange={onChangeCallContractAddress}
type='contract'
value={callContract.address.toString()}
/>
{callMessageIndex !== null && (
<>
<Dropdown
defaultValue={`${callMessageIndex}`}
help={t<string>('The message to send to this contract. Parameters are adjusted based on the ABI provided.')}
isDisabled={isBusy}
isError={callMessage === null}
label={t<string>('message to send')}
onChange={_onChangeCallMessageIndexString}
options={getCallMessageOptions(callContract)}
value={`${callMessageIndex}`}
/>
<Params
isDisabled={isBusy}
onChange={setParams}
params={
callMessage
? callMessage.args
: undefined
}
/>
</>
)}
{!isViaRpc && (
<InputBalance
help={t<string>('The allotted value for this contract, i.e. the amount transferred to the contract as part of this call.')}
isDisabled={isBusy}
isError={!isEndowmentValid}
isZeroable
label={t<string>('value')}
onChange={setEndowment}
value={endowment}
/>
)}
<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}
/>
</div>
)}
{outcomes.length > 0 && (
<InputAddress
defaultValue={accountId}
help={t<string>('Specify the user account to use for this contract call. And fees will be deducted from this account.')}
isDisabled={isBusy}
label={t<string>('call from account')}
onChange={setAccountId}
type='account'
value={accountId}
/>
<InputAddress
help={t<string>('A deployed contract that has either been deployed or attached. The address and ABI are used to construct the parameters.')}
isDisabled={isBusy}
label={t<string>('contract to use')}
onChange={onChangeCallContractAddress}
type='contract'
value={callContract.address.toString()}
/>
{callMessageIndex !== null && (
<>
<Dropdown
defaultValue={`${callMessageIndex}`}
help={t<string>('The message to send to this contract. Parameters are adjusted based on the ABI provided.')}
isDisabled={isBusy}
isError={callMessage === null}
label={t<string>('message to send')}
onChange={_onChangeCallMessageIndexString}
options={getCallMessageOptions(callContract)}
value={`${callMessageIndex}`}
/>
<Params
isDisabled={isBusy}
onChange={setParams}
params={
callMessage
? callMessage.args
: undefined
}
/>
</>
)}
{!isViaRpc && (
<InputBalance
help={t<string>('The allotted value for this contract, i.e. the amount transferred to the contract as part of this call.')}
isDisabled={isBusy}
isError={!isEndowmentValid}
isZeroable
label={t<string>('value')}
onChange={setEndowment}
value={endowment}
/>
)}
<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}
/>
{outcomes.length > 0 && (
<div>
<h3>
{t<string>('Call results')}
<IconLink
@ -188,7 +177,7 @@ function Call ({ callContract, callMessageIndex, className = '', onChangeCallCon
/>
))}
</div>
</>
</div>
)}
</Modal.Content>
<Modal.Actions onCancel={onClose}>
@ -204,14 +193,13 @@ function Call ({ callContract, callMessageIndex, className = '', onChangeCallCon
: (
<TxButton
accountId={accountId}
extrinsic={execTx}
icon='sign-in-alt'
isDisabled={!isValid}
label={t('Execute')}
onClick={(): void => setIsBusy(true)}
onFailed={(): void => setIsBusy(false)}
onSuccess={(): void => setIsBusy(false)}
params={_constructTx}
tx='contracts.call'
withSpinner
/>
)

View File

@ -1,7 +1,7 @@
// Copyright 2017-2020 @polkadot/app-contracts authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { StringOrNull, VoidFn } from '@polkadot/react-components/types';
import { StringOrNull } from '@polkadot/react-components/types';
import { AccountId } from '@polkadot/types/interfaces';
import { CodecArg } from '@polkadot/types/types';
import { CodeStored } from './types';
@ -21,16 +21,13 @@ import useAbi from './useAbi';
import useWeight from './useWeight';
import { ENDOWMENT } from './constants';
type CodeOptions = { text: string; value: string }[];
type ConstructOptions = { key: string; text: React.ReactNode; value: string }[];
interface Props {
basePath: string;
allCodes: CodeStored[];
codeHash: string;
constructorIndex?: number;
onClose: VoidFn;
setCodeHash: React.Dispatch<string>;
onClose: () => void;
setConstructorIndex: React.Dispatch<number>;
}
@ -38,7 +35,7 @@ function defaultContractName (name: string) {
return `${name} (instance)`;
}
function Deploy ({ allCodes, basePath, codeHash, constructorIndex = 0, onClose, setCodeHash, setConstructorIndex }: Props): React.ReactElement<Props> {
function Deploy ({ basePath, codeHash, constructorIndex = 0, onClose, setConstructorIndex }: Props): React.ReactElement<Props> {
const { t } = useTranslation();
const { api } = useApi();
const history = useHistory();
@ -52,19 +49,12 @@ function Deploy ({ allCodes, basePath, codeHash, constructorIndex = 0, onClose,
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 { abi, contractAbi, errorText, isAbiError, isAbiSupplied, isAbiValid, onChangeAbi, onRemoveAbi } = useAbi([code.json.abi || null, code.contractAbi || null], codeHash, true);
const { abi, contractAbi, errorText, isAbiError, isAbiSupplied, isAbiValid, onChangeAbi, onRemoveAbi } = useAbi([code.json.abi, code.contractAbi], codeHash, true);
const isValid = useMemo(
(): boolean => isNameValid && isEndowmentValid && isWeightValid && isAccountIdValid,
() => isNameValid && isEndowmentValid && isWeightValid && isAccountIdValid,
[isAccountIdValid, isEndowmentValid, isNameValid, isWeightValid]
);
const codeOptions = useMemo(
(): CodeOptions => allCodes.map(({ json: { codeHash, name } }): { text: string; value: string } => ({
text: `${name} (${codeHash})`,
value: codeHash
})),
[allCodes]
);
const constructOptions = useMemo(
(): ConstructOptions => {
@ -147,18 +137,6 @@ function Deploy ({ allCodes, basePath, codeHash, constructorIndex = 0, onClose,
type='account'
value={accountId}
/>
<Dropdown
defaultValue={
codeOptions.length
? codeOptions[codeOptions.length - 1].value
: undefined
}
help={t('The contract WASM previously deployed. Internally this is identified by the hash of the code, as either created or attached.')}
label={t('code for this contract')}
onChange={setCodeHash}
options={codeOptions}
value={codeHash}
/>
<InputName
isContract
isError={!isNameValid}

View File

@ -40,12 +40,11 @@ function ContractsApp ({ basePath, className = '' }: Props): React.ReactElement<
]);
const _onShowDeploy = useCallback(
(codeHash?: string, constructorIndex = 0): () => void =>
(): void => {
setCodeHash(codeHash || (allCodes && allCodes[0] ? allCodes[0].json.codeHash : undefined));
setConstructorIndex(constructorIndex);
toggleDeploy();
},
(codeHash: string, constructorIndex: number): void => {
setCodeHash(codeHash || (allCodes && allCodes[0] ? allCodes[0].json.codeHash : undefined));
setConstructorIndex(constructorIndex);
toggleDeploy();
},
[allCodes, toggleDeploy]
);
@ -93,12 +92,6 @@ function ContractsApp ({ basePath, className = '' }: Props): React.ReactElement<
label={t('Add an existing code hash')}
onClick={toggleHash}
/>
{/* <Button
icon='upload'
isDisabled={!store.hasCode}
label={t('Deploy code hash')}
onClick={_onShowDeploy()}
/> */}
<Button
icon='plus'
label={t('Add an existing contract')}
@ -116,12 +109,10 @@ function ContractsApp ({ basePath, className = '' }: Props): React.ReactElement<
/>
{codeHash && isDeployOpen && (
<Deploy
allCodes={allCodes}
basePath={basePath}
codeHash={codeHash}
constructorIndex={constructorIndex}
onClose={_onCloseDeploy}
setCodeHash={setCodeHash}
setConstructorIndex={setConstructorIndex}
/>
)}

View File

@ -22,9 +22,9 @@ interface UseAbi {
onRemoveAbi: () => void;
}
export default function useAbi (initialValue: [string | null, Abi | null] = [null, null], codeHash: StringOrNull = null, isRequired = false): UseAbi {
export default function useAbi (initialValue: [string | null | undefined, Abi | null | undefined] = [null, null], codeHash: StringOrNull = null, isRequired = false): UseAbi {
const { t } = useTranslation();
const [[abi, contractAbi, isAbiSupplied, isAbiValid], setAbi] = useState<[StringOrNull, Abi | null, boolean, boolean]>([initialValue[0], initialValue[1], !!initialValue[1], !isRequired || !!initialValue[1]]);
const [[abi, contractAbi, isAbiSupplied, isAbiValid], setAbi] = useState<[string | null | undefined, Abi | null | undefined, boolean, boolean]>([initialValue[0], initialValue[1], !!initialValue[1], !isRequired || !!initialValue[1]]);
const [[isAbiError, errorText], setError] = useState<[boolean, string | null]>([false, null]);
useEffect(
@ -77,6 +77,13 @@ export default function useAbi (initialValue: [string | null, Abi | null] = [nul
);
return {
abi, contractAbi, errorText, isAbiError, isAbiSupplied, isAbiValid, onChangeAbi, onRemoveAbi
abi: abi || null,
contractAbi: contractAbi || null,
errorText,
isAbiError,
isAbiSupplied,
isAbiValid,
onChangeAbi,
onRemoveAbi
};
}

View File

@ -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-13",
"@polkadot/api": "^2.1.2-15",
"@polkadot/extension-dapp": "^0.35.0-beta.10",
"rxjs-compat": "^6.6.3"
}

112
yarn.lock
View File

@ -2039,57 +2039,57 @@ __metadata:
languageName: node
linkType: hard
"@polkadot/api-contract@npm:^2.1.2-13":
version: 2.1.2-13
resolution: "@polkadot/api-contract@npm:2.1.2-13"
"@polkadot/api-contract@npm:^2.1.2-15":
version: 2.1.2-15
resolution: "@polkadot/api-contract@npm:2.1.2-15"
dependencies:
"@babel/runtime": ^7.11.2
"@polkadot/api": 2.1.2-13
"@polkadot/rpc-core": 2.1.2-13
"@polkadot/types": 2.1.2-13
"@polkadot/api": 2.1.2-15
"@polkadot/rpc-core": 2.1.2-15
"@polkadot/types": 2.1.2-15
"@polkadot/util": ^3.5.1
bn.js: ^5.1.3
rxjs: ^6.6.3
checksum: 32b943e8cb9dfdf36f3a2030f52ac774ccc2c73da548ae652cc8a3adb2e0202900a29f70d5380e14dd77ef331ece36672b21592cb32d2c9ea9aecbcb55ffb787
checksum: 8a591ba5a25abf47292d4dcfe7f5c52936c93d648c50c5887789e31e471fa3d378fc0f392129fc5efbbc580ef7afd297b541c388ceb923d1fc8fbcea677b8189
languageName: node
linkType: hard
"@polkadot/api-derive@npm:2.1.2-13":
version: 2.1.2-13
resolution: "@polkadot/api-derive@npm:2.1.2-13"
"@polkadot/api-derive@npm:2.1.2-15":
version: 2.1.2-15
resolution: "@polkadot/api-derive@npm:2.1.2-15"
dependencies:
"@babel/runtime": ^7.11.2
"@polkadot/api": 2.1.2-13
"@polkadot/rpc-core": 2.1.2-13
"@polkadot/rpc-provider": 2.1.2-13
"@polkadot/types": 2.1.2-13
"@polkadot/api": 2.1.2-15
"@polkadot/rpc-core": 2.1.2-15
"@polkadot/rpc-provider": 2.1.2-15
"@polkadot/types": 2.1.2-15
"@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: 0081c2728856e35b0d59b20e0e50f77ba50cc0f5cb9380de102afff515812de7fd98f6425e13489b4b742b735781910c87584deaefed2844bbfec18efac03947
checksum: 79f719fbd5479ab5cf9dcbac4ab5bbd605e1991094b9e04abb2eeddfc1f2ea0be7d1161a8c496529c27473c56c8360a9b6facded05b14c21d9d6aaf4856dcf83
languageName: node
linkType: hard
"@polkadot/api@npm:^2.1.2-13":
version: 2.1.2-13
resolution: "@polkadot/api@npm:2.1.2-13"
"@polkadot/api@npm:^2.1.2-15":
version: 2.1.2-15
resolution: "@polkadot/api@npm:2.1.2-15"
dependencies:
"@babel/runtime": ^7.11.2
"@polkadot/api-derive": 2.1.2-13
"@polkadot/api-derive": 2.1.2-15
"@polkadot/keyring": ^3.5.1
"@polkadot/metadata": 2.1.2-13
"@polkadot/rpc-core": 2.1.2-13
"@polkadot/rpc-provider": 2.1.2-13
"@polkadot/types": 2.1.2-13
"@polkadot/types-known": 2.1.2-13
"@polkadot/metadata": 2.1.2-15
"@polkadot/rpc-core": 2.1.2-15
"@polkadot/rpc-provider": 2.1.2-15
"@polkadot/types": 2.1.2-15
"@polkadot/types-known": 2.1.2-15
"@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: 609acbad67785e38b35dc5279678ecd99328cd0586a777a24f0dc0bc29f2365723eb51d44beb31507e6bad0451e0b1b7bf0d0b38ac42adc2d4c52089d57ffee5
checksum: 35fdbc360022a1386e97f233bbf82e971ce98567d96cd93d75c506e706893551a7b5f41fe98ae9b880f5e3839fe91f4f68d160909d3d4b09ee2f98217575b378
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-13
"@polkadot/api-contract": ^2.1.2-15
languageName: unknown
linkType: soft
@ -2525,17 +2525,17 @@ __metadata:
languageName: node
linkType: hard
"@polkadot/metadata@npm:2.1.2-13":
version: 2.1.2-13
resolution: "@polkadot/metadata@npm:2.1.2-13"
"@polkadot/metadata@npm:2.1.2-15":
version: 2.1.2-15
resolution: "@polkadot/metadata@npm:2.1.2-15"
dependencies:
"@babel/runtime": ^7.11.2
"@polkadot/types": 2.1.2-13
"@polkadot/types-known": 2.1.2-13
"@polkadot/types": 2.1.2-15
"@polkadot/types-known": 2.1.2-15
"@polkadot/util": ^3.5.1
"@polkadot/util-crypto": ^3.5.1
bn.js: ^5.1.3
checksum: 361d931c6d24fd02489b8aebe13a7d84ebc9f5b3820de254a5f1b7fb1ba3b6691a27b42bc92377eabcefe164383a130b667c0e64df630030c55254b0fff767bb
checksum: 596d7a779ac2bd6d43dd384bfabcfdc3b9084a8e57acf82c164711fb4b9efc8d2d6a58a870b656e081dd157eb5f0a7bbb9189437c197f7380564263cfccb2375
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-13
"@polkadot/api": ^2.1.2-15
"@polkadot/extension-dapp": ^0.35.0-beta.10
rxjs-compat: ^6.6.3
languageName: unknown
@ -2667,35 +2667,35 @@ __metadata:
languageName: unknown
linkType: soft
"@polkadot/rpc-core@npm:2.1.2-13":
version: 2.1.2-13
resolution: "@polkadot/rpc-core@npm:2.1.2-13"
"@polkadot/rpc-core@npm:2.1.2-15":
version: 2.1.2-15
resolution: "@polkadot/rpc-core@npm:2.1.2-15"
dependencies:
"@babel/runtime": ^7.11.2
"@polkadot/metadata": 2.1.2-13
"@polkadot/rpc-provider": 2.1.2-13
"@polkadot/types": 2.1.2-13
"@polkadot/metadata": 2.1.2-15
"@polkadot/rpc-provider": 2.1.2-15
"@polkadot/types": 2.1.2-15
"@polkadot/util": ^3.5.1
memoizee: ^0.4.14
rxjs: ^6.6.3
checksum: 1693a3b6148aa1bf75bc96818331690f08ff2bcaf6de8279f50a5e8f75e918ffa39975c5b6182b5c44b629ba54ddbfb964464fbeb08a3ab34951c570f6c3648e
checksum: 31ab4cabe43ec89578a36bcd9ab4598935ec040c9e100c8250ee197d3a41486805372d93ea1ba0a970bd74d367775f67712f1996a053b77d5e5bd980afaa4a20
languageName: node
linkType: hard
"@polkadot/rpc-provider@npm:2.1.2-13":
version: 2.1.2-13
resolution: "@polkadot/rpc-provider@npm:2.1.2-13"
"@polkadot/rpc-provider@npm:2.1.2-15":
version: 2.1.2-15
resolution: "@polkadot/rpc-provider@npm:2.1.2-15"
dependencies:
"@babel/runtime": ^7.11.2
"@polkadot/metadata": 2.1.2-13
"@polkadot/types": 2.1.2-13
"@polkadot/metadata": 2.1.2-15
"@polkadot/types": 2.1.2-15
"@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: e74e814df4969db09d5116f3b2b8ecf20bfd1b732a60fe6666a960aadf5c5db34b35284c95a0f938c7663c740059869b698403c382293c780a36f07e3d34824a
checksum: e99ed2a7d6c8221d9cf0379ad74aadd57f27a9aae09559bba80e0b8076c40a3417fd668b5b2d7353429083208e4bcf5c6c1309751330cab69a8eb1d81da4eb8c
languageName: node
linkType: hard
@ -2708,31 +2708,31 @@ __metadata:
languageName: node
linkType: hard
"@polkadot/types-known@npm:2.1.2-13":
version: 2.1.2-13
resolution: "@polkadot/types-known@npm:2.1.2-13"
"@polkadot/types-known@npm:2.1.2-15":
version: 2.1.2-15
resolution: "@polkadot/types-known@npm:2.1.2-15"
dependencies:
"@babel/runtime": ^7.11.2
"@polkadot/types": 2.1.2-13
"@polkadot/types": 2.1.2-15
"@polkadot/util": ^3.5.1
bn.js: ^5.1.3
checksum: 5cf8a96a832339ff0382533be75921c7a56e3ddc469aa497ab769eab4489d4cb185f2a6714f095d5b3ee86fdd01a850dffc4802f0642b55f3e3e6212b6f04d22
checksum: 96cd9f1780f31726f6d4a4665e735c666c9cb0f6aeec04176dbb5952971125dfcbb908493962298b939c9edd9d8be293250f0c6b8f7a29e449fd9e68ba46e020
languageName: node
linkType: hard
"@polkadot/types@npm:^2.1.2-13":
version: 2.1.2-13
resolution: "@polkadot/types@npm:2.1.2-13"
"@polkadot/types@npm:^2.1.2-15":
version: 2.1.2-15
resolution: "@polkadot/types@npm:2.1.2-15"
dependencies:
"@babel/runtime": ^7.11.2
"@polkadot/metadata": 2.1.2-13
"@polkadot/metadata": 2.1.2-15
"@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: cb73c331ae1aa1aa0be6974dc5b19f5e55e61beac4800e902929c230be90cf6051686596809e049b4d2cdba0abb93a89a422141e87d3293b9891d53b4e50c6a6
checksum: 68e4f792b2ff005c12475c683780b174880a2f48777b0f3bf213e36ff78fd226a34d1b5da3b4841bddfa447fb29eeb0e927249157add3e37d671463d395de50b
languageName: node
linkType: hard