webhook-action/node_modules/@nodelib/fs.stat/src/providers/async.ts

44 lines
1.2 KiB
TypeScript

import Settings from '../settings';
import { ErrnoException, Stats } from '../types';
type FailureCallback = (err: ErrnoException) => void;
type SuccessCallback = (err: null, stats: Stats) => void;
export type AsyncCallback = (err: ErrnoException, stats: Stats) => void;
export function read(path: string, settings: Settings, callback: AsyncCallback): void {
settings.fs.lstat(path, (lstatError, lstat) => {
if (lstatError !== null) {
return callFailureCallback(callback, lstatError);
}
if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {
return callSuccessCallback(callback, lstat);
}
settings.fs.stat(path, (statError, stat) => {
if (statError !== null) {
if (settings.throwErrorOnBrokenSymbolicLink) {
return callFailureCallback(callback, statError);
}
return callSuccessCallback(callback, lstat);
}
if (settings.markSymbolicLink) {
stat.isSymbolicLink = () => true;
}
callSuccessCallback(callback, stat);
});
});
}
function callFailureCallback(callback: AsyncCallback, error: ErrnoException): void {
(callback as FailureCallback)(error);
}
function callSuccessCallback(callback: AsyncCallback, result: Stats): void {
(callback as unknown as SuccessCallback)(null, result);
}