@azure/core-sse 2.3.1-alpha.20260310.2 → 2.4.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/README.md +1 -1
- package/dist/browser/index.d.ts +1 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/models.d.ts +1 -12
- package/dist/browser/models.js.map +1 -1
- package/dist/browser/sse.d.ts +2 -2
- package/dist/browser/sse.js.map +1 -1
- package/dist/browser/types-browser.d.mts +14 -0
- package/dist/browser/types-browser.mjs +9 -0
- package/dist/browser/types-browser.mjs.map +1 -0
- package/dist/browser/utils.d.ts +2 -2
- package/dist/browser/utils.js +2 -9
- package/dist/browser/utils.js.map +1 -1
- package/dist/commonjs/index.d.ts +1 -1
- package/dist/commonjs/index.js +1 -0
- package/dist/commonjs/index.js.map +2 -2
- package/dist/commonjs/models.d.ts +1 -12
- package/dist/commonjs/models.js +1 -0
- package/dist/commonjs/models.js.map +2 -2
- package/dist/commonjs/sse.d.ts +2 -2
- package/dist/commonjs/sse.js +1 -0
- package/dist/commonjs/sse.js.map +3 -3
- package/dist/commonjs/tsdoc-metadata.json +1 -1
- package/dist/commonjs/types.d.ts +22 -0
- package/dist/commonjs/types.js +34 -0
- package/dist/commonjs/types.js.map +7 -0
- package/dist/commonjs/utils.d.ts +2 -2
- package/dist/commonjs/utils.js +3 -7
- package/dist/commonjs/utils.js.map +3 -3
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +4 -4
- package/dist/esm/index.js.map +1 -7
- package/dist/esm/models.d.ts +1 -12
- package/dist/esm/models.js +4 -0
- package/dist/esm/models.js.map +1 -7
- package/dist/esm/sse.d.ts +2 -2
- package/dist/esm/sse.js +112 -100
- package/dist/esm/sse.js.map +1 -7
- package/dist/esm/types.d.ts +22 -0
- package/dist/esm/types.js +14 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils.d.ts +2 -2
- package/dist/esm/utils.js +64 -66
- package/dist/esm/utils.js.map +1 -7
- package/dist/react-native/index.d.ts +1 -1
- package/dist/react-native/index.js.map +1 -1
- package/dist/react-native/models.d.ts +1 -12
- package/dist/react-native/models.js.map +1 -1
- package/dist/react-native/sse.d.ts +2 -2
- package/dist/react-native/sse.js.map +1 -1
- package/dist/react-native/types-react-native.d.mts +49 -0
- package/dist/react-native/types-react-native.mjs +9 -0
- package/dist/react-native/types-react-native.mjs.map +1 -0
- package/dist/react-native/utils.d.ts +2 -2
- package/dist/react-native/utils.js +2 -9
- package/dist/react-native/utils.js.map +1 -1
- package/package.json +31 -18
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Azure Core SSE library for JavaScript
|
|
2
2
|
|
|
3
|
-
This is an implementation of server-sent events which work in the browser and Node.js. This library is primarily intended to be used in code generated by [
|
|
3
|
+
This is an implementation of server-sent events which work in the browser and Node.js. This library is primarily intended to be used in code generated by the [TypeSpec](https://typespec.io) [`@azure-tools/typespec-ts`](https://github.com/Azure/typespec-azure/tree/main/packages/typespec-ts) emitter.
|
|
4
4
|
|
|
5
5
|
## Getting started
|
|
6
6
|
|
package/dist/browser/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { createSseStream } from "./sse.js";
|
|
2
|
-
export type { EventMessage, EventMessageStream, NodeJSReadableStream } from "./models.js";
|
|
2
|
+
export type { EventMessage, EventMessageStream, NodeIncomingMessage, NodeJSReadableStream, } from "./models.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { createSseStream } from \"./sse.js\";\nexport type {
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { createSseStream } from \"./sse.js\";\nexport type {\n EventMessage,\n EventMessageStream,\n NodeIncomingMessage,\n NodeJSReadableStream,\n} from \"./models.js\";\n"]}
|
package/dist/browser/models.d.ts
CHANGED
|
@@ -16,16 +16,5 @@ export interface EventMessage {
|
|
|
16
16
|
* A stream of event messages
|
|
17
17
|
*/
|
|
18
18
|
export type EventMessageStream = ReadableStream<EventMessage> & AsyncDisposable & AsyncIterable<EventMessage>;
|
|
19
|
-
export type
|
|
20
|
-
/**
|
|
21
|
-
* A Node.js Readable stream that also has a `destroy` method.
|
|
22
|
-
*/
|
|
23
|
-
export interface NodeJSReadableStream extends NodeJS.ReadableStream {
|
|
24
|
-
/**
|
|
25
|
-
* Destroy the stream. Optionally emit an 'error' event, and emit a
|
|
26
|
-
* 'close' event (unless emitClose is set to false). After this call,
|
|
27
|
-
* internal resources will be released.
|
|
28
|
-
*/
|
|
29
|
-
destroy(error?: Error): void;
|
|
30
|
-
}
|
|
19
|
+
export type { NodeIncomingMessage, NodeJSReadableStream } from "./types-browser.mjs";
|
|
31
20
|
//# sourceMappingURL=models.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Represents a message sent in an event stream\n * https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format\n */\nexport interface EventMessage {\n /** The event ID to set the EventSource object's last event ID value. */\n id: string;\n /** A string identifying the type of event described. */\n event: string;\n /** The event data */\n data: string;\n /** The reconnection interval (in milliseconds) to wait before retrying the connection */\n retry?: number;\n}\n\n/**\n * A stream of event messages\n */\nexport type EventMessageStream = ReadableStream<EventMessage> &\n AsyncDisposable &\n AsyncIterable<EventMessage>;\n\nexport type
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Represents a message sent in an event stream\n * https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format\n */\nexport interface EventMessage {\n /** The event ID to set the EventSource object's last event ID value. */\n id: string;\n /** A string identifying the type of event described. */\n event: string;\n /** The event data */\n data: string;\n /** The reconnection interval (in milliseconds) to wait before retrying the connection */\n retry?: number;\n}\n\n/**\n * A stream of event messages\n */\nexport type EventMessageStream = ReadableStream<EventMessage> &\n AsyncDisposable &\n AsyncIterable<EventMessage>;\n\nexport type { NodeIncomingMessage, NodeJSReadableStream } from \"#platform/types\";\n"]}
|
package/dist/browser/sse.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { NodeIncomingMessage } from "./types-browser.mjs";
|
|
2
2
|
import type { EventMessageStream, NodeJSReadableStream } from "./models.js";
|
|
3
3
|
/**
|
|
4
4
|
* Processes a response stream into a stream of events.
|
|
@@ -11,7 +11,7 @@ export declare function createSseStream(chunkStream: ReadableStream<Uint8Array>)
|
|
|
11
11
|
* @param chunkStream - A NodeJS HTTP response
|
|
12
12
|
* @returns A stream of EventMessage objects
|
|
13
13
|
*/
|
|
14
|
-
export declare function createSseStream(chunkStream:
|
|
14
|
+
export declare function createSseStream(chunkStream: NodeIncomingMessage): EventMessageStream;
|
|
15
15
|
/**
|
|
16
16
|
* Processes a response stream into a stream of events.
|
|
17
17
|
* @param chunkStream - A NodeJS Readable stream
|
package/dist/browser/sse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/sse.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;
|
|
1
|
+
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/sse.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { NodeIncomingMessage } from \"#platform/types\";\nimport type { EventMessage, EventMessageStream, NodeJSReadableStream } from \"./models.js\";\nimport { createStream, ensureAsyncIterable } from \"./utils.js\";\n\ntype PartialSome<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n\nenum ControlChars {\n NewLine = 10,\n CarriageReturn = 13,\n Space = 32,\n Colon = 58,\n}\n\n/**\n * Processes a response stream into a stream of events.\n * @param chunkStream - A stream of Uint8Array chunks\n * @returns A stream of EventMessage objects\n */\nexport function createSseStream(chunkStream: ReadableStream<Uint8Array>): EventMessageStream;\n/**\n * Processes a response stream into a stream of events.\n * @param chunkStream - A NodeJS HTTP response\n * @returns A stream of EventMessage objects\n */\nexport function createSseStream(chunkStream: NodeIncomingMessage): EventMessageStream;\n/**\n * Processes a response stream into a stream of events.\n * @param chunkStream - A NodeJS Readable stream\n * @returns A stream of EventMessage objects\n */\nexport function createSseStream(chunkStream: NodeJSReadableStream): EventMessageStream;\nexport function createSseStream(\n chunkStream: NodeIncomingMessage | NodeJSReadableStream | ReadableStream<Uint8Array>,\n): EventMessageStream {\n const { cancel, iterable } = ensureAsyncIterable(chunkStream);\n const asyncIter = toMessage(toLine(iterable));\n return createStream(asyncIter, cancel);\n}\n\nfunction concatBuffer(a: Uint8Array, b: Uint8Array): Uint8Array {\n const res = new Uint8Array(a.length + b.length);\n res.set(a);\n res.set(b, a.length);\n return res;\n}\n\nfunction createMessage(): PartialSome<EventMessage, \"data\"> {\n return {\n data: undefined,\n event: \"\",\n id: \"\",\n retry: undefined,\n };\n}\n\nasync function* toLine(\n chunkIter: AsyncIterable<Uint8Array>,\n): AsyncIterable<{ line: Uint8Array; fieldLen: number }> {\n let buf: Uint8Array | undefined;\n let bufIdx = 0;\n let fieldLen = -1;\n let discardTrailingNewline = false;\n for await (const chunk of chunkIter) {\n if (buf === undefined) {\n buf = chunk;\n bufIdx = 0;\n fieldLen = -1;\n } else {\n buf = concatBuffer(buf, chunk);\n }\n const bufLen = buf.length;\n let start = 0;\n while (bufIdx < bufLen) {\n if (discardTrailingNewline) {\n if (buf[bufIdx] === ControlChars.NewLine) {\n start = ++bufIdx;\n }\n discardTrailingNewline = false;\n }\n let end = -1;\n for (; bufIdx < bufLen && end === -1; ++bufIdx) {\n switch (buf[bufIdx]) {\n case ControlChars.Colon:\n if (fieldLen === -1) {\n fieldLen = bufIdx - start;\n }\n break;\n case ControlChars.CarriageReturn:\n // We need to discard the trailing newline if any but can't do\n // that now because we need to dispatch the current line first.\n discardTrailingNewline = true;\n end = bufIdx;\n break;\n case ControlChars.NewLine:\n end = bufIdx;\n break;\n }\n }\n if (end === -1) {\n // We reached the end of the buffer but the line hasn't ended.\n // Wait for the next chunk and then continue parsing:\n break;\n }\n yield { line: buf.subarray(start, end), fieldLen };\n start = bufIdx; // we're now on the next line\n fieldLen = -1;\n }\n if (start === bufLen) {\n buf = undefined;\n } else if (start !== 0) {\n // discard already processed lines\n buf = buf.subarray(start);\n bufIdx -= start;\n }\n }\n}\n\nasync function* toMessage(\n lineIter: AsyncIterable<{ line: Uint8Array; fieldLen: number }>,\n): AsyncIterableIterator<EventMessage> {\n let message = createMessage();\n const decoder = new TextDecoder();\n for await (const { line, fieldLen } of lineIter) {\n if (line.length === 0 && message.data !== undefined) {\n // empty line denotes end of message. Yield and start a new message:\n yield message as EventMessage;\n message = createMessage();\n } else if (fieldLen > 0) {\n // exclude comments and lines with no values\n // line is of format \"<field>:<value>\" or \"<field>: <value>\"\n // https://html.spec.whatwg.org/multipage/server-sent-events.html#event-stream-interpretation\n const field = decoder.decode(line.subarray(0, fieldLen));\n const valueOffset = fieldLen + (line[fieldLen + 1] === ControlChars.Space ? 2 : 1);\n const value = decoder.decode(line.subarray(valueOffset));\n\n switch (field) {\n case \"data\":\n message.data = message.data ? message.data + \"\\n\" + value : value;\n break;\n case \"event\":\n message.event = value;\n break;\n case \"id\":\n message.id = value;\n break;\n case \"retry\": {\n const retry = parseInt(value, 10);\n if (!isNaN(retry)) {\n message.retry = retry;\n }\n break;\n }\n }\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An alias for Node.js's `http.IncomingMessage` type. Defined as `never` on
|
|
3
|
+
* browser and React Native platforms where Node.js HTTP is not available.
|
|
4
|
+
*/
|
|
5
|
+
export type NodeIncomingMessage = never;
|
|
6
|
+
/**
|
|
7
|
+
* `NodeJSReadableStream` is not available in the browser or React Native.
|
|
8
|
+
*/
|
|
9
|
+
export type NodeJSReadableStream = never;
|
|
10
|
+
/**
|
|
11
|
+
* No-op in browser/React Native — Node streams are not available.
|
|
12
|
+
*/
|
|
13
|
+
export declare function cancelNodeStream(_stream: never): void;
|
|
14
|
+
//# sourceMappingURL=types-browser.d.mts.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
/**
|
|
4
|
+
* No-op in browser/React Native — Node streams are not available.
|
|
5
|
+
*/
|
|
6
|
+
export function cancelNodeStream(_stream) {
|
|
7
|
+
// unreachable
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=types-browser.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-browser.mjs","sourceRoot":"","sources":["../../src/types-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAalC;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAc;IAC7C,cAAc;AAChB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * An alias for Node.js's `http.IncomingMessage` type. Defined as `never` on\n * browser and React Native platforms where Node.js HTTP is not available.\n */\nexport type NodeIncomingMessage = never;\n\n/**\n * `NodeJSReadableStream` is not available in the browser or React Native.\n */\nexport type NodeJSReadableStream = never;\n\n/**\n * No-op in browser/React Native — Node streams are not available.\n */\nexport function cancelNodeStream(_stream: never): void {\n // unreachable\n}\n"]}
|
package/dist/browser/utils.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { NodeIncomingMessage } from "./types-browser.mjs";
|
|
2
2
|
import type { NodeJSReadableStream } from "./models.js";
|
|
3
3
|
export declare function createStream<T>(asyncIter: AsyncIterableIterator<T>, cancel: () => PromiseLike<void>): ReadableStream<T> & AsyncDisposable & AsyncIterable<T>;
|
|
4
|
-
export declare function ensureAsyncIterable(stream:
|
|
4
|
+
export declare function ensureAsyncIterable(stream: NodeIncomingMessage | NodeJSReadableStream | ReadableStream<Uint8Array>): {
|
|
5
5
|
cancel(): Promise<void>;
|
|
6
6
|
iterable: AsyncIterable<Uint8Array>;
|
|
7
7
|
};
|
package/dist/browser/utils.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
|
+
import { cancelNodeStream } from "./types-browser.mjs";
|
|
3
4
|
export function createStream(asyncIter, cancel) {
|
|
4
5
|
const stream = iteratorToStream(asyncIter, cancel);
|
|
5
6
|
/** TODO: remove these polyfills once all supported runtimes support them */
|
|
@@ -48,15 +49,7 @@ export function ensureAsyncIterable(stream) {
|
|
|
48
49
|
}
|
|
49
50
|
else {
|
|
50
51
|
return {
|
|
51
|
-
cancel: async () =>
|
|
52
|
-
// socket could be null if the connection is already closed
|
|
53
|
-
if ("socket" in stream && stream.socket) {
|
|
54
|
-
stream.socket.end();
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
stream.destroy();
|
|
58
|
-
}
|
|
59
|
-
},
|
|
52
|
+
cancel: async () => cancelNodeStream(stream),
|
|
60
53
|
iterable: stream,
|
|
61
54
|
};
|
|
62
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { NodeIncomingMessage } from \"#platform/types\";\nimport { cancelNodeStream } from \"#platform/types\";\nimport type { NodeJSReadableStream } from \"./models.js\";\n\nexport function createStream<T>(\n asyncIter: AsyncIterableIterator<T>,\n cancel: () => PromiseLike<void>,\n): ReadableStream<T> & AsyncDisposable & AsyncIterable<T> {\n const stream = iteratorToStream(asyncIter, cancel);\n /** TODO: remove these polyfills once all supported runtimes support them */\n return polyfillStream(stream, cancel);\n}\n\nfunction polyfillStream<T>(\n stream: ReadableStream<T>,\n dispose: () => PromiseLike<void>,\n): ReadableStream<T> & AsyncIterable<T> & AsyncDisposable {\n makeAsyncIterable<T>(stream);\n makeAsyncDisposable(stream, dispose);\n return stream;\n}\n\nfunction makeAsyncDisposable<T>(\n webStream: any,\n dispose: () => PromiseLike<void>,\n): asserts webStream is ReadableStream<T> & AsyncDisposable {\n (Symbol.asyncDispose as any) ??= Symbol(\"Symbol.asyncDispose\");\n if (!webStream[Symbol.asyncDispose]) {\n webStream[Symbol.asyncDispose] = () => dispose();\n }\n}\n\nfunction makeAsyncIterable<T>(\n webStream: any,\n): asserts webStream is ReadableStream<T> & AsyncIterable<T> {\n if (!webStream[Symbol.asyncIterator]) {\n webStream[Symbol.asyncIterator] = () => toAsyncIterable(webStream);\n }\n\n if (!webStream.values) {\n webStream.values = () => toAsyncIterable(webStream);\n }\n}\n\nfunction iteratorToStream<T>(\n iterator: AsyncIterableIterator<T>,\n cancel: () => PromiseLike<void>,\n): ReadableStream<T> {\n return new ReadableStream({\n async pull(controller: ReadableStreamDefaultController<T>) {\n const { value, done } = await iterator.next();\n if (done) {\n controller.close();\n } else {\n controller.enqueue(value);\n }\n },\n cancel,\n });\n}\n\nexport function ensureAsyncIterable(\n stream: NodeIncomingMessage | NodeJSReadableStream | ReadableStream<Uint8Array>,\n): {\n cancel(): Promise<void>;\n iterable: AsyncIterable<Uint8Array>;\n} {\n if (isReadableStream(stream)) {\n makeAsyncIterable<Uint8Array>(stream);\n return {\n cancel: () => stream.cancel(),\n iterable: stream,\n };\n } else {\n return {\n cancel: async () => cancelNodeStream(stream),\n iterable: stream as AsyncIterable<Uint8Array>,\n };\n }\n}\n\nfunction isReadableStream(body: unknown): body is ReadableStream {\n return Boolean(\n body &&\n typeof (body as ReadableStream).getReader === \"function\" &&\n typeof (body as ReadableStream).tee === \"function\",\n );\n}\n\nasync function* toAsyncIterable<T>(stream: ReadableStream<T>): AsyncIterableIterator<T> {\n const reader = stream.getReader();\n try {\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n return;\n }\n yield value;\n }\n } finally {\n const cancelPromise = reader.cancel();\n reader.releaseLock();\n await cancelPromise;\n }\n}\n"]}
|
package/dist/commonjs/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { createSseStream } from "./sse.js";
|
|
2
|
-
export type { EventMessage, EventMessageStream, NodeJSReadableStream } from "./models.js";
|
|
2
|
+
export type { EventMessage, EventMessageStream, NodeIncomingMessage, NodeJSReadableStream, } from "./models.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/commonjs/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { createSseStream } from \"./sse.js\";\nexport type {
|
|
3
|
+
"sources": ["../../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { createSseStream } from \"./sse.js\";\nexport type {\n EventMessage,\n EventMessageStream,\n NodeIncomingMessage,\n NodeJSReadableStream,\n} from \"./models.js\";\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iBAAgC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -16,16 +16,5 @@ export interface EventMessage {
|
|
|
16
16
|
* A stream of event messages
|
|
17
17
|
*/
|
|
18
18
|
export type EventMessageStream = ReadableStream<EventMessage> & AsyncDisposable & AsyncIterable<EventMessage>;
|
|
19
|
-
export type
|
|
20
|
-
/**
|
|
21
|
-
* A Node.js Readable stream that also has a `destroy` method.
|
|
22
|
-
*/
|
|
23
|
-
export interface NodeJSReadableStream extends NodeJS.ReadableStream {
|
|
24
|
-
/**
|
|
25
|
-
* Destroy the stream. Optionally emit an 'error' event, and emit a
|
|
26
|
-
* 'close' event (unless emitClose is set to false). After this call,
|
|
27
|
-
* internal resources will be released.
|
|
28
|
-
*/
|
|
29
|
-
destroy(error?: Error): void;
|
|
30
|
-
}
|
|
19
|
+
export type { NodeIncomingMessage, NodeJSReadableStream } from "./types.js";
|
|
31
20
|
//# sourceMappingURL=models.d.ts.map
|
package/dist/commonjs/models.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Represents a message sent in an event stream\n * https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format\n */\nexport interface EventMessage {\n /** The event ID to set the EventSource object's last event ID value. */\n id: string;\n /** A string identifying the type of event described. */\n event: string;\n /** The event data */\n data: string;\n /** The reconnection interval (in milliseconds) to wait before retrying the connection */\n retry?: number;\n}\n\n/**\n * A stream of event messages\n */\nexport type EventMessageStream = ReadableStream<EventMessage> &\n AsyncDisposable &\n AsyncIterable<EventMessage>;\n\nexport type
|
|
3
|
+
"sources": ["../../src/models.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Represents a message sent in an event stream\n * https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format\n */\nexport interface EventMessage {\n /** The event ID to set the EventSource object's last event ID value. */\n id: string;\n /** A string identifying the type of event described. */\n event: string;\n /** The event data */\n data: string;\n /** The reconnection interval (in milliseconds) to wait before retrying the connection */\n retry?: number;\n}\n\n/**\n * A stream of event messages\n */\nexport type EventMessageStream = ReadableStream<EventMessage> &\n AsyncDisposable &\n AsyncIterable<EventMessage>;\n\nexport type { NodeIncomingMessage, NodeJSReadableStream } from \"#platform/types\";\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/commonjs/sse.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { NodeIncomingMessage } from "./types.js";
|
|
2
2
|
import type { EventMessageStream, NodeJSReadableStream } from "./models.js";
|
|
3
3
|
/**
|
|
4
4
|
* Processes a response stream into a stream of events.
|
|
@@ -11,7 +11,7 @@ export declare function createSseStream(chunkStream: ReadableStream<Uint8Array>)
|
|
|
11
11
|
* @param chunkStream - A NodeJS HTTP response
|
|
12
12
|
* @returns A stream of EventMessage objects
|
|
13
13
|
*/
|
|
14
|
-
export declare function createSseStream(chunkStream:
|
|
14
|
+
export declare function createSseStream(chunkStream: NodeIncomingMessage): EventMessageStream;
|
|
15
15
|
/**
|
|
16
16
|
* Processes a response stream into a stream of events.
|
|
17
17
|
* @param chunkStream - A NodeJS Readable stream
|
package/dist/commonjs/sse.js
CHANGED
package/dist/commonjs/sse.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
3
|
+
"sources": ["../../src/sse.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { NodeIncomingMessage } from \"#platform/types\";\nimport type { EventMessage, EventMessageStream, NodeJSReadableStream } from \"./models.js\";\nimport { createStream, ensureAsyncIterable } from \"./utils.js\";\n\ntype PartialSome<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n\nenum ControlChars {\n NewLine = 10,\n CarriageReturn = 13,\n Space = 32,\n Colon = 58,\n}\n\n/**\n * Processes a response stream into a stream of events.\n * @param chunkStream - A stream of Uint8Array chunks\n * @returns A stream of EventMessage objects\n */\nexport function createSseStream(chunkStream: ReadableStream<Uint8Array>): EventMessageStream;\n/**\n * Processes a response stream into a stream of events.\n * @param chunkStream - A NodeJS HTTP response\n * @returns A stream of EventMessage objects\n */\nexport function createSseStream(chunkStream: NodeIncomingMessage): EventMessageStream;\n/**\n * Processes a response stream into a stream of events.\n * @param chunkStream - A NodeJS Readable stream\n * @returns A stream of EventMessage objects\n */\nexport function createSseStream(chunkStream: NodeJSReadableStream): EventMessageStream;\nexport function createSseStream(\n chunkStream: NodeIncomingMessage | NodeJSReadableStream | ReadableStream<Uint8Array>,\n): EventMessageStream {\n const { cancel, iterable } = ensureAsyncIterable(chunkStream);\n const asyncIter = toMessage(toLine(iterable));\n return createStream(asyncIter, cancel);\n}\n\nfunction concatBuffer(a: Uint8Array, b: Uint8Array): Uint8Array {\n const res = new Uint8Array(a.length + b.length);\n res.set(a);\n res.set(b, a.length);\n return res;\n}\n\nfunction createMessage(): PartialSome<EventMessage, \"data\"> {\n return {\n data: undefined,\n event: \"\",\n id: \"\",\n retry: undefined,\n };\n}\n\nasync function* toLine(\n chunkIter: AsyncIterable<Uint8Array>,\n): AsyncIterable<{ line: Uint8Array; fieldLen: number }> {\n let buf: Uint8Array | undefined;\n let bufIdx = 0;\n let fieldLen = -1;\n let discardTrailingNewline = false;\n for await (const chunk of chunkIter) {\n if (buf === undefined) {\n buf = chunk;\n bufIdx = 0;\n fieldLen = -1;\n } else {\n buf = concatBuffer(buf, chunk);\n }\n const bufLen = buf.length;\n let start = 0;\n while (bufIdx < bufLen) {\n if (discardTrailingNewline) {\n if (buf[bufIdx] === ControlChars.NewLine) {\n start = ++bufIdx;\n }\n discardTrailingNewline = false;\n }\n let end = -1;\n for (; bufIdx < bufLen && end === -1; ++bufIdx) {\n switch (buf[bufIdx]) {\n case ControlChars.Colon:\n if (fieldLen === -1) {\n fieldLen = bufIdx - start;\n }\n break;\n case ControlChars.CarriageReturn:\n // We need to discard the trailing newline if any but can't do\n // that now because we need to dispatch the current line first.\n discardTrailingNewline = true;\n end = bufIdx;\n break;\n case ControlChars.NewLine:\n end = bufIdx;\n break;\n }\n }\n if (end === -1) {\n // We reached the end of the buffer but the line hasn't ended.\n // Wait for the next chunk and then continue parsing:\n break;\n }\n yield { line: buf.subarray(start, end), fieldLen };\n start = bufIdx; // we're now on the next line\n fieldLen = -1;\n }\n if (start === bufLen) {\n buf = undefined;\n } else if (start !== 0) {\n // discard already processed lines\n buf = buf.subarray(start);\n bufIdx -= start;\n }\n }\n}\n\nasync function* toMessage(\n lineIter: AsyncIterable<{ line: Uint8Array; fieldLen: number }>,\n): AsyncIterableIterator<EventMessage> {\n let message = createMessage();\n const decoder = new TextDecoder();\n for await (const { line, fieldLen } of lineIter) {\n if (line.length === 0 && message.data !== undefined) {\n // empty line denotes end of message. Yield and start a new message:\n yield message as EventMessage;\n message = createMessage();\n } else if (fieldLen > 0) {\n // exclude comments and lines with no values\n // line is of format \"<field>:<value>\" or \"<field>: <value>\"\n // https://html.spec.whatwg.org/multipage/server-sent-events.html#event-stream-interpretation\n const field = decoder.decode(line.subarray(0, fieldLen));\n const valueOffset = fieldLen + (line[fieldLen + 1] === ControlChars.Space ? 2 : 1);\n const value = decoder.decode(line.subarray(valueOffset));\n\n switch (field) {\n case \"data\":\n message.data = message.data ? message.data + \"\\n\" + value : value;\n break;\n case \"event\":\n message.event = value;\n break;\n case \"id\":\n message.id = value;\n break;\n case \"retry\": {\n const retry = parseInt(value, 10);\n if (!isNaN(retry)) {\n message.retry = retry;\n }\n break;\n }\n }\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["ControlChars"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { IncomingMessage } from "node:http";
|
|
2
|
+
/**
|
|
3
|
+
* An alias for Node.js's `http.IncomingMessage` type. Defined as `never` on
|
|
4
|
+
* browser and React Native platforms where Node.js HTTP is not available.
|
|
5
|
+
*/
|
|
6
|
+
export type NodeIncomingMessage = IncomingMessage;
|
|
7
|
+
/**
|
|
8
|
+
* A Node.js Readable stream that also has a `destroy` method.
|
|
9
|
+
*/
|
|
10
|
+
export interface NodeJSReadableStream extends NodeJS.ReadableStream {
|
|
11
|
+
/**
|
|
12
|
+
* Destroy the stream. Optionally emit an 'error' event, and emit a
|
|
13
|
+
* 'close' event (unless emitClose is set to false). After this call,
|
|
14
|
+
* internal resources will be released.
|
|
15
|
+
*/
|
|
16
|
+
destroy(error?: Error): void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Cancels a Node.js stream by ending its socket or destroying it.
|
|
20
|
+
*/
|
|
21
|
+
export declare function cancelNodeStream(stream: IncomingMessage | NodeJSReadableStream): void;
|
|
22
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var types_exports = {};
|
|
19
|
+
__export(types_exports, {
|
|
20
|
+
cancelNodeStream: () => cancelNodeStream
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(types_exports);
|
|
23
|
+
function cancelNodeStream(stream) {
|
|
24
|
+
if ("socket" in stream && stream.socket) {
|
|
25
|
+
stream.socket.end();
|
|
26
|
+
} else if ("destroy" in stream) {
|
|
27
|
+
stream.destroy();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
31
|
+
0 && (module.exports = {
|
|
32
|
+
cancelNodeStream
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/types.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { IncomingMessage } from \"node:http\";\n\n/**\n * An alias for Node.js's `http.IncomingMessage` type. Defined as `never` on\n * browser and React Native platforms where Node.js HTTP is not available.\n */\nexport type NodeIncomingMessage = IncomingMessage;\n\n/**\n * A Node.js Readable stream that also has a `destroy` method.\n */\nexport interface NodeJSReadableStream extends NodeJS.ReadableStream {\n /**\n * Destroy the stream. Optionally emit an 'error' event, and emit a\n * 'close' event (unless emitClose is set to false). After this call,\n * internal resources will be released.\n */\n destroy(error?: Error): void;\n}\n\n/**\n * Cancels a Node.js stream by ending its socket or destroying it.\n */\nexport function cancelNodeStream(stream: IncomingMessage | NodeJSReadableStream): void {\n if (\"socket\" in stream && stream.socket) {\n stream.socket.end();\n } else if (\"destroy\" in stream) {\n stream.destroy();\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BO,SAAS,iBAAiB,QAAsD;AACrF,MAAI,YAAY,UAAU,OAAO,QAAQ;AACvC,WAAO,OAAO,IAAI;AAAA,EACpB,WAAW,aAAa,QAAQ;AAC9B,WAAO,QAAQ;AAAA,EACjB;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/commonjs/utils.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { NodeIncomingMessage } from "./types.js";
|
|
2
2
|
import type { NodeJSReadableStream } from "./models.js";
|
|
3
3
|
export declare function createStream<T>(asyncIter: AsyncIterableIterator<T>, cancel: () => PromiseLike<void>): ReadableStream<T> & AsyncDisposable & AsyncIterable<T>;
|
|
4
|
-
export declare function ensureAsyncIterable(stream:
|
|
4
|
+
export declare function ensureAsyncIterable(stream: NodeIncomingMessage | NodeJSReadableStream | ReadableStream<Uint8Array>): {
|
|
5
5
|
cancel(): Promise<void>;
|
|
6
6
|
iterable: AsyncIterable<Uint8Array>;
|
|
7
7
|
};
|
package/dist/commonjs/utils.js
CHANGED
|
@@ -21,6 +21,7 @@ __export(utils_exports, {
|
|
|
21
21
|
ensureAsyncIterable: () => ensureAsyncIterable
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(utils_exports);
|
|
24
|
+
var import_types = require("./types.js");
|
|
24
25
|
function createStream(asyncIter, cancel) {
|
|
25
26
|
const stream = iteratorToStream(asyncIter, cancel);
|
|
26
27
|
return polyfillStream(stream, cancel);
|
|
@@ -66,13 +67,7 @@ function ensureAsyncIterable(stream) {
|
|
|
66
67
|
};
|
|
67
68
|
} else {
|
|
68
69
|
return {
|
|
69
|
-
cancel: async () =>
|
|
70
|
-
if ("socket" in stream && stream.socket) {
|
|
71
|
-
stream.socket.end();
|
|
72
|
-
} else {
|
|
73
|
-
stream.destroy();
|
|
74
|
-
}
|
|
75
|
-
},
|
|
70
|
+
cancel: async () => (0, import_types.cancelNodeStream)(stream),
|
|
76
71
|
iterable: stream
|
|
77
72
|
};
|
|
78
73
|
}
|
|
@@ -103,3 +98,4 @@ async function* toAsyncIterable(stream) {
|
|
|
103
98
|
createStream,
|
|
104
99
|
ensureAsyncIterable
|
|
105
100
|
});
|
|
101
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
3
|
+
"sources": ["../../src/utils.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { NodeIncomingMessage } from \"#platform/types\";\nimport { cancelNodeStream } from \"#platform/types\";\nimport type { NodeJSReadableStream } from \"./models.js\";\n\nexport function createStream<T>(\n asyncIter: AsyncIterableIterator<T>,\n cancel: () => PromiseLike<void>,\n): ReadableStream<T> & AsyncDisposable & AsyncIterable<T> {\n const stream = iteratorToStream(asyncIter, cancel);\n /** TODO: remove these polyfills once all supported runtimes support them */\n return polyfillStream(stream, cancel);\n}\n\nfunction polyfillStream<T>(\n stream: ReadableStream<T>,\n dispose: () => PromiseLike<void>,\n): ReadableStream<T> & AsyncIterable<T> & AsyncDisposable {\n makeAsyncIterable<T>(stream);\n makeAsyncDisposable(stream, dispose);\n return stream;\n}\n\nfunction makeAsyncDisposable<T>(\n webStream: any,\n dispose: () => PromiseLike<void>,\n): asserts webStream is ReadableStream<T> & AsyncDisposable {\n (Symbol.asyncDispose as any) ??= Symbol(\"Symbol.asyncDispose\");\n if (!webStream[Symbol.asyncDispose]) {\n webStream[Symbol.asyncDispose] = () => dispose();\n }\n}\n\nfunction makeAsyncIterable<T>(\n webStream: any,\n): asserts webStream is ReadableStream<T> & AsyncIterable<T> {\n if (!webStream[Symbol.asyncIterator]) {\n webStream[Symbol.asyncIterator] = () => toAsyncIterable(webStream);\n }\n\n if (!webStream.values) {\n webStream.values = () => toAsyncIterable(webStream);\n }\n}\n\nfunction iteratorToStream<T>(\n iterator: AsyncIterableIterator<T>,\n cancel: () => PromiseLike<void>,\n): ReadableStream<T> {\n return new ReadableStream({\n async pull(controller: ReadableStreamDefaultController<T>) {\n const { value, done } = await iterator.next();\n if (done) {\n controller.close();\n } else {\n controller.enqueue(value);\n }\n },\n cancel,\n });\n}\n\nexport function ensureAsyncIterable(\n stream: NodeIncomingMessage | NodeJSReadableStream | ReadableStream<Uint8Array>,\n): {\n cancel(): Promise<void>;\n iterable: AsyncIterable<Uint8Array>;\n} {\n if (isReadableStream(stream)) {\n makeAsyncIterable<Uint8Array>(stream);\n return {\n cancel: () => stream.cancel(),\n iterable: stream,\n };\n } else {\n return {\n cancel: async () => cancelNodeStream(stream),\n iterable: stream as AsyncIterable<Uint8Array>,\n };\n }\n}\n\nfunction isReadableStream(body: unknown): body is ReadableStream {\n return Boolean(\n body &&\n typeof (body as ReadableStream).getReader === \"function\" &&\n typeof (body as ReadableStream).tee === \"function\",\n );\n}\n\nasync function* toAsyncIterable<T>(stream: ReadableStream<T>): AsyncIterableIterator<T> {\n const reader = stream.getReader();\n try {\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n return;\n }\n yield value;\n }\n } finally {\n const cancelPromise = reader.cancel();\n reader.releaseLock();\n await cancelPromise;\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,mBAAiC;AAG1B,SAAS,aACd,WACA,QACwD;AACxD,QAAM,SAAS,iBAAiB,WAAW,MAAM;AAEjD,SAAO,eAAe,QAAQ,MAAM;AACtC;AAEA,SAAS,eACP,QACA,SACwD;AACxD,oBAAqB,MAAM;AAC3B,sBAAoB,QAAQ,OAAO;AACnC,SAAO;AACT;AAEA,SAAS,oBACP,WACA,SAC0D;AAC1D,EAAC,OAAO,iBAAyB,uBAAO,qBAAqB;AAC7D,MAAI,CAAC,UAAU,OAAO,YAAY,GAAG;AACnC,cAAU,OAAO,YAAY,IAAI,MAAM,QAAQ;AAAA,EACjD;AACF;AAEA,SAAS,kBACP,WAC2D;AAC3D,MAAI,CAAC,UAAU,OAAO,aAAa,GAAG;AACpC,cAAU,OAAO,aAAa,IAAI,MAAM,gBAAgB,SAAS;AAAA,EACnE;AAEA,MAAI,CAAC,UAAU,QAAQ;AACrB,cAAU,SAAS,MAAM,gBAAgB,SAAS;AAAA,EACpD;AACF;AAEA,SAAS,iBACP,UACA,QACmB;AACnB,SAAO,IAAI,eAAe;AAAA,IACxB,MAAM,KAAK,YAAgD;AACzD,YAAM,EAAE,OAAO,KAAK,IAAI,MAAM,SAAS,KAAK;AAC5C,UAAI,MAAM;AACR,mBAAW,MAAM;AAAA,MACnB,OAAO;AACL,mBAAW,QAAQ,KAAK;AAAA,MAC1B;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEO,SAAS,oBACd,QAIA;AACA,MAAI,iBAAiB,MAAM,GAAG;AAC5B,sBAA8B,MAAM;AACpC,WAAO;AAAA,MACL,QAAQ,MAAM,OAAO,OAAO;AAAA,MAC5B,UAAU;AAAA,IACZ;AAAA,EACF,OAAO;AACL,WAAO;AAAA,MACL,QAAQ,gBAAY,+BAAiB,MAAM;AAAA,MAC3C,UAAU;AAAA,IACZ;AAAA,EACF;AACF;AAEA,SAAS,iBAAiB,MAAuC;AAC/D,SAAO;AAAA,IACL,QACA,OAAQ,KAAwB,cAAc,cAC9C,OAAQ,KAAwB,QAAQ;AAAA,EAC1C;AACF;AAEA,gBAAgB,gBAAmB,QAAqD;AACtF,QAAM,SAAS,OAAO,UAAU;AAChC,MAAI;AACF,WAAO,MAAM;AACX,YAAM,EAAE,OAAO,KAAK,IAAI,MAAM,OAAO,KAAK;AAC1C,UAAI,MAAM;AACR;AAAA,MACF;AACA,YAAM;AAAA,IACR;AAAA,EACF,UAAE;AACA,UAAM,gBAAgB,OAAO,OAAO;AACpC,WAAO,YAAY;AACnB,UAAM;AAAA,EACR;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { createSseStream } from "./sse.js";
|
|
2
|
-
export type { EventMessage, EventMessageStream, NodeJSReadableStream } from "./models.js";
|
|
2
|
+
export type { EventMessage, EventMessageStream, NodeIncomingMessage, NodeJSReadableStream, } from "./models.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/esm/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
export { createSseStream } from "./sse.js";
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["/mnt/vss/_work/1/s/sdk/core/core-sse/src/index.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { createSseStream } from \"./sse.js\";\nexport type { EventMessage, EventMessageStream, NodeJSReadableStream } from \"./models.js\";\n"],
|
|
5
|
-
"mappings": "AAGA,SAAS,uBAAuB;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { createSseStream } from \"./sse.js\";\nexport type {\n EventMessage,\n EventMessageStream,\n NodeIncomingMessage,\n NodeJSReadableStream,\n} from \"./models.js\";\n"]}
|
package/dist/esm/models.d.ts
CHANGED
|
@@ -16,16 +16,5 @@ export interface EventMessage {
|
|
|
16
16
|
* A stream of event messages
|
|
17
17
|
*/
|
|
18
18
|
export type EventMessageStream = ReadableStream<EventMessage> & AsyncDisposable & AsyncIterable<EventMessage>;
|
|
19
|
-
export type
|
|
20
|
-
/**
|
|
21
|
-
* A Node.js Readable stream that also has a `destroy` method.
|
|
22
|
-
*/
|
|
23
|
-
export interface NodeJSReadableStream extends NodeJS.ReadableStream {
|
|
24
|
-
/**
|
|
25
|
-
* Destroy the stream. Optionally emit an 'error' event, and emit a
|
|
26
|
-
* 'close' event (unless emitClose is set to false). After this call,
|
|
27
|
-
* internal resources will be released.
|
|
28
|
-
*/
|
|
29
|
-
destroy(error?: Error): void;
|
|
30
|
-
}
|
|
19
|
+
export type { NodeIncomingMessage, NodeJSReadableStream } from "./types.js";
|
|
31
20
|
//# sourceMappingURL=models.d.ts.map
|
package/dist/esm/models.js
CHANGED
package/dist/esm/models.js.map
CHANGED
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": [],
|
|
4
|
-
"sourcesContent": [],
|
|
5
|
-
"mappings": "",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Represents a message sent in an event stream\n * https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format\n */\nexport interface EventMessage {\n /** The event ID to set the EventSource object's last event ID value. */\n id: string;\n /** A string identifying the type of event described. */\n event: string;\n /** The event data */\n data: string;\n /** The reconnection interval (in milliseconds) to wait before retrying the connection */\n retry?: number;\n}\n\n/**\n * A stream of event messages\n */\nexport type EventMessageStream = ReadableStream<EventMessage> &\n AsyncDisposable &\n AsyncIterable<EventMessage>;\n\nexport type { NodeIncomingMessage, NodeJSReadableStream } from \"#platform/types\";\n"]}
|
package/dist/esm/sse.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { NodeIncomingMessage } from "./types.js";
|
|
2
2
|
import type { EventMessageStream, NodeJSReadableStream } from "./models.js";
|
|
3
3
|
/**
|
|
4
4
|
* Processes a response stream into a stream of events.
|
|
@@ -11,7 +11,7 @@ export declare function createSseStream(chunkStream: ReadableStream<Uint8Array>)
|
|
|
11
11
|
* @param chunkStream - A NodeJS HTTP response
|
|
12
12
|
* @returns A stream of EventMessage objects
|
|
13
13
|
*/
|
|
14
|
-
export declare function createSseStream(chunkStream:
|
|
14
|
+
export declare function createSseStream(chunkStream: NodeIncomingMessage): EventMessageStream;
|
|
15
15
|
/**
|
|
16
16
|
* Processes a response stream into a stream of events.
|
|
17
17
|
* @param chunkStream - A NodeJS Readable stream
|