@elephant-xyz/cli
Version: 
CLI tool for Elephant Network
30 lines • 1.25 kB
JavaScript
import pLimit from 'p-limit';
import { TransactionStatusService } from './transaction-status.service.js';
import { logger } from '../utils/logger.js';
export class TransactionStatusCheckerService {
    statusService;
    limit;
    constructor(rpcUrl, maxConcurrent = 10) {
        this.statusService = new TransactionStatusService(rpcUrl);
        this.limit = pLimit(maxConcurrent);
        logger.technical(`Transaction status checker initialized with max concurrent: ${maxConcurrent}`);
    }
    async checkTransactionStatuses(transactions, onProgress) {
        let completed = 0;
        const promises = transactions.map((record) => this.limit(async () => {
            const status = await this.statusService.getTransactionStatus(record.transactionHash);
            completed++;
            onProgress?.(completed, transactions.length);
            return {
                ...record,
                status: status.status,
                blockNumber: status.blockNumber,
                gasUsed: status.gasUsed,
                checkTimestamp: new Date().toISOString(),
                error: status.error,
            };
        }));
        return Promise.all(promises);
    }
}
//# sourceMappingURL=transaction-status-checker.service.js.map