Brunobkr/llama.cpp_AlgMor24_github
ΩFFFΣLLIa • llama.cpp • AlgMor24 ██████╗ ███████╗███████╗███████╗██╗ ██╗ ██╗ █████╗ ██╔═══██╗██╔════╝██╔════╝██╔════╝██║ ██║ ██║██╔══██╗ ██║ ██║█████╗ █████╗ █████╗ ██║ ██║ ██║███████║ ██║ ██║██╔══╝ ██╔══╝ ██╔══╝ ██║ ██║ ██║██╔══██║ ╚██████╔╝██║ ██║ ███████╗███████╗███████╗██║██║ ██║ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝╚══════╝╚═╝╚═╝ ╚═╝ High-Performance LLM / VLM Inference & Autonomous Agentic Ecosystem… See the full description on the dataset page: https://huggingface.co/datasets/Brunobkr/llama.cpp_AlgMor24_github.
03.1k
1# eventsource-parser2 3[](https://www.npmjs.com/package/eventsource-parser)[](https://bundlephobia.com/result?p=eventsource-parser)[](https://www.npmjs.com/package/eventsource-parser)4 5A streaming parser for [server-sent events/eventsource](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events), without any assumptions about how the actual stream of data is retrieved. It is intended to be a building block for [clients](https://github.com/rexxars/eventsource-client) and polyfills in javascript environments such as browsers, node.js and deno.6 7If you are looking for a modern client implementation, see [eventsource-client](https://github.com/rexxars/eventsource-client).8 9You create an instance of the parser, and _feed_ it chunks of data - partial or complete, and the parse emits parsed messages once it receives a complete message. A [TransformStream variant](#stream-usage) is also available for environments that support it (modern browsers, Node 18 and higher).10 11Other modules in the EventSource family:12 13- [eventsource-client](https://github.com/rexxars/eventsource-client): modern, feature rich eventsource client for browsers, node.js, bun, deno and other modern JavaScript environments.14- [eventsource-encoder](https://github.com/rexxars/eventsource-encoder): encodes messages in the EventSource/Server-Sent Events format.15- [eventsource](https://github.com/eventsource/eventsource): Node.js polyfill for the WhatWG EventSource API.16 17> [!NOTE]18> Migrating from eventsource-parser 1.x/2.x? See the [migration guide](./MIGRATE-v3.md).19 20## Installation21 22```bash23npm install --save eventsource-parser24```25 26## Usage27 28```ts29import {createParser, type EventSourceMessage} from 'eventsource-parser'30 31function onEvent(event: EventSourceMessage) {32 console.log('Received event!')33 console.log('id: %s', event.id || '<none>')34 console.log('event: %s', event.event || '<none>')35 console.log('data: %s', event.data)36}37 38const parser = createParser({onEvent})39const sseStream = getSomeReadableStream()40 41for await (const chunk of sseStream) {42 parser.feed(chunk)43}44 45// If you want to re-use the parser for a new stream of events, make sure to reset it!46parser.reset()47console.log('Done!')48```49 50### Retry intervals51 52If the server sends a `retry` field in the event stream, the parser will call any `onRetry` callback specified to the `createParser` function:53 54```ts55const parser = createParser({56 onRetry(retryInterval) {57 console.log('Server requested retry interval of %dms', retryInterval)58 },59 onEvent(event) {60 // …61 },62})63```64 65### Parse errors66 67If the parser encounters an error while parsing, it will call any `onError` callback provided to the `createParser` function:68 69```ts70import {type ParseError} from 'eventsource-parser'71 72const parser = createParser({73 onError(error: ParseError) {74 console.error('Error parsing event:', error)75 if (error.type === 'invalid-field') {76 console.error('Field name:', error.field)77 console.error('Field value:', error.value)78 console.error('Line:', error.line)79 } else if (error.type === 'invalid-retry') {80 console.error('Invalid retry interval:', error.value)81 }82 },83 onEvent(event) {84 // …85 },86})87```88 89Note that `invalid-field` errors will usually be called for any invalid data - not only data shaped as `field: value`. This is because the EventSource specification says to treat anything prior to a `:` as the field name. Use the `error.line` property to get the full line that caused the error.90 91> [!NOTE]92> When encountering the end of a stream, calling `.reset({consume: true})` on the parser to flush any remaining data and reset the parser state. This will trigger the `onError` callback if the pending data is not a valid event.93 94### Comments95 96The parser will ignore comments (lines starting with `:`) by default. If you want to handle comments, you can provide an `onComment` callback to the `createParser` function:97 98```ts99const parser = createParser({100 onComment(comment) {101 console.log('Received comment:', comment)102 },103 onEvent(event) {104 // …105 },106})107```108 109> [!NOTE]110> Leading whitespace is not stripped from comments, eg `: comment` will give ` comment` as the comment value, not `comment` (note the leading space).111 112### Limiting buffered memory (`maxBufferSize`)113 114By default the parser buffers data indefinitely until a server completes an event. A server (or proxy) that never terminates a line, or that keeps appending `data:` lines without ever sending a blank line to dispatch the event, can therefore grow the parser's buffers without bound.115 116Pass a `maxBufferSize` (in characters) to `createParser` to cap this. If the combined size of the pending line buffer and the in-progress event's data buffer exceeds the limit, the parser emits a `ParseError` with `type: 'max-buffer-size-exceeded'` and becomes terminated: subsequent calls to `feed()` will throw until `reset()` is called.117 118```ts119const parser = createParser({120 maxBufferSize: 1024 * 1024, // 1 MB121 onEvent(event) {122 // …123 },124 onError(error) {125 if (error.type === 'max-buffer-size-exceeded') {126 // Stream peer is misbehaving — typically you'd close the connection.127 }128 },129})130```131 132The same option is available on the [stream variant](#stream-usage); the stream is always errored when this limit is exceeded, regardless of the `onError` setting (since the underlying parser is unrecoverable without a `reset()`).133 134## Stream usage135 136```ts137import {EventSourceParserStream} from 'eventsource-parser/stream'138 139const eventStream = response.body140 .pipeThrough(new TextDecoderStream())141 .pipeThrough(new EventSourceParserStream())142```143 144The stream constructor accepts a subset of the `createParser` options (`onComment`, `onRetry`, `maxBufferSize`) plus an `onError` that can either be a function or set to `'terminate'` to error the stream on parse errors. Events are delivered through the stream itself rather than via an `onEvent` callback:145 146```ts147new EventSourceParserStream({148 maxBufferSize: 1024 * 1024,149 onError: 'terminate',150})151```152 153Note that the TransformStream is exposed under a separate export (`eventsource-parser/stream`), in order to maximize compatibility with environments that do not have the `TransformStream` constructor available.154 155## License156 157MIT © [Espen Hovlandsdal](https://espen.codes/)158 