/proc/thread-self/root/proc/thread-self/root/proc/thread-self/root/var/task/_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 { c as HeadContent, f as createFileRoute, g as require_jsx_runtime, p as createRootRoute, s as Scripts, u as createRouter } from "../_libs/@tanstack/react-router+[...].mjs";import { t as Route$3 } from "./routes-mG7B1J6r.mjs";import { promises } from "node:fs";import * as path from "node:path";//#region node_modules/.nitro/vite/services/ssr/assets/router-C56V3RPr.jsvar import_jsx_runtime = require_jsx_runtime();var styles_default = "/assets/styles-D_f87ztO.css";var SITE_TITLE = "File Explorer";var SITE_DESCRIPTION = "A fast, mobile-friendly explorer for browsing files and folders across the filesystem.";var Route$2 = createRootRoute({ head: () => ({ meta: [ { charSet: "utf-8" }, { name: "viewport", content: "width=device-width, initial-scale=1, viewport-fit=cover" }, { name: "robots", content: "noindex, nofollow" }, { title: SITE_TITLE }, { name: "description", content: SITE_DESCRIPTION }, { name: "theme-color", content: "#05070a" }, { property: "og:title", content: SITE_TITLE }, { property: "og:description", content: SITE_DESCRIPTION }, { property: "og:type", content: "website" }, { property: "og:image", content: "/api/og" }, { name: "twitter:card", content: "summary_large_image" }, { name: "twitter:title", content: SITE_TITLE }, { name: "twitter:description", content: SITE_DESCRIPTION }, { name: "twitter:image", content: "/api/og" } ], links: [ { rel: "stylesheet", href: styles_default }, { rel: "icon", href: "/favicon.svg", type: "image/svg+xml" }, { rel: "icon", href: "/favicon.ico", sizes: "any" } ] }), shellComponent: RootDocument});function RootDocument({ children }) { return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("html", { lang: "en", className: "dark", children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("head", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(HeadContent, {}) }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("body", { children: [children, /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Scripts, {})] })] });}var ROOT = "/";var MAX_FILE_BYTES = 50 * 1024 * 1024;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 safeName(name) { const out = (path.basename(name || "").replace(/\\/g, "/").split("/").pop() || "").replace(/[\u0000-\u001f]/g, "").replace(/^\.+/, (m) => m.slice(0, 0) + m).trim().replace(/[/]/g, "_"); if (!out || out === "." || out === "..") return "upload"; return out.slice(0, 255);}async function uniqueName(dirAbs, name) { const ext = path.extname(name); const stem = name.slice(0, name.length - ext.length); let candidate = name; let n = 1; while (n < 1e3) try { await promises.access(path.join(dirAbs, candidate)); candidate = `${stem} (${n})${ext}`; n++; } catch { return candidate; } return `${stem} (${Date.now()})${ext}`;}var Route$1 = createFileRoute("/api/upload")({ server: { handlers: { POST: async ({ request }) => { let form; try { form = await request.formData(); } catch { return Response.json({ ok: false, error: "Invalid upload request" }, { status: 400 }); } const dirInput = String(form.get("dir") ?? ""); let dirAbs; let dirRel; try { dirAbs = resolveSafe(dirInput); if (!(await promises.stat(dirAbs)).isDirectory()) dirAbs = path.dirname(dirAbs); dirRel = toRel(dirAbs); } catch { return Response.json({ ok: false, error: "Target folder isn't available" }, { status: 400 }); } const files = form.getAll("file").filter((f) => f instanceof File); if (files.length === 0) return Response.json({ ok: false, error: "No files were provided" }, { status: 400 }); const saved = []; const failed = []; for (const file of files) { const original = safeName(file.name); try { if (file.size > MAX_FILE_BYTES) { failed.push({ name: original, error: "Too large (over 50 MB)" }); continue; } const name = await uniqueName(dirAbs, original); const buf = Buffer.from(await file.arrayBuffer()); const dest = path.join(dirAbs, name); await promises.writeFile(dest, buf); const st = await promises.stat(dest); saved.push({ name, relPath: toRel(dest), size: st.size }); } catch (e) { const code = e?.code; const msg = code === "EACCES" || code === "EPERM" ? "Permission denied" : code === "ENOSPC" ? "No space left" : "Could not write file"; failed.push({ name: original, error: msg }); } } return Response.json({ ok: failed.length === 0, dir: dirRel, saved, failed });} } } });var Route = createFileRoute("/api/og")({ server: { handlers: { GET: async ({ request }) => { const fallback = new URL("/og.jpg", request.url).toString(); return Response.redirect(fallback, 302);} } } });var IndexRoute = Route$3.update({ id: "/", path: "/", getParentRoute: () => Route$2});var ApiUploadRoute = Route$1.update({ id: "/api/upload", path: "/api/upload", getParentRoute: () => Route$2});var rootRouteChildren = { IndexRoute, ApiOgRoute: Route.update({ id: "/api/og", path: "/api/og", getParentRoute: () => Route$2 }), ApiUploadRoute};var routeTree = Route$2._addFileChildren(rootRouteChildren)._addFileTypes();function getRouter() { return createRouter({ routeTree, scrollRestoration: true, defaultPreload: "intent", defaultPreloadStaleTime: 0 });}//#endregionexport { getRouter };