// server/index.ts import express2 from "express"; import { fileURLToPath } from "url"; import { dirname } from "path"; // Get __dirname equivalent for ES modules const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); // server/routes.ts import { createServer } from "http"; async function registerRoutes(app2) { app2.get("/api/download-audio/:videoId", async (req, res) => { try { const { videoId } = req.params; const response = await fetch(`https://backendmix.vercel.app/streams/${videoId}`); if (!response.ok) { return res.status(404).json({ error: "Stream not found" }); } const data = await response.json(); if (data.audioStreams && data.audioStreams.length > 0) { const audioStream = data.audioStreams[0]; const audioResponse = await fetch(audioStream.url); if (!audioResponse.ok) { return res.status(404).json({ error: "Audio stream not available" }); } res.setHeader("Content-Type", "audio/webm"); res.setHeader("Cache-Control", "public, max-age=86400"); const audioBuffer = await audioResponse.arrayBuffer(); res.send(Buffer.from(audioBuffer)); } else { res.status(404).json({ error: "No audio streams available" }); } } catch (error) { console.error("Audio download error:", error); res.status(500).json({ error: "Failed to download audio" }); } }); const httpServer = createServer(app2); return httpServer; } // server/vite.ts import express from "express"; import fs from "fs"; import path2 from "path"; import { createServer as createViteServer, createLogger } from "vite"; // vite.config.ts import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; import path from "path"; import runtimeErrorOverlay from "@replit/vite-plugin-runtime-error-modal"; // Get __dirname for vite config const getViteConfigDirname = () => { const __filename = fileURLToPath(import.meta.url); return dirname(__filename); }; var vite_config_default = defineConfig({ plugins: [ react(), runtimeErrorOverlay(), ...process.env.NODE_ENV !== "production" && process.env.REPL_ID !== undefined ? [ await import("@replit/vite-plugin-cartographer").then( (m) => m.cartographer() ) ] : [] ], resolve: { alias: { "@": path.resolve(getViteConfigDirname(), "client", "src"), "@shared": path.resolve(getViteConfigDirname(), "shared"), "@assets": path.resolve(getViteConfigDirname(), "attached_assets") } }, root: path.resolve(getViteConfigDirname(), "client"), build: { outDir: path.resolve(getViteConfigDirname(), "dist/public"), emptyOutDir: true }, server: { fs: { strict: true, deny: ["**/.*"] } } }); // server/vite.ts import { nanoid } from "nanoid"; var viteLogger = createLogger(); function log(message, source = "express") { const formattedTime = (new Date()).toLocaleTimeString("en-US", { hour: "numeric", minute: "2-digit", second: "2-digit", hour12: true }); console.log(`${formattedTime} [${source}] ${message}`); } async function setupVite(app2, server) { const serverOptions = { middlewareMode: true, hmr: { server }, allowedHosts: true }; const vite = await createViteServer({ ...vite_config_default, configFile: false, customLogger: { ...viteLogger, error: (msg, options) => { viteLogger.error(msg, options); process.exit(1); } }, server: serverOptions, appType: "custom" }); app2.use(vite.middlewares); app2.use("*", async (req, res, next) => { const url = req.originalUrl; try { const clientTemplate = path2.resolve( __dirname, "..", "client", "index.html" ); let template = await fs.promises.readFile(clientTemplate, "utf-8"); template = template.replace( `src="/src/main.tsx"`, `src="/src/main.tsx?v=${nanoid()}"` ); const page = await vite.transformIndexHtml(url, template); res.status(200).set({ "Content-Type": "text/html" }).end(page); } catch (e) { vite.ssrFixStacktrace(e); next(e); } }); } function serveStatic(app2) { const distPath = path2.resolve(__dirname, "public"); if (!fs.existsSync(distPath)) { throw new Error( `Could not find the build directory: ${distPath}, make sure to build the client first` ); } app2.use(express.static(distPath)); app2.use("*", (_req, res) => { res.sendFile(path2.resolve(distPath, "index.html")); }); } // server/index.ts var app = express2(); app.use(express2.json()); app.use(express2.urlencoded({ extended: false })); app.use((req, res, next) => { const start = Date.now(); const path3 = req.path; let capturedJsonResponse = undefined; const originalResJson = res.json; res.json = function(bodyJson, ...args) { capturedJsonResponse = bodyJson; return originalResJson.apply(res, [bodyJson, ...args]); }; res.on("finish", () => { const duration = Date.now() - start; if (path3.startsWith("/api")) { let logLine = `${req.method} ${path3} ${res.statusCode} in ${duration}ms`; if (capturedJsonResponse) { logLine += ` :: ${JSON.stringify(capturedJsonResponse)}`; } if (logLine.length > 80) { logLine = logLine.slice(0, 79) + "…"; } log(logLine); } }); next(); }); (async () => { const server = await registerRoutes(app); app.use((err, _req, res, _next) => { const status = err.status || err.statusCode || 500; const message = err.message || "Internal Server Error"; res.status(status).json({ message }); throw err; }); if (app.get("env") === "development") { await setupVite(app, server); } else { serveStatic(app); } const port = parseInt(process.env.PORT || "7860", 10); server.listen({ port, host: "0.0.0.0", reusePort: true }, () => { log(`serving on port ${port}`); }); })();