UNPKG

machinomy

Version:

Micropayments powered by Ethereum

22 lines 669 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const await_semaphore_1 = require("await-semaphore"); class Mutex { constructor() { this.queues = new Map(); } synchronize(task) { return this.synchronizeOn(Mutex.DEFAULT_QUEUE, task); } async synchronizeOn(key, task) { let semaphore = this.queues.get(key); if (!semaphore) { semaphore = new await_semaphore_1.Semaphore(1); this.queues.set(key, semaphore); } return semaphore.use(task); } } Mutex.DEFAULT_QUEUE = '__MUTEX_DEFAULT_QUEUE'; exports.default = Mutex; //# sourceMappingURL=Mutex.js.map