@@ -20,7 +20,7 @@ interface DockerEvent {
2020 } ;
2121}
2222
23- let dockerEventStream : NodeJS . ReadableStream | undefined ;
23+ let dockerEventStream : EventStream . MapStream | undefined ;
2424
2525/**
2626 * Get a stream of events from Docker. Although Dockerode will only give us the raw event buffers,
@@ -33,31 +33,29 @@ function getDockerEventStream(docker: Docker) {
3333 if ( ! dockerEventStream ) {
3434 const dockerEventParsingStream = EventStream . pipeline (
3535 EventStream . split ( ) ,
36- EventStream . mapSync ( ( rawLine : Buffer ) =>
37- JSON . parse ( rawLine . toString ( 'utf8' ) )
38- )
36+ EventStream . mapSync ( ( buffer : Buffer ) => buffer . toString ( 'utf8' ) ) ,
37+ EventStream . filterSync ( ( line : string ) => line . length > 0 ) ,
38+ EventStream . mapSync ( ( rawLine : string ) => JSON . parse ( rawLine ) )
3939 ) ;
4040
4141 // We expose the stream immediately, even though no data is coming yet
4242 dockerEventStream = dockerEventParsingStream ;
4343
4444 // This gives us a stream of raw Buffer data. Inside, it contains
4545 // JSON strings, newline separated, which we parse above.
46- ( docker . getEvents ( ) as Promise < stream . Readable > ) // Wrong types, it's a raw http.IncomingMessage
47- . then ( ( rawEventStream ) => {
48- rawEventStream . pipe ( dockerEventParsingStream ) ;
49- rawEventStream . on ( 'error' , ( e ) => {
50- dockerEventParsingStream ?. emit ( 'error' , e ) ;
51- } ) ;
52- rawEventStream . on ( 'close' , ( ) => {
53- dockerEventParsingStream ?. end ( ) ;
54- dockerEventStream = undefined ;
55- } ) ;
56- } )
57- . catch ( ( e ) => {
46+ docker . getEvents ( ) . then ( ( rawEventStream ) => {
47+ rawEventStream . pipe ( dockerEventParsingStream ) ;
48+ rawEventStream . on ( 'error' , ( e ) => {
5849 dockerEventParsingStream ?. emit ( 'error' , e ) ;
50+ } ) ;
51+ rawEventStream . on ( 'close' , ( ) => {
52+ dockerEventParsingStream ?. end ( ) ;
5953 dockerEventStream = undefined ;
6054 } ) ;
55+ } ) . catch ( ( e ) => {
56+ dockerEventParsingStream ?. emit ( 'error' , e ) ;
57+ dockerEventStream = undefined ;
58+ } ) ;
6159 }
6260
6361 return dockerEventStream ;
@@ -166,7 +164,7 @@ class DockerNetworkMonitor {
166164 constructor (
167165 private docker : Docker ,
168166 private proxyPort : number ,
169- private dockerEventStream : NodeJS . ReadableStream
167+ private dockerEventStream : stream . Stream
170168 ) {
171169 // We use mobx here to automatically propagate updates whilst avoiding
172170 // unnecessary updates when nothing changes.
0 commit comments