From 4f5fad2196d568f7a7fa00efbe0fffd3ff9afe8b Mon Sep 17 00:00:00 2001 From: bubbo <85169821+imbubbo@users.noreply.github.com> Date: Mon, 13 Mar 2023 15:12:48 -0400 Subject: [PATCH] hopefully this works --- index.js | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 63 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index 406f26627..42c58e4d2 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,63 @@ -(async() => { - await import('./index.mjs'); -})(); +import createBareServer from "@tomphttp/bare-server-node"; +import express from "express"; +import { createServer } from "node:http"; +import { publicPath } from "ultraviolet-static"; +import { uvPath } from "@titaniumnetwork-dev/ultraviolet"; +import { join } from "node:path"; +import { hostname } from "node:os"; + +const bare = createBareServer("/bare/"); +const app = express(); + +// Load our publicPath first and prioritize it over UV. +app.use(express.static(publicPath)); +// Load vendor files last. +// The vendor's uv.config.js won't conflict with our uv.config.js inside the publicPath directory. +app.use("/uv/", express.static(uvPath)); + +// Error for everything else +app.use((req, res) => { + res.status(404); + res.sendFile(join(publicPath, "404.html")); +}); + +const server = createServer(); + +server.on("request", (req, res) => { + if (bare.shouldRoute(req)) { + bare.routeRequest(req, res); + } else { + app(req, res); + } +}); + +server.on("upgrade", (req, socket, head) => { + if (bare.shouldRoute(req)) { + bare.routeUpgrade(req, socket, head); + } else { + socket.end(); + } +}); + +let port = parseInt(process.env.PORT || ""); + +if (isNaN(port)) port = 8080; + +server.on("listening", () => { + const address = server.address(); + + // by default we are listening on 0.0.0.0 (every interface) + // we just need to list a few + console.log("Listening on:"); + console.log(`\thttp://localhost:${address.port}`); + console.log(`\thttp://${hostname()}:${address.port}`); + console.log( + `\thttp://${ + address.family === "IPv6" ? `[${address.address}]` : address.address + }:${address.port}` + ); +}); + +server.listen({ + port, +});