@da440dil/js-locker
Version:
Distributed locking using Redis
29 lines (28 loc) • 895 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Locker = void 0;
const crypto_1 = require("crypto");
const Lock_1 = require("./Lock");
const LockResult_1 = require("./LockResult");
class Locker {
constructor(locker) {
this.locker = locker;
}
async lock(key, ttl) {
const value = await this.randomString();
const lock = new Lock_1.Lock(this.locker, key, value);
const result = await lock.lock(ttl);
return new LockResult_1.LockResult(lock, result);
}
randomString() {
return new Promise((resolve, reject) => {
(0, crypto_1.randomBytes)(16, (err, buf) => {
if (err) {
return reject(err);
}
resolve(buf.toString('base64'));
});
});
}
}
exports.Locker = Locker;