UNPKG

eslint-seatbelt

Version:

Gradually tighten ESLint rules in your codebase

100 lines (52 loc) 2.7 kB
"use strict";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