morphbox
Version:
Docker-based AI sandbox for development with Claude integration
64 lines (61 loc) • 1.74 kB
JavaScript
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