@azure/core-sse 2.0.0-alpha.20231222.1 → 2.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/dist/index.cjs +1 -2
- package/dist/index.cjs.map +1 -1
- package/dist-esm/src/sse.js.map +1 -1
- package/dist-esm/src/utils.js +1 -2
- package/dist-esm/src/utils.js.map +1 -1
- package/package.json +6 -7
- package/types/core-sse.d.ts +3 -1
- package/types/src/sse.d.ts +2 -1
- package/types/src/sse.d.ts.map +1 -1
- package/types/src/utils.d.ts +2 -1
- package/types/src/utils.d.ts.map +1 -1
- package/types/test/public/node/util.d.ts.map +1 -1
package/dist/index.cjs
CHANGED
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/utils.ts","../src/sse.ts"],"sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\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) {\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(stream: NodeJS.ReadableStream | ReadableStream<Uint8Array>): {\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 () => {\n // drain the stream\n stream.resume();\n },\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","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { EventMessage, EventMessageStream, PartialSome } from \"./models.js\";\nimport { createStream, ensureAsyncIterable } from \"./utils.js\";\n\nconst enum 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 An async iterable 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 - An async iterable of Uint8Array chunks\n * @returns An async iterable of EventMessage objects\n */\nexport function createSseStream(chunkStream: NodeJS.ReadableStream): EventMessageStream;\nexport function createSseStream(\n chunkStream: NodeJS.ReadableStream | 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"],"names":["__await","__asyncValues"],"mappings":";;;;;;AAAA;AACA;AAEgB,SAAA,YAAY,CAC1B,SAAmC,EACnC,MAA+B,EAAA;IAE/B,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;;AAEnD,IAAA,OAAO,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,cAAc,CACrB,MAAyB,EACzB,OAAgC,EAAA;IAEhC,iBAAiB,CAAI,MAAM,CAAC,CAAC;AAC7B,IAAA,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACrC,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAC1B,SAAc,EACd,OAAgC,EAAA;;AAEhC,IAAA,CAAA,EAAA,GAAC,MAAM,CAAC,YAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,IAA3B,MAAM,CAAC,YAAoB,GAAK,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAA;IAC/D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;QACnC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,OAAO,EAAE,CAAC;KAClD;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,SAAc,EAAA;IAEd,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;AACpC,QAAA,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;KACpE;AAED,IAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;QACrB,SAAS,CAAC,MAAM,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;KACrD;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,QAAkC,EAClC,MAA+B,EAAA;IAE/B,OAAO,IAAI,cAAc,CAAC;QACxB,MAAM,IAAI,CAAC,UAAU,EAAA;YACnB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAI,IAAI,EAAE;gBACR,UAAU,CAAC,KAAK,EAAE,CAAC;aACpB;iBAAM;AACL,gBAAA,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aAC3B;SACF;QACD,MAAM;AACP,KAAA,CAAC,CAAC;AACL,CAAC;AAEK,SAAU,mBAAmB,CAAC,MAA0D,EAAA;AAI5F,IAAA,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE;QAC5B,iBAAiB,CAAa,MAAM,CAAC,CAAC;QACtC,OAAO;AACL,YAAA,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE;AAC7B,YAAA,QAAQ,EAAE,MAAM;SACjB,CAAC;KACH;SAAM;QACL,OAAO;YACL,MAAM,EAAE,YAAW;;gBAEjB,MAAM,CAAC,MAAM,EAAE,CAAC;aACjB;AACD,YAAA,QAAQ,EAAE,MAAmC;SAC9C,CAAC;KACH;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa,EAAA;IACrC,OAAO,OAAO,CACZ,IAAI;AACF,QAAA,OAAQ,IAAuB,CAAC,SAAS,KAAK,UAAU;AACxD,QAAA,OAAQ,IAAuB,CAAC,GAAG,KAAK,UAAU,CACrD,CAAC;AACJ,CAAC;AAED,SAAgB,eAAe,CAAI,MAAyB,EAAA;;AAC1D,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AAClC,QAAA,IAAI;YACF,OAAO,IAAI,EAAE;AACX,gBAAA,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAMA,aAAA,CAAA,MAAM,CAAC,IAAI,EAAE,CAAA,CAAC;gBAC5C,IAAI,IAAI,EAAE;oBACR,OAAO,MAAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA;iBACR;gBACD,MAAM,MAAAA,aAAA,CAAA,KAAK,CAAA,CAAC;aACb;SACF;gBAAS;AACR,YAAA,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,CAAC,WAAW,EAAE,CAAC;YACrB,MAAMA,aAAA,CAAA,aAAa,CAAA,CAAC;SACrB;KACF,CAAA,CAAA;AAAA;;ACxGD;AACA;AAwBM,SAAU,eAAe,CAC7B,WAA+D,EAAA;IAE/D,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9C,IAAA,OAAO,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,YAAY,CAAC,CAAa,EAAE,CAAa,EAAA;AAChD,IAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AAChD,IAAA,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACX,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACrB,IAAA,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,GAAA;IACpB,OAAO;AACL,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,KAAK,EAAE,SAAS;KACjB,CAAC;AACJ,CAAC;AAED,SAAgB,MAAM,CACpB,SAAoC,EAAA;;;AAEpC,QAAA,IAAI,GAA2B,CAAC;QAChC,IAAI,MAAM,GAAG,CAAC,CAAC;AACf,QAAA,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;QAClB,IAAI,sBAAsB,GAAG,KAAK,CAAC;;AACnC,YAAA,KAA0B,eAAA,WAAA,GAAAC,mBAAA,CAAA,SAAS,CAAA,EAAA,aAAA,oGAAE;gBAAX,EAAS,GAAA,aAAA,CAAA,KAAA,CAAA;gBAAT,EAAS,GAAA,KAAA,CAAA;gBAAxB,MAAM,KAAK,KAAA,CAAA;AACpB,gBAAA,IAAI,GAAG,KAAK,SAAS,EAAE;oBACrB,GAAG,GAAG,KAAK,CAAC;oBACZ,MAAM,GAAG,CAAC,CAAC;oBACX,QAAQ,GAAG,CAAC,CAAC,CAAC;iBACf;qBAAM;AACL,oBAAA,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;iBAChC;AACD,gBAAA,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;gBAC1B,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,gBAAA,OAAO,MAAM,GAAG,MAAM,EAAE;oBACtB,IAAI,sBAAsB,EAAE;AAC1B,wBAAA,IAAI,GAAG,CAAC,MAAM,CAAC,KAAA,EAAA,6BAA2B;4BACxC,KAAK,GAAG,EAAE,MAAM,CAAC;yBAClB;wBACD,sBAAsB,GAAG,KAAK,CAAC;qBAChC;AACD,oBAAA,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;AACb,oBAAA,OAAO,MAAM,GAAG,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE;AAC9C,wBAAA,QAAQ,GAAG,CAAC,MAAM,CAAC;AACjB,4BAAA,KAAA,EAAA;AACE,gCAAA,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;AACnB,oCAAA,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;iCAC3B;gCACD,MAAM;AACR,4BAAA,KAAA,EAAA;;;gCAGE,sBAAsB,GAAG,IAAI,CAAC;gCAC9B,GAAG,GAAG,MAAM,CAAC;gCACb,MAAM;AACR,4BAAA,KAAA,EAAA;gCACE,GAAG,GAAG,MAAM,CAAC;gCACb,MAAM;yBACT;qBACF;AACD,oBAAA,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;;;wBAGd,MAAM;qBACP;AACD,oBAAA,MAAA,MAAAD,aAAA,CAAM,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAA,CAAC;AACnD,oBAAA,KAAK,GAAG,MAAM,CAAC;oBACf,QAAQ,GAAG,CAAC,CAAC,CAAC;iBACf;AACD,gBAAA,IAAI,KAAK,KAAK,MAAM,EAAE;oBACpB,GAAG,GAAG,SAAS,CAAC;iBACjB;AAAM,qBAAA,IAAI,KAAK,KAAK,CAAC,EAAE;;AAEtB,oBAAA,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAC1B,MAAM,IAAI,KAAK,CAAC;iBACjB;aACF;;;;;;;;;KACF,CAAA,CAAA;AAAA,CAAA;AAED,SAAgB,SAAS,CACvB,QAA+D,EAAA;;;AAE/D,QAAA,IAAI,OAAO,GAAG,aAAa,EAAE,CAAC;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;;AAClC,YAAA,KAAuC,eAAA,UAAA,GAAAC,mBAAA,CAAA,QAAQ,CAAA,EAAA,YAAA,iGAAE;gBAAV,EAAQ,GAAA,YAAA,CAAA,KAAA,CAAA;gBAAR,EAAQ,GAAA,KAAA,CAAA;AAApC,gBAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAA,CAAA;AACjC,gBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;;oBAEnD,MAAM,MAAAD,aAAA,CAAA,OAAuB,CAAA,CAAC;oBAC9B,OAAO,GAAG,aAAa,EAAE,CAAC;iBAC3B;AAAM,qBAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;;;;AAIvB,oBAAA,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;oBACzD,MAAM,WAAW,GAAG,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAuB,EAAA,4BAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACnF,oBAAA,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;oBAEzD,QAAQ,KAAK;AACX,wBAAA,KAAK,MAAM;4BACT,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;4BAClE,MAAM;AACR,wBAAA,KAAK,OAAO;AACV,4BAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;4BACtB,MAAM;AACR,wBAAA,KAAK,IAAI;AACP,4BAAA,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC;4BACnB,MAAM;wBACR,KAAK,OAAO,EAAE;4BACZ,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAClC,4BAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACjB,gCAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;6BACvB;4BACD,MAAM;yBACP;qBACF;iBACF;aACF;;;;;;;;;KACF,CAAA,CAAA;AAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/utils.ts","../src/sse.ts"],"sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport type { IncomingMessage } from \"http\";\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) {\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(stream: IncomingMessage | ReadableStream<Uint8Array>): {\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 () => {\n stream.socket.end();\n },\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","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport type { IncomingMessage } from \"http\";\nimport { EventMessage, EventMessageStream, PartialSome } from \"./models.js\";\nimport { createStream, ensureAsyncIterable } from \"./utils.js\";\n\nconst enum 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 An async iterable 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 - An async iterable of Uint8Array chunks\n * @returns An async iterable of EventMessage objects\n */\nexport function createSseStream(chunkStream: IncomingMessage): EventMessageStream;\nexport function createSseStream(\n chunkStream: IncomingMessage | 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"],"names":["__await","__asyncValues"],"mappings":"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"}
|
package/dist-esm/src/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 { IncomingMessage } from \"http\";\nimport { EventMessage, EventMessageStream, PartialSome } from \"./models.js\";\nimport { createStream, ensureAsyncIterable } from \"./utils.js\";\n\nconst enum 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 An async iterable 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 - An async iterable of Uint8Array chunks\n * @returns An async iterable of EventMessage objects\n */\nexport function createSseStream(chunkStream: IncomingMessage): EventMessageStream;\nexport function createSseStream(\n chunkStream: IncomingMessage | 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"]}
|
package/dist-esm/src/utils.js
CHANGED
|
@@ -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 { IncomingMessage } from \"http\";\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) {\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(stream: IncomingMessage | ReadableStream<Uint8Array>): {\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 () => {\n stream.socket.end();\n },\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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@azure/core-sse",
|
|
3
|
-
"version": "2.0.0
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Implementation of the Server-sent events protocol for Node.js and browsers.",
|
|
5
5
|
"sdk-type": "client",
|
|
6
6
|
"main": "dist/index.cjs",
|
|
@@ -11,11 +11,11 @@
|
|
|
11
11
|
"build:samples": "echo Obsolete",
|
|
12
12
|
"build": "npm run clean && tsc -p . && dev-tool run bundle && api-extractor run --local",
|
|
13
13
|
"build:test": "tsc -p . && dev-tool run bundle",
|
|
14
|
-
"check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"",
|
|
14
|
+
"check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"",
|
|
15
15
|
"clean": "rimraf dist dist-* temp types *.tgz *.log",
|
|
16
16
|
"execute:samples": "dev-tool samples run samples-dev",
|
|
17
17
|
"extract-api": "tsc -p . && api-extractor run --local",
|
|
18
|
-
"format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"",
|
|
18
|
+
"format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"",
|
|
19
19
|
"integration-test:browser": "echo skipped",
|
|
20
20
|
"integration-test:node": "echo skipped",
|
|
21
21
|
"integration-test": "npm run integration-test:node && npm run integration-test:browser",
|
|
@@ -57,9 +57,9 @@
|
|
|
57
57
|
"sideEffects": false,
|
|
58
58
|
"prettier": "@azure/eslint-plugin-azure-sdk/prettier.json",
|
|
59
59
|
"devDependencies": {
|
|
60
|
-
"@azure/dev-tool": "
|
|
61
|
-
"@azure/eslint-plugin-azure-sdk": "
|
|
62
|
-
"@azure/test-utils": "
|
|
60
|
+
"@azure/dev-tool": "^1.0.0",
|
|
61
|
+
"@azure/eslint-plugin-azure-sdk": "^3.0.0",
|
|
62
|
+
"@azure/test-utils": "^1.0.0",
|
|
63
63
|
"@azure-tools/test-recorder": "^3.0.0",
|
|
64
64
|
"@microsoft/api-extractor": "^7.31.1",
|
|
65
65
|
"@types/mocha": "^10.0.0",
|
|
@@ -82,7 +82,6 @@
|
|
|
82
82
|
"karma-sourcemap-loader": "^0.3.8",
|
|
83
83
|
"mocha": "^10.0.0",
|
|
84
84
|
"c8": "^8.0.0",
|
|
85
|
-
"prettier": "^3.1.1",
|
|
86
85
|
"puppeteer": "^19.2.2",
|
|
87
86
|
"rimraf": "^3.0.2",
|
|
88
87
|
"ts-node": "^10.0.0",
|
package/types/core-sse.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
|
|
3
|
+
import type { IncomingMessage } from 'http';
|
|
4
|
+
|
|
3
5
|
/**
|
|
4
6
|
* Processes a response stream into a stream of events.
|
|
5
7
|
* @param chunkStream - A stream of Uint8Array chunks
|
|
@@ -12,7 +14,7 @@ export declare function createSseStream(chunkStream: ReadableStream<Uint8Array>)
|
|
|
12
14
|
* @param chunkStream - An async iterable of Uint8Array chunks
|
|
13
15
|
* @returns An async iterable of EventMessage objects
|
|
14
16
|
*/
|
|
15
|
-
export declare function createSseStream(chunkStream:
|
|
17
|
+
export declare function createSseStream(chunkStream: IncomingMessage): EventMessageStream;
|
|
16
18
|
|
|
17
19
|
/**
|
|
18
20
|
* Represents a message sent in an event stream
|
package/types/src/sse.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import type { IncomingMessage } from "http";
|
|
2
3
|
import { EventMessageStream } from "./models.js";
|
|
3
4
|
/**
|
|
4
5
|
* Processes a response stream into a stream of events.
|
|
@@ -11,5 +12,5 @@ export declare function createSseStream(chunkStream: ReadableStream<Uint8Array>)
|
|
|
11
12
|
* @param chunkStream - An async iterable of Uint8Array chunks
|
|
12
13
|
* @returns An async iterable of EventMessage objects
|
|
13
14
|
*/
|
|
14
|
-
export declare function createSseStream(chunkStream:
|
|
15
|
+
export declare function createSseStream(chunkStream: IncomingMessage): EventMessageStream;
|
|
15
16
|
//# sourceMappingURL=sse.d.ts.map
|
package/types/src/sse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/sse.ts"],"names":[],"mappings":";AAGA,OAAO,EAAgB,kBAAkB,EAAe,MAAM,aAAa,CAAC;AAU5E;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,kBAAkB,CAAC;AAC7F;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/sse.ts"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,EAAgB,kBAAkB,EAAe,MAAM,aAAa,CAAC;AAU5E;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,kBAAkB,CAAC;AAC7F;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,eAAe,GAAG,kBAAkB,CAAC"}
|
package/types/src/utils.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import type { IncomingMessage } from "http";
|
|
2
3
|
export declare function createStream<T>(asyncIter: AsyncIterableIterator<T>, cancel: () => PromiseLike<void>): ReadableStream<T> & AsyncDisposable & AsyncIterable<T>;
|
|
3
|
-
export declare function ensureAsyncIterable(stream:
|
|
4
|
+
export declare function ensureAsyncIterable(stream: IncomingMessage | ReadableStream<Uint8Array>): {
|
|
4
5
|
cancel(): Promise<void>;
|
|
5
6
|
iterable: AsyncIterable<Uint8Array>;
|
|
6
7
|
};
|
package/types/src/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";AAGA,wBAAgB,YAAY,CAAC,CAAC,EAC5B,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC,EACnC,MAAM,EAAE,MAAM,WAAW,CAAC,IAAI,CAAC,GAC9B,cAAc,CAAC,CAAC,CAAC,GAAG,eAAe,GAAG,aAAa,CAAC,CAAC,CAAC,CAIxD;AAkDD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAE5C,wBAAgB,YAAY,CAAC,CAAC,EAC5B,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC,EACnC,MAAM,EAAE,MAAM,WAAW,CAAC,IAAI,CAAC,GAC9B,cAAc,CAAC,CAAC,CAAC,GAAG,eAAe,GAAG,aAAa,CAAC,CAAC,CAAC,CAIxD;AAkDD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG;IACzF,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CACrC,CAeA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../test/public/node/util.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAmB,MAAM,uBAAuB,CAAC;AAEtE,wBAAgB,YAAY,CAC1B,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,KAAK,IAAI,GAC/C,aAAa,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../test/public/node/util.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAmB,MAAM,uBAAuB,CAAC;AAEtE,wBAAgB,YAAY,CAC1B,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,KAAK,IAAI,GAC/C,aAAa,CAAC,YAAY,CAAC,CAM7B"}
|