| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- /**
- * Lazy accessor for proper-lockfile.
- *
- * proper-lockfile depends on graceful-fs, which monkey-patches every fs
- * method on first require (~8ms). Static imports of proper-lockfile pull this
- * cost into the startup path even when no locking happens (e.g. `--help`).
- *
- * Import this module instead of `proper-lockfile` directly. The underlying
- * package is only loaded the first time a lock function is actually called.
- */
- import type { CheckOptions, LockOptions, UnlockOptions } from 'proper-lockfile'
- type Lockfile = typeof import('proper-lockfile')
- let _lockfile: Lockfile | undefined
- function getLockfile(): Lockfile {
- if (!_lockfile) {
- // eslint-disable-next-line @typescript-eslint/no-require-imports
- _lockfile = require('proper-lockfile') as Lockfile
- }
- return _lockfile
- }
- export function lock(
- file: string,
- options?: LockOptions,
- ): Promise<() => Promise<void>> {
- return getLockfile().lock(file, options)
- }
- export function lockSync(file: string, options?: LockOptions): () => void {
- return getLockfile().lockSync(file, options)
- }
- export function unlock(file: string, options?: UnlockOptions): Promise<void> {
- return getLockfile().unlock(file, options)
- }
- export function check(file: string, options?: CheckOptions): Promise<boolean> {
- return getLockfile().check(file, options)
- }
|