fix: close delete resume and SSE replay races

This commit is contained in:
User
2026-07-15 02:08:11 +02:00
parent 4d36f4acf1
commit 0bcec1591b
5 changed files with 208 additions and 5 deletions
+27
View File
@@ -151,3 +151,30 @@ test("an unbuffered pending gate receives one fresh buffered id", () => {
);
expect(reconnect).toEqual(first);
});
test("a cursor newer than this hub generation replays low ids and a buffered gate once", () => {
const hub = new SseHub();
const descriptor = { id: "gate-fresh", widget: "select", title: "Choose" };
hub.publish("s1", "info", { type: "info", text: "fresh generation" });
hub.publish("s1", "ui_request", { type: "ui_request", ui_request: descriptor });
const replayed: any[] = [];
hub.subscribe(
"s1",
(event, data, id) => replayed.push({ event, data, id }),
{ afterId: 900, pending: { ...descriptor } },
);
expect(replayed).toEqual([
{
event: "info",
data: { type: "info", text: "fresh generation" },
id: 1,
},
{
event: "ui_request",
data: { type: "ui_request", ui_request: descriptor },
id: 2,
},
]);
});