From 91af63a7c034e72bff2310c68a2458a1a08d6099 Mon Sep 17 00:00:00 2001 From: "Afshin T. Darian" Date: Tue, 8 Nov 2022 10:24:52 +0000 Subject: [PATCH] Add IStream interface --- packages/signaling/src/index.ts | 12 ++++++++---- review/api/signaling.api.md | 6 +++++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/signaling/src/index.ts b/packages/signaling/src/index.ts index 996192301..09006c177 100644 --- a/packages/signaling/src/index.ts +++ b/packages/signaling/src/index.ts @@ -85,6 +85,13 @@ export interface ISignal { disconnect(slot: Slot, thisArg?: any): boolean; } +/** + * An object that is both a signal and an async iterable iterator. + */ +export interface IStream + extends ISignal, + AsyncIterableIterator {} + /** * A concrete implementation of `ISignal`. * @@ -345,10 +352,7 @@ export namespace Signal { /** * A stream with the characteristics of a signal and an async iterator. */ -export class Stream - extends Signal - implements AsyncIterableIterator -{ +export class Stream extends Signal implements IStream { /** * Return an async iterator that yields every emission. */ diff --git a/review/api/signaling.api.md b/review/api/signaling.api.md index 3618464b4..645046866 100644 --- a/review/api/signaling.api.md +++ b/review/api/signaling.api.md @@ -13,6 +13,10 @@ export interface ISignal { disconnect(slot: Slot, thisArg?: any): boolean; } +// @public +export interface IStream extends ISignal, AsyncIterableIterator { +} + // @public export class Signal implements ISignal { constructor(sender: T); @@ -41,7 +45,7 @@ export namespace Signal { export type Slot = (sender: T, args: U) => void; // @public -export class Stream extends Signal implements AsyncIterableIterator { +export class Stream extends Signal implements IStream { [Symbol.asyncIterator](): AsyncIterableIterator; emit(args: U): void; next(): Promise>;