/proc/2/root/proc/2/cwd/_ssr
This explorer reads the filesystem of the server it runs on, so /workspace/user isn't present here. Browsing and the terminal still work against this server's own disk from /.
import { n as createServerFn } from "./ssr.mjs";import { t as createServerRpc } from "./createServerRpc-A6pJPYTF.mjs";import { promises } from "node:fs";import * as path from "node:path";//#region node_modules/.nitro/vite/services/ssr/assets/fs-server-BLMW8vuu.jsvar ROOT = "/";var MAX_FILE_BYTES = 15e5;var PREVIEW_BYTES = 6e5;function resolveSafe(relPath) { const cleaned = (relPath ?? "").replace(/^\/+/, "").replace(/\\/g, "/"); if (cleaned.includes("\0")) throw new Error("Invalid path"); const abs = path.resolve(ROOT, cleaned); const rootResolved = path.resolve(ROOT); if (abs !== rootResolved && !abs.startsWith(rootResolved)) throw new Error("Path escapes allowed root"); return abs;}function toRel(abs) { return path.relative(path.resolve(ROOT), abs).split(path.sep).join("/");}function buildSegments(relPath) { if (!relPath) return []; const parts = relPath.split("/").filter(Boolean); const segs = []; let acc = ""; for (const p of parts) { acc = acc ? `${acc}/${p}` : p; segs.push({ name: p, relPath: acc }); } return segs;}var IMAGE_EXTS = { png: "image/png", jpg: "image/jpeg", jpeg: "image/jpeg", gif: "image/gif", webp: "image/webp", svg: "image/svg+xml", ico: "image/x-icon", bmp: "image/bmp", avif: "image/avif"};function extOf(name) { const base = name.toLowerCase(); const dot = base.lastIndexOf("."); if (dot <= 0) { if (base === "dockerfile" || base === "makefile") return base; if (base.startsWith(".")) return base.slice(1); return ""; } return base.slice(dot + 1);}function looksBinary(buf) { const len = Math.min(buf.length, 8e3); for (let i = 0; i < len; i++) if (buf[i] === 0) return true; return false;}function errKind(e) { const code = e?.code; if (code === "EACCES" || code === "EPERM") return "Permission denied"; if (code === "ENOENT") return "Not found"; if (code === "ENOTDIR") return "Not a directory"; return "Could not read";}var probeEnv_createServerFn_handler = createServerRpc({ id: "5423ddc1186c87712090018fdf3b2cd2b27df4037b35d013b3323d1110de1d4d", name: "probeEnv", filename: "src/lib/fs-server.ts"}, (opts) => probeEnv.__executeServer(opts));var probeEnv = createServerFn({ method: "GET" }).handler(probeEnv_createServerFn_handler, async () => { let workspaceUser = false; try { workspaceUser = (await promises.stat("/workspace/user")).isDirectory(); } catch { workspaceUser = false; } return { workspaceUser, host: process.env.HOSTNAME || "" };});var listDir_createServerFn_handler = createServerRpc({ id: "67ab0753c5977d86d998fe2b62b3d160fa7d511fddac5d00d3db6f488f99ecbb", name: "listDir", filename: "src/lib/fs-server.ts"}, (opts) => listDir.__executeServer(opts));var listDir = createServerFn({ method: "GET" }).validator((d) => d ?? {}).handler(listDir_createServerFn_handler, async ({ data }) => { const relInput = (data?.path ?? "").trim(); let abs; let relPath; try { abs = resolveSafe(relInput); relPath = toRel(abs); } catch { abs = path.resolve(ROOT); relPath = ""; } let stat; try { stat = await promises.stat(abs); } catch (e) { return { root: relPath === "", relPath, segments: buildSegments(relPath), entries: [], exists: false, error: errKind(e) }; } if (!stat.isDirectory()) { abs = path.dirname(abs); relPath = toRel(abs); } let dirents; try { dirents = await promises.readdir(abs, { withFileTypes: true }); } catch (e) { return { root: relPath === "", relPath, segments: buildSegments(relPath), entries: [], exists: true, error: errKind(e) }; } const entries = []; for (const d of dirents) { let isDir = d.isDirectory(); let size = 0; const full = path.join(abs, d.name); if (d.isSymbolicLink()) try { const s = await promises.stat(full); isDir = s.isDirectory(); size = s.isFile() ? s.size : 0; } catch { entries.push({ name: d.name, type: "file", size: 0, ext: extOf(d.name) }); continue; } else if (d.isFile()) try { size = (await promises.stat(full)).size; } catch { size = 0; } else if (!isDir) continue; entries.push({ name: d.name, type: isDir ? "dir" : "file", size, ext: isDir ? "" : extOf(d.name) }); } entries.sort((a, b) => { if (a.type !== b.type) return a.type === "dir" ? -1 : 1; return a.name.localeCompare(b.name, void 0, { sensitivity: "base" }); }); return { root: relPath === "", relPath, segments: buildSegments(relPath), entries, exists: true, error: null };});var readFile_createServerFn_handler = createServerRpc({ id: "2aec5ec073e4b4933393facf0ef90c23771c7832c98d6e2a18f21b54aa694d82", name: "readFile", filename: "src/lib/fs-server.ts"}, (opts) => readFile.__executeServer(opts));var readFile = createServerFn({ method: "GET" }).validator((d) => d).handler(readFile_createServerFn_handler, async ({ data }) => { const relInput = (data?.path ?? "").trim(); let abs; let relPath; try { abs = resolveSafe(relInput); relPath = toRel(abs); } catch { return { relPath: relInput, name: relInput.split("/").pop() || relInput, ext: "", size: 0, kind: "missing", content: null, truncated: false, mime: null }; } const name = path.basename(abs); const ext = extOf(name); let stat; try { stat = await promises.stat(abs); } catch (e) { const code = e?.code; return { relPath, name, ext, size: 0, kind: code === "EACCES" || code === "EPERM" ? "denied" : "missing", content: null, truncated: false, mime: null }; } if (!stat.isFile()) return { relPath, name, ext, size: stat.size, kind: "missing", content: null, truncated: false, mime: null }; const size = stat.size; if (IMAGE_EXTS[ext] && ext !== "svg") { if (size > 25e5) return { relPath, name, ext, size, kind: "too-large", content: null, truncated: false, mime: IMAGE_EXTS[ext] }; try { const buf = await promises.readFile(abs); const dataUrl = `data:${IMAGE_EXTS[ext]};base64,${buf.toString("base64")}`; return { relPath, name, ext, size, kind: "image", content: dataUrl, truncated: false, mime: IMAGE_EXTS[ext] }; } catch (e) { const code = e?.code; return { relPath, name, ext, size, kind: code === "EACCES" || code === "EPERM" ? "denied" : "missing", content: null, truncated: false, mime: null }; } } if (size > MAX_FILE_BYTES) return { relPath, name, ext, size, kind: "too-large", content: null, truncated: false, mime: null }; let buf; try { buf = await promises.readFile(abs); } catch (e) { const code = e?.code; return { relPath, name, ext, size, kind: code === "EACCES" || code === "EPERM" ? "denied" : "missing", content: null, truncated: false, mime: null }; } if (looksBinary(buf)) return { relPath, name, ext, size, kind: "binary", content: null, truncated: false, mime: null }; let truncated = false; let useBuf = buf; if (buf.length > PREVIEW_BYTES) { useBuf = buf.subarray(0, PREVIEW_BYTES); truncated = true; } return { relPath, name, ext, size, kind: "text", content: useBuf.toString("utf8"), truncated, mime: null };});//#endregionexport { listDir_createServerFn_handler, probeEnv_createServerFn_handler, readFile_createServerFn_handler };