@@ -21,40 +21,39 @@ abstract class BaseSSEDecoder implements SSEDecoder {
21
21
abstract iterLines ( response : UnifiedResponse ) : AsyncIterableIterator < string > ;
22
22
23
23
async * _iterLines ( reader : ReadableStreamDefaultReader < Uint8Array > ) : AsyncIterableIterator < string > {
24
-
25
- let buffer = '' ;
26
-
27
- try {
28
- while ( true ) {
29
- const { done, value } = await reader . read ( ) ;
30
-
31
- if ( done ) {
32
- if ( buffer . length > 0 ) {
33
- const decoded = this . decode ( buffer . trim ( ) ) ;
34
- if ( decoded ) yield decoded ;
35
- }
36
- break ;
37
- }
38
-
39
- buffer += new TextDecoder ( ) . decode ( value ) ;
40
- const lines = buffer . split ( '\n' ) ;
41
- buffer = lines . pop ( ) || '' ;
42
-
43
- for ( const line of lines ) {
44
- const decoded = this . decode ( line . trim ( ) ) ;
24
+ let buffer = '' ;
25
+
26
+ try {
27
+ while ( true ) {
28
+ const { done, value } = await reader . read ( ) ;
29
+
30
+ if ( done ) {
31
+ if ( buffer . length > 0 ) {
32
+ const decoded = this . decode ( buffer . trim ( ) ) ;
45
33
if ( decoded ) yield decoded ;
46
34
}
35
+ break ;
36
+ }
37
+
38
+ buffer += new TextDecoder ( ) . decode ( value ) ;
39
+ const lines = buffer . split ( '\n' ) ;
40
+ buffer = lines . pop ( ) || '' ;
41
+
42
+ for ( const line of lines ) {
43
+ const decoded = this . decode ( line . trim ( ) ) ;
44
+ if ( decoded ) yield decoded ;
47
45
}
48
- } finally {
49
- reader . releaseLock ( ) ;
50
46
}
47
+ } finally {
48
+ reader . releaseLock ( ) ;
49
+ }
51
50
}
52
51
}
53
52
54
53
export class BrowserSSEDecoder extends BaseSSEDecoder {
55
54
async * iterLines ( response : UnifiedResponse ) : AsyncIterableIterator < string > {
56
55
if ( ! response . body ) {
57
- throw new Error ( 'Response body is null' ) ;
56
+ throw new Error ( 'Response body is null' ) ;
58
57
}
59
58
60
59
const body = response . body as ReadableStream < Uint8Array > ;
@@ -63,9 +62,10 @@ export class BrowserSSEDecoder extends BaseSSEDecoder {
63
62
}
64
63
65
64
export class NodeSSEDecoder extends BaseSSEDecoder {
66
- async * iterLines ( response : UnifiedResponse ) : AsyncIterableIterator < string > {
67
- const readerStream = ( await import ( "stream/web" ) ) . ReadableStream as any ;
68
- const reader = readerStream . from ( response . body ) . getReader ( ) ;
69
- yield * this . _iterLines ( reader ) ;
70
- }
65
+ async * iterLines ( response : UnifiedResponse ) : AsyncIterableIterator < string > {
66
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
67
+ const readerStream = ( await import ( 'stream/web' ) ) . ReadableStream as any ;
68
+ const reader = readerStream . from ( response . body ) . getReader ( ) ;
69
+ yield * this . _iterLines ( reader ) ;
70
+ }
71
71
}
0 commit comments