@stackline/sse 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/CONTRIBUTING.md +45 -0
- package/LICENSE +21 -0
- package/NOTICE +6 -0
- package/README.md +340 -0
- package/SECURITY.md +35 -0
- package/dist/index.cjs +1560 -0
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.cts +293 -0
- package/dist/index.d.mts +293 -0
- package/dist/index.d.ts +293 -0
- package/dist/index.js +1539 -0
- package/dist/index.js.map +7 -0
- package/dist/index.min.js +13 -0
- package/dist/index.min.js.map +7 -0
- package/package.json +102 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/errors.js", "../src/parser.js", "../src/encoder.js", "../src/iterable.js", "../src/client.js", "../src/server.js", "../src/index.js"],
|
|
4
|
+
"sourcesContent": ["export class SSEError extends Error {\n constructor(message, code, details) {\n super(message);\n this.name = new.target.name;\n this.code = code;\n if (details && details.cause !== undefined) this.cause = details.cause;\n }\n}\n\nexport class SSEParseError extends SSEError {\n constructor(message, details = {}) {\n super(message, details.code || 'ERR_SSE_PARSE', details);\n this.fatal = details.fatal === true;\n if (details.field !== undefined) this.field = details.field;\n if (details.line !== undefined) this.line = details.line;\n if (details.limit !== undefined) this.limit = details.limit;\n }\n}\n\nexport class SSEEncodeError extends SSEError {\n constructor(message, field, cause) {\n super(message, 'ERR_SSE_ENCODE', { cause });\n this.field = field;\n }\n}\n\nexport class SSEHTTPError extends SSEError {\n constructor(message, response, code = 'ERR_SSE_HTTP') {\n super(message, code);\n this.response = response;\n this.status = response && typeof response.status === 'number' ? response.status : 0;\n }\n}\n\nexport class SSETimeoutError extends SSEError {\n constructor(phase, timeout, cause) {\n super(`SSE ${phase} timeout after ${timeout}ms`, 'ERR_SSE_TIMEOUT', { cause });\n this.phase = phase;\n this.timeout = timeout;\n }\n}\n\nexport class SSERetryError extends SSEError {\n constructor(attempts, cause) {\n super(`SSE retry budget exhausted after ${attempts} attempt${attempts === 1 ? '' : 's'}`, 'ERR_SSE_RETRY', { cause });\n this.attempts = attempts;\n }\n}\n\nexport class SSEReplayError extends SSEError {\n constructor() {\n super(\n 'The request body cannot be replayed. Provide bodyFactory or disable reconnection.',\n 'ERR_SSE_BODY_REPLAY'\n );\n }\n}\n", "import { SSEParseError } from './errors.js';\n\nconst DEFAULT_MAX_EVENT_SIZE = 1024 * 1024;\nconst DEFAULT_MAX_LINE_LENGTH = 1024 * 1024;\nconst LF = 10;\nconst CR = 13;\nconst SPACE = 32;\nconst BOM = 0xfeff;\nconst NUL = '\\0';\n\nconst noop = () => {};\n\nexport function createParser(config = {}) {\n if (typeof config === 'function') config = { onEvent: config };\n if (!config || typeof config !== 'object') {\n throw new TypeError('Parser configuration must be an object or event callback');\n }\n\n const onEvent = typeof config.onEvent === 'function' ? config.onEvent : noop;\n const onComment = typeof config.onComment === 'function' ? config.onComment : noop;\n const onRetry = typeof config.onRetry === 'function' ? config.onRetry : noop;\n const onError = typeof config.onError === 'function' ? config.onError : noop;\n const onId = typeof config.onId === 'function' ? config.onId : noop;\n const strict = config.strict === true;\n const fatalUTF8 = config.fatalUTF8 === true;\n const maxEventSize = readLimit(\n config.maxEventSize === undefined ? config.maxBufferSize : config.maxEventSize,\n DEFAULT_MAX_EVENT_SIZE,\n 'maxEventSize'\n );\n const maxLineLength = readLimit(\n config.maxLineLength,\n DEFAULT_MAX_LINE_LENGTH,\n 'maxLineLength'\n );\n\n let decoder;\n let inputMode;\n let lineFragments = [];\n let lineLength = 0;\n let skipLeadingLF = false;\n let atStart = true;\n let dataLines = [];\n let eventSize = 0;\n let eventType;\n let idBuffer = normalizeInitialId(config.lastEventId);\n let committedId = idBuffer;\n let hasPendingId = false;\n let terminated = false;\n let bytes = 0;\n let characters = 0;\n let events = 0;\n let comments = 0;\n let retries = 0;\n\n function feed(chunk) {\n if (terminated) {\n throw new SSEParseError('Parser is terminated; call reset() before feeding more data', {\n code: 'ERR_SSE_TERMINATED',\n fatal: true\n });\n }\n if (typeof chunk === 'string') {\n if (inputMode === 'bytes') {\n throw fatal('Cannot mix string and byte chunks in one parser stream', 'ERR_SSE_CHUNK_TYPE');\n }\n inputMode = 'string';\n characters += chunk.length;\n processText(chunk);\n return api;\n }\n if (!(chunk instanceof Uint8Array)) {\n throw new TypeError('SSE parser chunks must be strings or Uint8Array values');\n }\n if (inputMode === 'string') {\n throw fatal('Cannot mix string and byte chunks in one parser stream', 'ERR_SSE_CHUNK_TYPE');\n }\n inputMode = 'bytes';\n bytes += chunk.byteLength;\n let text;\n try {\n text = getDecoder().decode(chunk, { stream: true });\n } catch (error) {\n if (error instanceof SSEParseError) throw error;\n throw fatal('Invalid UTF-8 in the SSE stream', 'ERR_SSE_UTF8', { cause: error });\n }\n characters += text.length;\n processText(text);\n return api;\n }\n\n function end() {\n if (terminated) return api;\n if (decoder) {\n try {\n const tail = decoder.decode();\n characters += tail.length;\n processText(tail);\n } catch (error) {\n throw fatal('Invalid UTF-8 at the end of the SSE stream', 'ERR_SSE_UTF8', { cause: error });\n }\n }\n discardPendingEvent();\n clearLine();\n return api;\n }\n\n function reset(options = {}) {\n if (options && options.consume && lineLength > 0) processLine(joinLine());\n const preserve = Boolean(options && options.preserveLastEventId);\n const nextId = preserve ? committedId : normalizeInitialId(config.lastEventId);\n decoder = undefined;\n inputMode = undefined;\n lineFragments = [];\n lineLength = 0;\n skipLeadingLF = false;\n atStart = true;\n dataLines = [];\n eventSize = 0;\n eventType = undefined;\n idBuffer = nextId;\n committedId = nextId;\n hasPendingId = false;\n terminated = false;\n bytes = 0;\n characters = 0;\n events = 0;\n comments = 0;\n retries = 0;\n return api;\n }\n\n function processText(input) {\n let text = input;\n if (atStart && text.length > 0) {\n atStart = false;\n if (text.charCodeAt(0) === BOM) text = text.slice(1);\n }\n if (text.length === 0) return;\n\n if (!skipLeadingLF && text.indexOf('\\r') === -1) {\n processLFText(text);\n return;\n }\n\n let index = 0;\n let segmentStart = 0;\n if (skipLeadingLF) {\n skipLeadingLF = false;\n if (text.charCodeAt(0) === LF) {\n index = 1;\n segmentStart = 1;\n }\n }\n\n for (; index < text.length; index++) {\n const code = text.charCodeAt(index);\n if (code !== LF && code !== CR) continue;\n appendLine(text.slice(segmentStart, index));\n processLine(joinLine());\n clearLine();\n if (code === CR) {\n if (text.charCodeAt(index + 1) === LF) index++;\n else if (index + 1 === text.length) skipLeadingLF = true;\n }\n segmentStart = index + 1;\n }\n appendLine(text.slice(segmentStart));\n }\n\n function processLFText(text) {\n let start = 0;\n let end = text.indexOf('\\n');\n while (end !== -1) {\n if (\n lineLength === 0 &&\n dataLines.length === 0 &&\n text.charCodeAt(end + 1) === LF &&\n isDataPrefix(text, start)\n ) {\n const valueStart = text.charCodeAt(start + 5) === SPACE ? start + 6 : start + 5;\n const value = text.slice(valueStart, end);\n if (end - start > maxLineLength) {\n throw fatal(`SSE line exceeded ${maxLineLength} characters`, 'ERR_SSE_LINE_LIMIT', {\n limit: maxLineLength\n });\n }\n addEventSize(value.length + 1);\n dispatchSingleData(value);\n start = end + 2;\n end = text.indexOf('\\n', start);\n continue;\n }\n if (lineLength > 0) {\n appendLine(text.slice(start, end));\n processLine(joinLine());\n clearLine();\n } else {\n const length = end - start;\n if (length > maxLineLength) {\n throw fatal(`SSE line exceeded ${maxLineLength} characters`, 'ERR_SSE_LINE_LIMIT', {\n limit: maxLineLength\n });\n }\n processLine(text.slice(start, end));\n }\n start = end + 1;\n end = text.indexOf('\\n', start);\n }\n appendLine(text.slice(start));\n }\n\n function appendLine(fragment) {\n if (!fragment) return;\n lineFragments.push(fragment);\n lineLength += fragment.length;\n if (lineLength > maxLineLength) {\n throw fatal(`SSE line exceeded ${maxLineLength} characters`, 'ERR_SSE_LINE_LIMIT', {\n limit: maxLineLength\n });\n }\n }\n\n function joinLine() {\n if (lineFragments.length === 0) return '';\n if (lineFragments.length === 1) return lineFragments[0];\n return lineFragments.join('');\n }\n\n function clearLine() {\n lineFragments = [];\n lineLength = 0;\n }\n\n function processLine(line) {\n if (line.length === 0) {\n dispatchEvent();\n return;\n }\n if (line.charCodeAt(0) === 58) {\n comments++;\n onComment(line.slice(line.charCodeAt(1) === SPACE ? 2 : 1));\n return;\n }\n\n const first = line.charCodeAt(0);\n if (\n first === 100 &&\n line.charCodeAt(1) === 97 &&\n line.charCodeAt(2) === 116 &&\n line.charCodeAt(3) === 97 &&\n line.charCodeAt(4) === 58\n ) {\n const start = line.charCodeAt(5) === SPACE ? 6 : 5;\n const value = line.slice(start);\n addEventSize(value.length + 1);\n dataLines.push(value);\n return;\n }\n if (\n first === 101 &&\n line.charCodeAt(1) === 118 &&\n line.charCodeAt(2) === 101 &&\n line.charCodeAt(3) === 110 &&\n line.charCodeAt(4) === 116 &&\n line.charCodeAt(5) === 58\n ) {\n const start = line.charCodeAt(6) === SPACE ? 7 : 6;\n const value = line.slice(start);\n addEventSize(value.length);\n eventType = value || undefined;\n return;\n }\n if (first === 105 && line.charCodeAt(1) === 100 && line.charCodeAt(2) === 58) {\n const start = line.charCodeAt(3) === SPACE ? 4 : 3;\n const value = line.slice(start);\n if (value.indexOf(NUL) === -1) {\n addEventSize(value.length);\n idBuffer = value;\n hasPendingId = true;\n }\n return;\n }\n if (\n first === 114 &&\n line.charCodeAt(1) === 101 &&\n line.charCodeAt(2) === 116 &&\n line.charCodeAt(3) === 114 &&\n line.charCodeAt(4) === 121 &&\n line.charCodeAt(5) === 58\n ) {\n const start = line.charCodeAt(6) === SPACE ? 7 : 6;\n processRetry(line.slice(start), line);\n return;\n }\n\n const separator = line.indexOf(':');\n const field = separator === -1 ? line : line.slice(0, separator);\n let value = separator === -1 ? '' : line.slice(separator + 1);\n if (value.charCodeAt(0) === SPACE) value = value.slice(1);\n\n switch (field) {\n case 'data':\n addEventSize(value.length + 1);\n dataLines.push(value);\n break;\n case 'event':\n addEventSize(value.length);\n eventType = value || undefined;\n break;\n case 'id':\n if (value.indexOf(NUL) === -1) {\n addEventSize(value.length);\n idBuffer = value;\n hasPendingId = true;\n }\n break;\n case 'retry':\n processRetry(value, line);\n break;\n default:\n if (strict) recoverable(`Unknown SSE field \"${truncate(field)}\"`, 'ERR_SSE_UNKNOWN_FIELD', {\n field,\n line\n });\n }\n }\n\n function processRetry(value, line) {\n if (!isAsciiDigits(value)) {\n if (strict) recoverable(`Invalid SSE retry value \"${truncate(value)}\"`, 'ERR_SSE_RETRY_VALUE', {\n field: 'retry',\n line\n });\n return;\n }\n const number = Number(value);\n if (!Number.isSafeInteger(number)) {\n if (strict) recoverable('SSE retry value exceeds the safe integer range', 'ERR_SSE_RETRY_VALUE', {\n field: 'retry',\n line\n });\n return;\n }\n retries++;\n onRetry(number);\n }\n\n function dispatchEvent() {\n const eventId = hasPendingId ? idBuffer : undefined;\n if (hasPendingId) {\n committedId = idBuffer;\n hasPendingId = false;\n onId(committedId);\n }\n if (dataLines.length === 0) {\n eventType = undefined;\n eventSize = 0;\n return;\n }\n const event = {\n data: dataLines.join('\\n'),\n id: eventId,\n event: eventType,\n lastEventId: committedId\n };\n events++;\n dataLines = [];\n eventType = undefined;\n eventSize = 0;\n onEvent(event);\n }\n\n function dispatchSingleData(data) {\n const eventId = hasPendingId ? idBuffer : undefined;\n if (hasPendingId) {\n committedId = idBuffer;\n hasPendingId = false;\n onId(committedId);\n }\n const event = {\n data,\n id: eventId,\n event: eventType,\n lastEventId: committedId\n };\n events++;\n eventType = undefined;\n eventSize = 0;\n onEvent(event);\n }\n\n function addEventSize(amount) {\n eventSize += amount;\n if (eventSize > maxEventSize) {\n throw fatal(`SSE event exceeded ${maxEventSize} characters`, 'ERR_SSE_EVENT_LIMIT', {\n limit: maxEventSize\n });\n }\n }\n\n function discardPendingEvent() {\n dataLines = [];\n eventType = undefined;\n eventSize = 0;\n hasPendingId = false;\n idBuffer = committedId;\n }\n\n function getDecoder() {\n if (!decoder) {\n if (typeof TextDecoder !== 'function') {\n throw fatal('TextDecoder is required for byte chunks', 'ERR_SSE_TEXT_DECODER');\n }\n decoder = new TextDecoder('utf-8', { fatal: fatalUTF8 });\n }\n return decoder;\n }\n\n function recoverable(message, code, details) {\n const error = new SSEParseError(message, { ...details, code, fatal: false });\n onError(error);\n return error;\n }\n\n function fatal(message, code, details = {}) {\n terminated = true;\n lineFragments = [];\n lineLength = 0;\n dataLines = [];\n eventType = undefined;\n eventSize = 0;\n const error = new SSEParseError(message, { ...details, code, fatal: true });\n onError(error);\n return error;\n }\n\n const api = {\n feed,\n end,\n reset,\n get state() {\n return Object.freeze({\n buffered: lineLength + eventSize,\n bytes,\n characters,\n comments,\n events,\n lastEventId: committedId,\n retries,\n terminated\n });\n }\n };\n\n return api;\n}\n\nfunction readLimit(value, fallback, name) {\n const limit = value === undefined ? fallback : value;\n if (!Number.isSafeInteger(limit) || limit < 1) {\n throw new RangeError(`${name} must be a positive safe integer`);\n }\n return limit;\n}\n\nfunction normalizeInitialId(value) {\n if (value === undefined || value === null) return '';\n if (typeof value !== 'string') throw new TypeError('lastEventId must be a string');\n if (value.indexOf(NUL) !== -1 || value.indexOf('\\r') !== -1 || value.indexOf('\\n') !== -1) {\n throw new TypeError('lastEventId cannot contain NUL, CR or LF');\n }\n return value;\n}\n\nfunction isAsciiDigits(value) {\n if (value.length === 0) return false;\n for (let index = 0; index < value.length; index++) {\n const code = value.charCodeAt(index);\n if (code < 48 || code > 57) return false;\n }\n return true;\n}\n\nfunction truncate(value) {\n return value.length > 80 ? `${value.slice(0, 80)}...` : value;\n}\n\nfunction isDataPrefix(value, index) {\n return (\n value.charCodeAt(index) === 100 &&\n value.charCodeAt(index + 1) === 97 &&\n value.charCodeAt(index + 2) === 116 &&\n value.charCodeAt(index + 3) === 97 &&\n value.charCodeAt(index + 4) === 58\n );\n}\n", "import { SSEEncodeError } from './errors.js';\n\nexport const EVENT_STREAM_CONTENT_TYPE = 'text/event-stream';\nexport const EventStreamContentType = EVENT_STREAM_CONTENT_TYPE;\n\nexport function encodeSSE(message, options = {}) {\n if (!message || typeof message !== 'object') {\n throw new TypeError('SSE message must be an object');\n }\n const newline = options.newline === undefined ? '\\n' : options.newline;\n if (newline !== '\\n' && newline !== '\\r\\n') {\n throw new SSEEncodeError('newline must be \"\\\\n\" or \"\\\\r\\\\n\"', 'newline');\n }\n\n const lines = [];\n if (message.comment !== undefined) {\n for (const line of splitLines(toText(message.comment, 'comment'))) lines.push(`:${line ? ` ${line}` : ''}`);\n }\n if (message.event !== undefined && message.event !== '') {\n const value = toText(message.event, 'event');\n assertSingleLine(value, 'event', false);\n lines.push(`event: ${value}`);\n }\n if (message.id !== undefined) {\n const value = toText(message.id, 'id');\n assertSingleLine(value, 'id', true);\n lines.push(`id: ${value}`);\n }\n if (message.retry !== undefined) {\n if (!Number.isSafeInteger(message.retry) || message.retry < 0) {\n throw new SSEEncodeError('retry must be a non-negative safe integer', 'retry');\n }\n lines.push(`retry: ${message.retry}`);\n }\n if (message.data !== undefined) {\n for (const line of splitLines(toText(message.data, 'data'))) lines.push(`data: ${line}`);\n }\n if (lines.length === 0) {\n throw new SSEEncodeError('SSE message must contain data, comment, event, id or retry', 'message');\n }\n return `${lines.join(newline)}${newline}${newline}`;\n}\n\nexport const encode = encodeSSE;\n\nexport function encodeJSON(data, fields = {}, options = {}) {\n let encoded;\n try {\n encoded = JSON.stringify(data, options.replacer);\n } catch (error) {\n throw new SSEEncodeError('Unable to encode SSE JSON data', 'data', error);\n }\n if (encoded === undefined) {\n throw new SSEEncodeError('JSON data cannot be undefined, a function or a symbol', 'data');\n }\n return encodeSSE({ ...fields, data: encoded }, options);\n}\n\nexport function encodeComment(comment, options = {}) {\n return encodeSSE({ comment }, options);\n}\n\nexport function createEncoderStream(options = {}) {\n const Transform = getTransformStream();\n const bytes = options.bytes !== false;\n const encoder = bytes ? getTextEncoder() : null;\n return new Transform({\n transform(message, controller) {\n const output = options.json === true\n ? encodeJSON(message.data, message, options)\n : encodeSSE(message, options);\n controller.enqueue(encoder ? encoder.encode(output) : output);\n }\n });\n}\n\nfunction splitLines(value) {\n const lines = [];\n let start = 0;\n for (let index = 0; index < value.length; index++) {\n const code = value.charCodeAt(index);\n if (code !== 10 && code !== 13) continue;\n lines.push(value.slice(start, index));\n if (code === 13 && value.charCodeAt(index + 1) === 10) index++;\n start = index + 1;\n }\n lines.push(value.slice(start));\n return lines;\n}\n\nfunction toText(value, field) {\n if (typeof value === 'string') return value;\n if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {\n return String(value);\n }\n throw new SSEEncodeError(`${field} must be a string or primitive value`, field);\n}\n\nfunction assertSingleLine(value, field, rejectNul) {\n if (value.indexOf('\\r') !== -1 || value.indexOf('\\n') !== -1 || (rejectNul && value.indexOf('\\0') !== -1)) {\n throw new SSEEncodeError(`${field} contains a forbidden control character`, field);\n }\n}\n\nfunction getTransformStream() {\n if (typeof TransformStream !== 'function') {\n throw new Error('TransformStream is not available in this runtime');\n }\n return TransformStream;\n}\n\nfunction getTextEncoder() {\n if (typeof TextEncoder !== 'function') throw new Error('TextEncoder is not available in this runtime');\n return new TextEncoder();\n}\n", "import { SSEParseError } from './errors.js';\nimport { createParser } from './parser.js';\n\nconst DEFAULT_FEED_SIZE = 16 * 1024;\nconst DEFAULT_MAX_QUEUED_EVENTS = 4096;\n\nexport async function* decodeSSE(source, options = {}) {\n const signal = options.signal;\n const feedSize = readPositive(options.feedSize, DEFAULT_FEED_SIZE, 'feedSize');\n const maxQueuedEvents = readPositive(\n options.maxQueuedEvents,\n DEFAULT_MAX_QUEUED_EVENTS,\n 'maxQueuedEvents'\n );\n const queue = [];\n const parserOptions = options.parser || options;\n const userOnEvent = parserOptions.onEvent;\n const parser = createParser({\n ...parserOptions,\n onEvent(event) {\n if (queue.length >= maxQueuedEvents) {\n throw new SSEParseError(`Queued SSE events exceeded ${maxQueuedEvents}`, {\n code: 'ERR_SSE_QUEUE_LIMIT',\n fatal: true,\n limit: maxQueuedEvents\n });\n }\n queue.push(event);\n if (typeof userOnEvent === 'function') userOnEvent(event);\n }\n });\n const iterable = toAsyncIterable(source);\n const iterator = iterable[Symbol.asyncIterator]();\n\n try {\n while (true) {\n throwIfAborted(signal);\n const item = await nextWithAbort(iterator, signal);\n if (item.done) break;\n const chunk = item.value;\n if (typeof options.onChunk === 'function') options.onChunk(chunk);\n if (typeof chunk !== 'string' && !(chunk instanceof Uint8Array)) {\n throw new TypeError('SSE stream chunks must be strings or Uint8Array values');\n }\n for (let offset = 0; offset < chunk.length; offset += feedSize) {\n parser.feed(chunk.slice(offset, offset + feedSize));\n for (let index = 0; index < queue.length; index++) yield queue[index];\n queue.length = 0;\n throwIfAborted(signal);\n }\n }\n parser.end();\n for (let index = 0; index < queue.length; index++) yield queue[index];\n } finally {\n await closeIterator(iterator, signal);\n }\n}\n\nexport async function* decodeJSON(source, options = {}) {\n const doneSentinel = options.doneSentinel === undefined ? '[DONE]' : options.doneSentinel;\n for await (const event of decodeSSE(source, options)) {\n if (doneSentinel !== false && event.data === doneSentinel) return;\n try {\n yield { ...event, data: JSON.parse(event.data, options.reviver) };\n } catch (cause) {\n if (options.ignoreInvalidJSON === true) continue;\n throw new SSEParseError('SSE event data is not valid JSON', {\n code: 'ERR_SSE_JSON',\n fatal: true,\n cause\n });\n }\n }\n}\n\nexport function createDecoderStream(options = {}) {\n if (typeof TransformStream !== 'function') {\n throw new Error('TransformStream is not available in this runtime');\n }\n let controller;\n const parser = createParser({\n ...(options.parser || options),\n onEvent(event) {\n controller.enqueue(event);\n const callback = (options.parser || options).onEvent;\n if (typeof callback === 'function') callback(event);\n }\n });\n return new TransformStream({\n start(value) {\n controller = value;\n },\n transform(chunk) {\n parser.feed(chunk);\n },\n flush() {\n parser.end();\n }\n });\n}\n\nexport function toAsyncIterable(source) {\n const value = source && source.body ? source.body : source;\n if (!value) throw new TypeError('An SSE stream source is required');\n if (typeof value[Symbol.asyncIterator] === 'function') return value;\n if (typeof value.getReader === 'function') return webStreamIterable(value);\n if (typeof value[Symbol.iterator] === 'function') return syncToAsync(value);\n throw new TypeError('Source must be a Response, ReadableStream, AsyncIterable or Iterable');\n}\n\nasync function* webStreamIterable(stream) {\n const reader = stream.getReader();\n try {\n while (true) {\n const item = await reader.read();\n if (item.done) return;\n yield item.value;\n }\n } finally {\n try {\n await reader.cancel();\n } catch {\n // The stream may already be closed or errored.\n }\n if (typeof reader.releaseLock === 'function') reader.releaseLock();\n }\n}\n\nasync function* syncToAsync(iterable) {\n yield* iterable;\n}\n\nfunction throwIfAborted(signal) {\n if (!signal || !signal.aborted) return;\n if (signal.reason instanceof Error) throw signal.reason;\n const error = new Error('The operation was aborted');\n error.name = 'AbortError';\n throw error;\n}\n\nfunction nextWithAbort(iterator, signal) {\n if (!signal) return iterator.next();\n throwIfAborted(signal);\n return new Promise((resolve, reject) => {\n const cleanup = () => signal.removeEventListener('abort', abort);\n const abort = () => {\n cleanup();\n try {\n throwIfAborted(signal);\n } catch (error) {\n reject(error);\n }\n };\n signal.addEventListener('abort', abort, { once: true });\n if (signal.aborted) {\n abort();\n return;\n }\n Promise.resolve(iterator.next()).then(\n (item) => {\n cleanup();\n resolve(item);\n },\n (error) => {\n cleanup();\n reject(error);\n }\n );\n });\n}\n\nasync function closeIterator(iterator, signal) {\n if (typeof iterator.return !== 'function') return;\n try {\n const result = iterator.return();\n if (!signal || !signal.aborted) await result;\n else Promise.resolve(result).catch(() => {});\n } catch (error) {\n if (!signal || !signal.aborted) throw error;\n }\n}\n\nfunction readPositive(value, fallback, name) {\n const number = value === undefined ? fallback : value;\n if (!Number.isSafeInteger(number) || number < 1) {\n throw new RangeError(`${name} must be a positive safe integer`);\n }\n return number;\n}\n", "import {\n SSEError,\n SSEHTTPError,\n SSEReplayError,\n SSERetryError,\n SSETimeoutError\n} from './errors.js';\nimport { EVENT_STREAM_CONTENT_TYPE } from './encoder.js';\nimport { decodeSSE } from './iterable.js';\n\nconst RETRYABLE_STATUS = new Set([408, 425, 429, 500, 502, 503, 504]);\n\nexport async function* fetchSSE(input, options = {}) {\n const fetchImpl = options.fetch === undefined ? globalThis.fetch : options.fetch;\n if (typeof fetchImpl !== 'function') {\n throw new TypeError('No fetch implementation is available; pass options.fetch');\n }\n const retry = normalizeRetry(options.retry);\n const connectTimeout = readOptionalDelay(options.connectTimeout, 'connectTimeout');\n const idleTimeout = readOptionalDelay(options.idleTimeout, 'idleTimeout');\n const totalTimeout = readOptionalDelay(options.totalTimeout, 'totalTimeout');\n const externalSignal = options.signal;\n const requestInit = omitClientOptions(options);\n const originalBody = requestInit.body;\n const bodyReplayable = isReplayableBody(originalBody);\n let lastEventId = validateLastEventId(\n options.lastEventId === undefined ? '' : options.lastEventId\n );\n let serverRetry;\n let attempts = 0;\n let reconnects = 0;\n let lastError;\n let stopped = false;\n const startedAt = monotonicNow();\n\n while (!stopped) {\n attempts++;\n throwIfAborted(externalSignal);\n if (attempts > 1 && !bodyReplayable && typeof options.bodyFactory !== 'function') {\n throw new SSEReplayError();\n }\n\n const attempt = createAttemptController(externalSignal);\n let response;\n let timeoutPhase;\n let connectTimer;\n let idleTimer;\n let totalTimer;\n let fetchStarted = false;\n let retryDelayOverride;\n try {\n if (totalTimeout) {\n const remaining = totalTimeout - (monotonicNow() - startedAt);\n if (remaining <= 0) throw new SSETimeoutError('total', totalTimeout);\n totalTimer = setTimer(() => {\n timeoutPhase = 'total';\n attempt.abort();\n }, remaining);\n }\n if (connectTimeout) {\n connectTimer = setTimer(() => {\n timeoutPhase = 'connect';\n attempt.abort();\n }, connectTimeout);\n }\n\n let body = originalBody;\n if (typeof options.bodyFactory === 'function') {\n try {\n body = await waitForAbort(\n options.bodyFactory({\n attempt: attempts,\n lastEventId,\n signal: attempt.controller.signal\n }),\n attempt.controller.signal\n );\n } catch (cause) {\n throw new SSEError('SSE bodyFactory failed', 'ERR_SSE_BODY_FACTORY', { cause });\n }\n }\n const sourceHeaders = requestInit.headers === undefined && input && input.headers\n ? input.headers\n : requestInit.headers;\n const init = {\n ...requestInit,\n body,\n cache: requestInit.cache === undefined ? 'no-store' : requestInit.cache,\n headers: mergeSSEHeaders(sourceHeaders, lastEventId),\n signal: attempt.controller.signal\n };\n const attemptInput = cloneInput(input);\n fetchStarted = true;\n response = await waitForAbort(\n fetchImpl(attemptInput, init),\n attempt.controller.signal,\n cancelResponseBody\n );\n clearTimer(connectTimer);\n connectTimer = undefined;\n\n if (!response || typeof response.status !== 'number') {\n throw new SSEError('fetch returned an invalid Response-like value', 'ERR_SSE_RESPONSE');\n }\n\n if (response.status === 204) {\n stopped = true;\n if (typeof options.onClose === 'function') {\n await callHook(\n options.onClose,\n [{ attempts, lastEventId, reason: 'server', reconnects, response }],\n 'onClose'\n );\n }\n return;\n }\n validateResponse(response);\n if (typeof options.onOpen === 'function') {\n const result = await callHook(\n options.onOpen,\n [response, { attempts, lastEventId, reconnects }],\n 'onOpen'\n );\n if (result === false) {\n await cancelResponseBody(response);\n return;\n }\n }\n\n const resetIdle = () => {\n if (!idleTimeout) return;\n clearTimer(idleTimer);\n idleTimer = setTimer(() => {\n timeoutPhase = 'idle';\n attempt.abort();\n }, idleTimeout);\n };\n resetIdle();\n\n const parserOptions = options.parser || {};\n const userOnId = parserOptions.onId;\n const userOnRetry = parserOptions.onRetry;\n for await (const event of decodeSSE(response.body, {\n ...options.decode,\n signal: attempt.controller.signal,\n onChunk(chunk) {\n resetIdle();\n if (options.decode && typeof options.decode.onChunk === 'function') {\n options.decode.onChunk(chunk);\n }\n },\n parser: {\n ...parserOptions,\n lastEventId,\n onId(id) {\n lastEventId = id;\n if (typeof userOnId === 'function') userOnId(id);\n },\n onRetry(delay) {\n serverRetry = delay;\n if (typeof userOnRetry === 'function') userOnRetry(delay);\n }\n }\n })) {\n lastEventId = event.lastEventId;\n if (typeof options.onEvent === 'function') {\n await callHook(\n options.onEvent,\n [event, { attempts, lastEventId, reconnects, response }],\n 'onEvent'\n );\n }\n yield event;\n }\n clearTimer(idleTimer);\n lastError = undefined;\n } catch (caught) {\n clearTimer(connectTimer);\n clearTimer(idleTimer);\n clearTimer(totalTimer);\n if (externalSignal && externalSignal.aborted) throw abortReason(externalSignal);\n if (timeoutPhase) {\n lastError = new SSETimeoutError(timeoutPhase, options[`${timeoutPhase}Timeout`], caught);\n } else {\n lastError = caught;\n }\n await cancelResponseBody(response);\n if (typeof options.onError === 'function') {\n const decision = await callHook(\n options.onError,\n [{ attempt: attempts, error: lastError, lastEventId, reconnects, response }],\n 'onError'\n );\n if (decision === false) throw lastError;\n if (typeof decision === 'number') retryDelayOverride = decision;\n }\n if (!shouldRetryError(lastError, response, retry, fetchStarted)) throw lastError;\n } finally {\n clearTimer(totalTimer);\n await cancelResponseBody(response);\n attempt.dispose();\n }\n\n if (reconnects >= retry.retries) {\n if (!lastError) {\n if (typeof options.onClose === 'function') {\n await callHook(\n options.onClose,\n [{ attempts, lastEventId, reason: 'eof', reconnects, response }],\n 'onClose'\n );\n }\n return;\n }\n if (retry.retries === 0) throw lastError;\n throw new SSERetryError(attempts, lastError);\n }\n reconnects++;\n let delay = retryDelay(response, serverRetry, reconnects, retry);\n if (retryDelayOverride !== undefined) delay = clampDelay(retryDelayOverride, retry.maxDelay);\n const context = {\n attempt: attempts,\n delay,\n error: lastError,\n lastEventId,\n reconnects,\n response\n };\n if (typeof options.onRetry === 'function') {\n const decision = await callHook(options.onRetry, [context], 'onRetry');\n if (decision === false) return;\n if (typeof decision === 'number') delay = clampDelay(decision, retry.maxDelay);\n }\n await sleep(delay, externalSignal, totalTimeout, startedAt);\n }\n}\n\nexport async function consumeSSE(input, options = {}) {\n let count = 0;\n let lastEventId = options.lastEventId || '';\n for await (const event of fetchSSE(input, options)) {\n count++;\n lastEventId = event.lastEventId;\n }\n return { events: count, lastEventId };\n}\n\nexport async function fetchEventSource(input, options = {}) {\n const mapped = {\n ...options,\n onOpen: options.onopen || options.onOpen,\n onEvent: options.onmessage || options.onEvent,\n onClose: options.onclose || options.onClose,\n async onError(context) {\n if (typeof options.onerror !== 'function') {\n return typeof options.onError === 'function' ? options.onError(context) : undefined;\n }\n const decision = await options.onerror(context.error);\n return decision === undefined ? true : decision;\n },\n async onRetry(context) {\n if (typeof options.onRetry === 'function') return options.onRetry(context);\n return undefined;\n }\n };\n return consumeSSE(input, mapped);\n}\n\nfunction normalizeRetry(value) {\n const input = value === false ? { retries: 0 } : typeof value === 'number' ? { retries: value } : value || {};\n const retries = input.retries === undefined ? Infinity : input.retries;\n if (retries !== Infinity && (!Number.isSafeInteger(retries) || retries < 0)) {\n throw new RangeError('retry.retries must be a non-negative safe integer or Infinity');\n }\n const minDelay = readDelay(input.minDelay, 1000, 'retry.minDelay');\n const maxDelay = readDelay(input.maxDelay, 30000, 'retry.maxDelay');\n const factor = input.factor === undefined ? 2 : input.factor;\n if (!Number.isFinite(factor) || factor < 1) throw new RangeError('retry.factor must be at least 1');\n return {\n retries,\n minDelay,\n maxDelay: Math.max(minDelay, maxDelay),\n factor,\n jitter: input.jitter === undefined ? 'full' : input.jitter,\n statusCodes: new Set(input.statusCodes || RETRYABLE_STATUS),\n shouldRetry: input.shouldRetry\n };\n}\n\nfunction validateResponse(response) {\n if (response.status !== 200) {\n throw new SSEHTTPError(`SSE endpoint responded with HTTP ${response.status}`, response);\n }\n const contentType = response.headers && typeof response.headers.get === 'function'\n ? response.headers.get('content-type')\n : null;\n if (!contentType || contentType.split(';', 1)[0].trim().toLowerCase() !== EVENT_STREAM_CONTENT_TYPE) {\n throw new SSEHTTPError(\n `Expected Content-Type ${EVENT_STREAM_CONTENT_TYPE}; received ${contentType || 'none'}`,\n response,\n 'ERR_SSE_CONTENT_TYPE'\n );\n }\n if (!response.body) throw new SSEHTTPError('SSE response has no readable body', response);\n}\n\nfunction shouldRetryError(error, response, retry, fetchStarted) {\n if (typeof retry.shouldRetry === 'function') return retry.shouldRetry({ error, response }) === true;\n if (error && error.code === 'ERR_SSE_CONTENT_TYPE') return false;\n if (!error) return false;\n if (error.code === 'ERR_SSE_TIMEOUT') return true;\n if (response && response.status !== 200) return retry.statusCodes.has(response.status);\n if (!fetchStarted) return false;\n return error.name === 'TypeError' || NETWORK_ERROR_CODES.has(error.code);\n}\n\nfunction retryDelay(response, serverRetry, reconnects, options) {\n const header = response && response.headers && typeof response.headers.get === 'function'\n ? response.headers.get('retry-after')\n : null;\n const fromHeader = parseRetryAfter(header);\n if (fromHeader !== undefined) return clampDelay(fromHeader, options.maxDelay);\n if (serverRetry !== undefined) return clampDelay(serverRetry, options.maxDelay);\n const exponential = Math.min(\n options.maxDelay,\n options.minDelay * Math.pow(options.factor, reconnects - 1)\n );\n if (options.jitter === false || options.jitter === 'none') return exponential;\n if (typeof options.jitter === 'function') return clampDelay(options.jitter(exponential), options.maxDelay);\n return Math.floor(Math.random() * (exponential + 1));\n}\n\nfunction parseRetryAfter(value) {\n if (!value) return undefined;\n const seconds = Number(value);\n if (Number.isFinite(seconds) && seconds >= 0) return Math.round(seconds * 1000);\n const date = Date.parse(value);\n if (Number.isNaN(date)) return undefined;\n return Math.max(0, date - Date.now());\n}\n\nfunction mergeSSEHeaders(input, lastEventId) {\n const entries = [];\n if (input && typeof input[Symbol.iterator] === 'function' && typeof input !== 'string') {\n for (const pair of input) setHeader(entries, pair[0], pair[1]);\n } else if (input && typeof input.forEach === 'function') {\n input.forEach((value, key) => setHeader(entries, key, value));\n } else if (input && typeof input === 'object') {\n for (const key of Object.keys(input)) setHeader(entries, key, input[key]);\n }\n if (!hasHeader(entries, 'accept')) setHeader(entries, 'Accept', EVENT_STREAM_CONTENT_TYPE);\n if (lastEventId) setHeader(entries, 'Last-Event-ID', lastEventId);\n else deleteHeader(entries, 'last-event-id');\n return entries;\n}\n\nfunction setHeader(entries, key, value) {\n const name = String(key);\n deleteHeader(entries, name);\n entries.push([name, String(value)]);\n}\n\nfunction deleteHeader(entries, name) {\n const lower = String(name).toLowerCase();\n for (let index = entries.length - 1; index >= 0; index--) {\n if (entries[index][0].toLowerCase() === lower) entries.splice(index, 1);\n }\n}\n\nfunction hasHeader(entries, name) {\n const lower = name.toLowerCase();\n return entries.some((entry) => entry[0].toLowerCase() === lower);\n}\n\nfunction omitClientOptions(options) {\n const output = {};\n const privateKeys = new Set([\n 'bodyFactory', 'connectTimeout', 'decode', 'fetch', 'idleTimeout', 'lastEventId',\n 'onClose', 'onError', 'onEvent', 'onOpen', 'onRetry', 'onclose', 'onerror',\n 'onmessage', 'onopen', 'openWhenHidden', 'parser', 'retry', 'totalTimeout'\n ]);\n for (const key of Object.keys(options)) if (!privateKeys.has(key)) output[key] = options[key];\n return output;\n}\n\nfunction isReplayableBody(body) {\n if (body === undefined || body === null) return true;\n if (typeof body === 'string') return true;\n if (body instanceof ArrayBuffer || ArrayBuffer.isView(body)) return true;\n if (typeof URLSearchParams === 'function' && body instanceof URLSearchParams) return true;\n if (typeof Blob === 'function' && body instanceof Blob) return true;\n if (typeof FormData === 'function' && body instanceof FormData) return true;\n return !(typeof body.getReader === 'function' || typeof body[Symbol.asyncIterator] === 'function');\n}\n\nfunction cloneInput(input) {\n if (input && typeof input === 'object' && typeof input.clone === 'function') return input.clone();\n return input;\n}\n\nfunction validateLastEventId(value) {\n if (typeof value !== 'string') throw new TypeError('lastEventId must be a string');\n if (value.indexOf('\\0') !== -1 || value.indexOf('\\r') !== -1 || value.indexOf('\\n') !== -1) {\n throw new TypeError('lastEventId cannot contain NUL, CR or LF');\n }\n return value;\n}\n\nfunction createAttemptController(signal) {\n if (typeof AbortController !== 'function') throw new Error('AbortController is not available');\n const controller = new AbortController();\n const forward = () => controller.abort();\n if (signal) signal.addEventListener('abort', forward, { once: true });\n if (signal && signal.aborted) controller.abort();\n return {\n controller,\n abort() {\n controller.abort();\n },\n dispose() {\n if (signal) signal.removeEventListener('abort', forward);\n }\n };\n}\n\nasync function sleep(delay, signal, totalTimeout, startedAt) {\n if (delay <= 0) return;\n throwIfAborted(signal);\n let actual = delay;\n if (totalTimeout) {\n const remaining = totalTimeout - (monotonicNow() - startedAt);\n if (remaining <= 0) throw new SSETimeoutError('total', totalTimeout);\n actual = Math.min(actual, remaining);\n }\n await new Promise((resolve, reject) => {\n const done = () => {\n if (signal) signal.removeEventListener('abort', abort);\n resolve();\n };\n const timer = setTimer(done, actual);\n const abort = () => {\n clearTimer(timer);\n if (signal) signal.removeEventListener('abort', abort);\n reject(abortReason(signal));\n };\n if (signal) {\n signal.addEventListener('abort', abort, { once: true });\n if (signal.aborted) abort();\n }\n });\n if (totalTimeout && monotonicNow() - startedAt >= totalTimeout) {\n throw new SSETimeoutError('total', totalTimeout);\n }\n}\n\nfunction waitForAbort(value, signal, onLateValue) {\n throwIfAborted(signal);\n return new Promise((resolve, reject) => {\n let aborted = false;\n const cleanup = () => signal.removeEventListener('abort', abort);\n const abort = () => {\n aborted = true;\n cleanup();\n reject(abortReason(signal));\n };\n signal.addEventListener('abort', abort, { once: true });\n if (signal.aborted) {\n abort();\n return;\n }\n Promise.resolve(value).then(\n (result) => {\n cleanup();\n if (aborted) {\n if (onLateValue) onLateValue(result);\n return;\n }\n resolve(result);\n },\n (error) => {\n cleanup();\n reject(error);\n }\n );\n });\n}\n\nfunction setTimer(callback, delay) {\n return setTimeout(callback, delay);\n}\n\nfunction clearTimer(timer) {\n if (timer !== undefined) clearTimeout(timer);\n}\n\nfunction throwIfAborted(signal) {\n if (signal && signal.aborted) throw abortReason(signal);\n}\n\nfunction abortReason(signal) {\n if (signal && signal.reason instanceof Error) return signal.reason;\n const error = new Error('The operation was aborted');\n error.name = 'AbortError';\n return error;\n}\n\nfunction readDelay(value, fallback, name) {\n const number = value === undefined ? fallback : value;\n if (!Number.isFinite(number) || number < 0) throw new RangeError(`${name} must be a non-negative number`);\n return Math.round(number);\n}\n\nfunction readOptionalDelay(value, name) {\n if (value === undefined || value === null || value === 0) return 0;\n return readDelay(value, 0, name);\n}\n\nfunction clampDelay(value, max) {\n if (!Number.isFinite(value) || value < 0) throw new RangeError('Retry delay must be a non-negative number');\n return Math.min(Math.round(value), max);\n}\n\nfunction monotonicNow() {\n return typeof performance === 'object' && performance && typeof performance.now === 'function'\n ? performance.now()\n : Date.now();\n}\n\nfunction cancelResponseBody(response) {\n if (!response || !response.body || typeof response.body.cancel !== 'function') return;\n try {\n const cancellation = response.body.cancel();\n if (cancellation && typeof cancellation.catch === 'function') cancellation.catch(() => {});\n } catch {\n // A transport may have already closed the rejected response body.\n }\n}\n\nasync function callHook(hook, args, name) {\n try {\n return await hook(...args);\n } catch (cause) {\n throw new SSEError(`SSE ${name} callback failed`, 'ERR_SSE_CALLBACK', { cause });\n }\n}\n\nconst NETWORK_ERROR_CODES = new Set([\n 'ECONNREFUSED',\n 'ECONNRESET',\n 'EHOSTUNREACH',\n 'ENETDOWN',\n 'ENETUNREACH',\n 'ENOTFOUND',\n 'ETIMEDOUT'\n]);\n", "import { encodeJSON, encodeSSE, EVENT_STREAM_CONTENT_TYPE } from './encoder.js';\n\nexport function createSSEChannel(options = {}) {\n if (typeof ReadableStream !== 'function') throw new Error('ReadableStream is not available in this runtime');\n if (typeof TextEncoder !== 'function') throw new Error('TextEncoder is not available in this runtime');\n const encoder = new TextEncoder();\n const highWaterMark = readHighWaterMark(options.highWaterMark);\n const heartbeatInterval = readHeartbeatInterval(options.heartbeatInterval);\n const heartbeat = heartbeatInterval\n ? encoder.encode(encodeSSE({ comment: options.heartbeatComment ?? 'keep-alive' }, options))\n : undefined;\n let controller;\n let open = true;\n let readyPromise = Promise.resolve();\n let resolveReady;\n let resolveClosed;\n let heartbeatTimer;\n let responseClaimed = false;\n const closed = new Promise((resolve) => {\n resolveClosed = resolve;\n });\n\n const stream = new ReadableStream({\n start(value) {\n controller = value;\n if (heartbeatInterval) {\n heartbeatTimer = setInterval(() => {\n if (open && controller.desiredSize > 0) controller.enqueue(heartbeat);\n }, heartbeatInterval);\n if (heartbeatTimer && typeof heartbeatTimer.unref === 'function') heartbeatTimer.unref();\n }\n },\n pull() {\n if (resolveReady) {\n resolveReady();\n resolveReady = undefined;\n readyPromise = Promise.resolve();\n }\n },\n cancel(reason) {\n finish(reason);\n }\n }, {\n highWaterMark,\n size(chunk) {\n return chunk.byteLength;\n }\n });\n\n function send(message) {\n assertOpen();\n controller.enqueue(encoder.encode(encodeSSE(message, options)));\n updateReady();\n return controller.desiredSize > 0;\n }\n\n function sendJSON(data, fields = {}) {\n assertOpen();\n controller.enqueue(encoder.encode(encodeJSON(data, fields, options)));\n updateReady();\n return controller.desiredSize > 0;\n }\n\n function comment(value) {\n return send({ comment: value });\n }\n\n function close() {\n if (!open) return;\n open = false;\n clearInterval(heartbeatTimer);\n if (resolveReady) resolveReady();\n controller.close();\n resolveClosed();\n }\n\n function error(reason) {\n if (!open) return;\n open = false;\n clearInterval(heartbeatTimer);\n if (resolveReady) resolveReady();\n controller.error(reason);\n resolveClosed(reason);\n }\n\n function toResponse(init = {}) {\n if (typeof Response !== 'function') throw new Error('Response is not available in this runtime');\n if (responseClaimed) throw new Error('SSE channel response has already been created');\n responseClaimed = true;\n return new Response(stream, {\n ...init,\n headers: responseHeaders(init.headers)\n });\n }\n\n function updateReady() {\n if (controller.desiredSize > 0 || resolveReady) return;\n readyPromise = new Promise((resolve) => {\n resolveReady = resolve;\n });\n }\n\n function finish(reason) {\n if (!open) return;\n open = false;\n clearInterval(heartbeatTimer);\n if (resolveReady) resolveReady();\n resolveClosed(reason);\n }\n\n function assertOpen() {\n if (!open) throw new Error('SSE channel is closed');\n }\n\n return {\n stream,\n send,\n sendJSON,\n comment,\n close,\n error,\n toResponse,\n closed,\n get open() {\n return open;\n },\n get ready() {\n return readyPromise;\n }\n };\n}\n\nexport function eventStreamResponse(source, options = {}) {\n if (typeof ReadableStream !== 'function') throw new Error('ReadableStream is not available in this runtime');\n if (typeof Response !== 'function') throw new Error('Response is not available in this runtime');\n if (typeof TextEncoder !== 'function') throw new Error('TextEncoder is not available in this runtime');\n const encoder = new TextEncoder();\n const iterator = toIterator(source);\n const stream = new ReadableStream({\n async pull(controller) {\n try {\n const item = await iterator.next();\n if (item.done) {\n controller.close();\n return;\n }\n const output = options.json === true\n ? encodeJSON(item.value.data, item.value, options)\n : encodeSSE(item.value, options);\n controller.enqueue(encoder.encode(output));\n } catch (error) {\n if (typeof iterator.return === 'function') {\n try {\n await iterator.return(error);\n } catch {\n // Preserve the original read failure.\n }\n }\n controller.error(error);\n }\n },\n async cancel(reason) {\n if (typeof iterator.return === 'function') await iterator.return(reason);\n }\n }, {\n highWaterMark: readHighWaterMark(options.highWaterMark),\n size(chunk) {\n return chunk.byteLength;\n }\n });\n return new Response(stream, {\n status: options.status || 200,\n statusText: options.statusText,\n headers: responseHeaders(options.headers)\n });\n}\n\nfunction responseHeaders(input) {\n const headers = typeof Headers === 'function' ? new Headers(input) : new Map();\n const has = (name) => typeof headers.has === 'function' && headers.has(name);\n const set = (name, value) => {\n if (typeof headers.set === 'function') headers.set(name, value);\n };\n if (!has('Content-Type')) set('Content-Type', `${EVENT_STREAM_CONTENT_TYPE}; charset=utf-8`);\n if (!has('Cache-Control')) set('Cache-Control', 'no-cache, no-transform');\n if (!has('X-Accel-Buffering')) set('X-Accel-Buffering', 'no');\n return headers;\n}\n\nfunction toIterator(source) {\n if (!source) throw new TypeError('An event iterable is required');\n if (typeof source[Symbol.asyncIterator] === 'function') return source[Symbol.asyncIterator]();\n if (typeof source[Symbol.iterator] === 'function') {\n const iterator = source[Symbol.iterator]();\n return {\n next() {\n return Promise.resolve(iterator.next());\n },\n return(value) {\n return Promise.resolve(typeof iterator.return === 'function' ? iterator.return(value) : { done: true, value });\n }\n };\n }\n throw new TypeError('Events must be an Iterable or AsyncIterable');\n}\n\nfunction readHighWaterMark(value) {\n const number = value === undefined ? 64 * 1024 : value;\n if (!Number.isFinite(number) || number < 1) throw new RangeError('highWaterMark must be a positive number');\n return number;\n}\n\nfunction readHeartbeatInterval(value) {\n if (value === undefined || value === null || value === 0) return 0;\n if (!Number.isFinite(value) || value < 0) {\n throw new RangeError('heartbeatInterval must be a non-negative number');\n }\n return Math.round(value);\n}\n", "export {\n SSEError,\n SSEEncodeError,\n SSEHTTPError,\n SSEParseError,\n SSEReplayError,\n SSERetryError,\n SSETimeoutError\n} from './errors.js';\nexport { createParser } from './parser.js';\nexport {\n EVENT_STREAM_CONTENT_TYPE,\n EventStreamContentType,\n createEncoderStream,\n encode,\n encodeComment,\n encodeJSON,\n encodeSSE\n} from './encoder.js';\nexport { createDecoderStream, decodeJSON, decodeSSE, toAsyncIterable } from './iterable.js';\nexport { consumeSSE, fetchEventSource, fetchSSE } from './client.js';\nexport { createSSEChannel, eventStreamResponse } from './server.js';\n\nimport { createParser } from './parser.js';\nimport {\n EVENT_STREAM_CONTENT_TYPE,\n EventStreamContentType,\n createEncoderStream,\n encode,\n encodeComment,\n encodeJSON,\n encodeSSE\n} from './encoder.js';\nimport {\n SSEEncodeError,\n SSEError,\n SSEHTTPError,\n SSEParseError,\n SSEReplayError,\n SSERetryError,\n SSETimeoutError\n} from './errors.js';\nimport { createDecoderStream, decodeJSON, decodeSSE, toAsyncIterable } from './iterable.js';\nimport { consumeSSE, fetchEventSource, fetchSSE } from './client.js';\nimport { createSSEChannel, eventStreamResponse } from './server.js';\n\nconst api = Object.freeze({\n EVENT_STREAM_CONTENT_TYPE,\n EventStreamContentType,\n SSEEncodeError,\n SSEError,\n SSEHTTPError,\n SSEParseError,\n SSEReplayError,\n SSERetryError,\n SSETimeoutError,\n consumeSSE,\n createDecoderStream,\n createEncoderStream,\n createParser,\n createSSEChannel,\n decodeJSON,\n decodeSSE,\n encode,\n encodeComment,\n encodeJSON,\n encodeSSE,\n eventStreamResponse,\n fetchEventSource,\n fetchSSE,\n toAsyncIterable\n});\n\nexport default api;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["api", "end", "value", "throwIfAborted", "delay"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/*! @stackline/sse v1.0.0 | MIT */
|
|
2
|
+
var StacklineSSE=(()=>{var Le=Object.defineProperty;var Ze=Object.getOwnPropertyDescriptor;var Ge=Object.getOwnPropertyNames;var et=Object.prototype.hasOwnProperty;var tt=(e,t)=>{for(var r in t)Le(e,r,{get:t[r],enumerable:!0})},rt=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Ge(t))!et.call(e,a)&&a!==r&&Le(e,a,{get:()=>t[a],enumerable:!(n=Ze(t,a))||n.enumerable});return e};var nt=e=>rt(Le({},"__esModule",{value:!0}),e);var Ut={};tt(Ut,{EVENT_STREAM_CONTENT_TYPE:()=>U,EventStreamContentType:()=>ye,SSEEncodeError:()=>g,SSEError:()=>_,SSEHTTPError:()=>H,SSEParseError:()=>O,SSEReplayError:()=>q,SSERetryError:()=>J,SSETimeoutError:()=>M,consumeSSE:()=>le,createDecoderStream:()=>Re,createEncoderStream:()=>be,createParser:()=>G,createSSEChannel:()=>Ae,decodeJSON:()=>Te,decodeSSE:()=>ee,default:()=>Mt,encode:()=>Se,encodeComment:()=>we,encodeJSON:()=>W,encodeSSE:()=>D,eventStreamResponse:()=>Ne,fetchEventSource:()=>_e,fetchSSE:()=>de,toAsyncIterable:()=>fe});var _=class extends Error{constructor(t,r,n){super(t),this.name=new.target.name,this.code=r,n&&n.cause!==void 0&&(this.cause=n.cause)}},O=class extends _{constructor(t,r={}){super(t,r.code||"ERR_SSE_PARSE",r),this.fatal=r.fatal===!0,r.field!==void 0&&(this.field=r.field),r.line!==void 0&&(this.line=r.line),r.limit!==void 0&&(this.limit=r.limit)}},g=class extends _{constructor(t,r,n){super(t,"ERR_SSE_ENCODE",{cause:n}),this.field=r}},H=class extends _{constructor(t,r,n="ERR_SSE_HTTP"){super(t,n),this.response=r,this.status=r&&typeof r.status=="number"?r.status:0}},M=class extends _{constructor(t,r,n){super(`SSE ${t} timeout after ${r}ms`,"ERR_SSE_TIMEOUT",{cause:n}),this.phase=t,this.timeout=r}},J=class extends _{constructor(t,r){super(`SSE retry budget exhausted after ${t} attempt${t===1?"":"s"}`,"ERR_SSE_RETRY",{cause:r}),this.attempts=t}},q=class extends _{constructor(){super("The request body cannot be replayed. Provide bodyFactory or disable reconnection.","ERR_SSE_BODY_REPLAY")}};var ot=1024*1024,at=1024*1024,he=10,Fe=13,Z=32,it=65279,De="\0",ce=()=>{};function G(e={}){if(typeof e=="function"&&(e={onEvent:e}),!e||typeof e!="object")throw new TypeError("Parser configuration must be an object or event callback");let t=typeof e.onEvent=="function"?e.onEvent:ce,r=typeof e.onComment=="function"?e.onComment:ce,n=typeof e.onRetry=="function"?e.onRetry:ce,a=typeof e.onError=="function"?e.onError:ce,i=typeof e.onId=="function"?e.onId:ce,f=e.strict===!0,m=e.fatalUTF8===!0,u=$e(e.maxEventSize===void 0?e.maxBufferSize:e.maxEventSize,ot,"maxEventSize"),y=$e(e.maxLineLength,at,"maxLineLength"),p,l,T=[],h=0,S=!1,v=!0,I=[],A=0,w,E=ke(e.lastEventId),b=E,x=!1,L=!1,F=0,d=0,$=0,B=0,ae=0;function P(o){if(L)throw new O("Parser is terminated; call reset() before feeding more data",{code:"ERR_SSE_TERMINATED",fatal:!0});if(typeof o=="string"){if(l==="bytes")throw j("Cannot mix string and byte chunks in one parser stream","ERR_SSE_CHUNK_TYPE");return l="string",d+=o.length,ie(o),ne}if(!(o instanceof Uint8Array))throw new TypeError("SSE parser chunks must be strings or Uint8Array values");if(l==="string")throw j("Cannot mix string and byte chunks in one parser stream","ERR_SSE_CHUNK_TYPE");l="bytes",F+=o.byteLength;let c;try{c=Xe().decode(o,{stream:!0})}catch(s){throw s instanceof O?s:j("Invalid UTF-8 in the SSE stream","ERR_SSE_UTF8",{cause:s})}return d+=c.length,ie(c),ne}function K(){if(L)return ne;if(p)try{let o=p.decode();d+=o.length,ie(o)}catch(o){throw j("Invalid UTF-8 at the end of the SSE stream","ERR_SSE_UTF8",{cause:o})}return Qe(),re(),ne}function Oe(o={}){o&&o.consume&&h>0&&N(te());let s=!!(o&&o.preserveLastEventId)?b:ke(e.lastEventId);return p=void 0,l=void 0,T=[],h=0,S=!1,v=!0,I=[],A=0,w=void 0,E=s,b=s,x=!1,L=!1,F=0,d=0,$=0,B=0,ae=0,ne}function ie(o){let c=o;if(v&&c.length>0&&(v=!1,c.charCodeAt(0)===it&&(c=c.slice(1))),c.length===0)return;if(!S&&c.indexOf("\r")===-1){Ee(c);return}let s=0,C=0;for(S&&(S=!1,c.charCodeAt(0)===he&&(s=1,C=1));s<c.length;s++){let R=c.charCodeAt(s);R!==he&&R!==Fe||(Y(c.slice(C,s)),N(te()),re(),R===Fe&&(c.charCodeAt(s+1)===he?s++:s+1===c.length&&(S=!0)),C=s+1)}Y(c.slice(C))}function Ee(o){let c=0,s=o.indexOf(`
|
|
3
|
+
`);for(;s!==-1;){if(h===0&&I.length===0&&o.charCodeAt(s+1)===he&&ft(o,c)){let C=o.charCodeAt(c+5)===Z?c+6:c+5,R=o.slice(C,s);if(s-c>y)throw j(`SSE line exceeded ${y} characters`,"ERR_SSE_LINE_LIMIT",{limit:y});Q(R.length+1),Ke(R),c=s+2,s=o.indexOf(`
|
|
4
|
+
`,c);continue}if(h>0)Y(o.slice(c,s)),N(te()),re();else{if(s-c>y)throw j(`SSE line exceeded ${y} characters`,"ERR_SSE_LINE_LIMIT",{limit:y});N(o.slice(c,s))}c=s+1,s=o.indexOf(`
|
|
5
|
+
`,c)}Y(o.slice(c))}function Y(o){if(o&&(T.push(o),h+=o.length,h>y))throw j(`SSE line exceeded ${y} characters`,"ERR_SSE_LINE_LIMIT",{limit:y})}function te(){return T.length===0?"":T.length===1?T[0]:T.join("")}function re(){T=[],h=0}function N(o){if(o.length===0){Ve();return}if(o.charCodeAt(0)===58){B++,r(o.slice(o.charCodeAt(1)===Z?2:1));return}let c=o.charCodeAt(0);if(c===100&&o.charCodeAt(1)===97&&o.charCodeAt(2)===116&&o.charCodeAt(3)===97&&o.charCodeAt(4)===58){let X=o.charCodeAt(5)===Z?6:5,z=o.slice(X);Q(z.length+1),I.push(z);return}if(c===101&&o.charCodeAt(1)===118&&o.charCodeAt(2)===101&&o.charCodeAt(3)===110&&o.charCodeAt(4)===116&&o.charCodeAt(5)===58){let X=o.charCodeAt(6)===Z?7:6,z=o.slice(X);Q(z.length),w=z||void 0;return}if(c===105&&o.charCodeAt(1)===100&&o.charCodeAt(2)===58){let X=o.charCodeAt(3)===Z?4:3,z=o.slice(X);z.indexOf(De)===-1&&(Q(z.length),E=z,x=!0);return}if(c===114&&o.charCodeAt(1)===101&&o.charCodeAt(2)===116&&o.charCodeAt(3)===114&&o.charCodeAt(4)===121&&o.charCodeAt(5)===58){let X=o.charCodeAt(6)===Z?7:6;k(o.slice(X),o);return}let s=o.indexOf(":"),C=s===-1?o:o.slice(0,s),R=s===-1?"":o.slice(s+1);switch(R.charCodeAt(0)===Z&&(R=R.slice(1)),C){case"data":Q(R.length+1),I.push(R);break;case"event":Q(R.length),w=R||void 0;break;case"id":R.indexOf(De)===-1&&(Q(R.length),E=R,x=!0);break;case"retry":k(R,o);break;default:f&&ge(`Unknown SSE field "${He(C)}"`,"ERR_SSE_UNKNOWN_FIELD",{field:C,line:o})}}function k(o,c){if(!ct(o)){f&&ge(`Invalid SSE retry value "${He(o)}"`,"ERR_SSE_RETRY_VALUE",{field:"retry",line:c});return}let s=Number(o);if(!Number.isSafeInteger(s)){f&&ge("SSE retry value exceeds the safe integer range","ERR_SSE_RETRY_VALUE",{field:"retry",line:c});return}ae++,n(s)}function Ve(){let o=x?E:void 0;if(x&&(b=E,x=!1,i(b)),I.length===0){w=void 0,A=0;return}let c={data:I.join(`
|
|
6
|
+
`),id:o,event:w,lastEventId:b};$++,I=[],w=void 0,A=0,t(c)}function Ke(o){let c=x?E:void 0;x&&(b=E,x=!1,i(b));let s={data:o,id:c,event:w,lastEventId:b};$++,w=void 0,A=0,t(s)}function Q(o){if(A+=o,A>u)throw j(`SSE event exceeded ${u} characters`,"ERR_SSE_EVENT_LIMIT",{limit:u})}function Qe(){I=[],w=void 0,A=0,x=!1,E=b}function Xe(){if(!p){if(typeof TextDecoder!="function")throw j("TextDecoder is required for byte chunks","ERR_SSE_TEXT_DECODER");p=new TextDecoder("utf-8",{fatal:m})}return p}function ge(o,c,s){let C=new O(o,{...s,code:c,fatal:!1});return a(C),C}function j(o,c,s={}){L=!0,T=[],h=0,I=[],w=void 0,A=0;let C=new O(o,{...s,code:c,fatal:!0});return a(C),C}let ne={feed:P,end:K,reset:Oe,get state(){return Object.freeze({buffered:h+A,bytes:F,characters:d,comments:B,events:$,lastEventId:b,retries:ae,terminated:L})}};return ne}function $e(e,t,r){let n=e===void 0?t:e;if(!Number.isSafeInteger(n)||n<1)throw new RangeError(`${r} must be a positive safe integer`);return n}function ke(e){if(e==null)return"";if(typeof e!="string")throw new TypeError("lastEventId must be a string");if(e.indexOf(De)!==-1||e.indexOf("\r")!==-1||e.indexOf(`
|
|
7
|
+
`)!==-1)throw new TypeError("lastEventId cannot contain NUL, CR or LF");return e}function ct(e){if(e.length===0)return!1;for(let t=0;t<e.length;t++){let r=e.charCodeAt(t);if(r<48||r>57)return!1}return!0}function He(e){return e.length>80?`${e.slice(0,80)}...`:e}function ft(e,t){return e.charCodeAt(t)===100&&e.charCodeAt(t+1)===97&&e.charCodeAt(t+2)===116&&e.charCodeAt(t+3)===97&&e.charCodeAt(t+4)===58}var U="text/event-stream",ye=U;function D(e,t={}){if(!e||typeof e!="object")throw new TypeError("SSE message must be an object");let r=t.newline===void 0?`
|
|
8
|
+
`:t.newline;if(r!==`
|
|
9
|
+
`&&r!==`\r
|
|
10
|
+
`)throw new g('newline must be "\\n" or "\\r\\n"',"newline");let n=[];if(e.comment!==void 0)for(let a of je(me(e.comment,"comment")))n.push(`:${a?` ${a}`:""}`);if(e.event!==void 0&&e.event!==""){let a=me(e.event,"event");ze(a,"event",!1),n.push(`event: ${a}`)}if(e.id!==void 0){let a=me(e.id,"id");ze(a,"id",!0),n.push(`id: ${a}`)}if(e.retry!==void 0){if(!Number.isSafeInteger(e.retry)||e.retry<0)throw new g("retry must be a non-negative safe integer","retry");n.push(`retry: ${e.retry}`)}if(e.data!==void 0)for(let a of je(me(e.data,"data")))n.push(`data: ${a}`);if(n.length===0)throw new g("SSE message must contain data, comment, event, id or retry","message");return`${n.join(r)}${r}${r}`}var Se=D;function W(e,t={},r={}){let n;try{n=JSON.stringify(e,r.replacer)}catch(a){throw new g("Unable to encode SSE JSON data","data",a)}if(n===void 0)throw new g("JSON data cannot be undefined, a function or a symbol","data");return D({...t,data:n},r)}function we(e,t={}){return D({comment:e},t)}function be(e={}){let t=st(),n=e.bytes!==!1?ut():null;return new t({transform(a,i){let f=e.json===!0?W(a.data,a,e):D(a,e);i.enqueue(n?n.encode(f):f)}})}function je(e){let t=[],r=0;for(let n=0;n<e.length;n++){let a=e.charCodeAt(n);a!==10&&a!==13||(t.push(e.slice(r,n)),a===13&&e.charCodeAt(n+1)===10&&n++,r=n+1)}return t.push(e.slice(r)),t}function me(e,t){if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")return String(e);throw new g(`${t} must be a string or primitive value`,t)}function ze(e,t,r){if(e.indexOf("\r")!==-1||e.indexOf(`
|
|
11
|
+
`)!==-1||r&&e.indexOf("\0")!==-1)throw new g(`${t} contains a forbidden control character`,t)}function st(){if(typeof TransformStream!="function")throw new Error("TransformStream is not available in this runtime");return TransformStream}function ut(){if(typeof TextEncoder!="function")throw new Error("TextEncoder is not available in this runtime");return new TextEncoder}var dt=16*1024,lt=4096;async function*ee(e,t={}){let r=t.signal,n=Be(t.feedSize,dt,"feedSize"),a=Be(t.maxQueuedEvents,lt,"maxQueuedEvents"),i=[],f=t.parser||t,m=f.onEvent,u=G({...f,onEvent(l){if(i.length>=a)throw new O(`Queued SSE events exceeded ${a}`,{code:"ERR_SSE_QUEUE_LIMIT",fatal:!0,limit:a});i.push(l),typeof m=="function"&&m(l)}}),p=fe(e)[Symbol.asyncIterator]();try{for(;;){pe(r);let l=await mt(p,r);if(l.done)break;let T=l.value;if(typeof t.onChunk=="function"&&t.onChunk(T),typeof T!="string"&&!(T instanceof Uint8Array))throw new TypeError("SSE stream chunks must be strings or Uint8Array values");for(let h=0;h<T.length;h+=n){u.feed(T.slice(h,h+n));for(let S=0;S<i.length;S++)yield i[S];i.length=0,pe(r)}}u.end();for(let l=0;l<i.length;l++)yield i[l]}finally{await yt(p,r)}}async function*Te(e,t={}){let r=t.doneSentinel===void 0?"[DONE]":t.doneSentinel;for await(let n of ee(e,t)){if(r!==!1&&n.data===r)return;try{yield{...n,data:JSON.parse(n.data,t.reviver)}}catch(a){if(t.ignoreInvalidJSON===!0)continue;throw new O("SSE event data is not valid JSON",{code:"ERR_SSE_JSON",fatal:!0,cause:a})}}}function Re(e={}){if(typeof TransformStream!="function")throw new Error("TransformStream is not available in this runtime");let t,r=G({...e.parser||e,onEvent(n){t.enqueue(n);let a=(e.parser||e).onEvent;typeof a=="function"&&a(n)}});return new TransformStream({start(n){t=n},transform(n){r.feed(n)},flush(){r.end()}})}function fe(e){let t=e&&e.body?e.body:e;if(!t)throw new TypeError("An SSE stream source is required");if(typeof t[Symbol.asyncIterator]=="function")return t;if(typeof t.getReader=="function")return Et(t);if(typeof t[Symbol.iterator]=="function")return ht(t);throw new TypeError("Source must be a Response, ReadableStream, AsyncIterable or Iterable")}async function*Et(e){let t=e.getReader();try{for(;;){let r=await t.read();if(r.done)return;yield r.value}}finally{try{await t.cancel()}catch(r){}typeof t.releaseLock=="function"&&t.releaseLock()}}async function*ht(e){yield*e}function pe(e){if(!e||!e.aborted)return;if(e.reason instanceof Error)throw e.reason;let t=new Error("The operation was aborted");throw t.name="AbortError",t}function mt(e,t){return t?(pe(t),new Promise((r,n)=>{let a=()=>t.removeEventListener("abort",i),i=()=>{a();try{pe(t)}catch(f){n(f)}};if(t.addEventListener("abort",i,{once:!0}),t.aborted){i();return}Promise.resolve(e.next()).then(f=>{a(),r(f)},f=>{a(),n(f)})})):e.next()}async function yt(e,t){if(typeof e.return=="function")try{let r=e.return();!t||!t.aborted?await r:Promise.resolve(r).catch(()=>{})}catch(r){if(!t||!t.aborted)throw r}}function Be(e,t,r){let n=e===void 0?t:e;if(!Number.isSafeInteger(n)||n<1)throw new RangeError(`${r} must be a positive safe integer`);return n}var St=new Set([408,425,429,500,502,503,504]);async function*de(e,t={}){let r=t.fetch===void 0?globalThis.fetch:t.fetch;if(typeof r!="function")throw new TypeError("No fetch implementation is available; pass options.fetch");let n=wt(t.retry),a=Pe(t.connectTimeout,"connectTimeout"),i=Pe(t.idleTimeout,"idleTimeout"),f=Pe(t.totalTimeout,"totalTimeout"),m=t.signal,u=Ct(t),y=u.body,p=_t(y),l=At(t.lastEventId===void 0?"":t.lastEventId),T,h=0,S=0,v,I=!1,A=Ce();for(;!I;){if(h++,Ue(m),h>1&&!p&&typeof t.bodyFactory!="function")throw new q;let w=Nt(m),E,b,x,L,F,d=!1,$;try{if(f){let N=f-(Ce()-A);if(N<=0)throw new M("total",f);F=xe(()=>{b="total",w.abort()},N)}a&&(x=xe(()=>{b="connect",w.abort()},a));let P=y;if(typeof t.bodyFactory=="function")try{P=await Ye(t.bodyFactory({attempt:h,lastEventId:l,signal:w.controller.signal}),w.controller.signal)}catch(N){throw new _("SSE bodyFactory failed","ERR_SSE_BODY_FACTORY",{cause:N})}let K=u.headers===void 0&&e&&e.headers?e.headers:u.headers,Oe={...u,body:P,cache:u.cache===void 0?"no-store":u.cache,headers:vt(K,l),signal:w.controller.signal},ie=It(e);if(d=!0,E=await Ye(r(ie,Oe),w.controller.signal,ve),V(x),x=void 0,!E||typeof E.status!="number")throw new _("fetch returned an invalid Response-like value","ERR_SSE_RESPONSE");if(E.status===204){I=!0,typeof t.onClose=="function"&&await oe(t.onClose,[{attempts:h,lastEventId:l,reason:"server",reconnects:S,response:E}],"onClose");return}if(bt(E),typeof t.onOpen=="function"&&await oe(t.onOpen,[E,{attempts:h,lastEventId:l,reconnects:S}],"onOpen")===!1){await ve(E);return}let Ee=()=>{i&&(V(L),L=xe(()=>{b="idle",w.abort()},i))};Ee();let Y=t.parser||{},te=Y.onId,re=Y.onRetry;for await(let N of ee(E.body,{...t.decode,signal:w.controller.signal,onChunk(k){Ee(),t.decode&&typeof t.decode.onChunk=="function"&&t.decode.onChunk(k)},parser:{...Y,lastEventId:l,onId(k){l=k,typeof te=="function"&&te(k)},onRetry(k){T=k,typeof re=="function"&&re(k)}}}))l=N.lastEventId,typeof t.onEvent=="function"&&await oe(t.onEvent,[N,{attempts:h,lastEventId:l,reconnects:S,response:E}],"onEvent"),yield N;V(L),v=void 0}catch(P){if(V(x),V(L),V(F),m&&m.aborted)throw Ie(m);if(b?v=new M(b,t[`${b}Timeout`],P):v=P,await ve(E),typeof t.onError=="function"){let K=await oe(t.onError,[{attempt:h,error:v,lastEventId:l,reconnects:S,response:E}],"onError");if(K===!1)throw v;typeof K=="number"&&($=K)}if(!pt(v,E,n,d))throw v}finally{V(F),await ve(E),w.dispose()}if(S>=n.retries){if(!v){typeof t.onClose=="function"&&await oe(t.onClose,[{attempts:h,lastEventId:l,reason:"eof",reconnects:S,response:E}],"onClose");return}throw n.retries===0?v:new J(h,v)}S++;let B=Tt(E,T,S,n);$!==void 0&&(B=ue($,n.maxDelay));let ae={attempt:h,delay:B,error:v,lastEventId:l,reconnects:S,response:E};if(typeof t.onRetry=="function"){let P=await oe(t.onRetry,[ae],"onRetry");if(P===!1)return;typeof P=="number"&&(B=ue(P,n.maxDelay))}await Ot(B,m,f,A)}}async function le(e,t={}){let r=0,n=t.lastEventId||"";for await(let a of de(e,t))r++,n=a.lastEventId;return{events:r,lastEventId:n}}async function _e(e,t={}){let r={...t,onOpen:t.onopen||t.onOpen,onEvent:t.onmessage||t.onEvent,onClose:t.onclose||t.onClose,async onError(n){if(typeof t.onerror!="function")return typeof t.onError=="function"?t.onError(n):void 0;let a=await t.onerror(n.error);return a===void 0?!0:a},async onRetry(n){if(typeof t.onRetry=="function")return t.onRetry(n)}};return le(e,r)}function wt(e){let t=e===!1?{retries:0}:typeof e=="number"?{retries:e}:e||{},r=t.retries===void 0?1/0:t.retries;if(r!==1/0&&(!Number.isSafeInteger(r)||r<0))throw new RangeError("retry.retries must be a non-negative safe integer or Infinity");let n=Me(t.minDelay,1e3,"retry.minDelay"),a=Me(t.maxDelay,3e4,"retry.maxDelay"),i=t.factor===void 0?2:t.factor;if(!Number.isFinite(i)||i<1)throw new RangeError("retry.factor must be at least 1");return{retries:r,minDelay:n,maxDelay:Math.max(n,a),factor:i,jitter:t.jitter===void 0?"full":t.jitter,statusCodes:new Set(t.statusCodes||St),shouldRetry:t.shouldRetry}}function bt(e){if(e.status!==200)throw new H(`SSE endpoint responded with HTTP ${e.status}`,e);let t=e.headers&&typeof e.headers.get=="function"?e.headers.get("content-type"):null;if(!t||t.split(";",1)[0].trim().toLowerCase()!==U)throw new H(`Expected Content-Type ${U}; received ${t||"none"}`,e,"ERR_SSE_CONTENT_TYPE");if(!e.body)throw new H("SSE response has no readable body",e)}function pt(e,t,r,n){return typeof r.shouldRetry=="function"?r.shouldRetry({error:e,response:t})===!0:e&&e.code==="ERR_SSE_CONTENT_TYPE"||!e?!1:e.code==="ERR_SSE_TIMEOUT"?!0:t&&t.status!==200?r.statusCodes.has(t.status):n?e.name==="TypeError"||gt.has(e.code):!1}function Tt(e,t,r,n){let a=e&&e.headers&&typeof e.headers.get=="function"?e.headers.get("retry-after"):null,i=Rt(a);if(i!==void 0)return ue(i,n.maxDelay);if(t!==void 0)return ue(t,n.maxDelay);let f=Math.min(n.maxDelay,n.minDelay*Math.pow(n.factor,r-1));return n.jitter===!1||n.jitter==="none"?f:typeof n.jitter=="function"?ue(n.jitter(f),n.maxDelay):Math.floor(Math.random()*(f+1))}function Rt(e){if(!e)return;let t=Number(e);if(Number.isFinite(t)&&t>=0)return Math.round(t*1e3);let r=Date.parse(e);if(!Number.isNaN(r))return Math.max(0,r-Date.now())}function vt(e,t){let r=[];if(e&&typeof e[Symbol.iterator]=="function"&&typeof e!="string")for(let n of e)se(r,n[0],n[1]);else if(e&&typeof e.forEach=="function")e.forEach((n,a)=>se(r,a,n));else if(e&&typeof e=="object")for(let n of Object.keys(e))se(r,n,e[n]);return xt(r,"accept")||se(r,"Accept",U),t?se(r,"Last-Event-ID",t):Je(r,"last-event-id"),r}function se(e,t,r){let n=String(t);Je(e,n),e.push([n,String(r)])}function Je(e,t){let r=String(t).toLowerCase();for(let n=e.length-1;n>=0;n--)e[n][0].toLowerCase()===r&&e.splice(n,1)}function xt(e,t){let r=t.toLowerCase();return e.some(n=>n[0].toLowerCase()===r)}function Ct(e){let t={},r=new Set(["bodyFactory","connectTimeout","decode","fetch","idleTimeout","lastEventId","onClose","onError","onEvent","onOpen","onRetry","onclose","onerror","onmessage","onopen","openWhenHidden","parser","retry","totalTimeout"]);for(let n of Object.keys(e))r.has(n)||(t[n]=e[n]);return t}function _t(e){return e==null||typeof e=="string"||e instanceof ArrayBuffer||ArrayBuffer.isView(e)||typeof URLSearchParams=="function"&&e instanceof URLSearchParams||typeof Blob=="function"&&e instanceof Blob||typeof FormData=="function"&&e instanceof FormData?!0:!(typeof e.getReader=="function"||typeof e[Symbol.asyncIterator]=="function")}function It(e){return e&&typeof e=="object"&&typeof e.clone=="function"?e.clone():e}function At(e){if(typeof e!="string")throw new TypeError("lastEventId must be a string");if(e.indexOf("\0")!==-1||e.indexOf("\r")!==-1||e.indexOf(`
|
|
12
|
+
`)!==-1)throw new TypeError("lastEventId cannot contain NUL, CR or LF");return e}function Nt(e){if(typeof AbortController!="function")throw new Error("AbortController is not available");let t=new AbortController,r=()=>t.abort();return e&&e.addEventListener("abort",r,{once:!0}),e&&e.aborted&&t.abort(),{controller:t,abort(){t.abort()},dispose(){e&&e.removeEventListener("abort",r)}}}async function Ot(e,t,r,n){if(e<=0)return;Ue(t);let a=e;if(r){let i=r-(Ce()-n);if(i<=0)throw new M("total",r);a=Math.min(a,i)}if(await new Promise((i,f)=>{let u=xe(()=>{t&&t.removeEventListener("abort",y),i()},a),y=()=>{V(u),t&&t.removeEventListener("abort",y),f(Ie(t))};t&&(t.addEventListener("abort",y,{once:!0}),t.aborted&&y())}),r&&Ce()-n>=r)throw new M("total",r)}function Ye(e,t,r){return Ue(t),new Promise((n,a)=>{let i=!1,f=()=>t.removeEventListener("abort",m),m=()=>{i=!0,f(),a(Ie(t))};if(t.addEventListener("abort",m,{once:!0}),t.aborted){m();return}Promise.resolve(e).then(u=>{if(f(),i){r&&r(u);return}n(u)},u=>{f(),a(u)})})}function xe(e,t){return setTimeout(e,t)}function V(e){e!==void 0&&clearTimeout(e)}function Ue(e){if(e&&e.aborted)throw Ie(e)}function Ie(e){if(e&&e.reason instanceof Error)return e.reason;let t=new Error("The operation was aborted");return t.name="AbortError",t}function Me(e,t,r){let n=e===void 0?t:e;if(!Number.isFinite(n)||n<0)throw new RangeError(`${r} must be a non-negative number`);return Math.round(n)}function Pe(e,t){return e==null||e===0?0:Me(e,0,t)}function ue(e,t){if(!Number.isFinite(e)||e<0)throw new RangeError("Retry delay must be a non-negative number");return Math.min(Math.round(e),t)}function Ce(){return typeof performance=="object"&&performance&&typeof performance.now=="function"?performance.now():Date.now()}function ve(e){if(!(!e||!e.body||typeof e.body.cancel!="function"))try{let t=e.body.cancel();t&&typeof t.catch=="function"&&t.catch(()=>{})}catch(t){}}async function oe(e,t,r){try{return await e(...t)}catch(n){throw new _(`SSE ${r} callback failed`,"ERR_SSE_CALLBACK",{cause:n})}}var gt=new Set(["ECONNREFUSED","ECONNRESET","EHOSTUNREACH","ENETDOWN","ENETUNREACH","ENOTFOUND","ETIMEDOUT"]);function Ae(e={}){var F;if(typeof ReadableStream!="function")throw new Error("ReadableStream is not available in this runtime");if(typeof TextEncoder!="function")throw new Error("TextEncoder is not available in this runtime");let t=new TextEncoder,r=We(e.highWaterMark),n=Dt(e.heartbeatInterval),a=n?t.encode(D({comment:(F=e.heartbeatComment)!=null?F:"keep-alive"},e)):void 0,i,f=!0,m=Promise.resolve(),u,y,p,l=!1,T=new Promise(d=>{y=d}),h=new ReadableStream({start(d){i=d,n&&(p=setInterval(()=>{f&&i.desiredSize>0&&i.enqueue(a)},n),p&&typeof p.unref=="function"&&p.unref())},pull(){u&&(u(),u=void 0,m=Promise.resolve())},cancel(d){x(d)}},{highWaterMark:r,size(d){return d.byteLength}});function S(d){return L(),i.enqueue(t.encode(D(d,e))),b(),i.desiredSize>0}function v(d,$={}){return L(),i.enqueue(t.encode(W(d,$,e))),b(),i.desiredSize>0}function I(d){return S({comment:d})}function A(){f&&(f=!1,clearInterval(p),u&&u(),i.close(),y())}function w(d){f&&(f=!1,clearInterval(p),u&&u(),i.error(d),y(d))}function E(d={}){if(typeof Response!="function")throw new Error("Response is not available in this runtime");if(l)throw new Error("SSE channel response has already been created");return l=!0,new Response(h,{...d,headers:qe(d.headers)})}function b(){i.desiredSize>0||u||(m=new Promise(d=>{u=d}))}function x(d){f&&(f=!1,clearInterval(p),u&&u(),y(d))}function L(){if(!f)throw new Error("SSE channel is closed")}return{stream:h,send:S,sendJSON:v,comment:I,close:A,error:w,toResponse:E,closed:T,get open(){return f},get ready(){return m}}}function Ne(e,t={}){if(typeof ReadableStream!="function")throw new Error("ReadableStream is not available in this runtime");if(typeof Response!="function")throw new Error("Response is not available in this runtime");if(typeof TextEncoder!="function")throw new Error("TextEncoder is not available in this runtime");let r=new TextEncoder,n=Lt(e),a=new ReadableStream({async pull(i){try{let f=await n.next();if(f.done){i.close();return}let m=t.json===!0?W(f.value.data,f.value,t):D(f.value,t);i.enqueue(r.encode(m))}catch(f){if(typeof n.return=="function")try{await n.return(f)}catch(m){}i.error(f)}},async cancel(i){typeof n.return=="function"&&await n.return(i)}},{highWaterMark:We(t.highWaterMark),size(i){return i.byteLength}});return new Response(a,{status:t.status||200,statusText:t.statusText,headers:qe(t.headers)})}function qe(e){let t=typeof Headers=="function"?new Headers(e):new Map,r=a=>typeof t.has=="function"&&t.has(a),n=(a,i)=>{typeof t.set=="function"&&t.set(a,i)};return r("Content-Type")||n("Content-Type",`${U}; charset=utf-8`),r("Cache-Control")||n("Cache-Control","no-cache, no-transform"),r("X-Accel-Buffering")||n("X-Accel-Buffering","no"),t}function Lt(e){if(!e)throw new TypeError("An event iterable is required");if(typeof e[Symbol.asyncIterator]=="function")return e[Symbol.asyncIterator]();if(typeof e[Symbol.iterator]=="function"){let t=e[Symbol.iterator]();return{next(){return Promise.resolve(t.next())},return(r){return Promise.resolve(typeof t.return=="function"?t.return(r):{done:!0,value:r})}}}throw new TypeError("Events must be an Iterable or AsyncIterable")}function We(e){let t=e===void 0?65536:e;if(!Number.isFinite(t)||t<1)throw new RangeError("highWaterMark must be a positive number");return t}function Dt(e){if(e==null||e===0)return 0;if(!Number.isFinite(e)||e<0)throw new RangeError("heartbeatInterval must be a non-negative number");return Math.round(e)}var Pt=Object.freeze({EVENT_STREAM_CONTENT_TYPE:U,EventStreamContentType:ye,SSEEncodeError:g,SSEError:_,SSEHTTPError:H,SSEParseError:O,SSEReplayError:q,SSERetryError:J,SSETimeoutError:M,consumeSSE:le,createDecoderStream:Re,createEncoderStream:be,createParser:G,createSSEChannel:Ae,decodeJSON:Te,decodeSSE:ee,encode:Se,encodeComment:we,encodeJSON:W,encodeSSE:D,eventStreamResponse:Ne,fetchEventSource:_e,fetchSSE:de,toAsyncIterable:fe}),Mt=Pt;return nt(Ut);})();
|
|
13
|
+
//# sourceMappingURL=index.min.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/index.js", "../src/errors.js", "../src/parser.js", "../src/encoder.js", "../src/iterable.js", "../src/client.js", "../src/server.js"],
|
|
4
|
+
"sourcesContent": ["export {\n SSEError,\n SSEEncodeError,\n SSEHTTPError,\n SSEParseError,\n SSEReplayError,\n SSERetryError,\n SSETimeoutError\n} from './errors.js';\nexport { createParser } from './parser.js';\nexport {\n EVENT_STREAM_CONTENT_TYPE,\n EventStreamContentType,\n createEncoderStream,\n encode,\n encodeComment,\n encodeJSON,\n encodeSSE\n} from './encoder.js';\nexport { createDecoderStream, decodeJSON, decodeSSE, toAsyncIterable } from './iterable.js';\nexport { consumeSSE, fetchEventSource, fetchSSE } from './client.js';\nexport { createSSEChannel, eventStreamResponse } from './server.js';\n\nimport { createParser } from './parser.js';\nimport {\n EVENT_STREAM_CONTENT_TYPE,\n EventStreamContentType,\n createEncoderStream,\n encode,\n encodeComment,\n encodeJSON,\n encodeSSE\n} from './encoder.js';\nimport {\n SSEEncodeError,\n SSEError,\n SSEHTTPError,\n SSEParseError,\n SSEReplayError,\n SSERetryError,\n SSETimeoutError\n} from './errors.js';\nimport { createDecoderStream, decodeJSON, decodeSSE, toAsyncIterable } from './iterable.js';\nimport { consumeSSE, fetchEventSource, fetchSSE } from './client.js';\nimport { createSSEChannel, eventStreamResponse } from './server.js';\n\nconst api = Object.freeze({\n EVENT_STREAM_CONTENT_TYPE,\n EventStreamContentType,\n SSEEncodeError,\n SSEError,\n SSEHTTPError,\n SSEParseError,\n SSEReplayError,\n SSERetryError,\n SSETimeoutError,\n consumeSSE,\n createDecoderStream,\n createEncoderStream,\n createParser,\n createSSEChannel,\n decodeJSON,\n decodeSSE,\n encode,\n encodeComment,\n encodeJSON,\n encodeSSE,\n eventStreamResponse,\n fetchEventSource,\n fetchSSE,\n toAsyncIterable\n});\n\nexport default api;\n", "export class SSEError extends Error {\n constructor(message, code, details) {\n super(message);\n this.name = new.target.name;\n this.code = code;\n if (details && details.cause !== undefined) this.cause = details.cause;\n }\n}\n\nexport class SSEParseError extends SSEError {\n constructor(message, details = {}) {\n super(message, details.code || 'ERR_SSE_PARSE', details);\n this.fatal = details.fatal === true;\n if (details.field !== undefined) this.field = details.field;\n if (details.line !== undefined) this.line = details.line;\n if (details.limit !== undefined) this.limit = details.limit;\n }\n}\n\nexport class SSEEncodeError extends SSEError {\n constructor(message, field, cause) {\n super(message, 'ERR_SSE_ENCODE', { cause });\n this.field = field;\n }\n}\n\nexport class SSEHTTPError extends SSEError {\n constructor(message, response, code = 'ERR_SSE_HTTP') {\n super(message, code);\n this.response = response;\n this.status = response && typeof response.status === 'number' ? response.status : 0;\n }\n}\n\nexport class SSETimeoutError extends SSEError {\n constructor(phase, timeout, cause) {\n super(`SSE ${phase} timeout after ${timeout}ms`, 'ERR_SSE_TIMEOUT', { cause });\n this.phase = phase;\n this.timeout = timeout;\n }\n}\n\nexport class SSERetryError extends SSEError {\n constructor(attempts, cause) {\n super(`SSE retry budget exhausted after ${attempts} attempt${attempts === 1 ? '' : 's'}`, 'ERR_SSE_RETRY', { cause });\n this.attempts = attempts;\n }\n}\n\nexport class SSEReplayError extends SSEError {\n constructor() {\n super(\n 'The request body cannot be replayed. Provide bodyFactory or disable reconnection.',\n 'ERR_SSE_BODY_REPLAY'\n );\n }\n}\n", "import { SSEParseError } from './errors.js';\n\nconst DEFAULT_MAX_EVENT_SIZE = 1024 * 1024;\nconst DEFAULT_MAX_LINE_LENGTH = 1024 * 1024;\nconst LF = 10;\nconst CR = 13;\nconst SPACE = 32;\nconst BOM = 0xfeff;\nconst NUL = '\\0';\n\nconst noop = () => {};\n\nexport function createParser(config = {}) {\n if (typeof config === 'function') config = { onEvent: config };\n if (!config || typeof config !== 'object') {\n throw new TypeError('Parser configuration must be an object or event callback');\n }\n\n const onEvent = typeof config.onEvent === 'function' ? config.onEvent : noop;\n const onComment = typeof config.onComment === 'function' ? config.onComment : noop;\n const onRetry = typeof config.onRetry === 'function' ? config.onRetry : noop;\n const onError = typeof config.onError === 'function' ? config.onError : noop;\n const onId = typeof config.onId === 'function' ? config.onId : noop;\n const strict = config.strict === true;\n const fatalUTF8 = config.fatalUTF8 === true;\n const maxEventSize = readLimit(\n config.maxEventSize === undefined ? config.maxBufferSize : config.maxEventSize,\n DEFAULT_MAX_EVENT_SIZE,\n 'maxEventSize'\n );\n const maxLineLength = readLimit(\n config.maxLineLength,\n DEFAULT_MAX_LINE_LENGTH,\n 'maxLineLength'\n );\n\n let decoder;\n let inputMode;\n let lineFragments = [];\n let lineLength = 0;\n let skipLeadingLF = false;\n let atStart = true;\n let dataLines = [];\n let eventSize = 0;\n let eventType;\n let idBuffer = normalizeInitialId(config.lastEventId);\n let committedId = idBuffer;\n let hasPendingId = false;\n let terminated = false;\n let bytes = 0;\n let characters = 0;\n let events = 0;\n let comments = 0;\n let retries = 0;\n\n function feed(chunk) {\n if (terminated) {\n throw new SSEParseError('Parser is terminated; call reset() before feeding more data', {\n code: 'ERR_SSE_TERMINATED',\n fatal: true\n });\n }\n if (typeof chunk === 'string') {\n if (inputMode === 'bytes') {\n throw fatal('Cannot mix string and byte chunks in one parser stream', 'ERR_SSE_CHUNK_TYPE');\n }\n inputMode = 'string';\n characters += chunk.length;\n processText(chunk);\n return api;\n }\n if (!(chunk instanceof Uint8Array)) {\n throw new TypeError('SSE parser chunks must be strings or Uint8Array values');\n }\n if (inputMode === 'string') {\n throw fatal('Cannot mix string and byte chunks in one parser stream', 'ERR_SSE_CHUNK_TYPE');\n }\n inputMode = 'bytes';\n bytes += chunk.byteLength;\n let text;\n try {\n text = getDecoder().decode(chunk, { stream: true });\n } catch (error) {\n if (error instanceof SSEParseError) throw error;\n throw fatal('Invalid UTF-8 in the SSE stream', 'ERR_SSE_UTF8', { cause: error });\n }\n characters += text.length;\n processText(text);\n return api;\n }\n\n function end() {\n if (terminated) return api;\n if (decoder) {\n try {\n const tail = decoder.decode();\n characters += tail.length;\n processText(tail);\n } catch (error) {\n throw fatal('Invalid UTF-8 at the end of the SSE stream', 'ERR_SSE_UTF8', { cause: error });\n }\n }\n discardPendingEvent();\n clearLine();\n return api;\n }\n\n function reset(options = {}) {\n if (options && options.consume && lineLength > 0) processLine(joinLine());\n const preserve = Boolean(options && options.preserveLastEventId);\n const nextId = preserve ? committedId : normalizeInitialId(config.lastEventId);\n decoder = undefined;\n inputMode = undefined;\n lineFragments = [];\n lineLength = 0;\n skipLeadingLF = false;\n atStart = true;\n dataLines = [];\n eventSize = 0;\n eventType = undefined;\n idBuffer = nextId;\n committedId = nextId;\n hasPendingId = false;\n terminated = false;\n bytes = 0;\n characters = 0;\n events = 0;\n comments = 0;\n retries = 0;\n return api;\n }\n\n function processText(input) {\n let text = input;\n if (atStart && text.length > 0) {\n atStart = false;\n if (text.charCodeAt(0) === BOM) text = text.slice(1);\n }\n if (text.length === 0) return;\n\n if (!skipLeadingLF && text.indexOf('\\r') === -1) {\n processLFText(text);\n return;\n }\n\n let index = 0;\n let segmentStart = 0;\n if (skipLeadingLF) {\n skipLeadingLF = false;\n if (text.charCodeAt(0) === LF) {\n index = 1;\n segmentStart = 1;\n }\n }\n\n for (; index < text.length; index++) {\n const code = text.charCodeAt(index);\n if (code !== LF && code !== CR) continue;\n appendLine(text.slice(segmentStart, index));\n processLine(joinLine());\n clearLine();\n if (code === CR) {\n if (text.charCodeAt(index + 1) === LF) index++;\n else if (index + 1 === text.length) skipLeadingLF = true;\n }\n segmentStart = index + 1;\n }\n appendLine(text.slice(segmentStart));\n }\n\n function processLFText(text) {\n let start = 0;\n let end = text.indexOf('\\n');\n while (end !== -1) {\n if (\n lineLength === 0 &&\n dataLines.length === 0 &&\n text.charCodeAt(end + 1) === LF &&\n isDataPrefix(text, start)\n ) {\n const valueStart = text.charCodeAt(start + 5) === SPACE ? start + 6 : start + 5;\n const value = text.slice(valueStart, end);\n if (end - start > maxLineLength) {\n throw fatal(`SSE line exceeded ${maxLineLength} characters`, 'ERR_SSE_LINE_LIMIT', {\n limit: maxLineLength\n });\n }\n addEventSize(value.length + 1);\n dispatchSingleData(value);\n start = end + 2;\n end = text.indexOf('\\n', start);\n continue;\n }\n if (lineLength > 0) {\n appendLine(text.slice(start, end));\n processLine(joinLine());\n clearLine();\n } else {\n const length = end - start;\n if (length > maxLineLength) {\n throw fatal(`SSE line exceeded ${maxLineLength} characters`, 'ERR_SSE_LINE_LIMIT', {\n limit: maxLineLength\n });\n }\n processLine(text.slice(start, end));\n }\n start = end + 1;\n end = text.indexOf('\\n', start);\n }\n appendLine(text.slice(start));\n }\n\n function appendLine(fragment) {\n if (!fragment) return;\n lineFragments.push(fragment);\n lineLength += fragment.length;\n if (lineLength > maxLineLength) {\n throw fatal(`SSE line exceeded ${maxLineLength} characters`, 'ERR_SSE_LINE_LIMIT', {\n limit: maxLineLength\n });\n }\n }\n\n function joinLine() {\n if (lineFragments.length === 0) return '';\n if (lineFragments.length === 1) return lineFragments[0];\n return lineFragments.join('');\n }\n\n function clearLine() {\n lineFragments = [];\n lineLength = 0;\n }\n\n function processLine(line) {\n if (line.length === 0) {\n dispatchEvent();\n return;\n }\n if (line.charCodeAt(0) === 58) {\n comments++;\n onComment(line.slice(line.charCodeAt(1) === SPACE ? 2 : 1));\n return;\n }\n\n const first = line.charCodeAt(0);\n if (\n first === 100 &&\n line.charCodeAt(1) === 97 &&\n line.charCodeAt(2) === 116 &&\n line.charCodeAt(3) === 97 &&\n line.charCodeAt(4) === 58\n ) {\n const start = line.charCodeAt(5) === SPACE ? 6 : 5;\n const value = line.slice(start);\n addEventSize(value.length + 1);\n dataLines.push(value);\n return;\n }\n if (\n first === 101 &&\n line.charCodeAt(1) === 118 &&\n line.charCodeAt(2) === 101 &&\n line.charCodeAt(3) === 110 &&\n line.charCodeAt(4) === 116 &&\n line.charCodeAt(5) === 58\n ) {\n const start = line.charCodeAt(6) === SPACE ? 7 : 6;\n const value = line.slice(start);\n addEventSize(value.length);\n eventType = value || undefined;\n return;\n }\n if (first === 105 && line.charCodeAt(1) === 100 && line.charCodeAt(2) === 58) {\n const start = line.charCodeAt(3) === SPACE ? 4 : 3;\n const value = line.slice(start);\n if (value.indexOf(NUL) === -1) {\n addEventSize(value.length);\n idBuffer = value;\n hasPendingId = true;\n }\n return;\n }\n if (\n first === 114 &&\n line.charCodeAt(1) === 101 &&\n line.charCodeAt(2) === 116 &&\n line.charCodeAt(3) === 114 &&\n line.charCodeAt(4) === 121 &&\n line.charCodeAt(5) === 58\n ) {\n const start = line.charCodeAt(6) === SPACE ? 7 : 6;\n processRetry(line.slice(start), line);\n return;\n }\n\n const separator = line.indexOf(':');\n const field = separator === -1 ? line : line.slice(0, separator);\n let value = separator === -1 ? '' : line.slice(separator + 1);\n if (value.charCodeAt(0) === SPACE) value = value.slice(1);\n\n switch (field) {\n case 'data':\n addEventSize(value.length + 1);\n dataLines.push(value);\n break;\n case 'event':\n addEventSize(value.length);\n eventType = value || undefined;\n break;\n case 'id':\n if (value.indexOf(NUL) === -1) {\n addEventSize(value.length);\n idBuffer = value;\n hasPendingId = true;\n }\n break;\n case 'retry':\n processRetry(value, line);\n break;\n default:\n if (strict) recoverable(`Unknown SSE field \"${truncate(field)}\"`, 'ERR_SSE_UNKNOWN_FIELD', {\n field,\n line\n });\n }\n }\n\n function processRetry(value, line) {\n if (!isAsciiDigits(value)) {\n if (strict) recoverable(`Invalid SSE retry value \"${truncate(value)}\"`, 'ERR_SSE_RETRY_VALUE', {\n field: 'retry',\n line\n });\n return;\n }\n const number = Number(value);\n if (!Number.isSafeInteger(number)) {\n if (strict) recoverable('SSE retry value exceeds the safe integer range', 'ERR_SSE_RETRY_VALUE', {\n field: 'retry',\n line\n });\n return;\n }\n retries++;\n onRetry(number);\n }\n\n function dispatchEvent() {\n const eventId = hasPendingId ? idBuffer : undefined;\n if (hasPendingId) {\n committedId = idBuffer;\n hasPendingId = false;\n onId(committedId);\n }\n if (dataLines.length === 0) {\n eventType = undefined;\n eventSize = 0;\n return;\n }\n const event = {\n data: dataLines.join('\\n'),\n id: eventId,\n event: eventType,\n lastEventId: committedId\n };\n events++;\n dataLines = [];\n eventType = undefined;\n eventSize = 0;\n onEvent(event);\n }\n\n function dispatchSingleData(data) {\n const eventId = hasPendingId ? idBuffer : undefined;\n if (hasPendingId) {\n committedId = idBuffer;\n hasPendingId = false;\n onId(committedId);\n }\n const event = {\n data,\n id: eventId,\n event: eventType,\n lastEventId: committedId\n };\n events++;\n eventType = undefined;\n eventSize = 0;\n onEvent(event);\n }\n\n function addEventSize(amount) {\n eventSize += amount;\n if (eventSize > maxEventSize) {\n throw fatal(`SSE event exceeded ${maxEventSize} characters`, 'ERR_SSE_EVENT_LIMIT', {\n limit: maxEventSize\n });\n }\n }\n\n function discardPendingEvent() {\n dataLines = [];\n eventType = undefined;\n eventSize = 0;\n hasPendingId = false;\n idBuffer = committedId;\n }\n\n function getDecoder() {\n if (!decoder) {\n if (typeof TextDecoder !== 'function') {\n throw fatal('TextDecoder is required for byte chunks', 'ERR_SSE_TEXT_DECODER');\n }\n decoder = new TextDecoder('utf-8', { fatal: fatalUTF8 });\n }\n return decoder;\n }\n\n function recoverable(message, code, details) {\n const error = new SSEParseError(message, { ...details, code, fatal: false });\n onError(error);\n return error;\n }\n\n function fatal(message, code, details = {}) {\n terminated = true;\n lineFragments = [];\n lineLength = 0;\n dataLines = [];\n eventType = undefined;\n eventSize = 0;\n const error = new SSEParseError(message, { ...details, code, fatal: true });\n onError(error);\n return error;\n }\n\n const api = {\n feed,\n end,\n reset,\n get state() {\n return Object.freeze({\n buffered: lineLength + eventSize,\n bytes,\n characters,\n comments,\n events,\n lastEventId: committedId,\n retries,\n terminated\n });\n }\n };\n\n return api;\n}\n\nfunction readLimit(value, fallback, name) {\n const limit = value === undefined ? fallback : value;\n if (!Number.isSafeInteger(limit) || limit < 1) {\n throw new RangeError(`${name} must be a positive safe integer`);\n }\n return limit;\n}\n\nfunction normalizeInitialId(value) {\n if (value === undefined || value === null) return '';\n if (typeof value !== 'string') throw new TypeError('lastEventId must be a string');\n if (value.indexOf(NUL) !== -1 || value.indexOf('\\r') !== -1 || value.indexOf('\\n') !== -1) {\n throw new TypeError('lastEventId cannot contain NUL, CR or LF');\n }\n return value;\n}\n\nfunction isAsciiDigits(value) {\n if (value.length === 0) return false;\n for (let index = 0; index < value.length; index++) {\n const code = value.charCodeAt(index);\n if (code < 48 || code > 57) return false;\n }\n return true;\n}\n\nfunction truncate(value) {\n return value.length > 80 ? `${value.slice(0, 80)}...` : value;\n}\n\nfunction isDataPrefix(value, index) {\n return (\n value.charCodeAt(index) === 100 &&\n value.charCodeAt(index + 1) === 97 &&\n value.charCodeAt(index + 2) === 116 &&\n value.charCodeAt(index + 3) === 97 &&\n value.charCodeAt(index + 4) === 58\n );\n}\n", "import { SSEEncodeError } from './errors.js';\n\nexport const EVENT_STREAM_CONTENT_TYPE = 'text/event-stream';\nexport const EventStreamContentType = EVENT_STREAM_CONTENT_TYPE;\n\nexport function encodeSSE(message, options = {}) {\n if (!message || typeof message !== 'object') {\n throw new TypeError('SSE message must be an object');\n }\n const newline = options.newline === undefined ? '\\n' : options.newline;\n if (newline !== '\\n' && newline !== '\\r\\n') {\n throw new SSEEncodeError('newline must be \"\\\\n\" or \"\\\\r\\\\n\"', 'newline');\n }\n\n const lines = [];\n if (message.comment !== undefined) {\n for (const line of splitLines(toText(message.comment, 'comment'))) lines.push(`:${line ? ` ${line}` : ''}`);\n }\n if (message.event !== undefined && message.event !== '') {\n const value = toText(message.event, 'event');\n assertSingleLine(value, 'event', false);\n lines.push(`event: ${value}`);\n }\n if (message.id !== undefined) {\n const value = toText(message.id, 'id');\n assertSingleLine(value, 'id', true);\n lines.push(`id: ${value}`);\n }\n if (message.retry !== undefined) {\n if (!Number.isSafeInteger(message.retry) || message.retry < 0) {\n throw new SSEEncodeError('retry must be a non-negative safe integer', 'retry');\n }\n lines.push(`retry: ${message.retry}`);\n }\n if (message.data !== undefined) {\n for (const line of splitLines(toText(message.data, 'data'))) lines.push(`data: ${line}`);\n }\n if (lines.length === 0) {\n throw new SSEEncodeError('SSE message must contain data, comment, event, id or retry', 'message');\n }\n return `${lines.join(newline)}${newline}${newline}`;\n}\n\nexport const encode = encodeSSE;\n\nexport function encodeJSON(data, fields = {}, options = {}) {\n let encoded;\n try {\n encoded = JSON.stringify(data, options.replacer);\n } catch (error) {\n throw new SSEEncodeError('Unable to encode SSE JSON data', 'data', error);\n }\n if (encoded === undefined) {\n throw new SSEEncodeError('JSON data cannot be undefined, a function or a symbol', 'data');\n }\n return encodeSSE({ ...fields, data: encoded }, options);\n}\n\nexport function encodeComment(comment, options = {}) {\n return encodeSSE({ comment }, options);\n}\n\nexport function createEncoderStream(options = {}) {\n const Transform = getTransformStream();\n const bytes = options.bytes !== false;\n const encoder = bytes ? getTextEncoder() : null;\n return new Transform({\n transform(message, controller) {\n const output = options.json === true\n ? encodeJSON(message.data, message, options)\n : encodeSSE(message, options);\n controller.enqueue(encoder ? encoder.encode(output) : output);\n }\n });\n}\n\nfunction splitLines(value) {\n const lines = [];\n let start = 0;\n for (let index = 0; index < value.length; index++) {\n const code = value.charCodeAt(index);\n if (code !== 10 && code !== 13) continue;\n lines.push(value.slice(start, index));\n if (code === 13 && value.charCodeAt(index + 1) === 10) index++;\n start = index + 1;\n }\n lines.push(value.slice(start));\n return lines;\n}\n\nfunction toText(value, field) {\n if (typeof value === 'string') return value;\n if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {\n return String(value);\n }\n throw new SSEEncodeError(`${field} must be a string or primitive value`, field);\n}\n\nfunction assertSingleLine(value, field, rejectNul) {\n if (value.indexOf('\\r') !== -1 || value.indexOf('\\n') !== -1 || (rejectNul && value.indexOf('\\0') !== -1)) {\n throw new SSEEncodeError(`${field} contains a forbidden control character`, field);\n }\n}\n\nfunction getTransformStream() {\n if (typeof TransformStream !== 'function') {\n throw new Error('TransformStream is not available in this runtime');\n }\n return TransformStream;\n}\n\nfunction getTextEncoder() {\n if (typeof TextEncoder !== 'function') throw new Error('TextEncoder is not available in this runtime');\n return new TextEncoder();\n}\n", "import { SSEParseError } from './errors.js';\nimport { createParser } from './parser.js';\n\nconst DEFAULT_FEED_SIZE = 16 * 1024;\nconst DEFAULT_MAX_QUEUED_EVENTS = 4096;\n\nexport async function* decodeSSE(source, options = {}) {\n const signal = options.signal;\n const feedSize = readPositive(options.feedSize, DEFAULT_FEED_SIZE, 'feedSize');\n const maxQueuedEvents = readPositive(\n options.maxQueuedEvents,\n DEFAULT_MAX_QUEUED_EVENTS,\n 'maxQueuedEvents'\n );\n const queue = [];\n const parserOptions = options.parser || options;\n const userOnEvent = parserOptions.onEvent;\n const parser = createParser({\n ...parserOptions,\n onEvent(event) {\n if (queue.length >= maxQueuedEvents) {\n throw new SSEParseError(`Queued SSE events exceeded ${maxQueuedEvents}`, {\n code: 'ERR_SSE_QUEUE_LIMIT',\n fatal: true,\n limit: maxQueuedEvents\n });\n }\n queue.push(event);\n if (typeof userOnEvent === 'function') userOnEvent(event);\n }\n });\n const iterable = toAsyncIterable(source);\n const iterator = iterable[Symbol.asyncIterator]();\n\n try {\n while (true) {\n throwIfAborted(signal);\n const item = await nextWithAbort(iterator, signal);\n if (item.done) break;\n const chunk = item.value;\n if (typeof options.onChunk === 'function') options.onChunk(chunk);\n if (typeof chunk !== 'string' && !(chunk instanceof Uint8Array)) {\n throw new TypeError('SSE stream chunks must be strings or Uint8Array values');\n }\n for (let offset = 0; offset < chunk.length; offset += feedSize) {\n parser.feed(chunk.slice(offset, offset + feedSize));\n for (let index = 0; index < queue.length; index++) yield queue[index];\n queue.length = 0;\n throwIfAborted(signal);\n }\n }\n parser.end();\n for (let index = 0; index < queue.length; index++) yield queue[index];\n } finally {\n await closeIterator(iterator, signal);\n }\n}\n\nexport async function* decodeJSON(source, options = {}) {\n const doneSentinel = options.doneSentinel === undefined ? '[DONE]' : options.doneSentinel;\n for await (const event of decodeSSE(source, options)) {\n if (doneSentinel !== false && event.data === doneSentinel) return;\n try {\n yield { ...event, data: JSON.parse(event.data, options.reviver) };\n } catch (cause) {\n if (options.ignoreInvalidJSON === true) continue;\n throw new SSEParseError('SSE event data is not valid JSON', {\n code: 'ERR_SSE_JSON',\n fatal: true,\n cause\n });\n }\n }\n}\n\nexport function createDecoderStream(options = {}) {\n if (typeof TransformStream !== 'function') {\n throw new Error('TransformStream is not available in this runtime');\n }\n let controller;\n const parser = createParser({\n ...(options.parser || options),\n onEvent(event) {\n controller.enqueue(event);\n const callback = (options.parser || options).onEvent;\n if (typeof callback === 'function') callback(event);\n }\n });\n return new TransformStream({\n start(value) {\n controller = value;\n },\n transform(chunk) {\n parser.feed(chunk);\n },\n flush() {\n parser.end();\n }\n });\n}\n\nexport function toAsyncIterable(source) {\n const value = source && source.body ? source.body : source;\n if (!value) throw new TypeError('An SSE stream source is required');\n if (typeof value[Symbol.asyncIterator] === 'function') return value;\n if (typeof value.getReader === 'function') return webStreamIterable(value);\n if (typeof value[Symbol.iterator] === 'function') return syncToAsync(value);\n throw new TypeError('Source must be a Response, ReadableStream, AsyncIterable or Iterable');\n}\n\nasync function* webStreamIterable(stream) {\n const reader = stream.getReader();\n try {\n while (true) {\n const item = await reader.read();\n if (item.done) return;\n yield item.value;\n }\n } finally {\n try {\n await reader.cancel();\n } catch {\n // The stream may already be closed or errored.\n }\n if (typeof reader.releaseLock === 'function') reader.releaseLock();\n }\n}\n\nasync function* syncToAsync(iterable) {\n yield* iterable;\n}\n\nfunction throwIfAborted(signal) {\n if (!signal || !signal.aborted) return;\n if (signal.reason instanceof Error) throw signal.reason;\n const error = new Error('The operation was aborted');\n error.name = 'AbortError';\n throw error;\n}\n\nfunction nextWithAbort(iterator, signal) {\n if (!signal) return iterator.next();\n throwIfAborted(signal);\n return new Promise((resolve, reject) => {\n const cleanup = () => signal.removeEventListener('abort', abort);\n const abort = () => {\n cleanup();\n try {\n throwIfAborted(signal);\n } catch (error) {\n reject(error);\n }\n };\n signal.addEventListener('abort', abort, { once: true });\n if (signal.aborted) {\n abort();\n return;\n }\n Promise.resolve(iterator.next()).then(\n (item) => {\n cleanup();\n resolve(item);\n },\n (error) => {\n cleanup();\n reject(error);\n }\n );\n });\n}\n\nasync function closeIterator(iterator, signal) {\n if (typeof iterator.return !== 'function') return;\n try {\n const result = iterator.return();\n if (!signal || !signal.aborted) await result;\n else Promise.resolve(result).catch(() => {});\n } catch (error) {\n if (!signal || !signal.aborted) throw error;\n }\n}\n\nfunction readPositive(value, fallback, name) {\n const number = value === undefined ? fallback : value;\n if (!Number.isSafeInteger(number) || number < 1) {\n throw new RangeError(`${name} must be a positive safe integer`);\n }\n return number;\n}\n", "import {\n SSEError,\n SSEHTTPError,\n SSEReplayError,\n SSERetryError,\n SSETimeoutError\n} from './errors.js';\nimport { EVENT_STREAM_CONTENT_TYPE } from './encoder.js';\nimport { decodeSSE } from './iterable.js';\n\nconst RETRYABLE_STATUS = new Set([408, 425, 429, 500, 502, 503, 504]);\n\nexport async function* fetchSSE(input, options = {}) {\n const fetchImpl = options.fetch === undefined ? globalThis.fetch : options.fetch;\n if (typeof fetchImpl !== 'function') {\n throw new TypeError('No fetch implementation is available; pass options.fetch');\n }\n const retry = normalizeRetry(options.retry);\n const connectTimeout = readOptionalDelay(options.connectTimeout, 'connectTimeout');\n const idleTimeout = readOptionalDelay(options.idleTimeout, 'idleTimeout');\n const totalTimeout = readOptionalDelay(options.totalTimeout, 'totalTimeout');\n const externalSignal = options.signal;\n const requestInit = omitClientOptions(options);\n const originalBody = requestInit.body;\n const bodyReplayable = isReplayableBody(originalBody);\n let lastEventId = validateLastEventId(\n options.lastEventId === undefined ? '' : options.lastEventId\n );\n let serverRetry;\n let attempts = 0;\n let reconnects = 0;\n let lastError;\n let stopped = false;\n const startedAt = monotonicNow();\n\n while (!stopped) {\n attempts++;\n throwIfAborted(externalSignal);\n if (attempts > 1 && !bodyReplayable && typeof options.bodyFactory !== 'function') {\n throw new SSEReplayError();\n }\n\n const attempt = createAttemptController(externalSignal);\n let response;\n let timeoutPhase;\n let connectTimer;\n let idleTimer;\n let totalTimer;\n let fetchStarted = false;\n let retryDelayOverride;\n try {\n if (totalTimeout) {\n const remaining = totalTimeout - (monotonicNow() - startedAt);\n if (remaining <= 0) throw new SSETimeoutError('total', totalTimeout);\n totalTimer = setTimer(() => {\n timeoutPhase = 'total';\n attempt.abort();\n }, remaining);\n }\n if (connectTimeout) {\n connectTimer = setTimer(() => {\n timeoutPhase = 'connect';\n attempt.abort();\n }, connectTimeout);\n }\n\n let body = originalBody;\n if (typeof options.bodyFactory === 'function') {\n try {\n body = await waitForAbort(\n options.bodyFactory({\n attempt: attempts,\n lastEventId,\n signal: attempt.controller.signal\n }),\n attempt.controller.signal\n );\n } catch (cause) {\n throw new SSEError('SSE bodyFactory failed', 'ERR_SSE_BODY_FACTORY', { cause });\n }\n }\n const sourceHeaders = requestInit.headers === undefined && input && input.headers\n ? input.headers\n : requestInit.headers;\n const init = {\n ...requestInit,\n body,\n cache: requestInit.cache === undefined ? 'no-store' : requestInit.cache,\n headers: mergeSSEHeaders(sourceHeaders, lastEventId),\n signal: attempt.controller.signal\n };\n const attemptInput = cloneInput(input);\n fetchStarted = true;\n response = await waitForAbort(\n fetchImpl(attemptInput, init),\n attempt.controller.signal,\n cancelResponseBody\n );\n clearTimer(connectTimer);\n connectTimer = undefined;\n\n if (!response || typeof response.status !== 'number') {\n throw new SSEError('fetch returned an invalid Response-like value', 'ERR_SSE_RESPONSE');\n }\n\n if (response.status === 204) {\n stopped = true;\n if (typeof options.onClose === 'function') {\n await callHook(\n options.onClose,\n [{ attempts, lastEventId, reason: 'server', reconnects, response }],\n 'onClose'\n );\n }\n return;\n }\n validateResponse(response);\n if (typeof options.onOpen === 'function') {\n const result = await callHook(\n options.onOpen,\n [response, { attempts, lastEventId, reconnects }],\n 'onOpen'\n );\n if (result === false) {\n await cancelResponseBody(response);\n return;\n }\n }\n\n const resetIdle = () => {\n if (!idleTimeout) return;\n clearTimer(idleTimer);\n idleTimer = setTimer(() => {\n timeoutPhase = 'idle';\n attempt.abort();\n }, idleTimeout);\n };\n resetIdle();\n\n const parserOptions = options.parser || {};\n const userOnId = parserOptions.onId;\n const userOnRetry = parserOptions.onRetry;\n for await (const event of decodeSSE(response.body, {\n ...options.decode,\n signal: attempt.controller.signal,\n onChunk(chunk) {\n resetIdle();\n if (options.decode && typeof options.decode.onChunk === 'function') {\n options.decode.onChunk(chunk);\n }\n },\n parser: {\n ...parserOptions,\n lastEventId,\n onId(id) {\n lastEventId = id;\n if (typeof userOnId === 'function') userOnId(id);\n },\n onRetry(delay) {\n serverRetry = delay;\n if (typeof userOnRetry === 'function') userOnRetry(delay);\n }\n }\n })) {\n lastEventId = event.lastEventId;\n if (typeof options.onEvent === 'function') {\n await callHook(\n options.onEvent,\n [event, { attempts, lastEventId, reconnects, response }],\n 'onEvent'\n );\n }\n yield event;\n }\n clearTimer(idleTimer);\n lastError = undefined;\n } catch (caught) {\n clearTimer(connectTimer);\n clearTimer(idleTimer);\n clearTimer(totalTimer);\n if (externalSignal && externalSignal.aborted) throw abortReason(externalSignal);\n if (timeoutPhase) {\n lastError = new SSETimeoutError(timeoutPhase, options[`${timeoutPhase}Timeout`], caught);\n } else {\n lastError = caught;\n }\n await cancelResponseBody(response);\n if (typeof options.onError === 'function') {\n const decision = await callHook(\n options.onError,\n [{ attempt: attempts, error: lastError, lastEventId, reconnects, response }],\n 'onError'\n );\n if (decision === false) throw lastError;\n if (typeof decision === 'number') retryDelayOverride = decision;\n }\n if (!shouldRetryError(lastError, response, retry, fetchStarted)) throw lastError;\n } finally {\n clearTimer(totalTimer);\n await cancelResponseBody(response);\n attempt.dispose();\n }\n\n if (reconnects >= retry.retries) {\n if (!lastError) {\n if (typeof options.onClose === 'function') {\n await callHook(\n options.onClose,\n [{ attempts, lastEventId, reason: 'eof', reconnects, response }],\n 'onClose'\n );\n }\n return;\n }\n if (retry.retries === 0) throw lastError;\n throw new SSERetryError(attempts, lastError);\n }\n reconnects++;\n let delay = retryDelay(response, serverRetry, reconnects, retry);\n if (retryDelayOverride !== undefined) delay = clampDelay(retryDelayOverride, retry.maxDelay);\n const context = {\n attempt: attempts,\n delay,\n error: lastError,\n lastEventId,\n reconnects,\n response\n };\n if (typeof options.onRetry === 'function') {\n const decision = await callHook(options.onRetry, [context], 'onRetry');\n if (decision === false) return;\n if (typeof decision === 'number') delay = clampDelay(decision, retry.maxDelay);\n }\n await sleep(delay, externalSignal, totalTimeout, startedAt);\n }\n}\n\nexport async function consumeSSE(input, options = {}) {\n let count = 0;\n let lastEventId = options.lastEventId || '';\n for await (const event of fetchSSE(input, options)) {\n count++;\n lastEventId = event.lastEventId;\n }\n return { events: count, lastEventId };\n}\n\nexport async function fetchEventSource(input, options = {}) {\n const mapped = {\n ...options,\n onOpen: options.onopen || options.onOpen,\n onEvent: options.onmessage || options.onEvent,\n onClose: options.onclose || options.onClose,\n async onError(context) {\n if (typeof options.onerror !== 'function') {\n return typeof options.onError === 'function' ? options.onError(context) : undefined;\n }\n const decision = await options.onerror(context.error);\n return decision === undefined ? true : decision;\n },\n async onRetry(context) {\n if (typeof options.onRetry === 'function') return options.onRetry(context);\n return undefined;\n }\n };\n return consumeSSE(input, mapped);\n}\n\nfunction normalizeRetry(value) {\n const input = value === false ? { retries: 0 } : typeof value === 'number' ? { retries: value } : value || {};\n const retries = input.retries === undefined ? Infinity : input.retries;\n if (retries !== Infinity && (!Number.isSafeInteger(retries) || retries < 0)) {\n throw new RangeError('retry.retries must be a non-negative safe integer or Infinity');\n }\n const minDelay = readDelay(input.minDelay, 1000, 'retry.minDelay');\n const maxDelay = readDelay(input.maxDelay, 30000, 'retry.maxDelay');\n const factor = input.factor === undefined ? 2 : input.factor;\n if (!Number.isFinite(factor) || factor < 1) throw new RangeError('retry.factor must be at least 1');\n return {\n retries,\n minDelay,\n maxDelay: Math.max(minDelay, maxDelay),\n factor,\n jitter: input.jitter === undefined ? 'full' : input.jitter,\n statusCodes: new Set(input.statusCodes || RETRYABLE_STATUS),\n shouldRetry: input.shouldRetry\n };\n}\n\nfunction validateResponse(response) {\n if (response.status !== 200) {\n throw new SSEHTTPError(`SSE endpoint responded with HTTP ${response.status}`, response);\n }\n const contentType = response.headers && typeof response.headers.get === 'function'\n ? response.headers.get('content-type')\n : null;\n if (!contentType || contentType.split(';', 1)[0].trim().toLowerCase() !== EVENT_STREAM_CONTENT_TYPE) {\n throw new SSEHTTPError(\n `Expected Content-Type ${EVENT_STREAM_CONTENT_TYPE}; received ${contentType || 'none'}`,\n response,\n 'ERR_SSE_CONTENT_TYPE'\n );\n }\n if (!response.body) throw new SSEHTTPError('SSE response has no readable body', response);\n}\n\nfunction shouldRetryError(error, response, retry, fetchStarted) {\n if (typeof retry.shouldRetry === 'function') return retry.shouldRetry({ error, response }) === true;\n if (error && error.code === 'ERR_SSE_CONTENT_TYPE') return false;\n if (!error) return false;\n if (error.code === 'ERR_SSE_TIMEOUT') return true;\n if (response && response.status !== 200) return retry.statusCodes.has(response.status);\n if (!fetchStarted) return false;\n return error.name === 'TypeError' || NETWORK_ERROR_CODES.has(error.code);\n}\n\nfunction retryDelay(response, serverRetry, reconnects, options) {\n const header = response && response.headers && typeof response.headers.get === 'function'\n ? response.headers.get('retry-after')\n : null;\n const fromHeader = parseRetryAfter(header);\n if (fromHeader !== undefined) return clampDelay(fromHeader, options.maxDelay);\n if (serverRetry !== undefined) return clampDelay(serverRetry, options.maxDelay);\n const exponential = Math.min(\n options.maxDelay,\n options.minDelay * Math.pow(options.factor, reconnects - 1)\n );\n if (options.jitter === false || options.jitter === 'none') return exponential;\n if (typeof options.jitter === 'function') return clampDelay(options.jitter(exponential), options.maxDelay);\n return Math.floor(Math.random() * (exponential + 1));\n}\n\nfunction parseRetryAfter(value) {\n if (!value) return undefined;\n const seconds = Number(value);\n if (Number.isFinite(seconds) && seconds >= 0) return Math.round(seconds * 1000);\n const date = Date.parse(value);\n if (Number.isNaN(date)) return undefined;\n return Math.max(0, date - Date.now());\n}\n\nfunction mergeSSEHeaders(input, lastEventId) {\n const entries = [];\n if (input && typeof input[Symbol.iterator] === 'function' && typeof input !== 'string') {\n for (const pair of input) setHeader(entries, pair[0], pair[1]);\n } else if (input && typeof input.forEach === 'function') {\n input.forEach((value, key) => setHeader(entries, key, value));\n } else if (input && typeof input === 'object') {\n for (const key of Object.keys(input)) setHeader(entries, key, input[key]);\n }\n if (!hasHeader(entries, 'accept')) setHeader(entries, 'Accept', EVENT_STREAM_CONTENT_TYPE);\n if (lastEventId) setHeader(entries, 'Last-Event-ID', lastEventId);\n else deleteHeader(entries, 'last-event-id');\n return entries;\n}\n\nfunction setHeader(entries, key, value) {\n const name = String(key);\n deleteHeader(entries, name);\n entries.push([name, String(value)]);\n}\n\nfunction deleteHeader(entries, name) {\n const lower = String(name).toLowerCase();\n for (let index = entries.length - 1; index >= 0; index--) {\n if (entries[index][0].toLowerCase() === lower) entries.splice(index, 1);\n }\n}\n\nfunction hasHeader(entries, name) {\n const lower = name.toLowerCase();\n return entries.some((entry) => entry[0].toLowerCase() === lower);\n}\n\nfunction omitClientOptions(options) {\n const output = {};\n const privateKeys = new Set([\n 'bodyFactory', 'connectTimeout', 'decode', 'fetch', 'idleTimeout', 'lastEventId',\n 'onClose', 'onError', 'onEvent', 'onOpen', 'onRetry', 'onclose', 'onerror',\n 'onmessage', 'onopen', 'openWhenHidden', 'parser', 'retry', 'totalTimeout'\n ]);\n for (const key of Object.keys(options)) if (!privateKeys.has(key)) output[key] = options[key];\n return output;\n}\n\nfunction isReplayableBody(body) {\n if (body === undefined || body === null) return true;\n if (typeof body === 'string') return true;\n if (body instanceof ArrayBuffer || ArrayBuffer.isView(body)) return true;\n if (typeof URLSearchParams === 'function' && body instanceof URLSearchParams) return true;\n if (typeof Blob === 'function' && body instanceof Blob) return true;\n if (typeof FormData === 'function' && body instanceof FormData) return true;\n return !(typeof body.getReader === 'function' || typeof body[Symbol.asyncIterator] === 'function');\n}\n\nfunction cloneInput(input) {\n if (input && typeof input === 'object' && typeof input.clone === 'function') return input.clone();\n return input;\n}\n\nfunction validateLastEventId(value) {\n if (typeof value !== 'string') throw new TypeError('lastEventId must be a string');\n if (value.indexOf('\\0') !== -1 || value.indexOf('\\r') !== -1 || value.indexOf('\\n') !== -1) {\n throw new TypeError('lastEventId cannot contain NUL, CR or LF');\n }\n return value;\n}\n\nfunction createAttemptController(signal) {\n if (typeof AbortController !== 'function') throw new Error('AbortController is not available');\n const controller = new AbortController();\n const forward = () => controller.abort();\n if (signal) signal.addEventListener('abort', forward, { once: true });\n if (signal && signal.aborted) controller.abort();\n return {\n controller,\n abort() {\n controller.abort();\n },\n dispose() {\n if (signal) signal.removeEventListener('abort', forward);\n }\n };\n}\n\nasync function sleep(delay, signal, totalTimeout, startedAt) {\n if (delay <= 0) return;\n throwIfAborted(signal);\n let actual = delay;\n if (totalTimeout) {\n const remaining = totalTimeout - (monotonicNow() - startedAt);\n if (remaining <= 0) throw new SSETimeoutError('total', totalTimeout);\n actual = Math.min(actual, remaining);\n }\n await new Promise((resolve, reject) => {\n const done = () => {\n if (signal) signal.removeEventListener('abort', abort);\n resolve();\n };\n const timer = setTimer(done, actual);\n const abort = () => {\n clearTimer(timer);\n if (signal) signal.removeEventListener('abort', abort);\n reject(abortReason(signal));\n };\n if (signal) {\n signal.addEventListener('abort', abort, { once: true });\n if (signal.aborted) abort();\n }\n });\n if (totalTimeout && monotonicNow() - startedAt >= totalTimeout) {\n throw new SSETimeoutError('total', totalTimeout);\n }\n}\n\nfunction waitForAbort(value, signal, onLateValue) {\n throwIfAborted(signal);\n return new Promise((resolve, reject) => {\n let aborted = false;\n const cleanup = () => signal.removeEventListener('abort', abort);\n const abort = () => {\n aborted = true;\n cleanup();\n reject(abortReason(signal));\n };\n signal.addEventListener('abort', abort, { once: true });\n if (signal.aborted) {\n abort();\n return;\n }\n Promise.resolve(value).then(\n (result) => {\n cleanup();\n if (aborted) {\n if (onLateValue) onLateValue(result);\n return;\n }\n resolve(result);\n },\n (error) => {\n cleanup();\n reject(error);\n }\n );\n });\n}\n\nfunction setTimer(callback, delay) {\n return setTimeout(callback, delay);\n}\n\nfunction clearTimer(timer) {\n if (timer !== undefined) clearTimeout(timer);\n}\n\nfunction throwIfAborted(signal) {\n if (signal && signal.aborted) throw abortReason(signal);\n}\n\nfunction abortReason(signal) {\n if (signal && signal.reason instanceof Error) return signal.reason;\n const error = new Error('The operation was aborted');\n error.name = 'AbortError';\n return error;\n}\n\nfunction readDelay(value, fallback, name) {\n const number = value === undefined ? fallback : value;\n if (!Number.isFinite(number) || number < 0) throw new RangeError(`${name} must be a non-negative number`);\n return Math.round(number);\n}\n\nfunction readOptionalDelay(value, name) {\n if (value === undefined || value === null || value === 0) return 0;\n return readDelay(value, 0, name);\n}\n\nfunction clampDelay(value, max) {\n if (!Number.isFinite(value) || value < 0) throw new RangeError('Retry delay must be a non-negative number');\n return Math.min(Math.round(value), max);\n}\n\nfunction monotonicNow() {\n return typeof performance === 'object' && performance && typeof performance.now === 'function'\n ? performance.now()\n : Date.now();\n}\n\nfunction cancelResponseBody(response) {\n if (!response || !response.body || typeof response.body.cancel !== 'function') return;\n try {\n const cancellation = response.body.cancel();\n if (cancellation && typeof cancellation.catch === 'function') cancellation.catch(() => {});\n } catch {\n // A transport may have already closed the rejected response body.\n }\n}\n\nasync function callHook(hook, args, name) {\n try {\n return await hook(...args);\n } catch (cause) {\n throw new SSEError(`SSE ${name} callback failed`, 'ERR_SSE_CALLBACK', { cause });\n }\n}\n\nconst NETWORK_ERROR_CODES = new Set([\n 'ECONNREFUSED',\n 'ECONNRESET',\n 'EHOSTUNREACH',\n 'ENETDOWN',\n 'ENETUNREACH',\n 'ENOTFOUND',\n 'ETIMEDOUT'\n]);\n", "import { encodeJSON, encodeSSE, EVENT_STREAM_CONTENT_TYPE } from './encoder.js';\n\nexport function createSSEChannel(options = {}) {\n if (typeof ReadableStream !== 'function') throw new Error('ReadableStream is not available in this runtime');\n if (typeof TextEncoder !== 'function') throw new Error('TextEncoder is not available in this runtime');\n const encoder = new TextEncoder();\n const highWaterMark = readHighWaterMark(options.highWaterMark);\n const heartbeatInterval = readHeartbeatInterval(options.heartbeatInterval);\n const heartbeat = heartbeatInterval\n ? encoder.encode(encodeSSE({ comment: options.heartbeatComment ?? 'keep-alive' }, options))\n : undefined;\n let controller;\n let open = true;\n let readyPromise = Promise.resolve();\n let resolveReady;\n let resolveClosed;\n let heartbeatTimer;\n let responseClaimed = false;\n const closed = new Promise((resolve) => {\n resolveClosed = resolve;\n });\n\n const stream = new ReadableStream({\n start(value) {\n controller = value;\n if (heartbeatInterval) {\n heartbeatTimer = setInterval(() => {\n if (open && controller.desiredSize > 0) controller.enqueue(heartbeat);\n }, heartbeatInterval);\n if (heartbeatTimer && typeof heartbeatTimer.unref === 'function') heartbeatTimer.unref();\n }\n },\n pull() {\n if (resolveReady) {\n resolveReady();\n resolveReady = undefined;\n readyPromise = Promise.resolve();\n }\n },\n cancel(reason) {\n finish(reason);\n }\n }, {\n highWaterMark,\n size(chunk) {\n return chunk.byteLength;\n }\n });\n\n function send(message) {\n assertOpen();\n controller.enqueue(encoder.encode(encodeSSE(message, options)));\n updateReady();\n return controller.desiredSize > 0;\n }\n\n function sendJSON(data, fields = {}) {\n assertOpen();\n controller.enqueue(encoder.encode(encodeJSON(data, fields, options)));\n updateReady();\n return controller.desiredSize > 0;\n }\n\n function comment(value) {\n return send({ comment: value });\n }\n\n function close() {\n if (!open) return;\n open = false;\n clearInterval(heartbeatTimer);\n if (resolveReady) resolveReady();\n controller.close();\n resolveClosed();\n }\n\n function error(reason) {\n if (!open) return;\n open = false;\n clearInterval(heartbeatTimer);\n if (resolveReady) resolveReady();\n controller.error(reason);\n resolveClosed(reason);\n }\n\n function toResponse(init = {}) {\n if (typeof Response !== 'function') throw new Error('Response is not available in this runtime');\n if (responseClaimed) throw new Error('SSE channel response has already been created');\n responseClaimed = true;\n return new Response(stream, {\n ...init,\n headers: responseHeaders(init.headers)\n });\n }\n\n function updateReady() {\n if (controller.desiredSize > 0 || resolveReady) return;\n readyPromise = new Promise((resolve) => {\n resolveReady = resolve;\n });\n }\n\n function finish(reason) {\n if (!open) return;\n open = false;\n clearInterval(heartbeatTimer);\n if (resolveReady) resolveReady();\n resolveClosed(reason);\n }\n\n function assertOpen() {\n if (!open) throw new Error('SSE channel is closed');\n }\n\n return {\n stream,\n send,\n sendJSON,\n comment,\n close,\n error,\n toResponse,\n closed,\n get open() {\n return open;\n },\n get ready() {\n return readyPromise;\n }\n };\n}\n\nexport function eventStreamResponse(source, options = {}) {\n if (typeof ReadableStream !== 'function') throw new Error('ReadableStream is not available in this runtime');\n if (typeof Response !== 'function') throw new Error('Response is not available in this runtime');\n if (typeof TextEncoder !== 'function') throw new Error('TextEncoder is not available in this runtime');\n const encoder = new TextEncoder();\n const iterator = toIterator(source);\n const stream = new ReadableStream({\n async pull(controller) {\n try {\n const item = await iterator.next();\n if (item.done) {\n controller.close();\n return;\n }\n const output = options.json === true\n ? encodeJSON(item.value.data, item.value, options)\n : encodeSSE(item.value, options);\n controller.enqueue(encoder.encode(output));\n } catch (error) {\n if (typeof iterator.return === 'function') {\n try {\n await iterator.return(error);\n } catch {\n // Preserve the original read failure.\n }\n }\n controller.error(error);\n }\n },\n async cancel(reason) {\n if (typeof iterator.return === 'function') await iterator.return(reason);\n }\n }, {\n highWaterMark: readHighWaterMark(options.highWaterMark),\n size(chunk) {\n return chunk.byteLength;\n }\n });\n return new Response(stream, {\n status: options.status || 200,\n statusText: options.statusText,\n headers: responseHeaders(options.headers)\n });\n}\n\nfunction responseHeaders(input) {\n const headers = typeof Headers === 'function' ? new Headers(input) : new Map();\n const has = (name) => typeof headers.has === 'function' && headers.has(name);\n const set = (name, value) => {\n if (typeof headers.set === 'function') headers.set(name, value);\n };\n if (!has('Content-Type')) set('Content-Type', `${EVENT_STREAM_CONTENT_TYPE}; charset=utf-8`);\n if (!has('Cache-Control')) set('Cache-Control', 'no-cache, no-transform');\n if (!has('X-Accel-Buffering')) set('X-Accel-Buffering', 'no');\n return headers;\n}\n\nfunction toIterator(source) {\n if (!source) throw new TypeError('An event iterable is required');\n if (typeof source[Symbol.asyncIterator] === 'function') return source[Symbol.asyncIterator]();\n if (typeof source[Symbol.iterator] === 'function') {\n const iterator = source[Symbol.iterator]();\n return {\n next() {\n return Promise.resolve(iterator.next());\n },\n return(value) {\n return Promise.resolve(typeof iterator.return === 'function' ? iterator.return(value) : { done: true, value });\n }\n };\n }\n throw new TypeError('Events must be an Iterable or AsyncIterable');\n}\n\nfunction readHighWaterMark(value) {\n const number = value === undefined ? 64 * 1024 : value;\n if (!Number.isFinite(number) || number < 1) throw new RangeError('highWaterMark must be a positive number');\n return number;\n}\n\nfunction readHeartbeatInterval(value) {\n if (value === undefined || value === null || value === 0) return 0;\n if (!Number.isFinite(value) || value < 0) {\n throw new RangeError('heartbeatInterval must be a non-negative number');\n }\n return Math.round(value);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["index_exports", "__export", "EVENT_STREAM_CONTENT_TYPE", "EventStreamContentType", "SSEEncodeError", "SSEError", "SSEHTTPError", "SSEParseError", "SSEReplayError", "SSERetryError", "SSETimeoutError", "consumeSSE", "createDecoderStream", "createEncoderStream", "createParser", "createSSEChannel", "decodeJSON", "decodeSSE", "index_default", "encode", "encodeComment", "encodeJSON", "encodeSSE", "eventStreamResponse", "fetchEventSource", "fetchSSE", "toAsyncIterable", "SSEError", "message", "code", "details", "SSEParseError", "SSEEncodeError", "field", "cause", "SSEHTTPError", "response", "SSETimeoutError", "phase", "timeout", "SSERetryError", "attempts", "SSEReplayError", "DEFAULT_MAX_EVENT_SIZE", "DEFAULT_MAX_LINE_LENGTH", "LF", "CR", "SPACE", "BOM", "NUL", "noop", "createParser", "config", "onEvent", "onComment", "onRetry", "onError", "onId", "strict", "fatalUTF8", "maxEventSize", "readLimit", "maxLineLength", "decoder", "inputMode", "lineFragments", "lineLength", "skipLeadingLF", "atStart", "dataLines", "eventSize", "eventType", "idBuffer", "normalizeInitialId", "committedId", "hasPendingId", "terminated", "bytes", "characters", "events", "comments", "retries", "feed", "chunk", "SSEParseError", "fatal", "processText", "api", "text", "getDecoder", "error", "end", "tail", "discardPendingEvent", "clearLine", "reset", "options", "processLine", "joinLine", "nextId", "input", "processLFText", "index", "segmentStart", "code", "appendLine", "start", "isDataPrefix", "valueStart", "value", "addEventSize", "dispatchSingleData", "fragment", "line", "dispatchEvent", "first", "processRetry", "separator", "field", "recoverable", "truncate", "isAsciiDigits", "number", "eventId", "event", "data", "amount", "message", "details", "fallback", "name", "limit", "EVENT_STREAM_CONTENT_TYPE", "EventStreamContentType", "encodeSSE", "message", "options", "newline", "SSEEncodeError", "lines", "line", "splitLines", "toText", "value", "assertSingleLine", "encode", "encodeJSON", "data", "fields", "encoded", "error", "encodeComment", "comment", "createEncoderStream", "Transform", "getTransformStream", "encoder", "getTextEncoder", "controller", "output", "start", "index", "code", "field", "rejectNul", "DEFAULT_FEED_SIZE", "DEFAULT_MAX_QUEUED_EVENTS", "decodeSSE", "source", "options", "signal", "feedSize", "readPositive", "maxQueuedEvents", "queue", "parserOptions", "userOnEvent", "parser", "createParser", "event", "SSEParseError", "iterator", "toAsyncIterable", "throwIfAborted", "item", "nextWithAbort", "chunk", "offset", "index", "closeIterator", "decodeJSON", "doneSentinel", "cause", "createDecoderStream", "controller", "callback", "value", "webStreamIterable", "syncToAsync", "stream", "reader", "e", "iterable", "error", "resolve", "reject", "cleanup", "abort", "result", "fallback", "name", "number", "RETRYABLE_STATUS", "fetchSSE", "input", "options", "fetchImpl", "retry", "normalizeRetry", "connectTimeout", "readOptionalDelay", "idleTimeout", "totalTimeout", "externalSignal", "requestInit", "omitClientOptions", "originalBody", "bodyReplayable", "isReplayableBody", "lastEventId", "validateLastEventId", "serverRetry", "attempts", "reconnects", "lastError", "stopped", "startedAt", "monotonicNow", "throwIfAborted", "SSEReplayError", "attempt", "createAttemptController", "response", "timeoutPhase", "connectTimer", "idleTimer", "totalTimer", "fetchStarted", "retryDelayOverride", "remaining", "SSETimeoutError", "setTimer", "body", "waitForAbort", "cause", "SSEError", "sourceHeaders", "init", "mergeSSEHeaders", "attemptInput", "cloneInput", "cancelResponseBody", "clearTimer", "callHook", "validateResponse", "resetIdle", "parserOptions", "userOnId", "userOnRetry", "event", "decodeSSE", "chunk", "id", "delay", "caught", "abortReason", "decision", "shouldRetryError", "SSERetryError", "retryDelay", "clampDelay", "context", "sleep", "consumeSSE", "count", "fetchEventSource", "mapped", "value", "retries", "minDelay", "readDelay", "maxDelay", "factor", "SSEHTTPError", "contentType", "EVENT_STREAM_CONTENT_TYPE", "error", "NETWORK_ERROR_CODES", "header", "fromHeader", "parseRetryAfter", "exponential", "seconds", "date", "entries", "pair", "setHeader", "key", "hasHeader", "deleteHeader", "name", "lower", "index", "entry", "output", "privateKeys", "signal", "controller", "forward", "actual", "resolve", "reject", "timer", "abort", "onLateValue", "aborted", "cleanup", "result", "callback", "fallback", "number", "max", "cancellation", "e", "hook", "args", "createSSEChannel", "options", "_a", "encoder", "highWaterMark", "readHighWaterMark", "heartbeatInterval", "readHeartbeatInterval", "heartbeat", "encodeSSE", "controller", "open", "readyPromise", "resolveReady", "resolveClosed", "heartbeatTimer", "responseClaimed", "closed", "resolve", "stream", "value", "reason", "finish", "chunk", "send", "message", "assertOpen", "updateReady", "sendJSON", "data", "fields", "encodeJSON", "comment", "close", "error", "toResponse", "init", "responseHeaders", "eventStreamResponse", "source", "iterator", "toIterator", "item", "output", "e", "input", "headers", "has", "name", "set", "EVENT_STREAM_CONTENT_TYPE", "number", "api", "EVENT_STREAM_CONTENT_TYPE", "EventStreamContentType", "SSEEncodeError", "SSEError", "SSEHTTPError", "SSEParseError", "SSEReplayError", "SSERetryError", "SSETimeoutError", "consumeSSE", "createDecoderStream", "createEncoderStream", "createParser", "createSSEChannel", "decodeJSON", "decodeSSE", "encode", "encodeComment", "encodeJSON", "encodeSSE", "eventStreamResponse", "fetchEventSource", "fetchSSE", "toAsyncIterable", "index_default"]
|
|
7
|
+
}
|