diff --git a/src/WikimediaStream.ts b/src/WikimediaStream.ts index 5601579..bb3728f 100644 --- a/src/WikimediaStream.ts +++ b/src/WikimediaStream.ts @@ -554,7 +554,9 @@ export class WikimediaStream extends EventEmitter { */ attachEventListeners( options: WikimediaStreamOptions ) { this.eventSource.addEventListener( 'open', () => { + console.log( 'probe 6' ); this.emit( 'open' ); + console.log( 'probe 7' ); } ); this.eventSource.addEventListener( 'error', ( e ) => { @@ -589,6 +591,7 @@ export class WikimediaStream extends EventEmitter { const skipCanary = !( options.enableCanary ?? false ); this.eventSource.addEventListener( 'message', async ( event: MessageEvent ) => { + console.log( 'probe 8' ); this._lastEventId = event.lastEventId; const data: WikimediaEventBase = JSON.parse( event.data ); @@ -599,11 +602,15 @@ export class WikimediaStream extends EventEmitter { } // Emit event. + console.log( 'probe 9' ); this.emit( data.meta.stream, data, event ); + console.log( 'probe 10' ); // Emit event to aliases of event stream. if ( WikimediaEventStreamAliasesKey[ data.meta.stream ] ) { for ( const alias of WikimediaEventStreamAliasesKey[ data.meta.stream ] ) { + console.log( 'probe 11+' + alias ); this.emit( alias, data, event ); + console.log( 'probe 12+' + alias ); } } } ); @@ -633,12 +640,21 @@ export class WikimediaStream extends EventEmitter { * Returns a promise that resolves when the stream is closed. */ waitUntilClosed(): Promise { + console.log( 'probe 13' ); // Already closed. if ( this.eventSource == null ) { + console.log( 'probe 14a' ); return Promise.resolve(); } + console.log( 'probe 14b' ); return new Promise( res => { - this.once( 'close', res ); + console.log( 'probe 15' ); + this.once( 'close', () => { + console.log( 'probe 17' ); + res(); + console.log( 'probe 18' ); + } ); + console.log( 'probe 16' ); } ); } diff --git a/tests/MediaWikiStandardizedStreamTest.ts b/tests/MediaWikiStandardizedStreamTest.ts index bb7438b..e399038 100644 --- a/tests/MediaWikiStandardizedStreamTest.ts +++ b/tests/MediaWikiStandardizedStreamTest.ts @@ -40,17 +40,22 @@ beforeEach( ( doneFn ) => { } ); function generateStream( topic: WikimediaEventStream ): Promise { + console.log( 'probe 1' ); return new Promise( res => { + console.log( 'probe 2' ); const stream = new WikimediaStream( topic, { autoStart: false } ); + console.log( 'probe 3' ); stream.open( { since: new Date( Date.now() - ( 7 * 24 * 60 * 60 * 1e3 ) ).toISOString() } ).then( () => { + console.log( 'probe 5' ); res( stream ); } ); + console.log( 'probe 4' ); } ); } @@ -81,12 +86,17 @@ test.each( [ if ( data.test_map ) { expect( typeof data.test_map ).toEqual( 'object' ); } + console.log( 'probe 11' + topic ); if ( ++successCount > 20 ) { + console.log( 'probe 12' + topic ); stream.close(); } } ); + console.log( 'probe 19' ); await stream.waitUntilClosed(); + console.log( 'probe 20' ); expect.hasAssertions(); + console.log( 'probe 21' ); } ); test.each( [ @@ -106,12 +116,17 @@ test.each( [ if ( data.performer ) { testUser( data.performer ); } + console.log( 'probe 11' + topic ); if ( ++successCount > 20 ) { + console.log( 'probe 12' + topic ); stream.close(); } } ); + console.log( 'probe 19' ); await stream.waitUntilClosed(); + console.log( 'probe 20' ); expect.hasAssertions(); + console.log( 'probe 21' ); } ); test.each( [ @@ -130,12 +145,17 @@ test.each( [ } expect( typeof data.rev_id ).toBe( 'number' ); expect( typeof data.rev_count ).toBe( 'number' ); + console.log( 'probe 11' + topic ); if ( ++successCount > 20 ) { + console.log( 'probe 12' + topic ); stream.close(); } } ); + console.log( 'probe 19' ); await stream.waitUntilClosed(); + console.log( 'probe 20' ); expect.hasAssertions(); + console.log( 'probe 21' ); } ); test.each( [ @@ -166,12 +186,17 @@ test.each( [ expect( typeof link.external ).toBe( 'boolean' ); } } + console.log( 'probe 11' + topic ); if ( ++successCount > 20 ) { + console.log( 'probe 12' + topic ); stream.close(); } } ); + console.log( 'probe 19' ); await stream.waitUntilClosed(); + console.log( 'probe 20' ); expect.hasAssertions(); + console.log( 'probe 21' ); } ); test.each( [ @@ -199,12 +224,17 @@ test.each( [ expect( typeof data.new_redirect_page.page_namespace ).toBe( 'number' ); expect( typeof data.new_redirect_page.rev_id ).toBe( 'number' ); } + console.log( 'probe 11' + topic ); if ( ++successCount > 20 ) { + console.log( 'probe 12' + topic ); stream.close(); } } ); + console.log( 'probe 19' ); await stream.waitUntilClosed(); + console.log( 'probe 20' ); expect.hasAssertions(); + console.log( 'probe 21' ); } ); test.each( [ @@ -231,12 +261,17 @@ test.each( [ propertiesFound = true; } expect( propertiesFound ).toBeTruthy(); + console.log( 'probe 11' + topic ); if ( ++successCount > 20 ) { + console.log( 'probe 12' + topic ); stream.close(); } } ); + console.log( 'probe 19' ); await stream.waitUntilClosed(); + console.log( 'probe 20' ); expect.hasAssertions(); + console.log( 'probe 21' ); } ); test.each( [ @@ -257,12 +292,17 @@ test.each( [ expect( typeof data.prior_state ).toBe( 'object' ); expect( typeof data.prior_state.page_id ).toBe( 'number' ); } + console.log( 'probe 11' + topic ); if ( ++successCount > 20 ) { + console.log( 'probe 12' + topic ); stream.close(); } } ); + console.log( 'probe 19' ); await stream.waitUntilClosed(); + console.log( 'probe 20' ); expect.hasAssertions(); + console.log( 'probe 21' ); } ); test.each( [ @@ -284,12 +324,17 @@ test.each( [ for ( const priorTag of data.prior_state.tags ) { expect( typeof priorTag ).toBe( 'string' ); } + console.log( 'probe 11' + topic ); if ( ++successCount > 20 ) { + console.log( 'probe 12' + topic ); stream.close(); } } ); + console.log( 'probe 19' ); await stream.waitUntilClosed(); + console.log( 'probe 20' ); expect.hasAssertions(); + console.log( 'probe 21' ); } ); test.each( [ @@ -314,10 +359,15 @@ test.each( [ expect( typeof data.prior_state.visibility.text ).toBe( 'boolean' ); expect( typeof data.prior_state.visibility.user ).toBe( 'boolean' ); expect( typeof data.prior_state.visibility.comment ).toBe( 'boolean' ); + console.log( 'probe 11' + topic ); if ( ++successCount > 20 ) { + console.log( 'probe 12' + topic ); stream.close(); } } ); + console.log( 'probe 19' ); await stream.waitUntilClosed(); + console.log( 'probe 20' ); expect.hasAssertions(); + console.log( 'probe 21' ); } );