"use strict"; const assert = require("node:assert/strict"); const { buildQuery, formatTimestamp, LatestRequest } = require("../hockey_data/static/program-log.js"); // A typed local date range overrides preset=week instead of silently narrowing it. let query = new URLSearchParams(buildQuery({ preset: "week", date_from: "2026-09-20", date_to: "2026-10-10", sort: "asc" })); assert.equal(query.has("preset"), false); assert.equal(query.get("date_from"), "2026-09-20"); assert.equal(query.get("date_to"), "2026-10-10"); assert.equal(query.get("sort"), "asc"); assert.equal(query.get("limit"), "100"); query = new URLSearchParams(buildQuery({ preset: "week", q: "HTTP 500 & game_id=other + русский", actor: "user/name" }, { cursor: "row+200/last" })); assert.equal(query.get("q"), "HTTP 500 & game_id=other + русский"); assert.equal(query.has("game_id"), false); assert.equal(query.get("actor"), "user/name"); assert.equal(query.get("cursor"), "row+200/last"); assert.equal(query.get("preset"), "week"); // Export covers the selected filtered period, not only the current page. query = new URLSearchParams(buildQuery({ preset: "month", category: "mapping", game_id: "902918", level: "ERROR" }, { cursor: "page3", download: "jsonl" })); assert.equal(query.get("format"), "jsonl"); assert.equal(query.get("category"), "mapping"); assert.equal(query.get("game_id"), "902918"); assert.equal(query.get("level"), "ERROR"); assert.equal(query.has("cursor"), false); assert.equal(query.has("limit"), false); assert.equal(formatTimestamp("2026-10-20T22:17:02Z"), "21.10.2026, 01:17:02"); assert.equal(formatTimestamp("invalid"), "—"); // The previous response stays obsolete even when a transport ignores cancellation. const latest = new LatestRequest(); const first = latest.begin(); const second = latest.begin(); assert.equal(first.signal.aborted, true); assert.equal(latest.current(first.sequence), false); assert.equal(latest.current(second.sequence), true); latest.cancel(); assert.equal(second.signal.aborted, true); assert.equal(latest.current(second.sequence), false); const third = latest.begin(); assert.equal(third.signal.aborted, false); assert.equal(latest.current(third.sequence), true); console.log("Program journal frontend: dates, export filters, escaping, timezone and stale-response guards passed.");