machinomy
Version:
Micropayments powered by Ethereum
22 lines • 669 B
JavaScript
;
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