send-crypto
Version:
A minimal JavaScript library / wallet for sending crypto assets
43 lines • 3.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.subscribeToConfirmations = void 0;
const retry_1 = require("./retry");
const subscribeToConfirmations = (promiEvent, cancelled, getConfirmations) => {
let mutex;
const watchForConfirmations = async () => {
const lock = Symbol();
mutex = lock;
// Yield to task manager to let the event subscription finish
await (0, retry_1.sleep)(0);
let confirmations = 0;
while (!cancelled() && watchingConfirmations && mutex === lock) {
try {
const newConfirmations = await getConfirmations();
if (newConfirmations > confirmations) {
confirmations = newConfirmations;
promiEvent.emit("confirmation", confirmations);
}
}
catch (error) {
console.error(error);
}
await (0, retry_1.sleep)(5000);
}
};
let watchingConfirmations = 0;
promiEvent.on("newListener", (eventName) => {
if (eventName === "confirmation") {
watchingConfirmations++;
if (watchingConfirmations === 1) {
watchForConfirmations();
}
}
});
promiEvent.on("removeListener", (eventName) => {
if (eventName === "confirmation") {
watchingConfirmations--;
}
});
};
exports.subscribeToConfirmations = subscribeToConfirmations;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY29uZmlybWF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtQ0FBZ0M7QUFFekIsTUFBTSx3QkFBd0IsR0FBRyxDQUNwQyxVQUF5QixFQUN6QixTQUF3QixFQUN4QixnQkFBdUMsRUFDekMsRUFBRTtJQUNBLElBQUksS0FBSyxDQUFDO0lBQ1YsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLElBQUksRUFBRTtRQUNyQyxNQUFNLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUN0QixLQUFLLEdBQUcsSUFBSSxDQUFDO1FBRWIsNkRBQTZEO1FBQzdELE1BQU0sSUFBQSxhQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFFZixJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdEIsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLHFCQUFxQixJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDNUQsSUFBSTtnQkFDQSxNQUFNLGdCQUFnQixHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztnQkFDbEQsSUFBSSxnQkFBZ0IsR0FBRyxhQUFhLEVBQUU7b0JBQ2xDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQztvQkFDakMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUM7aUJBQ2xEO2FBQ0o7WUFBQyxPQUFPLEtBQVUsRUFBRTtnQkFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN4QjtZQUNELE1BQU0sSUFBQSxhQUFLLEVBQUMsSUFBSSxDQUFDLENBQUM7U0FDckI7SUFDTCxDQUFDLENBQUM7SUFFRixJQUFJLHFCQUFxQixHQUFHLENBQUMsQ0FBQztJQUM5QixVQUFVLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFO1FBQ3ZDLElBQUksU0FBUyxLQUFLLGNBQWMsRUFBRTtZQUM5QixxQkFBcUIsRUFBRSxDQUFDO1lBQ3hCLElBQUkscUJBQXFCLEtBQUssQ0FBQyxFQUFFO2dCQUM3QixxQkFBcUIsRUFBRSxDQUFDO2FBQzNCO1NBQ0o7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFVBQVUsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRTtRQUMxQyxJQUFJLFNBQVMsS0FBSyxjQUFjLEVBQUU7WUFDOUIscUJBQXFCLEVBQUUsQ0FBQztTQUMzQjtJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0FBM0NXLFFBQUEsd0JBQXdCLDRCQTJDbkMifQ==