From ced0a08da350f0faafaa47f5a962df75d806aacf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Kr=C3=BCger?= Date: Sun, 8 Mar 2026 13:55:31 +0100 Subject: [PATCH] fix: serve buttplug locally in dev instead of Docker Add a minimal Node.js static server (serve.mjs) to the buttplug package that serves dist/ and wasm/ on port 8080 with correct MIME types. Update dev:buttplug to use it instead of docker compose, avoiding a full Rust/WASM Docker build on every dev start. Co-Authored-By: Claude Sonnet 4.6 --- package.json | 3 ++- packages/buttplug/package.json | 3 ++- packages/buttplug/serve.mjs | 39 ++++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 packages/buttplug/serve.mjs diff --git a/package.json b/package.json index 081052e..732217f 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,10 @@ "test": "echo \"Error: no test specified\" && exit 1", "build:frontend": "git pull && pnpm install && pnpm --filter @sexy.pivoine.art/frontend build", "build:backend": "git pull && pnpm install && pnpm --filter @sexy.pivoine.art/backend build", + "dev:buttplug": "pnpm --filter @sexy.pivoine.art/buttplug serve", "dev:data": "docker compose up -d postgres redis", "dev:backend": "pnpm --filter @sexy.pivoine.art/backend dev", - "dev": "pnpm dev:data && pnpm dev:backend & pnpm --filter @sexy.pivoine.art/frontend dev", + "dev": "pnpm dev:data && pnpm dev:backend & pnpm dev:buttplug & pnpm --filter @sexy.pivoine.art/frontend dev", "lint": "eslint .", "lint:fix": "eslint . --fix", "format": "prettier --write .", diff --git a/packages/buttplug/package.json b/packages/buttplug/package.json index acb630b..bea7a5f 100644 --- a/packages/buttplug/package.json +++ b/packages/buttplug/package.json @@ -10,7 +10,8 @@ ], "scripts": { "build": "vite build", - "build:wasm": "wasm-pack build --out-dir wasm --out-name index --target bundler --release" + "build:wasm": "wasm-pack build --out-dir wasm --out-name index --target bundler --release", + "serve": "node serve.mjs" }, "dependencies": { "eventemitter3": "^5.0.4", diff --git a/packages/buttplug/serve.mjs b/packages/buttplug/serve.mjs new file mode 100644 index 0000000..d4c3a04 --- /dev/null +++ b/packages/buttplug/serve.mjs @@ -0,0 +1,39 @@ +#!/usr/bin/env node +// Simple static server for local development — serves dist/ and wasm/ on port 8080 +import http from "http"; +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const PORT = process.env.PORT ?? 8080; + +const MIME = { + ".js": "application/javascript", + ".wasm": "application/wasm", + ".ts": "text/plain", + ".d.ts": "text/plain", +}; + +http + .createServer((req, res) => { + const filePath = path.join(__dirname, decodeURIComponent(req.url.split("?")[0])); + const ext = path.extname(filePath); + + fs.readFile(filePath, (err, data) => { + if (err) { + res.writeHead(404); + res.end("Not found"); + return; + } + res.writeHead(200, { + "Content-Type": MIME[ext] ?? "application/octet-stream", + "Cache-Control": "no-cache", + "Cross-Origin-Resource-Policy": "cross-origin", + }); + res.end(data); + }); + }) + .listen(PORT, () => { + console.log(`[buttplug] serving on http://localhost:${PORT}`); + });