File size: 831 Bytes
fc93158 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | import fs from "node:fs";
import { isPathInside as isBoundaryPathInside } from "../infra/path-guards.js";
export function isPathInside(baseDir: string, targetPath: string): boolean {
return isBoundaryPathInside(baseDir, targetPath);
}
export function safeRealpathSync(targetPath: string, cache?: Map<string, string>): string | null {
const cached = cache?.get(targetPath);
if (cached) {
return cached;
}
try {
const resolved = fs.realpathSync(targetPath);
cache?.set(targetPath, resolved);
return resolved;
} catch {
return null;
}
}
export function safeStatSync(targetPath: string): fs.Stats | null {
try {
return fs.statSync(targetPath);
} catch {
return null;
}
}
export function formatPosixMode(mode: number): string {
return (mode & 0o777).toString(8).padStart(3, "0");
}
|