29 lines · 1.2 KB · TypeScript
RawDownload
// @effect-diagnostics nodeBuiltinImport:off - one synchronous probe at module load, outside any Effect runtime.import * as NodeFS from "node:fs";import * as NodeOS from "node:os";import * as NodePath from "node:path"; /** * Whether this host lets an unprivileged process create symlinks. Windows * refuses without Developer Mode or elevation, so tests that plant a symlink * to prove containment or escape detection should `skipIf(!symlinksSupported)` * rather than fail at setup. Probed once per process. */export const symlinksSupported: boolean = (() => {  let directory: string | undefined;  try {    directory = NodeFS.mkdtempSync(NodePath.join(NodeOS.tmpdir(), "t3-symlink-probe-"));    NodeFS.symlinkSync(NodePath.join(directory, "target"), NodePath.join(directory, "link"));    return true;  } catch {    return false;  } finally {    // Cleanup must not decide the answer: a transient EPERM/EBUSY on the    // probe directory would otherwise throw out of module initialisation.    try {      if (directory !== undefined) NodeFS.rmSync(directory, { recursive: true, force: true });    } catch {      // Leave the probe directory behind rather than fail every importer.    }  }})();