import { createServer } from 'node:http'; import server from './dist/server/server.js'; const PORT = parseInt(process.env.PORT || '3010', 10); const HOST = process.env.HOST || '0.0.0.0'; const httpServer = createServer(async (req, res) => { try { const baseUrl = `http://${req.headers.host || `${HOST}:${PORT}`}`; const url = new URL(req.url, baseUrl); // GET/HEAD cannot have body — must be null const bodyAllowed = req.method !== 'GET' && req.method !== 'HEAD'; let body = null; if (bodyAllowed) { body = await new Promise((resolve, reject) => { const chunks = []; req.on('data', chunk => chunks.push(chunk)); req.on('end', () => resolve(Buffer.concat(chunks))); req.on('error', reject); }); } const webReq = new Request(url, { method: req.method, headers: req.headers, body, duplex: 'half', }); // Use server.fetch directly — NOT server.default.fetch const webRes = await server.fetch(webReq); const status = webRes.status; const responseHeaders = Object.fromEntries(webRes.headers.entries()); res.writeHead(status, responseHeaders); if (webRes.body) { for await (const chunk of webRes.body) { res.write(chunk); } } res.end(); } catch (err) { console.error('Request error:', err.message); res.writeHead(500, { 'Content-Type': 'text/plain' }); res.end('Internal Server Error'); } }); httpServer.listen(PORT, HOST, () => { console.log(`Server running on ${HOST}:${PORT}`); }); process.on('SIGTERM', () => httpServer.close(() => process.exit(0)));