1
0

refactor: 迁移 Bun fullstack 架构

This commit is contained in:
2026-05-14 00:23:37 +08:00
parent bcfac52112
commit 6e485cc991
36 changed files with 403 additions and 1081 deletions

View File

@@ -1,27 +1,54 @@
import type { RuntimeMode } from "../shared/api";
import type { StaticAssets } from "./app";
import type { ProbeStore } from "./checker/store";
import type { RuntimeConfig } from "./config";
import { createFetchHandler } from "./app";
import homepage from "../web/index.html";
import { createApiError, jsonResponse } from "./helpers";
import { handleHealth } from "./routes/health";
import { handleHistory } from "./routes/history";
import { handleMeta } from "./routes/meta";
import { handleSummary } from "./routes/summary";
import { handleTargets } from "./routes/targets";
import { handleTrend } from "./routes/trend";
export interface StartServerOptions {
config: RuntimeConfig;
mode: RuntimeMode;
staticAssets?: StaticAssets;
store?: ProbeStore;
store: ProbeStore;
}
export function startServer(options: StartServerOptions) {
const { config, mode, staticAssets, store } = options;
const { config, mode, store } = options;
const server = Bun.serve({
fetch: createFetchHandler({
mode,
staticAssets,
store,
}),
development: mode === "development" ? { console: true, hmr: true } : false,
fetch() {
return new Response("Not found", { status: 404 });
},
hostname: config.host,
port: config.port,
routes: {
"/*": homepage,
"/api/*": () => jsonResponse(createApiError("API route not found", 404), { mode, status: 404 }),
"/api/meta": {
GET: () => handleMeta(mode),
},
"/api/summary": {
GET: () => handleSummary(store, mode),
},
"/api/targets": {
GET: () => handleTargets(store, mode),
},
"/api/targets/:id/history": {
GET: (req) => handleHistory(req.params.id, new URL(req.url), store, mode),
},
"/api/targets/:id/trend": {
GET: (req) => handleTrend(req.params.id, new URL(req.url), store, mode),
},
"/health": {
GET: () => handleHealth(mode),
},
},
});
console.log(`DiAL listening on ${server.url}`);