app
Circuit Trace Generators
Public Made by Adomby adom
Two dependency-free, seeded circuit-background generators: a seamless torus tile with ambient or progressive reveal, and the v9 continuous field with obstacles, scroll reveal, and five ambient systems.
master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
import { createReadStream, statSync } from "node:fs";
import { createServer } from "node:http";
import { dirname, join } from "node:path";
import { fileURLToPath } from "node:url";
const directory = dirname(fileURLToPath(import.meta.url));
const port = Number.parseInt(process.env.CIRCUIT_PORT || "8124", 10);
const files = new Map([
["/", ["index.html", "text/html; charset=utf-8"]],
["/index.html", ["index.html", "text/html; charset=utf-8"]],
["/v9", ["index-v9.html", "text/html; charset=utf-8"]],
["/index-v9.html", ["index-v9.html", "text/html; charset=utf-8"]],
["/v8", ["index-v8.html", "text/html; charset=utf-8"]],
["/index-v8.html", ["index-v8.html", "text/html; charset=utf-8"]],
["/v7", ["index-v7.html", "text/html; charset=utf-8"]],
["/index-v7.html", ["index-v7.html", "text/html; charset=utf-8"]],
["/v6", ["index-v6.html", "text/html; charset=utf-8"]],
["/index-v6.html", ["index-v6.html", "text/html; charset=utf-8"]],
["/circuit-animation-conductor.js", ["circuit-animation-conductor.js", "text/javascript; charset=utf-8"]],
["/circuit-animation-handshake.js", ["circuit-animation-handshake.js", "text/javascript; charset=utf-8"]],
["/circuit-animation-growth.js", ["circuit-animation-growth.js", "text/javascript; charset=utf-8"]],
["/circuit-animation-reflection.js", ["circuit-animation-reflection.js", "text/javascript; charset=utf-8"]],
["/circuit-reveal-flow.js", ["circuit-reveal-flow.js", "text/javascript; charset=utf-8"]],
["/circuit-reveal-scroll.js", ["circuit-reveal-scroll.js", "text/javascript; charset=utf-8"]],
["/circuit-field-stream.js", ["circuit-field-stream.js", "text/javascript; charset=utf-8"]],
["/circuit-field-hybrid-v8.js", ["circuit-field-hybrid-v8.js", "text/javascript; charset=utf-8"]],
["/circuit-field-hybrid-client-v8.js", ["circuit-field-hybrid-client-v8.js", "text/javascript; charset=utf-8"]],
["/circuit-field-hybrid-worker-v8.js", ["circuit-field-hybrid-worker-v8.js", "text/javascript; charset=utf-8"]],
["/circuit-field-hybrid-v9.js", ["circuit-field-hybrid-v9.js", "text/javascript; charset=utf-8"]],
["/circuit-field-hybrid-client-v9.js", ["circuit-field-hybrid-client-v9.js", "text/javascript; charset=utf-8"]],
["/circuit-field-hybrid-worker-v9.js", ["circuit-field-hybrid-worker-v9.js", "text/javascript; charset=utf-8"]],
["/circuit-trace-stager-v8.js", ["circuit-trace-stager-v8.js", "text/javascript; charset=utf-8"]],
["/circuit-field-stream-client.js", ["circuit-field-stream-client.js", "text/javascript; charset=utf-8"]],
["/circuit-field-stream-worker.js", ["circuit-field-stream-worker.js", "text/javascript; charset=utf-8"]],
["/circuit-reveal-stream.js", ["circuit-reveal-stream.js", "text/javascript; charset=utf-8"]],
["/circuit-reveal-stream-v8.js", ["circuit-reveal-stream-v8.js", "text/javascript; charset=utf-8"]],
["/circuit-background-v4.js", ["circuit-background-v4.js", "text/javascript; charset=utf-8"]],
["/circuit-background-v5.js", ["circuit-background-v5.js", "text/javascript; charset=utf-8"]],
["/circuit-background-v6.js", ["circuit-background-v6.js", "text/javascript; charset=utf-8"]],
["/circuit-background-v7.js", ["circuit-background-v7.js", "text/javascript; charset=utf-8"]],
["/circuit-background-v8.js", ["circuit-background-v8.js", "text/javascript; charset=utf-8"]],
["/circuit-background-v9.js", ["circuit-background-v9.js", "text/javascript; charset=utf-8"]],
["/circuit-geometry-v9.js", ["circuit-geometry-v9.js", "text/javascript; charset=utf-8"]],
["/circuit-obstacles-v9.js", ["circuit-obstacles-v9.js", "text/javascript; charset=utf-8"]],
["/circuit-background-v3.js", ["circuit-background-v3.js", "text/javascript; charset=utf-8"]],
["/circuit-background-v2.js", ["circuit-background-v2.js", "text/javascript; charset=utf-8"]],
]);
function headers(contentType) {
return {
"Content-Type": contentType,
"Cache-Control": "no-store, no-cache, must-revalidate, proxy-revalidate",
Pragma: "no-cache",
"Surrogate-Control": "no-store",
"X-Content-Type-Options": "nosniff",
};
}
const server = createServer((request, response) => {
const url = new URL(request.url || "/", `http://${request.headers.host || "localhost"}`);
if (url.pathname === "/health") {
response.writeHead(200, headers("application/json; charset=utf-8"));
response.end(
JSON.stringify({ ok: true, service: "circuit-generator-codex", uptime: process.uptime() }),
);
return;
}
const match = files.get(url.pathname);
if (!match) {
response.writeHead(404, headers("text/plain; charset=utf-8"));
response.end("Not found\n");
return;
}
const [filename, contentType] = match;
const path = join(directory, filename);
const size = statSync(path).size;
response.writeHead(200, { ...headers(contentType), "Content-Length": size });
if (request.method === "HEAD") {
response.end();
return;
}
createReadStream(path).pipe(response);
});
server.listen(port, "0.0.0.0", () => {
console.log(`[circuit-generator-codex] listening on http://0.0.0.0:${port}`);
});