eslint-seatbelt
Version:
Gradually tighten ESLint rules in your codebase
100 lines (52 loc) • 2.7 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true});
var _chunkK7UHJBLMjs = require('./chunk-K7UHJBLM.js');
var _chunkTVRMUM3Fjs = require('./chunk-TVRMUM3F.js');
// src/FileLock.ts
var _fs = require('fs');
var { O_CREAT, O_EXCL, O_RDWR } = _fs.constants;
var waitBuffer = new Int32Array(new SharedArrayBuffer(4));
var FileLock = class {
constructor(filename) {
this.filename = filename;
}
tryLock() {
this.assertNotLocked();
try {
this.fd = _fs.openSync.call(void 0, this.filename, O_CREAT | O_EXCL | O_RDWR);
return true;
} catch (e) {
if (_chunkK7UHJBLMjs.isErrno.call(void 0, e, "EEXIST")) {
return false;
}
throw e;
}
}
waitLock(timeoutMs) {
const deadline = Date.now() + timeoutMs;
while (!this.tryLock()) {
if (Date.now() > deadline) {
throw new Error(`Timed out waiting for lock on ${this.filename}`);
}
Atomics.wait(waitBuffer, 0, 0, 1);
}
}
isLocked() {
return this.fd !== void 0;
}
unlock() {
if (this.fd !== void 0) {
_fs.closeSync.call(void 0, this.fd);
_fs.rmSync.call(void 0, this.filename);
this.fd = void 0;
}
}
assertNotLocked() {
if (this.fd !== void 0) {
throw new Error(
`FileLock "${this.filename}" is already locked by this process [pid ${process.pid}]`
);
}
}
};
exports.FileLock = FileLock; exports.SEATBELT_DISABLE = _chunkTVRMUM3Fjs.SEATBELT_DISABLE; exports.SEATBELT_FILE = _chunkTVRMUM3Fjs.SEATBELT_FILE; exports.SEATBELT_FILE_NAME = _chunkTVRMUM3Fjs.SEATBELT_FILE_NAME; exports.SEATBELT_FROZEN = _chunkTVRMUM3Fjs.SEATBELT_FROZEN; exports.SEATBELT_INCREASE = _chunkTVRMUM3Fjs.SEATBELT_INCREASE; exports.SEATBELT_KEEP = _chunkTVRMUM3Fjs.SEATBELT_KEEP; exports.SEATBELT_PWD = _chunkTVRMUM3Fjs.SEATBELT_PWD; exports.SEATBELT_QUIET = _chunkTVRMUM3Fjs.SEATBELT_QUIET; exports.SEATBELT_ROOT = _chunkTVRMUM3Fjs.SEATBELT_ROOT; exports.SEATBELT_THREADSAFE = _chunkTVRMUM3Fjs.SEATBELT_THREADSAFE; exports.SEATBELT_VERBOSE = _chunkTVRMUM3Fjs.SEATBELT_VERBOSE; exports.SeatbeltArgs = _chunkTVRMUM3Fjs.SeatbeltArgs; exports.SeatbeltConfig = _chunkTVRMUM3Fjs.SeatbeltConfig; exports.SeatbeltConfigSchema = _chunkTVRMUM3Fjs.SeatbeltConfigSchema; exports.SeatbeltEnv = _chunkTVRMUM3Fjs.SeatbeltEnv; exports.SeatbeltFile = _chunkK7UHJBLMjs.SeatbeltFile; exports.formatFilename = _chunkTVRMUM3Fjs.formatFilename; exports.formatRuleId = _chunkTVRMUM3Fjs.formatRuleId; exports.logStderr = _chunkTVRMUM3Fjs.logStderr; exports.logStdout = _chunkTVRMUM3Fjs.logStdout; exports.padVarName = _chunkTVRMUM3Fjs.padVarName;
//# sourceMappingURL=api.js.map