"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.n = assertNoPathAliasEscape;exports.t = void 0;var _runWithConcurrency2ga3CMk = require("./run-with-concurrency-2ga3-CMk.js"); var _nodeOs = _interopRequireDefault(require("node:os")); var _promises = _interopRequireDefault(require("node:fs/promises"));function _interopRequireDefault(e) {return e && e.__esModule ? e : { default: e };} //#region src/infra/hardlink-guards.ts async function assertNoHardlinkedFinalPath(params) { if (params.allowFinalHardlinkForUnlink) return; let stat; try { stat = await _promises.default.stat(params.filePath); } catch (err) { if ((0, _runWithConcurrency2ga3CMk.R)(err)) return; throw err; } if (!stat.isFile()) return; if (stat.nlink > 1) throw new Error(`Hardlinked path is not allowed under ${params.boundaryLabel} (${shortPath(params.root)}): ${shortPath(params.filePath)}`); } function shortPath(value) { if (value.startsWith(_nodeOs.default.homedir())) return `~${value.slice(_nodeOs.default.homedir().length)}`; return value; } //#endregion //#region src/infra/path-alias-guards.ts const PATH_ALIAS_POLICIES = exports.t = _runWithConcurrency2ga3CMk.P; async function assertNoPathAliasEscape(params) { const resolved = await (0, _runWithConcurrency2ga3CMk.F)({ absolutePath: params.absolutePath, rootPath: params.rootPath, boundaryLabel: params.boundaryLabel, policy: params.policy }); if (params.policy?.allowFinalSymlinkForUnlink === true && resolved.kind === "symlink") return; await assertNoHardlinkedFinalPath({ filePath: resolved.absolutePath, root: resolved.rootPath, boundaryLabel: params.boundaryLabel, allowFinalHardlinkForUnlink: params.policy?.allowFinalHardlinkForUnlink }); } //#endregion /* v9-8aefd5d549082563 */