UNPKG

eslint-seatbelt

Version:

Gradually tighten ESLint rules in your codebase

98 lines (52 loc) 2.64 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); var _chunkDFAJX4NKjs = require('./chunk-DFAJX4NK.js'); var _chunkQVNO5FTUjs = require('./chunk-QVNO5FTU.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 (_chunkDFAJX4NKjs.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 = _chunkQVNO5FTUjs.SEATBELT_DISABLE; exports.SEATBELT_FILE = _chunkQVNO5FTUjs.SEATBELT_FILE; exports.SEATBELT_FILE_NAME = _chunkQVNO5FTUjs.SEATBELT_FILE_NAME; exports.SEATBELT_FROZEN = _chunkQVNO5FTUjs.SEATBELT_FROZEN; exports.SEATBELT_INCREASE = _chunkQVNO5FTUjs.SEATBELT_INCREASE; exports.SEATBELT_KEEP = _chunkQVNO5FTUjs.SEATBELT_KEEP; exports.SEATBELT_PWD = _chunkQVNO5FTUjs.SEATBELT_PWD; exports.SEATBELT_ROOT = _chunkQVNO5FTUjs.SEATBELT_ROOT; exports.SEATBELT_THREADSAFE = _chunkQVNO5FTUjs.SEATBELT_THREADSAFE; exports.SEATBELT_VERBOSE = _chunkQVNO5FTUjs.SEATBELT_VERBOSE; exports.SeatbeltArgs = _chunkQVNO5FTUjs.SeatbeltArgs; exports.SeatbeltConfig = _chunkQVNO5FTUjs.SeatbeltConfig; exports.SeatbeltConfigSchema = _chunkQVNO5FTUjs.SeatbeltConfigSchema; exports.SeatbeltEnv = _chunkQVNO5FTUjs.SeatbeltEnv; exports.SeatbeltFile = _chunkDFAJX4NKjs.SeatbeltFile; exports.formatFilename = _chunkQVNO5FTUjs.formatFilename; exports.formatRuleId = _chunkQVNO5FTUjs.formatRuleId; exports.logStderr = _chunkQVNO5FTUjs.logStderr; exports.logStdout = _chunkQVNO5FTUjs.logStdout; exports.padVarName = _chunkQVNO5FTUjs.padVarName; //# sourceMappingURL=api.js.map