import "./loadEnv.js"; import { Hono } from 'hono' import { serveStatic } from '@hono/node-server/serve-static' import { serve } from '@hono/node-server'; const app = new Hono(); app.post('_api/identify',async c => { try { const { handle } = await import("./endpoints/identify_POST.js"); let request = c.req.raw; const response = await handle(request); if (!(response instanceof Response) && response.constructor.name !== "Response") { return c.text("Invalid response format. handle should always return a Response object." + response.constructor.name, 500); } return response; } catch (e) { console.error(e); return c.text("Error loading endpoint code " + e.message, 500) } }) app.get('_api/spotify-auth',async c => { try { const { handle } = await import("./endpoints/spotify-auth_GET.js"); let request = c.req.raw; const response = await handle(request); if (!(response instanceof Response) && response.constructor.name !== "Response") { return c.text("Invalid response format. handle should always return a Response object." + response.constructor.name, 500); } return response; } catch (e) { console.error(e); return c.text("Error loading endpoint code " + e.message, 500) } }) app.post('_api/spotify-exchange',async c => { try { const { handle } = await import("./endpoints/spotify-exchange_POST.js"); let request = c.req.raw; const response = await handle(request); if (!(response instanceof Response) && response.constructor.name !== "Response") { return c.text("Invalid response format. handle should always return a Response object." + response.constructor.name, 500); } return response; } catch (e) { console.error(e); return c.text("Error loading endpoint code " + e.message, 500) } }) app.get('_api/spotify-session',async c => { try { const { handle } = await import("./endpoints/spotify-session_GET.js"); let request = c.req.raw; const response = await handle(request); if (!(response instanceof Response) && response.constructor.name !== "Response") { return c.text("Invalid response format. handle should always return a Response object." + response.constructor.name, 500); } return response; } catch (e) { console.error(e); return c.text("Error loading endpoint code " + e.message, 500) } }) app.post('_api/spotify-logout',async c => { try { const { handle } = await import("./endpoints/spotify-logout_POST.js"); let request = c.req.raw; const response = await handle(request); if (!(response instanceof Response) && response.constructor.name !== "Response") { return c.text("Invalid response format. handle should always return a Response object." + response.constructor.name, 500); } return response; } catch (e) { console.error(e); return c.text("Error loading endpoint code " + e.message, 500) } }) app.post('_api/spotify-playlist',async c => { try { const { handle } = await import("./endpoints/spotify-playlist_POST.js"); let request = c.req.raw; const response = await handle(request); if (!(response instanceof Response) && response.constructor.name !== "Response") { return c.text("Invalid response format. handle should always return a Response object." + response.constructor.name, 500); } return response; } catch (e) { console.error(e); return c.text("Error loading endpoint code " + e.message, 500) } }) app.get('_api/spotify-playlists',async c => { try { const { handle } = await import("./endpoints/spotify-playlists_GET.js"); let request = c.req.raw; const response = await handle(request); if (!(response instanceof Response) && response.constructor.name !== "Response") { return c.text("Invalid response format. handle should always return a Response object." + response.constructor.name, 500); } return response; } catch (e) { console.error(e); return c.text("Error loading endpoint code " + e.message, 500) } }) app.post('_api/metadata-enrich',async c => { try { const { handle } = await import("./endpoints/metadata-enrich_POST.js"); let request = c.req.raw; const response = await handle(request); if (!(response instanceof Response) && response.constructor.name !== "Response") { return c.text("Invalid response format. handle should always return a Response object." + response.constructor.name, 500); } return response; } catch (e) { console.error(e); return c.text("Error loading endpoint code " + e.message, 500) } }) app.post('_api/lyrics',async c => { try { const { handle } = await import("./endpoints/lyrics_POST.js"); let request = c.req.raw; const response = await handle(request); if (!(response instanceof Response) && response.constructor.name !== "Response") { return c.text("Invalid response format. handle should always return a Response object." + response.constructor.name, 500); } return response; } catch (e) { console.error(e); return c.text("Error loading endpoint code " + e.message, 500) } }) app.get('_api/spotify-library',async c => { try { const { handle } = await import("./endpoints/spotify-library_GET.js"); let request = c.req.raw; const response = await handle(request); if (!(response instanceof Response) && response.constructor.name !== "Response") { return c.text("Invalid response format. handle should always return a Response object." + response.constructor.name, 500); } return response; } catch (e) { console.error(e); return c.text("Error loading endpoint code " + e.message, 500) } }) app.get('_api/spotify-artist-albums',async c => { try { const { handle } = await import("./endpoints/spotify-artist-albums_GET.js"); let request = c.req.raw; const response = await handle(request); if (!(response instanceof Response) && response.constructor.name !== "Response") { return c.text("Invalid response format. handle should always return a Response object." + response.constructor.name, 500); } return response; } catch (e) { console.error(e); return c.text("Error loading endpoint code " + e.message, 500) } }) app.get('_api/spotify-album',async c => { try { const { handle } = await import("./endpoints/spotify-album_GET.js"); let request = c.req.raw; const response = await handle(request); if (!(response instanceof Response) && response.constructor.name !== "Response") { return c.text("Invalid response format. handle should always return a Response object." + response.constructor.name, 500); } return response; } catch (e) { console.error(e); return c.text("Error loading endpoint code " + e.message, 500) } }) app.post('_api/spotify-download',async c => { try { const { handle } = await import("./endpoints/spotify-download_POST.js"); let request = c.req.raw; const response = await handle(request); if (!(response instanceof Response) && response.constructor.name !== "Response") { return c.text("Invalid response format. handle should always return a Response object." + response.constructor.name, 500); } return response; } catch (e) { console.error(e); return c.text("Error loading endpoint code " + e.message, 500) } }) app.get('_api/spotify-download-status',async c => { try { const { handle } = await import("./endpoints/spotify-download-status_GET.js"); let request = c.req.raw; const response = await handle(request); if (!(response instanceof Response) && response.constructor.name !== "Response") { return c.text("Invalid response format. handle should always return a Response object." + response.constructor.name, 500); } return response; } catch (e) { console.error(e); return c.text("Error loading endpoint code " + e.message, 500) } }) app.get('_api/spotify-download-file',async c => { try { const { handle } = await import("./endpoints/spotify-download-file_GET.js"); let request = c.req.raw; const response = await handle(request); if (!(response instanceof Response) && response.constructor.name !== "Response") { return c.text("Invalid response format. handle should always return a Response object." + response.constructor.name, 500); } return response; } catch (e) { console.error(e); return c.text("Error loading endpoint code " + e.message, 500) } }) app.use('/*', serveStatic({ root: './dist' })) app.get("*", async (c, next) => { const p = c.req.path; if (p.startsWith("/_api")) { return next(); } return serveStatic({ path: "./dist/index.html" })(c, next); }); serve({ fetch: app.fetch, port: 3333 }); console.log("Running at http://localhost:3333")