fix(traffic): подтверждать свежесть статусов привязанных интерфейсов

This commit is contained in:
Denozordec committed 2026-10-12 22:35:17 +07:00
1 parent 2b3d583e3b
commit b4d0733cfa
27 files changed
+1463 -36

No files matched your search

+9
View File
@@ -0,0 +1,9 @@
import assert from "node:assert/strict"
import { projectTrafficBindingStatus } from "./traffic-binding-status.js"
const at=Date.parse("2026-10-12T12:00:00Z"),s=new Date(at).toISOString(),expiry=new Date(at+90_000).toISOString()
assert.equal(projectTrafficBindingStatus("online",s,expiry,at),"online")
assert.equal(projectTrafficBindingStatus("offline",s,expiry,at),"offline")
assert.equal(projectTrafficBindingStatus("online",undefined,undefined,at),"unknown")
assert.equal(projectTrafficBindingStatus("online",s,expiry,at+90_001),"unknown")
assert.equal(projectTrafficBindingStatus("online",s,"bad",at),"unknown")
console.log("binding status legacy/expiry projection tests ok")
+6
View File
@@ -0,0 +1,6 @@
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
}