7 lines
547 B
TypeScript
7 lines
547 B
TypeScript
export function projectTrafficBindingStatus(status: unknown, observedAt: unknown, expiresAt: unknown, now = Date.now()): "online" | "offline" | "unknown" {
|
|
if ((status !== "online" && status !== "offline") || typeof observedAt !== "string" || typeof expiresAt !== "string") return "unknown"
|
|
const observed = Date.parse(observedAt), expires = Date.parse(expiresAt)
|
|
if (!Number.isFinite(observed) || !Number.isFinite(expires) || observed >= expires || now > expires || observed > now + (expires-observed)/3) return "unknown"
|
|
return status
|
|
}
|