@hahnpro/ms-speech-sdk
Version:
Microsoft Cognitive Services Speech SDK for JavaScript
1 lines • 3.23 kB
Source Map (JSON)
{"version":3,"sources":["src/common/Stream.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,YAAY,CAAC,OAAO;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,MAAM,CAAC,OAAO;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,eAAe,CAA+B;gBAEnC,QAAQ,CAAC,EAAE,MAAM;IAKpC,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED,IAAW,EAAE,IAAI,MAAM,CAEtB;IAEM,KAAK,IAAI,IAAI;IAWb,gBAAgB,CAAC,WAAW,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI;IAW1D,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAetC,SAAS,IAAI,IAAI;IAOxB,OAAO,CAAC,aAAa;CAKxB","file":"Stream.d.ts","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT license.\n\nimport { InvalidOperationError } from \"./Error.js\";\nimport { createNoDashGuid } from \"./Guid.js\";\nimport { Queue } from \"./Queue.js\";\n\nexport interface IStreamChunk<TBuffer> {\n isEnd: boolean;\n buffer: TBuffer;\n timeReceived: number;\n}\n\nexport class Stream<TBuffer> {\n private privId: string;\n private privIsWriteEnded: boolean = false;\n private privIsReadEnded: boolean = false;\n private privReaderQueue: Queue<IStreamChunk<TBuffer>>;\n\n public constructor(streamId?: string) {\n this.privId = streamId ? streamId : createNoDashGuid();\n this.privReaderQueue = new Queue<IStreamChunk<TBuffer>>();\n }\n\n public get isClosed(): boolean {\n return this.privIsWriteEnded;\n }\n\n public get isReadEnded(): boolean {\n return this.privIsReadEnded;\n }\n\n public get id(): string {\n return this.privId;\n }\n\n public close(): void {\n if (!this.privIsWriteEnded) {\n this.writeStreamChunk({\n buffer: null,\n isEnd: true,\n timeReceived: Date.now(),\n });\n this.privIsWriteEnded = true;\n }\n }\n\n public writeStreamChunk(streamChunk: IStreamChunk<TBuffer>): void {\n this.throwIfClosed();\n if (!this.privReaderQueue.isDisposed()) {\n try {\n this.privReaderQueue.enqueue(streamChunk);\n } catch (e) {\n // Do nothing\n }\n }\n }\n\n public read(): Promise<IStreamChunk<TBuffer>> {\n if (this.privIsReadEnded) {\n throw new InvalidOperationError(\"Stream read has already finished\");\n }\n\n return this.privReaderQueue\n .dequeue()\n .then(async (streamChunk: IStreamChunk<TBuffer>): Promise<IStreamChunk<TBuffer>> => {\n if (streamChunk === undefined || streamChunk.isEnd) {\n await this.privReaderQueue.dispose(\"End of stream reached\");\n }\n\n return streamChunk;\n });\n }\n public readEnded(): void {\n if (!this.privIsReadEnded) {\n this.privIsReadEnded = true;\n this.privReaderQueue = new Queue<IStreamChunk<TBuffer>>();\n }\n }\n\n private throwIfClosed(): void {\n if (this.privIsWriteEnded) {\n throw new InvalidOperationError(\"Stream closed\");\n }\n }\n}\n"]}