mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-10 06:40:45 +08:00
同时收敛启动与运维脚本默认行为(含 wiki worker)、更新 Admin 可观测性与相关测试,降低首轮时延并提高运行稳定性。 Made-with: Cursor
18 lines
628 B
TypeScript
18 lines
628 B
TypeScript
import { createServer, type RequestListener } from "node:http";
|
|
import type { AddressInfo } from "node:net";
|
|
|
|
export async function withServer(handler: RequestListener, fn: (baseUrl: string) => Promise<void>) {
|
|
const server = createServer(handler);
|
|
await new Promise<void>((resolve) => {
|
|
server.listen(0, "127.0.0.1", () => resolve());
|
|
});
|
|
const address = server.address() as AddressInfo | null;
|
|
if (!address) {
|
|
throw new Error("missing server address");
|
|
}
|
|
try {
|
|
await fn(`http://127.0.0.1:${address.port}`);
|
|
} finally {
|
|
await new Promise<void>((resolve) => server.close(() => resolve()));
|
|
}
|
|
}
|