Sha256: 77c41b38e10ba9fc67948af7de2362a76c41d2d61fd07fd2d312dec13d69c93c

Contents?: true

Size: 1.49 KB

Versions: 1

Compression:

Stored size: 1.49 KB

Contents

import { broadcast } from '../../api-node/transactions';
import { head, toArray } from '../utils';
import wait from './wait';
const DEFAULT_BROADCAST_OPTIONS = {
    chain: false,
    confirmations: -1,
    maxWaitTime: 0,
    requestInterval: 0
};
export default function (base, list, options) {
    const opt = Object.assign(Object.assign({}, DEFAULT_BROADCAST_OPTIONS), (options || {}));
    const isOnce = !Array.isArray(list);
    const confirmations = opt.confirmations > 0 ? 1 : 0;
    return (opt.chain
        ? chainBroadcast(base, toArray(list), Object.assign(Object.assign({}, opt), { confirmations }))
        : simpleBroadcast(base, toArray(list)))
        .then(list => opt.confirmations <= 0 ? list : wait(base, list, opt))
        .then(list => isOnce ? head(list) : list);
}
function simpleBroadcast(base, list) {
    return Promise.all(list.map(tx => broadcast(base, tx)));
}
function chainBroadcast(base, list, options) {
    return new Promise((resolve, reject) => {
        const toBroadcast = list.slice().reverse();
        const result = [];
        const loop = () => {
            if (!toBroadcast.length) {
                resolve(result);
                return null;
            }
            const tx = toBroadcast.pop();
            broadcast(base, tx)
                .then(tx => wait(base, tx, options))
                .then(tx => {
                result.push(tx);
                loop();
            }, reject);
        };
        loop();
    });
}
//# sourceMappingURL=broadcast.js.map

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
waves_lib-0.1.0 js/node_modules/@waves/node-api-js/es/tools/transactions/broadcast.js