Download frontend/src/lib/api.test.js from kiyer/beacon: direct link, hf CLI and curl.
- Browser
- Download file 1.36 kB
-
https://huggingface.co/spaces/kiyer/beacon/resolve/main/frontend/src/lib/api.test.js
- Command line
-
hf download hf://spaces/kiyer/beacon/frontend/src/lib/api.test.js
-
curl -L -o api.test.js https://huggingface.co/spaces/kiyer/beacon/resolve/main/frontend/src/lib/api.test.js
1.36 kB
| import { describe, it, expect } from 'vitest'; | |
| import { parseSseChunk } from './api'; | |
| describe('parseSseChunk', () => { | |
| it('parses buffered SSE events and returns the remainder', () => { | |
| const { events, rest } = parseSseChunk( | |
| 'event: token\ndata: {"text":"He"}\n\nevent: token\ndata: {"text":"y"}\n\nevent: do'); | |
| expect(events).toEqual([ | |
| { event: 'token', data: { text: 'He' } }, | |
| { event: 'token', data: { text: 'y' } }, | |
| ]); | |
| expect(rest).toBe('event: do'); | |
| }); | |
| it('parses CRLF-framed events (sse-starlette sends \\r\\n line endings)', () => { | |
| const { events, rest } = parseSseChunk( | |
| 'event: stage\r\ndata: {"index":0,"status":"active"}\r\n\r\nevent: stage\r\ndata: {"index":0,"status":"done"}\r\n\r\nevent: re'); | |
| expect(events).toEqual([ | |
| { event: 'stage', data: { index: 0, status: 'active' } }, | |
| { event: 'stage', data: { index: 0, status: 'done' } }, | |
| ]); | |
| expect(rest).toBe('event: re'); | |
| }); | |
| it('holds a partial CRLF separator at a chunk boundary in the remainder', () => { | |
| const first = parseSseChunk('event: token\r\ndata: {"text":"x"}\r\n\r'); | |
| expect(first.events).toEqual([]); | |
| const second = parseSseChunk(first.rest + '\nevent: t'); | |
| expect(second.events).toEqual([{ event: 'token', data: { text: 'x' } }]); | |
| expect(second.rest).toBe('event: t'); | |
| }); | |
| }); | |