feat: add Signal provider support

This commit is contained in:
Peter Steinberger
2026-01-01 15:43:15 +01:00
parent 0a4c2f91f5
commit 596770942a
21 changed files with 1368 additions and 19 deletions

47
src/signal/probe.ts Normal file
View File

@@ -0,0 +1,47 @@
import { signalCheck, signalRpcRequest } from "./client.js";
export type SignalProbe = {
ok: boolean;
status?: number | null;
error?: string | null;
elapsedMs: number;
version?: string | null;
};
export async function probeSignal(
baseUrl: string,
timeoutMs: number,
): Promise<SignalProbe> {
const started = Date.now();
const result: SignalProbe = {
ok: false,
status: null,
error: null,
elapsedMs: 0,
version: null,
};
const check = await signalCheck(baseUrl, timeoutMs);
if (!check.ok) {
return {
...result,
status: check.status ?? null,
error: check.error ?? "unreachable",
elapsedMs: Date.now() - started,
};
}
try {
const version = await signalRpcRequest<string>("version", undefined, {
baseUrl,
timeoutMs,
});
result.version = typeof version === "string" ? version : null;
} catch (err) {
result.error = err instanceof Error ? err.message : String(err);
}
return {
...result,
ok: true,
status: check.status ?? null,
elapsedMs: Date.now() - started,
};
}