25 lines
942 B
TypeScript
25 lines
942 B
TypeScript
import assert from "node:assert/strict";
|
|
import { test } from "node:test";
|
|
import { parseSse } from "../src/lib/sse";
|
|
|
|
test("parseSse extracts event + data blocks separated by blank lines", () => {
|
|
const { messages, rest } = parseSse('event:message\ndata:{"a":1}\n\nevent:message\ndata:hello\n\n');
|
|
assert.equal(rest, "");
|
|
assert.equal(messages.length, 2);
|
|
assert.equal(messages[0].event, "message");
|
|
assert.equal(messages[0].data, '{"a":1}');
|
|
assert.equal(messages[1].data, "hello");
|
|
});
|
|
|
|
test("parseSse keeps a trailing partial event in rest", () => {
|
|
const { messages, rest } = parseSse("event:message\ndata:par");
|
|
assert.equal(messages.length, 0);
|
|
assert.equal(rest, "event:message\ndata:par");
|
|
});
|
|
|
|
test("parseSse joins multi-line data fields with newline", () => {
|
|
const { messages } = parseSse("data:line1\ndata:line2\n\n");
|
|
assert.equal(messages.length, 1);
|
|
assert.equal(messages[0].data, "line1\nline2");
|
|
});
|