import { Message } from "@smithy/types"; /** * @internal */ export interface SmithyMessageDecoderStreamOptions { readonly messageStream: AsyncIterable; readonly deserializer: (input: Message) => Promise; } /** * @internal */ export class SmithyMessageDecoderStream implements AsyncIterable { constructor(private readonly options: SmithyMessageDecoderStreamOptions) {} [Symbol.asyncIterator](): AsyncIterator { return this.asyncIterator(); } private async *asyncIterator() { for await (const message of this.options.messageStream) { const deserialized = await this.options.deserializer(message); if (deserialized === undefined) continue; yield deserialized; } } }