@@ -11,118 +11,17 @@ function strictEqual (a, b, description) {
11
11
}
12
12
13
13
addEventListener ( "fetch" , async ( event ) => {
14
- let cnt = 0 ;
15
14
const stream = new ReadableStream ( {
16
15
type : 'bytes' ,
17
16
autoAllocateChunkSize : 1024 ,
18
17
async pull ( controller ) {
19
18
const view = controller . byobRequest . view ;
20
- cnt ++ ;
21
- if ( cnt === 1 ) {
22
- }
23
- else if ( cnt === 2 ) {
24
- let cnt = 0 ;
25
- const stream = new ReadableStream ( {
26
- type : 'bytes' ,
27
- autoAllocateChunkSize : 1024 ,
28
- start ( controller ) {
29
- } ,
30
- pull ( controller ) {
31
- cnt ++ ;
32
- const view = controller . byobRequest ?. view ;
33
- if ( cnt < 3 ) {
34
- view [ 0 ] = 1 ;
35
- view [ 1 ] = 2 ;
36
- view [ 2 ] = 3 ;
37
- controller . byobRequest . respond ( 3 ) ;
38
- } else if ( cnt == 3 ) {
39
- controller . enqueue ( new Uint8Array ( [ 1 , 2 , 4 ] ) ) ;
40
- }
41
- if ( cnt === 3 )
42
- return controller . close ( ) ;
43
- }
44
- } ) ;
45
-
46
- const byobReader = stream . getReader ( ) ;
47
- let buf ;
48
- let result ;
49
- let offset = 0 ;
50
- while ( true ) {
51
- if ( buf && cnt < 3 ) {
52
- const output = new Uint8Array ( buf ) ;
53
- strictEqual ( output [ 0 ] , 1 ) ;
54
- strictEqual ( output [ 1 ] , 2 ) ;
55
- strictEqual ( output [ 2 ] , 3 ) ;
56
- strictEqual ( output [ 3 ] , 0 ) ;
57
- strictEqual ( output . byteLength , 1024 ) ;
58
- }
59
- result = await byobReader . read ( ) ;
60
- if ( result . done )
61
- break ;
62
- offset += result . value . byteLength ;
63
- buf = result . value . buffer ;
64
- }
65
-
66
- strictEqual ( cnt , 3 ) ;
67
- const output = new Uint8Array ( buf ) ;
68
- strictEqual ( output [ 0 ] , 1 ) ;
69
- strictEqual ( output [ 1 ] , 2 ) ;
70
- strictEqual ( output [ 2 ] , 4 ) ;
71
- strictEqual ( output [ 3 ] , undefined ) ;
72
- strictEqual ( output . byteLength , 3 ) ;
73
- view [ 0 ] = 104 ;
74
- view [ 1 ] = 101 ;
75
- view [ 2 ] = 121 ;
76
- view [ 3 ] = 49 ;
77
- controller . byobRequest . respond ( 4 ) ;
78
- }
79
- else if ( cnt === 3 ) {
80
- let cnt = 0 ;
81
- const stream = new ReadableStream ( {
82
- type : 'bytes' ,
83
- start ( controller ) {
84
- } ,
85
- pull ( controller ) {
86
- cnt ++ ;
87
- const view = controller . byobRequest ?. view ;
88
- if ( view ) {
89
- view [ 0 ] = 1 ;
90
- view [ 1 ] = 2 ;
91
- view [ 2 ] = 3 ;
92
- controller . byobRequest . respond ( 3 ) ;
93
- }
94
- if ( cnt === 3 )
95
- return controller . close ( ) ;
96
- }
97
- } ) ;
98
-
99
- const byobReader = stream . getReader ( { mode : 'byob' } ) ;
100
- let buf = new ArrayBuffer ( 10 ) ;
101
- let result ;
102
- let offset = 0 ;
103
- do {
104
- result = await byobReader . read ( new Uint8Array ( buf , offset ) ) ;
105
- offset += result . value . byteLength ;
106
- buf = result . value . buffer ;
107
- } while ( ! result . done ) ;
108
-
109
- const out = new Uint8Array ( buf ) ;
110
- if ( out [ 0 ] === 1 && out [ 1 ] === 2 && out [ 2 ] === 3 && out [ 3 ] === 1 && out [ 4 ] === 2 && out [ 5 ] === 3 && out [ 6 ] === 1 && out [ 7 ] === 2 && out [ 8 ] === 3 ) {
111
- view [ 0 ] = 104 ;
112
- view [ 1 ] = 101 ;
113
- view [ 2 ] = 121 ;
114
- view [ 3 ] = 50 ;
115
- controller . byobRequest . respond ( 4 ) ;
116
- }
117
- }
118
- else if ( cnt === 4 ) {
119
- view [ 0 ] = 104 ;
120
- view [ 1 ] = 101 ;
121
- view [ 2 ] = 121 ;
122
- view [ 3 ] = 51 ;
123
- controller . byobRequest . respond ( 4 ) ;
124
- controller . close ( ) ;
125
- }
19
+ view [ 0 ] = 104 ;
20
+ view [ 1 ] = 101 ;
21
+ view [ 2 ] = 121 ;
22
+ view [ 3 ] = 51 ;
23
+ controller . byobRequest . respond ( 4 ) ;
24
+ controller . close ( ) ;
126
25
}
127
26
} ) ;
128
27
event . respondWith ( new Response ( stream ) ) ;
0 commit comments