Ensure identity filter applies to all targets (#4100)
* Ensure identity filter applies to all targets * Name filter removes flags * Revert * Apply query filters to override toggles
This commit is contained in:
parent
1ed6e3a27d
commit
f0bf8efcf4
@ -12,11 +12,11 @@
|
||||
"packages/*"
|
||||
],
|
||||
"resolutions": {
|
||||
"@polkadot/api": "^2.8.3-2",
|
||||
"@polkadot/api-contract": "^2.8.3-2",
|
||||
"@polkadot/api": "^2.8.3-5",
|
||||
"@polkadot/api-contract": "^2.8.3-5",
|
||||
"@polkadot/keyring": "^4.2.1",
|
||||
"@polkadot/networks": "^4.2.1",
|
||||
"@polkadot/types": "^2.8.3-2",
|
||||
"@polkadot/types": "^2.8.3-5",
|
||||
"@polkadot/util": "^4.2.1",
|
||||
"@polkadot/util-crypto": "^4.2.1",
|
||||
"@polkadot/wasm-crypto": "^2.0.1",
|
||||
|
||||
@ -10,6 +10,6 @@
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@polkadot/api-contract": "^2.8.3-2"
|
||||
"@polkadot/api-contract": "^2.8.3-5"
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import queryString from 'query-string';
|
||||
import React, { useEffect } from 'react';
|
||||
import React, { useCallback, useEffect } from 'react';
|
||||
import { Input, Toggle } from '@polkadot/react-components';
|
||||
import { useApi } from '@polkadot/react-hooks';
|
||||
import { isString } from '@polkadot/util';
|
||||
@ -13,7 +13,7 @@ interface Props {
|
||||
children?: React.ReactNode;
|
||||
className?: string;
|
||||
nameFilter: string;
|
||||
setNameFilter: (value: string) => void;
|
||||
setNameFilter: (value: string, isQuery: boolean) => void;
|
||||
setWithIdentity: (value: boolean) => void;
|
||||
withIdentity: boolean;
|
||||
}
|
||||
@ -27,18 +27,23 @@ function Filtering ({ children, className, nameFilter, setNameFilter, setWithIde
|
||||
const queryFilter = queryString.parse(location.href.split('?')[1]).filter;
|
||||
|
||||
if (isString(queryFilter)) {
|
||||
setNameFilter(queryFilter);
|
||||
setNameFilter(queryFilter, true);
|
||||
}
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, []);
|
||||
|
||||
const _setNameFilter = useCallback(
|
||||
(value: string) => setNameFilter(value, false),
|
||||
[setNameFilter]
|
||||
);
|
||||
|
||||
return (
|
||||
<div className={className}>
|
||||
<Input
|
||||
autoFocus
|
||||
isFull
|
||||
label={t<string>('filter by name, address or index')}
|
||||
onChange={setNameFilter}
|
||||
onChange={_setNameFilter}
|
||||
value={nameFilter}
|
||||
/>
|
||||
<div className='staking--optionsBar'>
|
||||
|
||||
@ -40,13 +40,13 @@ const EmptyAuthorsContext: React.Context<Authors> = React.createContext<Authors>
|
||||
|
||||
function filterAccounts (accounts: string[] = [], elected: string[], favorites: string[], without: string[]): AccountExtend[] {
|
||||
return accounts
|
||||
.filter((accountId): boolean => !without.includes(accountId as any))
|
||||
.filter((accountId) => !without.includes(accountId))
|
||||
.map((accountId): AccountExtend => [
|
||||
accountId,
|
||||
elected.includes(accountId),
|
||||
favorites.includes(accountId)
|
||||
])
|
||||
.sort(([,, isFavA]: AccountExtend, [,, isFavB]: AccountExtend): number =>
|
||||
.sort(([,, isFavA]: AccountExtend, [,, isFavB]: AccountExtend) =>
|
||||
isFavA === isFavB
|
||||
? 0
|
||||
: (isFavA ? -1 : 1)
|
||||
@ -54,7 +54,7 @@ function filterAccounts (accounts: string[] = [], elected: string[], favorites:
|
||||
}
|
||||
|
||||
function accountsToString (accounts: AccountId[]): string[] {
|
||||
return accounts.map((accountId): string => accountId.toString());
|
||||
return accounts.map((accountId) => accountId.toString());
|
||||
}
|
||||
|
||||
function getFiltered (stakingOverview: DeriveStakingOverview, favorites: string[], next?: string[]): Filtered {
|
||||
|
||||
@ -6,14 +6,12 @@ import type { UnappliedSlash } from '@polkadot/types/interfaces';
|
||||
import type { ValidatorInfo } from '../types';
|
||||
|
||||
import BN from 'bn.js';
|
||||
import React, { useCallback, useEffect, useMemo } from 'react';
|
||||
import { ApiPromise } from '@polkadot/api';
|
||||
import React, { useCallback, useMemo } from 'react';
|
||||
import { AddressSmall, Badge, Checkbox, Icon } from '@polkadot/react-components';
|
||||
import { checkVisibility } from '@polkadot/react-components/util';
|
||||
import { FormatBalance } from '@polkadot/react-query';
|
||||
import { useApi, useCall } from '@polkadot/react-hooks';
|
||||
import { formatNumber } from '@polkadot/util';
|
||||
import keyring from '@polkadot/ui-keyring';
|
||||
|
||||
import MaxBadge from '../MaxBadge';
|
||||
import Favorite from '../Overview/Address/Favorite';
|
||||
@ -28,55 +26,18 @@ interface Props {
|
||||
isSelected: boolean;
|
||||
toggleFavorite: (accountId: string) => void;
|
||||
toggleSelected: (accountId: string) => void;
|
||||
withIdentity: boolean;
|
||||
}
|
||||
|
||||
function checkIdentity (api: ApiPromise, accountInfo: DeriveAccountInfo): [boolean, string | null] {
|
||||
let hasIdentity = false;
|
||||
let parentId: string | null = null;
|
||||
|
||||
const { accountId, identity, nickname } = accountInfo;
|
||||
|
||||
if (accountId) {
|
||||
parentId = accountId.toString();
|
||||
}
|
||||
|
||||
if (api.query.identity && api.query.identity.identityOf) {
|
||||
hasIdentity = !!(identity?.display && identity.display.toString());
|
||||
|
||||
if (identity.parent) {
|
||||
parentId = identity.parent.toString();
|
||||
}
|
||||
} else if (nickname) {
|
||||
hasIdentity = !!nickname.toString();
|
||||
}
|
||||
|
||||
if (!hasIdentity && accountId) {
|
||||
const account = keyring.getAddress(accountId.toString());
|
||||
|
||||
hasIdentity = !!account?.meta?.name;
|
||||
}
|
||||
|
||||
return [hasIdentity, parentId];
|
||||
}
|
||||
|
||||
function Validator ({ allSlashes, canSelect, filterName, info, isNominated, isSelected, toggleFavorite, toggleSelected, withIdentity }: Props): React.ReactElement<Props> | null {
|
||||
function Validator ({ allSlashes, canSelect, filterName, info, isNominated, isSelected, toggleFavorite, toggleSelected }: Props): React.ReactElement<Props> | null {
|
||||
const { t } = useTranslation();
|
||||
const { api } = useApi();
|
||||
const accountInfo = useCall<DeriveAccountInfo>(api.derive.accounts.info, [info.accountId]);
|
||||
|
||||
useEffect((): void => {
|
||||
if (accountInfo) {
|
||||
const [hasIdentity, parentId] = checkIdentity(api, accountInfo);
|
||||
|
||||
info.hasIdentity = hasIdentity;
|
||||
info.parentId = parentId;
|
||||
}
|
||||
}, [api, accountInfo, info]);
|
||||
|
||||
const isVisible = useMemo(
|
||||
() => accountInfo ? checkVisibility(api, info.key, accountInfo, filterName, withIdentity) : true,
|
||||
[accountInfo, api, filterName, info, withIdentity]
|
||||
() => accountInfo
|
||||
? checkVisibility(api, info.key, accountInfo, filterName)
|
||||
: true,
|
||||
[accountInfo, api, filterName, info]
|
||||
);
|
||||
|
||||
const slashes = useMemo(
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// Copyright 2017-2020 @polkadot/app-staking authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { DeriveStakingOverview } from '@polkadot/api-derive/types';
|
||||
import type { DeriveStakingOverview, DeriveHasIdentity } from '@polkadot/api-derive/types';
|
||||
import type { StakerState } from '@polkadot/react-hooks/types';
|
||||
import type { SortedTargets, TargetSortBy, ValidatorInfo } from '../types';
|
||||
|
||||
@ -9,7 +9,7 @@ import BN from 'bn.js';
|
||||
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
||||
import styled from 'styled-components';
|
||||
import { Button, Icon, Table, Toggle } from '@polkadot/react-components';
|
||||
import { useApi, useAvailableSlashes } from '@polkadot/react-hooks';
|
||||
import { useApi, useAvailableSlashes, useCall } from '@polkadot/react-hooks';
|
||||
|
||||
import ElectionBanner from '../ElectionBanner';
|
||||
import Filtering from '../Filtering';
|
||||
@ -51,13 +51,38 @@ const CLASSES: Record<string, string> = {
|
||||
const MAX_COMM_FILTER = 20;
|
||||
const SORT_KEYS = ['rankNumNominators', 'rankComm', 'rankBondTotal', 'rankBondOwn', 'rankBondOther', 'rankOverall'];
|
||||
|
||||
function isIncluded ({ commissionPer, hasIdentity, isElected, isFavorite, numNominators }: ValidatorInfo, { maxPaid, withElected, withIdentity, withoutComm, withoutOver }: Flags): boolean {
|
||||
return isFavorite || (
|
||||
(!withIdentity || hasIdentity) &&
|
||||
(!withElected || isElected) &&
|
||||
(!withoutComm || commissionPer < MAX_COMM_FILTER) &&
|
||||
(!withoutOver || !maxPaid || maxPaid.gtn(numNominators))
|
||||
);
|
||||
function filterValidators (validators: ValidatorInfo[], allIdentity: Record<string, DeriveHasIdentity>, { maxPaid, withElected, withGroup, withIdentity, withoutComm, withoutOver }: Flags): ValidatorInfo[] {
|
||||
const parentIds: string[] = [];
|
||||
|
||||
return validators.filter(({ accountId, commissionPer, isElected, isFavorite, numNominators }): boolean => {
|
||||
if (isFavorite) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const stashId = accountId.toString();
|
||||
const thisIdentity = allIdentity[stashId];
|
||||
|
||||
if (
|
||||
(!withIdentity || !!thisIdentity?.hasIdentity) &&
|
||||
(!withElected || isElected) &&
|
||||
(!withoutComm || (commissionPer < MAX_COMM_FILTER)) &&
|
||||
(!withoutOver || !maxPaid || maxPaid.gtn(numNominators))
|
||||
) {
|
||||
if (!withGroup || !thisIdentity || !thisIdentity.parentId) {
|
||||
if (!parentIds.includes(stashId)) {
|
||||
parentIds.push(stashId);
|
||||
|
||||
return true;
|
||||
}
|
||||
} else if (!parentIds.includes(thisIdentity.parentId)) {
|
||||
parentIds.push(thisIdentity.parentId);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
function sort (sortBy: TargetSortBy, sortFromMax: boolean, validators: ValidatorInfo[]): ValidatorInfo[] {
|
||||
@ -84,33 +109,35 @@ function extractNominees (ownNominators: StakerState[] = []): string[] {
|
||||
return myNominees;
|
||||
}
|
||||
|
||||
function selectProfitable (list: ValidatorInfo[], flags: Flags): string[] {
|
||||
const parentIds: string[] = [];
|
||||
function transformIdentity ([[validatorIds], hasIdentities]: [[string[]], DeriveHasIdentity[]]): Record<string, DeriveHasIdentity> {
|
||||
return validatorIds.reduce((result: Record<string, DeriveHasIdentity>, validatorId, index): Record<string, DeriveHasIdentity> => {
|
||||
result[validatorId] = hasIdentities[index];
|
||||
|
||||
return result;
|
||||
}, {});
|
||||
}
|
||||
|
||||
function selectProfitable (list: ValidatorInfo[]): string[] {
|
||||
const result: string[] = [];
|
||||
const { withGroup } = flags;
|
||||
|
||||
for (let i = 0; i < list.length && result.length < MAX_NOMINATIONS; i++) {
|
||||
const { isFavorite, key, parentId, stakedReturnCmp } = list[i];
|
||||
const { isFavorite, key, stakedReturnCmp } = list[i];
|
||||
|
||||
if (isFavorite || (
|
||||
(stakedReturnCmp > 0) &&
|
||||
(!withGroup || !parentId || !parentIds.includes(parentId))
|
||||
)) {
|
||||
if (isFavorite || (stakedReturnCmp > 0)) {
|
||||
result.push(key);
|
||||
parentId && parentIds.push(parentId);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function Targets ({ className = '', isInElection, ownStashes, targets: { avgStaked, inflation: { stakedReturn }, lastReward, lowStaked, nominators, totalIssuance, totalStaked, validators }, toggleFavorite }: Props): React.ReactElement<Props> {
|
||||
function Targets ({ className = '', isInElection, ownStashes, targets: { avgStaked, inflation: { stakedReturn }, lastReward, lowStaked, nominators, totalIssuance, totalStaked, validatorIds = [], validators }, toggleFavorite }: Props): React.ReactElement<Props> {
|
||||
const { t } = useTranslation();
|
||||
const { api } = useApi();
|
||||
const allSlashes = useAvailableSlashes();
|
||||
const ownNominators = useOwnNominators(ownStashes);
|
||||
const [selected, setSelected] = useState<string[]>([]);
|
||||
const [nameFilter, setNameFilter] = useState<string>('');
|
||||
const [{ isQueryFiltered, nameFilter }, setNameFilter] = useState({ isQueryFiltered: false, nameFilter: '' });
|
||||
const [withElected, setWithElected] = useState(false);
|
||||
const [withGroup, setWithGroup] = useState(true);
|
||||
const [withIdentity, setWithIdentity] = useState(false);
|
||||
@ -118,6 +145,7 @@ function Targets ({ className = '', isInElection, ownStashes, targets: { avgStak
|
||||
const [withoutOver, setWithoutOver] = useState(true);
|
||||
const [{ sortBy, sortFromMax }, setSortBy] = useState<SortState>({ sortBy: 'rankOverall', sortFromMax: true });
|
||||
const [sorted, setSorted] = useState<ValidatorInfo[] | undefined>();
|
||||
const allIdentity = useCall<Record<string, DeriveHasIdentity>>(api.derive.accounts.hasIdentityMulti, [validatorIds], { transform: transformIdentity, withParamsTransform: true });
|
||||
|
||||
const labelsRef = useRef({
|
||||
rankBondOther: t<string>('other stake'),
|
||||
@ -130,6 +158,7 @@ function Targets ({ className = '', isInElection, ownStashes, targets: { avgStak
|
||||
|
||||
const flags = useMemo(
|
||||
() => ({
|
||||
isQueryFiltered,
|
||||
maxPaid: api.consts.staking?.maxNominatorRewardedPerValidator,
|
||||
withElected,
|
||||
withGroup,
|
||||
@ -137,12 +166,12 @@ function Targets ({ className = '', isInElection, ownStashes, targets: { avgStak
|
||||
withoutComm,
|
||||
withoutOver
|
||||
}),
|
||||
[api, withElected, withGroup, withIdentity, withoutComm, withoutOver]
|
||||
[api, isQueryFiltered, withElected, withGroup, withIdentity, withoutComm, withoutOver]
|
||||
);
|
||||
|
||||
const filtered = useMemo(
|
||||
() => validators && validators.filter((info) => isIncluded(info, flags)),
|
||||
[flags, validators]
|
||||
() => allIdentity && validators && filterValidators(validators, allIdentity, flags),
|
||||
[allIdentity, flags, validators]
|
||||
);
|
||||
|
||||
// We are using an effect here to get this async. Sorting will have a double-render, however it allows
|
||||
@ -180,9 +209,14 @@ function Targets ({ className = '', isInElection, ownStashes, targets: { avgStak
|
||||
|
||||
const _selectProfitable = useCallback(
|
||||
() => filtered && setSelected(
|
||||
selectProfitable(filtered, flags)
|
||||
selectProfitable(filtered)
|
||||
),
|
||||
[filtered, flags]
|
||||
[filtered]
|
||||
);
|
||||
|
||||
const _setNameFilter = useCallback(
|
||||
(nameFilter: string, isQueryFiltered: boolean) => setNameFilter({ isQueryFiltered, nameFilter }),
|
||||
[]
|
||||
);
|
||||
|
||||
const header = useMemo(() => [
|
||||
@ -201,7 +235,7 @@ function Targets ({ className = '', isInElection, ownStashes, targets: { avgStak
|
||||
<div>
|
||||
<Filtering
|
||||
nameFilter={nameFilter}
|
||||
setNameFilter={setNameFilter}
|
||||
setNameFilter={_setNameFilter}
|
||||
setWithIdentity={setWithIdentity}
|
||||
withIdentity={withIdentity}
|
||||
>
|
||||
@ -231,7 +265,11 @@ function Targets ({ className = '', isInElection, ownStashes, targets: { avgStak
|
||||
/>
|
||||
</Filtering>
|
||||
</div>
|
||||
), [nameFilter, t, withElected, withGroup, withIdentity, withoutComm, withoutOver]);
|
||||
), [nameFilter, _setNameFilter, t, withElected, withGroup, withIdentity, withoutComm, withoutOver]);
|
||||
|
||||
const displayList = isQueryFiltered
|
||||
? validators
|
||||
: sorted;
|
||||
|
||||
return (
|
||||
<div className={className}>
|
||||
@ -265,7 +303,7 @@ function Targets ({ className = '', isInElection, ownStashes, targets: { avgStak
|
||||
header={header}
|
||||
legend={<Legend />}
|
||||
>
|
||||
{sorted?.map((info): React.ReactNode =>
|
||||
{displayList?.map((info): React.ReactNode =>
|
||||
<Validator
|
||||
allSlashes={allSlashes}
|
||||
canSelect={selected.length < MAX_NOMINATIONS}
|
||||
@ -276,7 +314,6 @@ function Targets ({ className = '', isInElection, ownStashes, targets: { avgStak
|
||||
key={info.key}
|
||||
toggleFavorite={toggleFavorite}
|
||||
toggleSelected={_toggleSelected}
|
||||
withIdentity={withIdentity}
|
||||
/>
|
||||
)}
|
||||
</Table>
|
||||
|
||||
@ -47,7 +47,6 @@ export interface ValidatorInfo extends ValidatorInfoRank {
|
||||
bondTotal: Balance;
|
||||
commissionPer: number;
|
||||
exposure: Exposure;
|
||||
hasIdentity: boolean;
|
||||
isActive: boolean;
|
||||
isCommission: boolean;
|
||||
isElected: boolean;
|
||||
@ -55,7 +54,6 @@ export interface ValidatorInfo extends ValidatorInfoRank {
|
||||
isNominating: boolean;
|
||||
key: string;
|
||||
numNominators: number;
|
||||
parentId: string | null;
|
||||
rewardSplit: BN;
|
||||
skipRewards: boolean;
|
||||
stakedReturn: number;
|
||||
|
||||
@ -112,7 +112,6 @@ function extractSingle (allAccounts: string[], derive: DeriveStakingElected | De
|
||||
bondTotal,
|
||||
commissionPer: ((validatorPrefs.commission?.unwrap() || BN_ZERO).toNumber() / 10_000_000),
|
||||
exposure,
|
||||
hasIdentity: false,
|
||||
isActive: !skipRewards,
|
||||
isCommission: !!validatorPrefs.commission,
|
||||
isElected,
|
||||
@ -120,7 +119,6 @@ function extractSingle (allAccounts: string[], derive: DeriveStakingElected | De
|
||||
isNominating,
|
||||
key,
|
||||
numNominators: (exposure.others || []).length,
|
||||
parentId: null,
|
||||
rankBondOther: 0,
|
||||
rankBondOwn: 0,
|
||||
rankBondTotal: 0,
|
||||
|
||||
@ -20,8 +20,8 @@
|
||||
"homepage": "https://github.com/polkadot-js/apps/tree/master/packages/react-api#readme",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@polkadot/api": "^2.8.3-2",
|
||||
"@polkadot/extension-dapp": "^0.35.0-beta.56",
|
||||
"@polkadot/api": "^2.8.3-5",
|
||||
"@polkadot/extension-dapp": "^0.35.0-beta.57",
|
||||
"rxjs-compat": "^6.6.3"
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,6 +18,7 @@ export interface CallOptions <T> {
|
||||
paramMap?: (params: any) => CallParams;
|
||||
transform?: (value: any) => T;
|
||||
withParams?: boolean;
|
||||
withParamsTransform?: boolean;
|
||||
}
|
||||
|
||||
export type TxDef = [string, any[] | ConstructTxFn];
|
||||
|
||||
@ -58,7 +58,7 @@ function unsubscribe (tracker: TrackerRef): void {
|
||||
}
|
||||
|
||||
// subscribe, trying to play nice with the browser threads
|
||||
function subscribe <T> (mountedRef: MountedRef, tracker: TrackerRef, fn: TrackFn | undefined, params: CallParams, setValue: (value: T) => void, { isSingle, transform = transformIdentity, withParams }: CallOptions<T> = {}): void {
|
||||
function subscribe <T> (mountedRef: MountedRef, tracker: TrackerRef, fn: TrackFn | undefined, params: CallParams, setValue: (value: T) => void, { isSingle, transform = transformIdentity, withParams, withParamsTransform }: CallOptions<T> = {}): void {
|
||||
const validParams = params.filter((p) => !isUndefined(p));
|
||||
|
||||
unsubscribe(tracker);
|
||||
@ -79,7 +79,9 @@ function subscribe <T> (mountedRef: MountedRef, tracker: TrackerRef, fn: TrackFn
|
||||
mountedRef.current && tracker.current.isActive && setValue(
|
||||
withParams
|
||||
? [params, transform(value)] as any
|
||||
: transform(value)
|
||||
: withParamsTransform
|
||||
? transform([params, value])
|
||||
: transform(value)
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
126
yarn.lock
126
yarn.lock
@ -1979,55 +1979,55 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/api-contract@npm:^2.8.3-2":
|
||||
version: 2.8.3-2
|
||||
resolution: "@polkadot/api-contract@npm:2.8.3-2"
|
||||
"@polkadot/api-contract@npm:^2.8.3-5":
|
||||
version: 2.8.3-5
|
||||
resolution: "@polkadot/api-contract@npm:2.8.3-5"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.12.5
|
||||
"@polkadot/api": 2.8.3-2
|
||||
"@polkadot/types": 2.8.3-2
|
||||
"@polkadot/api": 2.8.3-5
|
||||
"@polkadot/types": 2.8.3-5
|
||||
"@polkadot/util": ^4.2.1
|
||||
bn.js: ^4.11.9
|
||||
rxjs: ^6.6.3
|
||||
checksum: a24ee31d28f8bd6e6e3cd57284e9eb4659a0ab8327361ff2aedc2d2df9bc39eb35bc36ad519480c5cd949b658c703cc03824dffd936d0ea142c732d19d6b47bc
|
||||
checksum: 5f32c3b0017a2e13db887646074eb50c1eb6a4a0a90fd207fcef2a5c608ea54daf904431b45028c6808c49abafd48659c633ecdf9e3eacaf520be146d5122653
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/api-derive@npm:2.8.3-2":
|
||||
version: 2.8.3-2
|
||||
resolution: "@polkadot/api-derive@npm:2.8.3-2"
|
||||
"@polkadot/api-derive@npm:2.8.3-5":
|
||||
version: 2.8.3-5
|
||||
resolution: "@polkadot/api-derive@npm:2.8.3-5"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.12.5
|
||||
"@polkadot/api": 2.8.3-2
|
||||
"@polkadot/rpc-core": 2.8.3-2
|
||||
"@polkadot/types": 2.8.3-2
|
||||
"@polkadot/api": 2.8.3-5
|
||||
"@polkadot/rpc-core": 2.8.3-5
|
||||
"@polkadot/types": 2.8.3-5
|
||||
"@polkadot/util": ^4.2.1
|
||||
"@polkadot/util-crypto": ^4.2.1
|
||||
bn.js: ^4.11.9
|
||||
memoizee: ^0.4.14
|
||||
rxjs: ^6.6.3
|
||||
checksum: 48e3b43281da62ac9ee080298fe83c263e6810c0405d5ea6e097953bd30dc10314d16fae00da9c5dc6da00025c7890c8cf2825e6f04611334b420ad47a44863d
|
||||
checksum: 86cff232410e4f28c82cc0de661e15f1dd67a561dc2a6287c210fdac1245f45d409f5cd546f9f824054213e7e09f55774a568548563c130b83cae00b0199dfa0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/api@npm:^2.8.3-2":
|
||||
version: 2.8.3-2
|
||||
resolution: "@polkadot/api@npm:2.8.3-2"
|
||||
"@polkadot/api@npm:^2.8.3-5":
|
||||
version: 2.8.3-5
|
||||
resolution: "@polkadot/api@npm:2.8.3-5"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.12.5
|
||||
"@polkadot/api-derive": 2.8.3-2
|
||||
"@polkadot/api-derive": 2.8.3-5
|
||||
"@polkadot/keyring": ^4.2.1
|
||||
"@polkadot/metadata": 2.8.3-2
|
||||
"@polkadot/rpc-core": 2.8.3-2
|
||||
"@polkadot/rpc-provider": 2.8.3-2
|
||||
"@polkadot/types": 2.8.3-2
|
||||
"@polkadot/types-known": 2.8.3-2
|
||||
"@polkadot/metadata": 2.8.3-5
|
||||
"@polkadot/rpc-core": 2.8.3-5
|
||||
"@polkadot/rpc-provider": 2.8.3-5
|
||||
"@polkadot/types": 2.8.3-5
|
||||
"@polkadot/types-known": 2.8.3-5
|
||||
"@polkadot/util": ^4.2.1
|
||||
"@polkadot/util-crypto": ^4.2.1
|
||||
bn.js: ^4.11.9
|
||||
eventemitter3: ^4.0.7
|
||||
rxjs: ^6.6.3
|
||||
checksum: bca87686689d76bd68a3475039c3de26efe0c8597e07479c332ec0d53a1e746969a8ff56acd971f6ed889acb493a98fa70d81367fb9d3b86a5c5ca2dec237e4d
|
||||
checksum: ac8adcd1bec1e65cad7388a54e1c7206a004336de0ae5eb3fcab3981c856eb87624f24ef54f7cc73ca780d2dbaad48b5031e6fd3e8b099bbb4ce127e388f6f71
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -2081,7 +2081,7 @@ __metadata:
|
||||
resolution: "@polkadot/app-contracts@workspace:packages/page-contracts"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.12.5
|
||||
"@polkadot/api-contract": ^2.8.3-2
|
||||
"@polkadot/api-contract": ^2.8.3-5
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@ -2425,28 +2425,28 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/extension-dapp@npm:^0.35.0-beta.56":
|
||||
version: 0.35.0-beta.56
|
||||
resolution: "@polkadot/extension-dapp@npm:0.35.0-beta.56"
|
||||
"@polkadot/extension-dapp@npm:^0.35.0-beta.57":
|
||||
version: 0.35.0-beta.57
|
||||
resolution: "@polkadot/extension-dapp@npm:0.35.0-beta.57"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.12.5
|
||||
"@polkadot/extension-inject": ^0.35.0-beta.56
|
||||
"@polkadot/extension-inject": ^0.35.0-beta.57
|
||||
"@polkadot/util": ^4.2.1
|
||||
"@polkadot/util-crypto": ^4.2.1
|
||||
peerDependencies:
|
||||
"@polkadot/api": "*"
|
||||
checksum: 72fa9e44a69729a43874fb36a1daec608dcedd37d3101a9e51337c61abde67164899992eedac24524a4989d310bcee9224f8528330411be56e98b34208655624
|
||||
checksum: 8e4236402ddbb4b8946d475445f9a6895eb23258a98f9ee1e9f7f750a2caaeaa8c29b54ce7f4a2fa7bcba59b6208732c139086c1f54bb4e153fd2a30f760231c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/extension-inject@npm:^0.35.0-beta.56":
|
||||
version: 0.35.0-beta.56
|
||||
resolution: "@polkadot/extension-inject@npm:0.35.0-beta.56"
|
||||
"@polkadot/extension-inject@npm:^0.35.0-beta.57":
|
||||
version: 0.35.0-beta.57
|
||||
resolution: "@polkadot/extension-inject@npm:0.35.0-beta.57"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.12.5
|
||||
peerDependencies:
|
||||
"@polkadot/api": "*"
|
||||
checksum: e5b358fd99542694b3e45b606281a1f64b905ce91133a1293f153eda2b4dc1828ab77baf00b9545e37bd289c43481cb8953f68c15f42433a499e944b33da4f10
|
||||
checksum: df9c2f77cb7dd3ee1d93a8d0328d2aae85f36c43b8bb588e4686de058452ef824363b832768cacaaf76bcdeef0d2a4e318488cc4cb9cfa5f3bae5acb81d8569a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -2492,17 +2492,17 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/metadata@npm:2.8.3-2":
|
||||
version: 2.8.3-2
|
||||
resolution: "@polkadot/metadata@npm:2.8.3-2"
|
||||
"@polkadot/metadata@npm:2.8.3-5":
|
||||
version: 2.8.3-5
|
||||
resolution: "@polkadot/metadata@npm:2.8.3-5"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.12.5
|
||||
"@polkadot/types": 2.8.3-2
|
||||
"@polkadot/types-known": 2.8.3-2
|
||||
"@polkadot/types": 2.8.3-5
|
||||
"@polkadot/types-known": 2.8.3-5
|
||||
"@polkadot/util": ^4.2.1
|
||||
"@polkadot/util-crypto": ^4.2.1
|
||||
bn.js: ^4.11.9
|
||||
checksum: 4e0e938c3b7ef4d565ebcb9d86b2db81b3862c876a07e7a1af140cdecd55131e4a3b36c04df916b2bae99c450b55af6bfa26ef2854cec605fd4f5f577f239af2
|
||||
checksum: 17805f1e7361c8ea166b698bde6b4f5c3442b8d99b8377fdd9f68d2de2aa94a160f52fb609fa0aa1184d1cd1c31a6d2b9eb75bc2bd6e1b2d8332a3cfedafbb22
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -2520,8 +2520,8 @@ __metadata:
|
||||
resolution: "@polkadot/react-api@workspace:packages/react-api"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.12.5
|
||||
"@polkadot/api": ^2.8.3-2
|
||||
"@polkadot/extension-dapp": ^0.35.0-beta.56
|
||||
"@polkadot/api": ^2.8.3-5
|
||||
"@polkadot/extension-dapp": ^0.35.0-beta.57
|
||||
rxjs-compat: ^6.6.3
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
@ -2652,34 +2652,34 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@polkadot/rpc-core@npm:2.8.3-2":
|
||||
version: 2.8.3-2
|
||||
resolution: "@polkadot/rpc-core@npm:2.8.3-2"
|
||||
"@polkadot/rpc-core@npm:2.8.3-5":
|
||||
version: 2.8.3-5
|
||||
resolution: "@polkadot/rpc-core@npm:2.8.3-5"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.12.5
|
||||
"@polkadot/metadata": 2.8.3-2
|
||||
"@polkadot/rpc-provider": 2.8.3-2
|
||||
"@polkadot/types": 2.8.3-2
|
||||
"@polkadot/metadata": 2.8.3-5
|
||||
"@polkadot/rpc-provider": 2.8.3-5
|
||||
"@polkadot/types": 2.8.3-5
|
||||
"@polkadot/util": ^4.2.1
|
||||
memoizee: ^0.4.14
|
||||
rxjs: ^6.6.3
|
||||
checksum: 7ece351a72eb06e20f419c7b2544cafa2024ba978019a64da4c608ca05e31f8d7fede9e9c299b2ea4e7029330fb6033a697e56a26cb8939f1745f0acfe7a25a2
|
||||
checksum: a2824a5962bf8eece920eb0490761b5030e39b312b13dd1a6f476c99e361ab6b6f12ebbc7cff646c762d3d18b73847210530d242d8de5c944fe92ef522419b3d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/rpc-provider@npm:2.8.3-2":
|
||||
version: 2.8.3-2
|
||||
resolution: "@polkadot/rpc-provider@npm:2.8.3-2"
|
||||
"@polkadot/rpc-provider@npm:2.8.3-5":
|
||||
version: 2.8.3-5
|
||||
resolution: "@polkadot/rpc-provider@npm:2.8.3-5"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.12.5
|
||||
"@polkadot/types": 2.8.3-2
|
||||
"@polkadot/types": 2.8.3-5
|
||||
"@polkadot/util": ^4.2.1
|
||||
"@polkadot/util-crypto": ^4.2.1
|
||||
"@polkadot/x-fetch": ^4.2.1
|
||||
"@polkadot/x-ws": ^4.2.1
|
||||
bn.js: ^4.11.9
|
||||
eventemitter3: ^4.0.7
|
||||
checksum: bfc0fd7239b0921636e58a4785f3c7cd671d6143d9ef98728d39c2019f34d3a1d1645e36bdba23b9b45e3e167d0fbf010198a2f91ce7a01f95ba7c8a8ab94390
|
||||
checksum: f3aba96199f7f6ef59914d636481e10d19652cc02b52400a1712c97986d6e7100a020b4a7a7594a42d0e35ebedd47eaa852930071c6e400e59714ebae40700e8
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -2692,31 +2692,31 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/types-known@npm:2.8.3-2":
|
||||
version: 2.8.3-2
|
||||
resolution: "@polkadot/types-known@npm:2.8.3-2"
|
||||
"@polkadot/types-known@npm:2.8.3-5":
|
||||
version: 2.8.3-5
|
||||
resolution: "@polkadot/types-known@npm:2.8.3-5"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.12.5
|
||||
"@polkadot/types": 2.8.3-2
|
||||
"@polkadot/types": 2.8.3-5
|
||||
"@polkadot/util": ^4.2.1
|
||||
bn.js: ^4.11.9
|
||||
checksum: fe2775a542a82af3b1139041b2e42965708c2d61a82cb6bf5a6b134642a332a85b49811eef39d4e3b3f7b4a733e870173801d628cc0e627bb828d828ed0be348
|
||||
checksum: b5c774b0b8d8340e093605a9eac99c96992ff8cb826f745d71eb338d5902cf93a0e37f447f4aa8d9e3d7fa7275a8e856f72439abdfac03393e8a329f20855de5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/types@npm:^2.8.3-2":
|
||||
version: 2.8.3-2
|
||||
resolution: "@polkadot/types@npm:2.8.3-2"
|
||||
"@polkadot/types@npm:^2.8.3-5":
|
||||
version: 2.8.3-5
|
||||
resolution: "@polkadot/types@npm:2.8.3-5"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.12.5
|
||||
"@polkadot/metadata": 2.8.3-2
|
||||
"@polkadot/metadata": 2.8.3-5
|
||||
"@polkadot/util": ^4.2.1
|
||||
"@polkadot/util-crypto": ^4.2.1
|
||||
"@types/bn.js": ^4.11.6
|
||||
bn.js: ^4.11.9
|
||||
memoizee: ^0.4.14
|
||||
rxjs: ^6.6.3
|
||||
checksum: 5094fd7a776e814a012bdfefb2e72371873e9433bd863b7d1a032250c00cc3454b94900a8aca0ff5fa338ac908b131183a68052f9739ecee98afcf1ae0e96387
|
||||
checksum: c75100feca572b7b92daad9fd8a269417bf54aa343f588aed4322823566074cbb9e7b338303e2fc61cb4317afdf6a8c797692a941543d15c6bf1d2b80cf88b3c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user