UNPKG

morphbox

Version:

Docker-based AI sandbox for development with Claude integration

64 lines (61 loc) 1.74 kB
import { j as json } from './index-3BbzJtgI.js'; import fs from 'fs/promises'; import path from 'path'; const LAYOUT_FILE = path.join(process.cwd(), "data", "panel-layouts.json"); async function ensureDataDir() { const dataDir = path.dirname(LAYOUT_FILE); try { await fs.access(dataDir); } catch { await fs.mkdir(dataDir, { recursive: true }); } } const GET = async ({ url }) => { try { await ensureDataDir(); try { const data = await fs.readFile(LAYOUT_FILE, "utf-8"); const layout = JSON.parse(data); return json(layout); } catch { return json({ panels: [], gridColumns: 1, gridRows: 1, rows: [] }); } } catch (error) { console.error("Failed to load layout:", error); return json({ error: "Failed to load layout" }, { status: 500 }); } }; const POST = async ({ request }) => { try { await ensureDataDir(); const layout = await request.json(); if (!layout || !Array.isArray(layout.panels)) { return json({ error: "Invalid layout data" }, { status: 400 }); } await fs.writeFile(LAYOUT_FILE, JSON.stringify(layout, null, 2)); return json({ success: true }); } catch (error) { console.error("Failed to save layout:", error); return json({ error: "Failed to save layout" }, { status: 500 }); } }; const DELETE = async () => { try { await ensureDataDir(); try { await fs.unlink(LAYOUT_FILE); } catch { } return json({ success: true }); } catch (error) { console.error("Failed to reset layout:", error); return json({ error: "Failed to reset layout" }, { status: 500 }); } }; export { DELETE, GET, POST }; //# sourceMappingURL=_server.ts-BJpk6c5M.js.map