Compare commits

...
16 Commits
Author SHA1 Message Date
Github Actions e45ff6d026 [CI Skip] release/stable 3.10.2
skip-checks: true
2021-02-23 08:23:24 +00:00
Jaco Greeff b49c2314e7 Fix variable-length MultiAddress decoding (only detect 32 & 20) (#3204)
* Fix variable-length MultiAddress decoding (only detect 32 & 20)

* Decoding tests

* Fix Call test

* patch-only

* Update CHANGELOG.md
2021-02-23 09:13:47 +01:00
Github Actions 0ac085756a [CI Skip] release/beta 3.10.2-0
skip-checks: true
2021-02-22 16:00:25 +00:00
Jaco Greeff 542a690c89 Update contracts host weights (#3199)
* Update contracts host weights

* Update Limits
2021-02-22 16:50:16 +01:00
Github Actions ff23ead797 [CI Skip] release/stable 3.10.1
skip-checks: true
2021-02-22 08:45:21 +00:00
Jaco Greeff ae55e4fbf7 3.10 (#3198) 2021-02-22 09:36:29 +01:00
Github Actions b17412163d [CI Skip] release/beta 3.9.4-4
skip-checks: true
2021-02-21 12:18:23 +00:00
Jaco Greeff 46dcbf9a42 Bump common (#3196) 2021-02-21 13:09:51 +01:00
Github Actions 193dfcc32f [CI Skip] release/beta 3.9.4-3
skip-checks: true
2021-02-21 09:42:58 +00:00
Jaco Greeff a81011cf94 Adjust ConsumedWeight (#3195) 2021-02-21 10:34:07 +01:00
Github Actions d43a8b2e11 [CI Skip] release/beta 3.9.4-2
skip-checks: true
2021-02-20 11:47:18 +00:00
Jaco Greeff dff859ba68 Don't send unsubscribe when already disconnected (#3192)
* Don't send unsubscribe when already disconnected

* Small cleanups
2021-02-20 12:37:05 +01:00
Github Actions 5169b6ee69 [CI Skip] release/beta 3.9.4-1
skip-checks: true
2021-02-20 10:59:13 +00:00
Jaco Greeff f4405667fe Adjust use of staking derive multi (#3173)
* Adjust use of staking derive multi

* Remove migrateEra

* Flatten rewards
2021-02-20 11:51:48 +01:00
Github Actions 49ff636305 [CI Skip] release/beta 3.9.4-0
skip-checks: true
2021-02-16 12:00:27 +00:00
Jaco Greeff d77d686c76 Update detectPackage to use packgeInfo.ts (#3182) 2021-02-16 12:50:45 +01:00
40 changed files with 899 additions and 644 deletions
+2 -1
View File
@@ -16,4 +16,5 @@
3.7.2
3.7.3
3.9.2
3.9.3
3.9.3
3.10.2
+23
View File
@@ -1,5 +1,28 @@
# CHANGELOG
## 3.10.2 Feb 23, 2021
Upgrade priority: Medium. Recommended for users of chains where `MultiAddress` is in-use and blocks are decoded.
Changes:
- Fix decoding for `MultiAddress` enum where non-`AccountId` variable-lengths are provided as part of a stream
- Added known Polkadot 28 upgrade block
- Update for latest Substrate contracts `Schedule` types
## 3.10.1 Feb 22, 2021
Upgrade priority: Low.
Changes:
- Adjust ConsumedWeight types to align with Rust module code
- Check for connection status in subscription unsubscribe
- Adjust staking reward derives ordering for better performance
- Adapt detection imports to remove `.json` dependencies (Better behavior using Node.js with ESM)
## 3.9.3 Feb 16, 2021
Upgrade priority: Low. Recommended for parachain builders since it contains the updated parachain types.
+5 -5
View File
@@ -8,7 +8,7 @@
"packages/*"
],
"resolutions": {
"typescript": "^4.1.3"
"typescript": "^4.1.5"
},
"scripts": {
"build": "yarn build:interfaces && polkadot-dev-build-ts",
@@ -25,14 +25,14 @@
"test:watch": "polkadot-dev-run-test --watch"
},
"devDependencies": {
"@babel/core": "^7.12.13",
"@babel/core": "^7.12.17",
"@babel/register": "^7.12.13",
"@babel/runtime": "^7.12.13",
"@polkadot/dev": "^0.61.25",
"@babel/runtime": "^7.12.18",
"@polkadot/dev": "^0.61.26",
"@polkadot/ts": "^0.3.59",
"@polkadot/typegen": "workspace:packages/typegen",
"@types/jest": "^26.0.20",
"copyfiles": "^2.4.1"
},
"version": "3.9.3"
"version": "3.10.2"
}
+6 -6
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/api-contract",
"version": "3.9.3",
"version": "3.10.2",
"description": "Interfaces for interacting with contracts and contract ABIs",
"main": "index.js",
"sideEffects": false,
@@ -12,11 +12,11 @@
"bugs": "https://github.com/polkadot-js/api/issues",
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/api-contract#readme",
"dependencies": {
"@babel/runtime": "^7.12.13",
"@polkadot/api": "3.9.3",
"@polkadot/types": "3.9.3",
"@polkadot/util": "^5.6.2",
"@polkadot/x-rxjs": "^5.6.2",
"@babel/runtime": "^7.12.18",
"@polkadot/api": "3.10.2",
"@polkadot/types": "3.10.2",
"@polkadot/util": "^5.7.1",
"@polkadot/x-rxjs": "^5.7.1",
"bn.js": "^4.11.9"
}
}
+6
View File
@@ -0,0 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/api-contract', version: '3.10.2' };
+10 -10
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/api-derive",
"version": "3.9.3",
"version": "3.10.2",
"description": "Common functions used across Polkadot, derived from RPC calls and storage queries.",
"main": "index.js",
"sideEffects": false,
@@ -12,17 +12,17 @@
"bugs": "https://github.com/polkadot-js/api/issues",
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/api-derive#readme",
"dependencies": {
"@babel/runtime": "^7.12.13",
"@polkadot/api": "3.9.3",
"@polkadot/rpc-core": "3.9.3",
"@polkadot/types": "3.9.3",
"@polkadot/util": "^5.6.2",
"@polkadot/util-crypto": "^5.6.2",
"@polkadot/x-rxjs": "^5.6.2",
"@babel/runtime": "^7.12.18",
"@polkadot/api": "3.10.2",
"@polkadot/rpc-core": "3.10.2",
"@polkadot/types": "3.10.2",
"@polkadot/util": "^5.7.1",
"@polkadot/util-crypto": "^5.7.1",
"@polkadot/x-rxjs": "^5.7.1",
"bn.js": "^4.11.9"
},
"devDependencies": {
"@polkadot/keyring": "^5.6.2",
"@polkadot/rpc-provider": "3.9.3"
"@polkadot/keyring": "^5.7.1",
"@polkadot/rpc-provider": "3.10.2"
}
}
+6
View File
@@ -0,0 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/api-derive', version: '3.10.2' };
@@ -3,7 +3,7 @@
import type { ApiInterfaceRx } from '@polkadot/api/types';
import type { StorageKey } from '@polkadot/types';
import type { EraIndex, Exposure } from '@polkadot/types/interfaces';
import type { AccountId, EraIndex, Exposure } from '@polkadot/types/interfaces';
import type { Observable } from '@polkadot/x-rxjs';
import type { DeriveEraExposure, DeriveEraNominatorExposure, DeriveEraValidatorExposure } from '../types';
@@ -12,7 +12,7 @@ import { map, switchMap } from '@polkadot/x-rxjs/operators';
import { deriveCache, memo } from '../util';
type KeysAndExposures = [StorageKey, Exposure][];
type KeysAndExposures = [StorageKey<[EraIndex, AccountId]>, Exposure][];
const CACHE_KEY = 'eraExposure';
+19 -37
View File
@@ -1,55 +1,37 @@
// Copyright 2017-2021 @polkadot/api-derive authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { ApiInterfaceRx } from '@polkadot/api/types';
import type { ApiInterfaceRx, QueryableStorageMultiArg } from '@polkadot/api/types';
import type { EraIndex, Exposure } from '@polkadot/types/interfaces';
import type { Observable } from '@polkadot/x-rxjs';
import type { DeriveOwnExposure } from '../types';
import { combineLatest, of } from '@polkadot/x-rxjs';
import { of } from '@polkadot/x-rxjs';
import { map, switchMap } from '@polkadot/x-rxjs/operators';
import { deriveCache, memo } from '../util';
import { memo } from '../util';
const CACHE_KEY = 'ownExposure';
export function _ownExposure (instanceId: string, api: ApiInterfaceRx): (accountId: Uint8Array | string, era: EraIndex, withActive: boolean) => Observable<DeriveOwnExposure> {
return memo(instanceId, (accountId: Uint8Array | string, era: EraIndex, withActive: boolean): Observable<DeriveOwnExposure> => {
const cacheKey = `${CACHE_KEY}-${era.toString()}-${accountId.toString()}`;
const cached = withActive
? undefined
: deriveCache.get<DeriveOwnExposure>(cacheKey);
return cached
? of(cached)
: api.queryMulti<[Exposure, Exposure]>([
[api.query.staking.erasStakersClipped, [era, accountId]],
[api.query.staking.erasStakers, [era, accountId]]
export function _ownExposures (instanceId: string, api: ApiInterfaceRx): (accountId: Uint8Array | string, eras: EraIndex[], withActive: boolean) => Observable<DeriveOwnExposure[]> {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
return memo(instanceId, (accountId: Uint8Array | string, eras: EraIndex[], _withActive: boolean): Observable<DeriveOwnExposure[]> =>
eras.length
? api.queryMulti<Exposure[]>([
...eras.map((era): QueryableStorageMultiArg<'rxjs'> => [api.query.staking.erasStakersClipped, [era, accountId]]),
...eras.map((era): QueryableStorageMultiArg<'rxjs'> => [api.query.staking.erasStakers, [era, accountId]])
]).pipe(
map(([clipped, exposure]): DeriveOwnExposure => {
const value = { clipped, era, exposure };
!withActive && deriveCache.set(cacheKey, value);
return value;
})
);
});
map((all): DeriveOwnExposure[] =>
eras.map((era, index) => ({ clipped: all[index], era, exposure: all[eras.length + index] }))
)
)
: of([])
);
}
export function ownExposure (instanceId: string, api: ApiInterfaceRx): (accountId: Uint8Array | string, era: EraIndex) => Observable<DeriveOwnExposure> {
return memo(instanceId, (accountId: Uint8Array | string, era: EraIndex): Observable<DeriveOwnExposure> =>
api.derive.staking._ownExposure(accountId, era, true)
);
}
export function _ownExposures (instanceId: string, api: ApiInterfaceRx): (accountId: Uint8Array | string, eras: EraIndex[], withActive: boolean) => Observable<DeriveOwnExposure[]> {
return memo(instanceId, (accountId: Uint8Array | string, eras: EraIndex[], withActive: boolean): Observable<DeriveOwnExposure[]> =>
eras.length
? combineLatest(
eras.map((era) => api.derive.staking._ownExposure(accountId, era, withActive))
)
: of([])
api.derive.staking._ownExposures(accountId, [era], true).pipe(
map(([first]) => first)
)
);
}
+23 -41
View File
@@ -1,62 +1,44 @@
// Copyright 2017-2021 @polkadot/api-derive authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { ApiInterfaceRx } from '@polkadot/api/types';
import type { ApiInterfaceRx, QueryableStorageMultiArg } from '@polkadot/api/types';
import type { Option } from '@polkadot/types';
import type { BalanceOf, EraIndex, Perbill } from '@polkadot/types/interfaces';
import type { ITuple } from '@polkadot/types/types';
import type { Observable } from '@polkadot/x-rxjs';
import type { DeriveStakerSlashes } from '../types';
import { combineLatest, of } from '@polkadot/x-rxjs';
import { of } from '@polkadot/x-rxjs';
import { map, switchMap } from '@polkadot/x-rxjs/operators';
import { deriveCache, memo } from '../util';
import { memo } from '../util';
const CACHE_KEY = 'ownSlash';
export function _ownSlash (instanceId: string, api: ApiInterfaceRx): (accountId: Uint8Array | string, era: EraIndex, withActive: boolean) => Observable<DeriveStakerSlashes> {
return memo(instanceId, (accountId: Uint8Array | string, era: EraIndex, withActive: boolean): Observable<DeriveStakerSlashes> => {
const cacheKey = `${CACHE_KEY}-${era.toString()}-${accountId.toString()}`;
const cached = withActive
? undefined
: deriveCache.get<DeriveStakerSlashes>(cacheKey);
return cached
? of(cached)
: api.queryMulti<[Option<BalanceOf>, Option<ITuple<[Perbill, BalanceOf]>>]>([
[api.query.staking.nominatorSlashInEra, [era, accountId]],
[api.query.staking.validatorSlashInEra, [era, accountId]]
export function _ownSlashes (instanceId: string, api: ApiInterfaceRx): (accountId: Uint8Array | string, eras: EraIndex[], withActive: boolean) => Observable<DeriveStakerSlashes[]> {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
return memo(instanceId, (accountId: Uint8Array | string, eras: EraIndex[], _withActive: boolean): Observable<DeriveStakerSlashes[]> =>
eras.length
? api.queryMulti<(Option<ITuple<[Perbill, BalanceOf]>> | Option<BalanceOf>)[]>([
...eras.map((era): QueryableStorageMultiArg<'rxjs'> => [api.query.staking.validatorSlashInEra, [era, accountId]]),
...eras.map((era): QueryableStorageMultiArg<'rxjs'> => [api.query.staking.nominatorSlashInEra, [era, accountId]])
]).pipe(
map(([optNom, optVal]): DeriveStakerSlashes => {
const value = {
map((values): DeriveStakerSlashes[] =>
eras.map((era, index) => ({
era,
total: optVal.isSome
? optVal.unwrap()[1]
: optNom.unwrapOrDefault()
};
!withActive && deriveCache.set(cacheKey, value);
return value;
})
);
});
total: values[index].isSome
? (values[index].unwrap() as ITuple<[Perbill, BalanceOf]>)[1]
: (values[index + eras.length].unwrapOrDefault() as BalanceOf)
}))
)
)
: of([])
);
}
export function ownSlash (instanceId: string, api: ApiInterfaceRx): (accountId: Uint8Array | string, era: EraIndex) => Observable<DeriveStakerSlashes> {
return memo(instanceId, (accountId: Uint8Array | string, era: EraIndex): Observable<DeriveStakerSlashes> =>
api.derive.staking._ownSlash(accountId, era, true)
);
}
export function _ownSlashes (instanceId: string, api: ApiInterfaceRx): (accountId: Uint8Array | string, eras: EraIndex[], withActive: boolean) => Observable<DeriveStakerSlashes[]> {
return memo(instanceId, (accountId: Uint8Array | string, eras: EraIndex[], withActive: boolean): Observable<DeriveStakerSlashes[]> =>
eras.length
? combineLatest(
eras.map((era) => api.derive.staking._ownSlash(accountId, era, withActive))
)
: of([])
api.derive.staking._ownSlashes(accountId, [era], true).pipe(
map(([first]) => first)
)
);
}
@@ -10,36 +10,46 @@ import { map, switchMap } from '@polkadot/x-rxjs/operators';
import { memo } from '../util';
export function _stakerExposure (instanceId: string, api: ApiInterfaceRx): (accountId: Uint8Array | string, eras: EraIndex[], withActive: boolean) => Observable<DeriveStakerExposure[]> {
return memo(instanceId, (accountId: Uint8Array | string, eras: EraIndex[], withActive: boolean): Observable<DeriveStakerExposure[]> => {
const stakerId = api.registry.createType('AccountId', accountId).toString();
export function _stakerExposures (instanceId: string, api: ApiInterfaceRx): (accountIds: (Uint8Array | string)[], eras: EraIndex[], withActive: boolean) => Observable<DeriveStakerExposure[][]> {
return memo(instanceId, (accountIds: (Uint8Array | string)[], eras: EraIndex[], withActive: boolean): Observable<DeriveStakerExposure[][]> => {
const stakerIds = accountIds.map((a) => api.registry.createType('AccountId', a).toString());
return api.derive.staking._erasExposure(eras, withActive).pipe(
map((exposures): DeriveStakerExposure[] =>
exposures.map(({ era, nominators: allNominators, validators: allValidators }): DeriveStakerExposure => {
const isValidator = !!allValidators[stakerId];
const validators: DeriveEraValidatorExposure = {};
const nominating = allNominators[stakerId] || [];
map((exposures): DeriveStakerExposure[][] =>
stakerIds.map((stakerId) =>
exposures.map(({ era, nominators: allNominators, validators: allValidators }): DeriveStakerExposure => {
const isValidator = !!allValidators[stakerId];
const validators: DeriveEraValidatorExposure = {};
const nominating = allNominators[stakerId] || [];
if (isValidator) {
validators[stakerId] = allValidators[stakerId];
} else if (nominating) {
nominating.forEach(({ validatorId }): void => {
validators[validatorId] = allValidators[validatorId];
});
}
if (isValidator) {
validators[stakerId] = allValidators[stakerId];
} else if (nominating) {
nominating.forEach(({ validatorId }): void => {
validators[validatorId] = allValidators[validatorId];
});
}
return { era, isEmpty: !Object.keys(validators).length, isValidator, nominating, validators };
})
return { era, isEmpty: !Object.keys(validators).length, isValidator, nominating, validators };
})
)
)
);
});
}
export function stakerExposure (instanceId: string, api: ApiInterfaceRx): (accountId: Uint8Array | string, withActive?: boolean) => Observable<DeriveStakerExposure[]> {
return memo(instanceId, (accountId: Uint8Array | string, withActive = false): Observable<DeriveStakerExposure[]> =>
export function stakerExposures (instanceId: string, api: ApiInterfaceRx): (accountIds: (Uint8Array | string)[], withActive?: boolean) => Observable<DeriveStakerExposure[][]> {
return memo(instanceId, (accountIds: (Uint8Array | string)[], withActive = false): Observable<DeriveStakerExposure[][]> =>
api.derive.staking.erasHistoric(withActive).pipe(
switchMap((eras) => api.derive.staking._stakerExposure(accountId, eras, withActive))
switchMap((eras) => api.derive.staking._stakerExposures(accountIds, eras, withActive))
)
);
}
export function stakerExposure (instanceId: string, api: ApiInterfaceRx): (accountId: Uint8Array | string, withActive?: boolean) => Observable<DeriveStakerExposure[]> {
return memo(instanceId, (accountId: Uint8Array | string, withActive = false): Observable<DeriveStakerExposure[]> =>
api.derive.staking.stakerExposures([accountId, withActive]).pipe(
map(([first]) => first)
)
);
}
@@ -2,25 +2,22 @@
// SPDX-License-Identifier: Apache-2.0
import type { ApiInterfaceRx } from '@polkadot/api/types';
import type { Option } from '@polkadot/types';
import type { AccountId, EraIndex, StakingLedger, StakingLedgerTo240 } from '@polkadot/types/interfaces';
import type { AccountId, EraIndex, StakingLedger } from '@polkadot/types/interfaces';
import type { Observable } from '@polkadot/x-rxjs';
import type { DeriveEraPoints, DeriveEraPrefs, DeriveEraRewards, DeriveEraValPrefs, DeriveStakerExposure, DeriveStakerReward, DeriveStakerRewardValidator } from '../types';
import type { DeriveStakingQuery } from './types';
import BN from 'bn.js';
import { BN_BILLION, BN_ZERO, isFunction } from '@polkadot/util';
import { BN_BILLION, BN_ZERO } from '@polkadot/util';
import { combineLatest, of } from '@polkadot/x-rxjs';
import { map, switchMap } from '@polkadot/x-rxjs/operators';
import { memo } from '../util';
type ErasResult = [{ unwrapOr: (value: BN) => BN }, DeriveEraPoints[], DeriveEraPrefs[], DeriveEraRewards[]];
type ErasResult = [DeriveEraPoints[], DeriveEraPrefs[], DeriveEraRewards[]];
const MIN_ONE = new BN(-1);
function parseRewards (api: ApiInterfaceRx, stashId: AccountId, [, erasPoints, erasPrefs, erasRewards]: ErasResult, exposures: DeriveStakerExposure[]): DeriveStakerReward[] {
function parseRewards (api: ApiInterfaceRx, stashId: AccountId, [erasPoints, erasPrefs, erasRewards]: ErasResult, exposures: DeriveStakerExposure[]): DeriveStakerReward[] {
return exposures.map(({ era, isEmpty, isValidator, nominating, validators: eraValidators }): DeriveStakerReward => {
const { eraPoints, validators: allValPoints } = erasPoints.find((p) => p.era.eq(era)) || { eraPoints: BN_ZERO, validators: {} };
const { eraReward } = erasRewards.find((r) => r.era.eq(era)) || { eraReward: api.registry.createType('Balance') };
@@ -71,32 +68,25 @@ function parseRewards (api: ApiInterfaceRx, stashId: AccountId, [, erasPoints, e
});
}
function uniqValidators (rewards: DeriveStakerReward[]): string[] {
const uniq: string[] = [];
function allUniqValidators (rewards: DeriveStakerReward[][]): [string[], string[][]] {
return rewards.reduce(([all, perStash]: [string[], string[][]], rewards) => {
const uniq: string[] = [];
rewards.forEach(({ validators }): void => {
Object.keys(validators).forEach((validatorId): void => {
if (!uniq.includes(validatorId)) {
uniq.push(validatorId);
}
});
});
perStash.push(uniq);
rewards.forEach(({ validators }) =>
Object.keys(validators).forEach((validatorId): void => {
if (!uniq.includes(validatorId)) {
uniq.push(validatorId);
return uniq;
}
if (!all.includes(validatorId)) {
all.push(validatorId);
}
}
})
);
function isOldLedger (ledger?: StakingLedger | StakingLedgerTo240): ledger is StakingLedgerTo240 {
return !!(ledger as StakingLedgerTo240)?.lastReward;
}
function filterEra (era: EraIndex, stakingLedger: StakingLedger): boolean {
return isOldLedger(stakingLedger)
? era.gt(stakingLedger.lastReward.unwrapOr(MIN_ONE))
: !stakingLedger.claimedRewards.some((e) => e.eq(era));
}
function filterEras (eras: EraIndex[], stakingLedger: StakingLedger): EraIndex[] {
return eras.filter((era) => filterEra(era, stakingLedger));
return [all, perStash];
}, [[], []]);
}
function removeClaimed (validators: string[], queryValidators: DeriveStakingQuery[], reward: DeriveStakerReward): void {
@@ -119,43 +109,34 @@ function removeClaimed (validators: string[], queryValidators: DeriveStakingQuer
});
}
function filterRewards (api: ApiInterfaceRx, eras: EraIndex[], { migrateEra, rewards, stakingLedger }: { migrateEra: BN, rewards: DeriveStakerReward[]; stakingLedger: StakingLedger }): Observable<DeriveStakerReward[]> {
const validators = uniqValidators(rewards);
const filter = filterEras(eras, stakingLedger);
function filterRewards (eras: EraIndex[], valInfo: [string, DeriveStakingQuery][], { rewards, stakingLedger }: { rewards: DeriveStakerReward[]; stakingLedger: StakingLedger }): DeriveStakerReward[] {
const filter = eras.filter((era) => !stakingLedger.claimedRewards.some((e) => e.eq(era)));
const validators = valInfo.map(([v]) => v);
const queryValidators = valInfo.map(([, q]) => q);
return api.derive.staking.queryMulti(validators, { withLedger: true }).pipe(
map((queryValidators): DeriveStakerReward[] =>
rewards
.filter(({ isEmpty }) => !isEmpty)
.filter((reward): boolean => {
if (!filter.some((filter) => reward.era.eq(filter))) {
return false;
} else if (reward.era.lt(migrateEra)) {
// we filter again here, the actual ledger may have changed, e.g. something has been claimed
return filterEra(reward.era, stakingLedger);
}
return rewards
.filter(({ isEmpty }) => !isEmpty)
.filter((reward): boolean => {
if (!filter.some((filter) => reward.era.eq(filter))) {
return false;
}
reward.isStakerPayout = true;
reward.isStakerPayout = true;
removeClaimed(validators, queryValidators, reward);
removeClaimed(validators, queryValidators, reward);
return true;
})
.filter(({ validators }) => Object.keys(validators).length !== 0)
.map((reward) => ({
...reward,
nominators: reward.nominating.filter((n) => reward.validators[n.validatorId])
}))
)
);
return true;
})
.filter(({ validators }) => Object.keys(validators).length !== 0)
.map((reward) => ({
...reward,
nominators: reward.nominating.filter((n) => reward.validators[n.validatorId])
}));
}
export function _stakerRewardsEras (instanceId: string, api: ApiInterfaceRx): (eras: EraIndex[], withActive: boolean) => Observable<ErasResult> {
return memo(instanceId, (eras: EraIndex[], withActive: boolean): Observable<ErasResult> =>
combineLatest([
isFunction(api.query.staking.migrateEra)
? api.query.staking.migrateEra<Option<EraIndex>>()
: of(api.registry.createType('Option<EraIndex>')),
api.derive.staking._erasPoints(eras, withActive),
api.derive.staking._erasPrefs(eras, withActive),
api.derive.staking._erasRewards(eras, withActive)
@@ -163,23 +144,39 @@ export function _stakerRewardsEras (instanceId: string, api: ApiInterfaceRx): (e
);
}
export function _stakerRewards (instanceId: string, api: ApiInterfaceRx): (accountId: Uint8Array | string, eras: EraIndex[], withActive: boolean) => Observable<DeriveStakerReward[]> {
return memo(instanceId, (accountId: Uint8Array | string, eras: EraIndex[], withActive: boolean): Observable<DeriveStakerReward[]> =>
export function _stakerRewards (instanceId: string, api: ApiInterfaceRx): (accountIds: (Uint8Array | string)[], eras: EraIndex[], withActive: boolean) => Observable<DeriveStakerReward[][]> {
return memo(instanceId, (accountIds: (Uint8Array | string)[], eras: EraIndex[], withActive: boolean): Observable<DeriveStakerReward[][]> =>
combineLatest([
api.derive.staking.query(accountId, { withLedger: true }),
api.derive.staking._stakerExposure(accountId, eras, withActive),
api.derive.staking.queryMulti(accountIds, { withLedger: true }),
api.derive.staking._stakerExposures(accountIds, eras, withActive),
api.derive.staking._stakerRewardsEras(eras, withActive)
]).pipe(
switchMap(([{ stakingLedger, stashId }, exposures, erasResult]): Observable<DeriveStakerReward[]> => {
if (!stashId || !stakingLedger) {
return of([]);
switchMap(([queries, exposures, erasResult]): Observable<DeriveStakerReward[][]> => {
const allRewards = queries.map(({ stakingLedger, stashId }, index): DeriveStakerReward[] =>
(!stashId || !stakingLedger)
? []
: parseRewards(api, stashId, erasResult, exposures[index])
);
if (withActive) {
return of(allRewards);
}
const rewards = parseRewards(api, stashId, erasResult, exposures);
const [allValidators, stashValidators] = allUniqValidators(allRewards);
return withActive
? of(rewards)
: filterRewards(api, eras, { migrateEra: erasResult[0].unwrapOr(BN_ZERO), rewards, stakingLedger });
return api.derive.staking.queryMulti(allValidators, { withLedger: true }).pipe(
map((queriedVals): DeriveStakerReward[][] => {
return queries.map(({ stakingLedger }, index): DeriveStakerReward[] => {
const rewards = allRewards[index];
const ownValidators = stashValidators[index].map((validatorId): [string, DeriveStakingQuery] => [
validatorId,
queriedVals.find((q) => q.accountId.eq(validatorId)) as DeriveStakingQuery
]);
return filterRewards(eras, ownValidators, { rewards, stakingLedger });
});
})
);
})
)
);
@@ -188,7 +185,8 @@ export function _stakerRewards (instanceId: string, api: ApiInterfaceRx): (accou
export function stakerRewards (instanceId: string, api: ApiInterfaceRx): (accountId: Uint8Array | string, withActive?: boolean) => Observable<DeriveStakerReward[]> {
return memo(instanceId, (accountId: Uint8Array | string, withActive = false): Observable<DeriveStakerReward[]> =>
api.derive.staking.erasHistoric(withActive).pipe(
switchMap((eras) => api.derive.staking._stakerRewards(accountId, eras, withActive))
switchMap((eras) => api.derive.staking._stakerRewards([accountId], eras, withActive)),
map(([first]) => first)
)
);
}
@@ -196,7 +194,7 @@ export function stakerRewards (instanceId: string, api: ApiInterfaceRx): (accoun
export function stakerRewardsMultiEras (instanceId: string, api: ApiInterfaceRx): (accountIds: (Uint8Array | string)[], eras: EraIndex[]) => Observable<DeriveStakerReward[][]> {
return memo(instanceId, (accountIds: (Uint8Array | string)[], eras: EraIndex[]): Observable<DeriveStakerReward[][]> =>
accountIds.length && eras.length
? combineLatest(accountIds.map((acc) => api.derive.staking._stakerRewards(acc, eras, false)))
? api.derive.staking._stakerRewards(accountIds, eras, false)
: of([])
);
}
+12 -12
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/api",
"version": "3.9.3",
"version": "3.10.2",
"description": "Promise and RxJS wrappers around the Polkadot JS RPC",
"main": "index.js",
"sideEffects": [
@@ -15,17 +15,17 @@
"bugs": "https://github.com/polkadot-js/api/issues",
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/api#readme",
"dependencies": {
"@babel/runtime": "^7.12.13",
"@polkadot/api-derive": "3.9.3",
"@polkadot/keyring": "^5.6.2",
"@polkadot/metadata": "3.9.3",
"@polkadot/rpc-core": "3.9.3",
"@polkadot/rpc-provider": "3.9.3",
"@polkadot/types": "3.9.3",
"@polkadot/types-known": "3.9.3",
"@polkadot/util": "^5.6.2",
"@polkadot/util-crypto": "^5.6.2",
"@polkadot/x-rxjs": "^5.6.2",
"@babel/runtime": "^7.12.18",
"@polkadot/api-derive": "3.10.2",
"@polkadot/keyring": "^5.7.1",
"@polkadot/metadata": "3.10.2",
"@polkadot/rpc-core": "3.10.2",
"@polkadot/rpc-provider": "3.10.2",
"@polkadot/types": "3.10.2",
"@polkadot/types-known": "3.10.2",
"@polkadot/util": "^5.7.1",
"@polkadot/util-crypto": "^5.7.1",
"@polkadot/x-rxjs": "^5.7.1",
"bn.js": "^4.11.9",
"eventemitter3": "^4.0.7"
}
+1 -1
View File
@@ -18,7 +18,7 @@
import { detectPackage } from '@polkadot/util';
import packageInfo from './package-info.json';
import { packageInfo } from './packageInfo';
detectPackage(packageInfo, typeof __dirname !== 'undefined' && __dirname);
+6
View File
@@ -0,0 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/api', version: '3.10.2' };
+7 -7
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/metadata",
"version": "3.9.3",
"version": "3.10.2",
"description": "Helpers to extract information from runtime metadata",
"main": "index.js",
"sideEffects": [
@@ -15,14 +15,14 @@
"bugs": "https://github.com/polkadot-js/api/issues",
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/type-metadata#readme",
"dependencies": {
"@babel/runtime": "^7.12.13",
"@polkadot/types": "3.9.3",
"@polkadot/types-known": "3.9.3",
"@polkadot/util": "^5.6.2",
"@polkadot/util-crypto": "^5.6.2",
"@babel/runtime": "^7.12.18",
"@polkadot/types": "3.10.2",
"@polkadot/types-known": "3.10.2",
"@polkadot/util": "^5.7.1",
"@polkadot/util-crypto": "^5.7.1",
"bn.js": "^4.11.9"
},
"devDependencies": {
"@polkadot/keyring": "^5.6.2"
"@polkadot/keyring": "^5.7.1"
}
}
+1 -1
View File
@@ -18,7 +18,7 @@
import { detectPackage } from '@polkadot/util';
import packageInfo from './package-info.json';
import { packageInfo } from './packageInfo';
detectPackage(packageInfo, typeof __dirname !== 'undefined' && __dirname);
+6
View File
@@ -0,0 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/metadata', version: '3.10.2' };
+8 -8
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/rpc-core",
"version": "3.9.3",
"version": "3.10.2",
"description": "A JavaScript wrapper for the Polkadot JsonRPC interface",
"main": "index.js",
"sideEffects": false,
@@ -12,14 +12,14 @@
"bugs": "https://github.com/polkadot-js/api/issues",
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/rpc-core#readme",
"dependencies": {
"@babel/runtime": "^7.12.13",
"@polkadot/metadata": "3.9.3",
"@polkadot/rpc-provider": "3.9.3",
"@polkadot/types": "3.9.3",
"@polkadot/util": "^5.6.2",
"@polkadot/x-rxjs": "^5.6.2"
"@babel/runtime": "^7.12.18",
"@polkadot/metadata": "3.10.2",
"@polkadot/rpc-provider": "3.10.2",
"@polkadot/types": "3.10.2",
"@polkadot/util": "^5.7.1",
"@polkadot/x-rxjs": "^5.7.1"
},
"devDependencies": {
"@polkadot/keyring": "^5.6.2"
"@polkadot/keyring": "^5.7.1"
}
}
+6
View File
@@ -0,0 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/rpc-core', version: '3.10.2' };
+10 -10
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/rpc-provider",
"version": "3.9.3",
"version": "3.10.2",
"description": "Transport providers for the API",
"main": "index.js",
"sideEffects": false,
@@ -12,19 +12,19 @@
"bugs": "https://github.com/polkadot-js/api/issues",
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/rpc-provider#readme",
"dependencies": {
"@babel/runtime": "^7.12.13",
"@polkadot/types": "3.9.3",
"@polkadot/util": "^5.6.2",
"@polkadot/util-crypto": "^5.6.2",
"@polkadot/x-fetch": "^5.6.2",
"@polkadot/x-global": "^5.6.2",
"@polkadot/x-ws": "^5.6.2",
"@babel/runtime": "^7.12.18",
"@polkadot/types": "3.10.2",
"@polkadot/util": "^5.7.1",
"@polkadot/util-crypto": "^5.7.1",
"@polkadot/x-fetch": "^5.7.1",
"@polkadot/x-global": "^5.7.1",
"@polkadot/x-ws": "^5.7.1",
"bn.js": "^4.11.9",
"eventemitter3": "^4.0.7"
},
"devDependencies": {
"@polkadot/keyring": "^5.6.2",
"@polkadot/metadata": "3.9.3",
"@polkadot/keyring": "^5.7.1",
"@polkadot/metadata": "3.10.2",
"mock-socket": "^9.0.3",
"nock": "^13.0.7"
}
+6
View File
@@ -0,0 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/rpc-provider', version: '3.10.2' };
+11 -9
View File
@@ -245,8 +245,8 @@ export class WsProvider implements ProviderInterface {
* @param params Encoded parameters as applicable for the method
* @param subscription Subscription details (internally used)
*/
public send (method: string, params: any[], subscription?: SubscriptionHandler): Promise<any> {
return new Promise((resolve, reject): void => {
public send <T = any> (method: string, params: any[], subscription?: SubscriptionHandler): Promise<T> {
return new Promise<T>((resolve, reject): void => {
try {
assert(this.isConnected && !isNull(this.#websocket), 'WebSocket is not connected');
@@ -298,10 +298,8 @@ export class WsProvider implements ProviderInterface {
* })
* ```
*/
public async subscribe (type: string, method: string, params: any[], callback: ProviderInterfaceCallback): Promise<number | string> {
const id = await this.send(method, params, { callback, type }) as Promise<number | string>;
return id;
public subscribe (type: string, method: string, params: any[], callback: ProviderInterfaceCallback): Promise<number | string> {
return this.send<number | string>(method, params, { callback, type });
}
/**
@@ -322,9 +320,13 @@ export class WsProvider implements ProviderInterface {
delete this.#subscriptions[subscription];
const result = await this.send(method, [id]) as Promise<boolean>;
return result;
try {
return this.isConnected && !isNull(this.#websocket)
? this.send<boolean>(method, [id])
: true;
} catch (error) {
return false;
}
}
#emit = (type: ProviderInterfaceEmitted, ...args: any[]): void => {
+9 -9
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/typegen",
"version": "3.9.3",
"version": "3.10.2",
"description": "Type generation scripts",
"main": "index.js",
"sideEffects": false,
@@ -19,15 +19,15 @@
"bugs": "https://github.com/polkadot-js/api/issues",
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/typegen#readme",
"dependencies": {
"@babel/core": "^7.12.13",
"@babel/core": "^7.12.17",
"@babel/register": "^7.12.13",
"@babel/runtime": "^7.12.13",
"@polkadot/api": "3.9.3",
"@polkadot/metadata": "3.9.3",
"@polkadot/rpc-provider": "3.9.3",
"@polkadot/types": "3.9.3",
"@polkadot/util": "^5.6.2",
"handlebars": "^4.7.6",
"@babel/runtime": "^7.12.18",
"@polkadot/api": "3.10.2",
"@polkadot/metadata": "3.10.2",
"@polkadot/rpc-provider": "3.10.2",
"@polkadot/types": "3.10.2",
"@polkadot/util": "^5.7.1",
"handlebars": "^4.7.7",
"websocket": "^1.0.33",
"yargs": "^16.2.0"
},
+6
View File
@@ -0,0 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/typegen', version: '3.10.2' };
+5 -5
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/types-known",
"version": "3.9.3",
"version": "3.10.2",
"description": "A JavaScript wrapper for the Polkadot JsonRPC interface",
"main": "index.js",
"sideEffects": false,
@@ -12,10 +12,10 @@
"bugs": "https://github.com/polkadot-js/api/issues",
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/types-known#readme",
"dependencies": {
"@babel/runtime": "^7.12.13",
"@polkadot/networks": "^5.6.2",
"@polkadot/types": "3.9.3",
"@polkadot/util": "^5.6.2",
"@babel/runtime": "^7.12.18",
"@polkadot/networks": "^5.7.1",
"@polkadot/types": "3.10.2",
"@polkadot/util": "^5.7.1",
"bn.js": "^4.11.9"
},
"devDependencies": {
+6
View File
@@ -0,0 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/types-known', version: '3.10.2' };
@@ -8,7 +8,7 @@ const upgrades: ChainUpgradesRaw = [
[244358, 8], [303079, 9], [314201, 10], [342400, 11], [443963, 12],
[528470, 13], [687751, 14], [746085, 15], [787923, 16], [799302, 17],
[1205128, 18], [1603423, 23], [1733218, 24], [2005673, 25], [2436698, 26],
[3613564, 27]
[3613564, 27], [3899547, 28]
];
export default upgrades;
+7 -7
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/types",
"version": "3.9.3",
"version": "3.10.2",
"description": "Implementation of the Parity codec",
"main": "index.js",
"sideEffects": [
@@ -15,15 +15,15 @@
"bugs": "https://github.com/polkadot-js/api/issues",
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/types#readme",
"dependencies": {
"@babel/runtime": "^7.12.13",
"@polkadot/metadata": "3.9.3",
"@polkadot/util": "^5.6.2",
"@polkadot/util-crypto": "^5.6.2",
"@polkadot/x-rxjs": "^5.6.2",
"@babel/runtime": "^7.12.18",
"@polkadot/metadata": "3.10.2",
"@polkadot/util": "^5.7.1",
"@polkadot/util-crypto": "^5.7.1",
"@polkadot/x-rxjs": "^5.7.1",
"@types/bn.js": "^4.11.6",
"bn.js": "^4.11.9"
},
"devDependencies": {
"@polkadot/keyring": "^5.6.2"
"@polkadot/keyring": "^5.7.1"
}
}
+17 -5
View File
@@ -14,7 +14,7 @@ import type { PrefixedStorageKey } from '@polkadot/types/interfaces/childstate';
import type { EthereumAddress, StatementKind } from '@polkadot/types/interfaces/claims';
import type { CollectiveOrigin, MemberCount, ProposalIndex, Votes, VotesTo230 } from '@polkadot/types/interfaces/collective';
import type { AuthorityId, RawVRFOutput } from '@polkadot/types/interfaces/consensus';
import type { AliveContractInfo, CodeHash, ContractCallRequest, ContractExecResult, ContractExecResultErr, ContractExecResultErrModule, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractInfo, ContractStorageKey, DeletedContract, Gas, HostFnWeights, InstructionWeights, Limits, PrefabWasmModule, PrefabWasmModuleReserved, Schedule, ScheduleTo212, ScheduleTo258, SeedOf, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts';
import type { AliveContractInfo, CodeHash, ContractCallRequest, ContractExecResult, ContractExecResultErr, ContractExecResultErrModule, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractInfo, ContractStorageKey, DeletedContract, Gas, HostFnWeights, HostFnWeightsTo264, InstructionWeights, Limits, LimitsTo264, PrefabWasmModule, PrefabWasmModuleReserved, Schedule, ScheduleTo212, ScheduleTo258, ScheduleTo264, SeedOf, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts';
import type { ContractConstructorSpec, ContractContractSpec, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEventParamSpec, ContractEventSpec, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpec, ContractMessageSpec, ContractProject, ContractProjectContract, ContractProjectSource, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi';
import type { DeployData, FundIndex, FundInfo, LastContribution } from '@polkadot/types/interfaces/crowdloan';
import type { AccountVote, AccountVoteSplit, AccountVoteStandard, Conviction, Delegations, PreimageStatus, PreimageStatusAvailable, PriorLock, PropIndex, Proposal, ProxyState, ReferendumIndex, ReferendumInfo, ReferendumInfoFinished, ReferendumInfoTo239, ReferendumStatus, Tally, Voting, VotingDelegating, VotingDirect, VotingDirectVote } from '@polkadot/types/interfaces/democracy';
@@ -46,7 +46,7 @@ import type { Bid, BidKind, SocietyJudgement, SocietyVote, StrikeCount, Vouching
import type { ActiveEraInfo, CompactAssignments, CompactAssignmentsTo257, CompactScore, CompactScoreCompact, ElectionCompute, ElectionResult, ElectionScore, ElectionSize, ElectionStatus, EraIndex, EraPoints, EraRewardPoints, EraRewards, Exposure, Forcing, IndividualExposure, KeyType, MomentOf, Nominations, NominatorIndex, NominatorIndexCompact, OffchainAccuracy, OffchainAccuracyCompact, PhragmenScore, Points, RewardDestination, RewardDestinationTo257, RewardPoint, SeatHolder, SlashJournalEntry, SlashingSpans, SlashingSpansTo204, SpanIndex, SpanRecord, StakingLedger, StakingLedgerTo223, StakingLedgerTo240, UnappliedSlash, UnappliedSlashOther, UnlockChunk, ValidatorIndex, ValidatorIndexCompact, ValidatorPrefs, ValidatorPrefsTo145, ValidatorPrefsTo196, ValidatorPrefsWithBlocked, ValidatorPrefsWithCommission, Voter } from '@polkadot/types/interfaces/staking';
import type { ApiId, KeyValueOption, ReadProof, RuntimeVersion, RuntimeVersionApi, StorageChangeSet } from '@polkadot/types/interfaces/state';
import type { WeightToFeeCoefficient } from '@polkadot/types/interfaces/support';
import type { AccountInfo, AccountInfoWithProviders, AccountInfoWithRefCount, ApplyExtrinsicResult, BlockLength, BlockWeights, ChainProperties, ChainType, ConsumedWeight, DigestOf, DispatchClass, DispatchError, DispatchErrorModule, DispatchErrorTo198, DispatchInfo, DispatchInfoTo190, DispatchInfoTo244, DispatchOutcome, DispatchResult, DispatchResultOf, DispatchResultTo198, Event, EventId, EventIndex, EventRecord, Health, InvalidTransaction, Key, LastRuntimeUpgradeInfo, NetworkState, NetworkStatePeerset, NetworkStatePeersetInfo, NodeRole, NotConnectedPeer, Peer, PeerEndpoint, PeerEndpointAddr, PeerInfo, PeerPing, PerDispatchClass, PerDispatchClassU32, Phase, RawOrigin, RefCount, RefCountTo259, SyncState, SystemOrigin, TransactionValidityError, UnknownTransaction, WeightPerClass } from '@polkadot/types/interfaces/system';
import type { AccountInfo, AccountInfoWithProviders, AccountInfoWithRefCount, ApplyExtrinsicResult, BlockLength, BlockWeights, ChainProperties, ChainType, ConsumedWeight, DigestOf, DispatchClass, DispatchError, DispatchErrorModule, DispatchErrorTo198, DispatchInfo, DispatchInfoTo190, DispatchInfoTo244, DispatchOutcome, DispatchResult, DispatchResultOf, DispatchResultTo198, Event, EventId, EventIndex, EventRecord, Health, InvalidTransaction, Key, LastRuntimeUpgradeInfo, NetworkState, NetworkStatePeerset, NetworkStatePeersetInfo, NodeRole, NotConnectedPeer, Peer, PeerEndpoint, PeerEndpointAddr, PeerInfo, PeerPing, PerDispatchClassU32, PerDispatchClassWeight, PerDispatchClassWeightsPerClass, Phase, RawOrigin, RefCount, RefCountTo259, SyncState, SystemOrigin, TransactionValidityError, UnknownTransaction, WeightPerClass } from '@polkadot/types/interfaces/system';
import type { Bounty, BountyIndex, BountyStatus, BountyStatusActive, BountyStatusCuratorProposed, BountyStatusPendingPayout, OpenTip, OpenTipFinderTo225, OpenTipTip, OpenTipTo225, TreasuryProposal } from '@polkadot/types/interfaces/treasury';
import type { Multiplier } from '@polkadot/types/interfaces/txpayment';
import type { Multisig, Timepoint } from '@polkadot/types/interfaces/utility';
@@ -438,6 +438,7 @@ declare module '@polkadot/types/types/registry' {
'Option<HeartbeatTo244>': Option<HeartbeatTo244>;
'Option<HostConfiguration>': Option<HostConfiguration>;
'Option<HostFnWeights>': Option<HostFnWeights>;
'Option<HostFnWeightsTo264>': Option<HostFnWeightsTo264>;
'Option<HrmpChannel>': Option<HrmpChannel>;
'Option<HrmpChannelId>': Option<HrmpChannelId>;
'Option<HrmpOpenChannelRequest>': Option<HrmpOpenChannelRequest>;
@@ -493,6 +494,7 @@ declare module '@polkadot/types/types/registry' {
'Option<LeasePeriod>': Option<LeasePeriod>;
'Option<LeasePeriodOf>': Option<LeasePeriodOf>;
'Option<Limits>': Option<Limits>;
'Option<LimitsTo264>': Option<LimitsTo264>;
'Option<LocalValidationData>': Option<LocalValidationData>;
'Option<LockIdentifier>': Option<LockIdentifier>;
'Option<LookupSource>': Option<LookupSource>;
@@ -597,8 +599,9 @@ declare module '@polkadot/types/types/registry' {
'Option<PendingResume>': Option<PendingResume>;
'Option<Perbill>': Option<Perbill>;
'Option<Percent>': Option<Percent>;
'Option<PerDispatchClass>': Option<PerDispatchClass>;
'Option<PerDispatchClassU32>': Option<PerDispatchClassU32>;
'Option<PerDispatchClassWeight>': Option<PerDispatchClassWeight>;
'Option<PerDispatchClassWeightsPerClass>': Option<PerDispatchClassWeightsPerClass>;
'Option<Period>': Option<Period>;
'Option<Permill>': Option<Permill>;
'Option<PermissionLatest>': Option<PermissionLatest>;
@@ -687,6 +690,7 @@ declare module '@polkadot/types/types/registry' {
'Option<SchedulePriority>': Option<SchedulePriority>;
'Option<ScheduleTo212>': Option<ScheduleTo212>;
'Option<ScheduleTo258>': Option<ScheduleTo258>;
'Option<ScheduleTo264>': Option<ScheduleTo264>;
'Option<Scheduling>': Option<Scheduling>;
'Option<Seal>': Option<Seal>;
'Option<SealV0>': Option<SealV0>;
@@ -1165,6 +1169,7 @@ declare module '@polkadot/types/types/registry' {
'Vec<HeartbeatTo244>': Vec<HeartbeatTo244>;
'Vec<HostConfiguration>': Vec<HostConfiguration>;
'Vec<HostFnWeights>': Vec<HostFnWeights>;
'Vec<HostFnWeightsTo264>': Vec<HostFnWeightsTo264>;
'Vec<HrmpChannel>': Vec<HrmpChannel>;
'Vec<HrmpChannelId>': Vec<HrmpChannelId>;
'Vec<HrmpOpenChannelRequest>': Vec<HrmpOpenChannelRequest>;
@@ -1220,6 +1225,7 @@ declare module '@polkadot/types/types/registry' {
'Vec<LeasePeriod>': Vec<LeasePeriod>;
'Vec<LeasePeriodOf>': Vec<LeasePeriodOf>;
'Vec<Limits>': Vec<Limits>;
'Vec<LimitsTo264>': Vec<LimitsTo264>;
'Vec<LocalValidationData>': Vec<LocalValidationData>;
'Vec<LockIdentifier>': Vec<LockIdentifier>;
'Vec<LookupSource>': Vec<LookupSource>;
@@ -1324,8 +1330,9 @@ declare module '@polkadot/types/types/registry' {
'Vec<PendingResume>': Vec<PendingResume>;
'Vec<Perbill>': Vec<Perbill>;
'Vec<Percent>': Vec<Percent>;
'Vec<PerDispatchClass>': Vec<PerDispatchClass>;
'Vec<PerDispatchClassU32>': Vec<PerDispatchClassU32>;
'Vec<PerDispatchClassWeight>': Vec<PerDispatchClassWeight>;
'Vec<PerDispatchClassWeightsPerClass>': Vec<PerDispatchClassWeightsPerClass>;
'Vec<Period>': Vec<Period>;
'Vec<Permill>': Vec<Permill>;
'Vec<PermissionLatest>': Vec<PermissionLatest>;
@@ -1414,6 +1421,7 @@ declare module '@polkadot/types/types/registry' {
'Vec<SchedulePriority>': Vec<SchedulePriority>;
'Vec<ScheduleTo212>': Vec<ScheduleTo212>;
'Vec<ScheduleTo258>': Vec<ScheduleTo258>;
'Vec<ScheduleTo264>': Vec<ScheduleTo264>;
'Vec<Scheduling>': Vec<Scheduling>;
'Vec<Seal>': Vec<Seal>;
'Vec<SealV0>': Vec<SealV0>;
@@ -1892,6 +1900,7 @@ declare module '@polkadot/types/types/registry' {
HeartbeatTo244: HeartbeatTo244;
HostConfiguration: HostConfiguration;
HostFnWeights: HostFnWeights;
HostFnWeightsTo264: HostFnWeightsTo264;
HrmpChannel: HrmpChannel;
HrmpChannelId: HrmpChannelId;
HrmpOpenChannelRequest: HrmpOpenChannelRequest;
@@ -1947,6 +1956,7 @@ declare module '@polkadot/types/types/registry' {
LeasePeriod: LeasePeriod;
LeasePeriodOf: LeasePeriodOf;
Limits: Limits;
LimitsTo264: LimitsTo264;
LocalValidationData: LocalValidationData;
LockIdentifier: LockIdentifier;
LookupSource: LookupSource;
@@ -2051,8 +2061,9 @@ declare module '@polkadot/types/types/registry' {
PendingResume: PendingResume;
Perbill: Perbill;
Percent: Percent;
PerDispatchClass: PerDispatchClass;
PerDispatchClassU32: PerDispatchClassU32;
PerDispatchClassWeight: PerDispatchClassWeight;
PerDispatchClassWeightsPerClass: PerDispatchClassWeightsPerClass;
Period: Period;
Permill: Permill;
PermissionLatest: PermissionLatest;
@@ -2141,6 +2152,7 @@ declare module '@polkadot/types/types/registry' {
SchedulePriority: SchedulePriority;
ScheduleTo212: ScheduleTo212;
ScheduleTo258: ScheduleTo258;
ScheduleTo264: ScheduleTo264;
Scheduling: Scheduling;
Seal: Seal;
SealV0: SealV0;
+1 -1
View File
@@ -18,7 +18,7 @@
import { detectPackage } from '@polkadot/util';
import packageInfo from './package-info.json';
import { packageInfo } from './packageInfo';
detectPackage(packageInfo, typeof __dirname !== 'undefined' && __dirname);
+1 -1
View File
@@ -28,7 +28,7 @@ describe('Call', (): void => {
expect(
new Call(registry, '0x0601').toU8a()
).toEqual(
new Uint8Array([6, 1, 1, 110, 7, 17, 0, 0, 0])
new Uint8Array([6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
); // balances.setBalance
});
});
@@ -0,0 +1,29 @@
// Copyright 2017-2021 @polkadot/types authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { TypeRegistry } from '../create';
describe('MultiAddress', (): void => {
const registry = new TypeRegistry();
it('correctly decodes a stream with Address20', (): void => {
const a = registry.createType('MultiAddress', '0x0467f89207abe6e1b093befd84a48f03313765929207009e292608');
expect(a.index).toEqual(4);
expect(a.toString()).toEqual('0x67f89207abe6e1b093befd84a48f033137659292');
});
it('correctly decodes an AccountId', (): void => {
const a = registry.createType('MultiAddress', '0x0102030405060708010203040506070801020304050607080102030405060708');
expect(a.index).toEqual(0);
expect(a.toString()).toEqual('5C62W7ELLAAfix9LYrcx5smtcffbhvThkM5x7xfMeYXCtGwF');
});
it('correctly decodes an Address20', (): void => {
const a = registry.createType('MultiAddress', '0x67f89207abe6e1b093befd84a48f033137659292');
expect(a.index).toEqual(4);
expect(a.toString()).toEqual('0x67f89207abe6e1b093befd84a48f033137659292');
});
});
+3 -5
View File
@@ -10,14 +10,12 @@ import { Enum } from '../codec/Enum';
import { GenericAccountId } from './AccountId';
import { GenericAccountIndex } from './AccountIndex';
function decodeMultiU8a (registry: Registry, value?: unknown): unknown {
function decodeMultiU8a (value?: unknown): unknown {
if (isU8a(value) && value.length <= 32) {
if (value.length === 32) {
return { id: value };
} else if (value.length === 20) {
return { Address20: value };
} else {
return decodeMultiAny(registry, registry.createType('AccountIndex', value));
}
}
@@ -32,10 +30,10 @@ function decodeMultiAny (registry: Registry, value?: unknown): unknown {
} else if (value instanceof GenericAccountIndex || isNumber(value) || isBn(value)) {
return { Index: registry.createType('Compact<AccountIndex>', value) };
} else if (isString(value)) {
return decodeMultiU8a(registry, decodeAddress(value.toString()));
return decodeMultiU8a(decodeAddress(value.toString()));
}
return decodeMultiU8a(registry, value);
return decodeMultiU8a(value);
}
export class GenericMultiAddress extends Enum {
@@ -141,7 +141,7 @@ export default {
trieId: 'TrieId'
},
Gas: 'u64',
HostFnWeights: {
HostFnWeightsTo264: {
caller: 'Weight',
address: 'Weight',
gasLeft: 'Weight',
@@ -188,6 +188,58 @@ export default {
hashBlake2128: 'Weight',
hashBlake2128PerByte: 'Weight'
},
HostFnWeights: {
caller: 'Weight',
address: 'Weight',
gasLeft: 'Weight',
balance: 'Weight',
valueTransferred: 'Weight',
minimumBalance: 'Weight',
tombstoneDeposit: 'Weight',
rentAllowance: 'Weight',
blockNumber: 'Weight',
now: 'Weight',
weightToFee: 'Weight',
gas: 'Weight',
input: 'Weight',
inputPerByte: 'Weight',
return: 'Weight',
returnPerByte: 'Weight',
terminate: 'Weight',
terminatePerCodeByte: 'Weight',
restoreTo: 'Weight',
restoreToPerCallerCodeByte: 'Weight',
restoreToPerTombstoneCodeByte: 'Weight',
restoreToPerDelta: 'Weight',
random: 'Weight',
depositEvent: 'Weight',
depositEventPerTopic: 'Weight',
depositEventPerByte: 'Weight',
setRentAllowance: 'Weight',
setStorage: 'Weight',
setStoragePerByte: 'Weight',
clearStorage: 'Weight',
getStorage: 'Weight',
getStoragePerByte: 'Weight',
transfer: 'Weight',
call: 'Weight',
callPerCodeByte: 'Weight',
callTransferSurcharge: 'Weight',
callPerInputByte: 'Weight',
callPerOutputByte: 'Weight',
instantiate: 'Weight',
instantiatePerCodeByte: 'Weight',
instantiatePerInputByte: 'Weight',
instantiatePerOutputByte: 'Weight',
hashSha2256: 'Weight',
hashSha2256PerByte: 'Weight',
hashKeccak256: 'Weight',
hashKeccak256PerByte: 'Weight',
hashBlake2256: 'Weight',
hashBlake2256PerByte: 'Weight',
hashBlake2128: 'Weight',
hashBlake2128PerByte: 'Weight'
},
InstructionWeights: {
i64const: 'u32',
i64load: 'u32',
@@ -241,7 +293,7 @@ export default {
i64rotl: 'u32',
i64rotr: 'u32'
},
Limits: {
LimitsTo264: {
eventTopics: 'u32',
stackHeight: 'u32',
globals: 'u32',
@@ -252,6 +304,16 @@ export default {
subjectLen: 'u32',
codeSize: 'u32'
},
Limits: {
eventTopics: 'u32',
stackHeight: 'u32',
globals: 'u32',
parameters: 'u32',
memoryPages: 'u32',
tableSize: 'u32',
brTableSize: 'u32',
subjectLen: 'u32'
},
PrefabWasmModule: {
scheduleVersion: 'Compact<u32>',
initial: 'Compact<u32>',
@@ -295,6 +357,13 @@ export default {
enablePrintln: 'bool',
maxSubjectLen: 'u32'
},
ScheduleTo264: {
version: 'u32',
enablePrintln: 'bool',
limits: 'LimitsTo264',
instructionWeights: 'InstructionWeights',
hostFnWeights: 'HostFnWeightsTo264'
},
Schedule: {
version: 'u32',
enablePrintln: 'bool',
@@ -115,6 +115,60 @@ export interface Gas extends u64 {}
/** @name HostFnWeights */
export interface HostFnWeights extends Struct {
readonly caller: Weight;
readonly address: Weight;
readonly gasLeft: Weight;
readonly balance: Weight;
readonly valueTransferred: Weight;
readonly minimumBalance: Weight;
readonly tombstoneDeposit: Weight;
readonly rentAllowance: Weight;
readonly blockNumber: Weight;
readonly now: Weight;
readonly weightToFee: Weight;
readonly gas: Weight;
readonly input: Weight;
readonly inputPerByte: Weight;
readonly return: Weight;
readonly returnPerByte: Weight;
readonly terminate: Weight;
readonly terminatePerCodeByte: Weight;
readonly restoreTo: Weight;
readonly restoreToPerCallerCodeByte: Weight;
readonly restoreToPerTombstoneCodeByte: Weight;
readonly restoreToPerDelta: Weight;
readonly random: Weight;
readonly depositEvent: Weight;
readonly depositEventPerTopic: Weight;
readonly depositEventPerByte: Weight;
readonly setRentAllowance: Weight;
readonly setStorage: Weight;
readonly setStoragePerByte: Weight;
readonly clearStorage: Weight;
readonly getStorage: Weight;
readonly getStoragePerByte: Weight;
readonly transfer: Weight;
readonly call: Weight;
readonly callPerCodeByte: Weight;
readonly callTransferSurcharge: Weight;
readonly callPerInputByte: Weight;
readonly callPerOutputByte: Weight;
readonly instantiate: Weight;
readonly instantiatePerCodeByte: Weight;
readonly instantiatePerInputByte: Weight;
readonly instantiatePerOutputByte: Weight;
readonly hashSha2256: Weight;
readonly hashSha2256PerByte: Weight;
readonly hashKeccak256: Weight;
readonly hashKeccak256PerByte: Weight;
readonly hashBlake2256: Weight;
readonly hashBlake2256PerByte: Weight;
readonly hashBlake2128: Weight;
readonly hashBlake2128PerByte: Weight;
}
/** @name HostFnWeightsTo264 */
export interface HostFnWeightsTo264 extends Struct {
readonly caller: Weight;
readonly address: Weight;
readonly gasLeft: Weight;
@@ -227,6 +281,18 @@ export interface Limits extends Struct {
readonly tableSize: u32;
readonly brTableSize: u32;
readonly subjectLen: u32;
}
/** @name LimitsTo264 */
export interface LimitsTo264 extends Struct {
readonly eventTopics: u32;
readonly stackHeight: u32;
readonly globals: u32;
readonly parameters: u32;
readonly memoryPages: u32;
readonly tableSize: u32;
readonly brTableSize: u32;
readonly subjectLen: u32;
readonly codeSize: u32;
}
@@ -290,6 +356,15 @@ export interface ScheduleTo258 extends Struct {
readonly maxSubjectLen: u32;
}
/** @name ScheduleTo264 */
export interface ScheduleTo264 extends Struct {
readonly version: u32;
readonly enablePrintln: bool;
readonly limits: LimitsTo264;
readonly instructionWeights: InstructionWeights;
readonly hostFnWeights: HostFnWeightsTo264;
}
/** @name SeedOf */
export interface SeedOf extends Hash {}
@@ -153,7 +153,7 @@ export default {
BlockWeights: {
baseBlock: 'Weight',
maxBlock: 'Weight',
perClass: 'PerDispatchClass'
perClass: 'PerDispatchClassWeightsPerClass'
},
ChainProperties: 'GenericChainProperties',
ChainType: {
@@ -164,7 +164,7 @@ export default {
Custom: 'Text'
}
},
ConsumedWeight: 'PerDispatchClass',
ConsumedWeight: 'PerDispatchClassWeight',
DigestOf: 'Digest',
DispatchClass: {
_enum: ['Normal', 'Operational', 'Mandatory']
@@ -296,16 +296,21 @@ export default {
bestHash: 'Hash',
bestNumber: 'BlockNumber'
},
PerDispatchClass: {
normal: 'WeightPerClass',
operational: 'WeightPerClass',
mandatory: 'WeightPerClass'
},
PerDispatchClassU32: {
normal: 'u32',
operational: 'u32',
mandatory: 'u32'
},
PerDispatchClassWeight: {
normal: 'Weight',
operational: 'Weight',
mandatory: 'Weight'
},
PerDispatchClassWeightsPerClass: {
normal: 'WeightPerClass',
operational: 'WeightPerClass',
mandatory: 'WeightPerClass'
},
Phase: {
_enum: {
ApplyExtrinsic: 'u32',
+16 -9
View File
@@ -45,7 +45,7 @@ export interface BlockLength extends Struct {
export interface BlockWeights extends Struct {
readonly baseBlock: Weight;
readonly maxBlock: Weight;
readonly perClass: PerDispatchClass;
readonly perClass: PerDispatchClassWeightsPerClass;
}
/** @name ChainProperties */
@@ -61,7 +61,7 @@ export interface ChainType extends Enum {
}
/** @name ConsumedWeight */
export interface ConsumedWeight extends PerDispatchClass {}
export interface ConsumedWeight extends PerDispatchClassWeight {}
/** @name DigestOf */
export interface DigestOf extends Digest {}
@@ -276,13 +276,6 @@ export interface PeerPing extends Struct {
readonly secs: u64;
}
/** @name PerDispatchClass */
export interface PerDispatchClass extends Struct {
readonly normal: WeightPerClass;
readonly operational: WeightPerClass;
readonly mandatory: WeightPerClass;
}
/** @name PerDispatchClassU32 */
export interface PerDispatchClassU32 extends Struct {
readonly normal: u32;
@@ -290,6 +283,20 @@ export interface PerDispatchClassU32 extends Struct {
readonly mandatory: u32;
}
/** @name PerDispatchClassWeight */
export interface PerDispatchClassWeight extends Struct {
readonly normal: Weight;
readonly operational: Weight;
readonly mandatory: Weight;
}
/** @name PerDispatchClassWeightsPerClass */
export interface PerDispatchClassWeightsPerClass extends Struct {
readonly normal: WeightPerClass;
readonly operational: WeightPerClass;
readonly mandatory: WeightPerClass;
}
/** @name Phase */
export interface Phase extends Enum {
readonly isApplyExtrinsic: boolean;
+6
View File
@@ -0,0 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/types', version: '3.10.2' };
+359 -351
View File
File diff suppressed because it is too large Load Diff