@@ -30,7 +30,10 @@ import { PubSubEngine } from 'graphql-subscriptions';
3030 * @property pubsub @type {PubSubEngine }
3131 * The PubSubEngine whose events will be observed.
3232 */
33- export class PubSubAsyncIterator < T > implements AsyncIterator < T > {
33+
34+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
35+ // @ts -ignore - https://github.com/leebyron/iterall/issues/49
36+ export class PubSubAsyncIterator < T > implements AsyncIterator < T > , AsyncIterable < T > {
3437
3538 constructor ( pubsub : PubSubEngine , eventNames : string | string [ ] , options ?: unknown ) {
3639 this . pubsub = pubsub ;
@@ -41,7 +44,7 @@ export class PubSubAsyncIterator<T> implements AsyncIterator<T> {
4144 this . eventsArray = typeof eventNames === 'string' ? [ eventNames ] : eventNames ;
4245 }
4346
44- public async next ( ) {
47+ public async next ( ) : Promise < IteratorResult < T > > {
4548 await this . subscribeAll ( ) ;
4649 return this . listening ? this . pullValue ( ) : this . return ( ) ;
4750 }
@@ -51,17 +54,17 @@ export class PubSubAsyncIterator<T> implements AsyncIterator<T> {
5154 return { value : undefined , done : true } ;
5255 }
5356
54- public async throw ( error ) : Promise < never > {
57+ public async throw ( error : Error ) : Promise < never > {
5558 await this . emptyQueue ( ) ;
5659 return Promise . reject ( error ) ;
5760 }
5861
59- public [ $$asyncIterator ] ( ) {
62+ public [ $$asyncIterator ] ( ) : AsyncIterator < T > {
6063 return this ;
6164 }
6265
63- private pullQueue : Array < ( data : { value : unknown , done : boolean } ) => void > ;
64- private pushQueue : any [ ] ;
66+ private pullQueue : Array < ( data : { value : T , done : boolean } ) => void > ;
67+ private pushQueue : T [ ] ;
6568 private eventsArray : string [ ] ;
6669 private subscriptionIds : Promise < number [ ] > | undefined ;
6770 private listening : boolean ;
@@ -77,7 +80,7 @@ export class PubSubAsyncIterator<T> implements AsyncIterator<T> {
7780 }
7881 }
7982
80- private pullValue ( ) : Promise < IteratorResult < any > > {
83+ private pullValue ( ) : Promise < IteratorResult < T > > {
8184 return new Promise ( resolve => {
8285 if ( this . pushQueue . length !== 0 ) {
8386 resolve ( { value : this . pushQueue . shift ( ) , done : false } ) ;
0 commit comments