File: //lib/node_modules/openclaw/dist/path-guards-B5JHXmzV.js
import path from "node:path";
//#region src/infra/path-guards.ts
const NOT_FOUND_CODES = new Set(["ENOENT", "ENOTDIR"]);
const SYMLINK_OPEN_CODES = new Set([
"ELOOP",
"EINVAL",
"ENOTSUP"
]);
function isNodeError(value) {
return Boolean(value && typeof value === "object" && "code" in value);
}
function isNotFoundPathError(value) {
return isNodeError(value) && typeof value.code === "string" && NOT_FOUND_CODES.has(value.code);
}
function isSymlinkOpenError(value) {
return isNodeError(value) && typeof value.code === "string" && SYMLINK_OPEN_CODES.has(value.code);
}
function isPathInside(root, target) {
const resolvedRoot = path.resolve(root);
const resolvedTarget = path.resolve(target);
if (process.platform === "win32") {
const relative = path.win32.relative(resolvedRoot.toLowerCase(), resolvedTarget.toLowerCase());
return relative === "" || !relative.startsWith("..") && !path.win32.isAbsolute(relative);
}
const relative = path.relative(resolvedRoot, resolvedTarget);
return relative === "" || !relative.startsWith("..") && !path.isAbsolute(relative);
}
//#endregion
export { isPathInside as n, isSymlinkOpenError as r, isNotFoundPathError as t };