PHP WebShell

Текущая директория: /opt/BitGoJS/node_modules/@polkadot/api-derive/cjs/balances

Просмотр файла: account.js

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.account = account;
const rxjs_1 = require("rxjs");
const util_1 = require("@polkadot/util");
const index_js_1 = require("../util/index.js");
function zeroBalance(api) {
    return api.registry.createType('Balance');
}
function getBalance(api, [freeBalance, reservedBalance, frozenFeeOrFrozen, frozenMiscOrFlags], accType) {
    const votingBalance = api.registry.createType('Balance', freeBalance.toBn());
    if (accType.isFrameAccountData) {
        return {
            frameSystemAccountInfo: {
                flags: frozenMiscOrFlags,
                frozen: frozenFeeOrFrozen
            },
            freeBalance,
            frozenFee: api.registry.createType('Balance', 0),
            frozenMisc: api.registry.createType('Balance', 0),
            reservedBalance,
            votingBalance
        };
    }
    return {
        freeBalance,
        frozenFee: frozenFeeOrFrozen,
        frozenMisc: frozenMiscOrFlags,
        reservedBalance,
        votingBalance
    };
}
function calcBalances(api, [accountId, [accountNonce, [primary, ...additional], accType]]) {
    return (0, util_1.objectSpread)({
        accountId,
        accountNonce,
        additional: additional.map((b) => getBalance(api, b, accType))
    }, getBalance(api, primary, accType));
}
function queryBalancesFree(api, accountId) {
    return (0, rxjs_1.combineLatest)([
        api.query.balances['freeBalance'](accountId),
        api.query.balances['reservedBalance'](accountId),
        api.query.system['accountNonce'](accountId)
    ]).pipe((0, rxjs_1.map)(([freeBalance, reservedBalance, accountNonce]) => [
        accountNonce,
        [[freeBalance, reservedBalance, zeroBalance(api), zeroBalance(api)]],
        { isFrameAccountData: false }
    ]));
}
function queryNonceOnly(api, accountId) {
    const fill = (nonce) => [
        nonce,
        [[zeroBalance(api), zeroBalance(api), zeroBalance(api), zeroBalance(api)]],
        { isFrameAccountData: false }
    ];
    return (0, util_1.isFunction)(api.query.system.account)
        ? api.query.system.account(accountId).pipe((0, rxjs_1.map)(({ nonce }) => fill(nonce)))
        : (0, util_1.isFunction)(api.query.system['accountNonce'])
            ? api.query.system['accountNonce'](accountId).pipe((0, rxjs_1.map)((nonce) => fill(nonce)))
            : (0, rxjs_1.of)(fill(api.registry.createType('Index')));
}
function queryBalancesAccount(api, accountId, modules = ['balances']) {
    const balances = modules
        .map((m) => api.derive[m]?.customAccount || api.query[m]?.account)
        .filter((q) => (0, util_1.isFunction)(q));
    const extract = (nonce, data) => [
        nonce,
        data.map(({ feeFrozen, free, miscFrozen, reserved }) => [free, reserved, feeFrozen, miscFrozen]),
        { isFrameAccountData: false }
    ];
    // NOTE this is for the first case where we do have instances specified
    return balances.length
        ? (0, util_1.isFunction)(api.query.system.account)
            ? (0, rxjs_1.combineLatest)([
                api.query.system.account(accountId),
                ...balances.map((c) => c(accountId))
            ]).pipe((0, rxjs_1.map)(([{ nonce }, ...balances]) => extract(nonce, balances)))
            : (0, rxjs_1.combineLatest)([
                api.query.system['accountNonce'](accountId),
                ...balances.map((c) => c(accountId))
            ]).pipe((0, rxjs_1.map)(([nonce, ...balances]) => extract(nonce, balances)))
        : queryNonceOnly(api, accountId);
}
function querySystemAccount(api, accountId) {
    // AccountInfo is current, support old, eg. Edgeware
    return api.query.system.account(accountId).pipe((0, rxjs_1.map)((infoOrTuple) => {
        const data = infoOrTuple.nonce
            ? infoOrTuple.data
            : infoOrTuple[1];
        const nonce = infoOrTuple.nonce || infoOrTuple[0];
        if (!data || data.isEmpty) {
            return [
                nonce,
                [[zeroBalance(api), zeroBalance(api), zeroBalance(api), zeroBalance(api)]],
                { isFrameAccountData: false }
            ];
        }
        const isFrameType = !!infoOrTuple.data.frozen;
        if (isFrameType) {
            const { flags, free, frozen, reserved } = data;
            return [
                nonce,
                [[free, reserved, frozen, flags]],
                { isFrameAccountData: true }
            ];
        }
        else {
            const { feeFrozen, free, miscFrozen, reserved } = data;
            return [
                nonce,
                [[free, reserved, feeFrozen, miscFrozen]],
                { isFrameAccountData: false }
            ];
        }
    }));
}
/**
 * @name account
 * @param {( AccountIndex | AccountId | Address | string )} address - An accounts Id in different formats.
 * @returns An object containing the results of various balance queries
 * @example
 * <BR>
 *
 * ```javascript
 * const ALICE = 'F7Hs';
 *
 * api.derive.balances.all(ALICE, ({ accountId, lockedBalance }) => {
 *   console.log(`The account ${accountId} has a locked balance ${lockedBalance} units.`);
 * });
 * ```
 */
function account(instanceId, api) {
    const balanceInstances = api.registry.getModuleInstances(api.runtimeVersion.specName, 'balances');
    const nonDefaultBalances = balanceInstances && balanceInstances[0] !== 'balances';
    return (0, index_js_1.memo)(instanceId, (address) => api.derive.accounts.accountId(address).pipe((0, rxjs_1.switchMap)((accountId) => (accountId
        ? (0, rxjs_1.combineLatest)([
            (0, rxjs_1.of)(accountId),
            nonDefaultBalances
                ? queryBalancesAccount(api, accountId, balanceInstances)
                : (0, util_1.isFunction)(api.query.system?.account)
                    ? querySystemAccount(api, accountId)
                    : (0, util_1.isFunction)(api.query.balances?.account)
                        ? queryBalancesAccount(api, accountId)
                        : (0, util_1.isFunction)(api.query.balances?.['freeBalance'])
                            ? queryBalancesFree(api, accountId)
                            : queryNonceOnly(api, accountId)
        ])
        : (0, rxjs_1.of)([api.registry.createType('AccountId'), [
                api.registry.createType('Index'),
                [[zeroBalance(api), zeroBalance(api), zeroBalance(api), zeroBalance(api)]],
                { isFrameAccountData: false }
            ]]))), (0, rxjs_1.map)((result) => calcBalances(api, result))));
}

Выполнить команду


Для локальной разработки. Не используйте в интернете!