1
1
/// <reference path="../../../../../types/index.d.ts" />
2
2
/* eslint-env serviceworker */
3
3
4
+ import { CacheOverride } from "fastly:cache-override" ;
4
5
import { pass , assert , assertRejects } from "./assertions.js" ;
5
6
import { routes , isRunningLocally } from "./routes.js" ;
6
7
7
8
let error ;
8
9
9
10
async function requestInitObjectLiteral ( overrideContentLength ) {
10
- let request = new Request ( ' https://http-me.glitch.me/anything' , {
11
- backend : ' httpme' ,
12
- method : ' POST' ,
13
- body : ' meow' ,
11
+ let request = new Request ( " https://http-me.glitch.me/anything" , {
12
+ backend : " httpme" ,
13
+ method : " POST" ,
14
+ body : " meow" ,
14
15
overrideContentLength,
15
16
headers : {
16
17
"content-length" : "1"
@@ -22,10 +23,10 @@ async function requestInitObjectLiteral(overrideContentLength) {
22
23
}
23
24
24
25
async function requestClone ( overrideContentLength ) {
25
- let request = new Request ( ' https://http-me.glitch.me/anything' , {
26
- backend : ' httpme' ,
27
- method : ' POST' ,
28
- body : ' meow' ,
26
+ let request = new Request ( " https://http-me.glitch.me/anything" , {
27
+ backend : " httpme" ,
28
+ method : " POST" ,
29
+ body : " meow" ,
29
30
overrideContentLength,
30
31
headers : {
31
32
"content-length" : "1"
@@ -37,10 +38,10 @@ async function requestClone(overrideContentLength) {
37
38
}
38
39
39
40
async function fetchInitObjectLiteral ( overrideContentLength ) {
40
- let response = await fetch ( ' https://http-me.glitch.me/anything' , {
41
- backend : ' httpme' ,
42
- method : ' POST' ,
43
- body : ' meow' ,
41
+ let response = await fetch ( " https://http-me.glitch.me/anything" , {
42
+ backend : " httpme" ,
43
+ method : " POST" ,
44
+ body : " meow" ,
44
45
overrideContentLength,
45
46
headers : {
46
47
"content-length" : "1"
@@ -61,7 +62,7 @@ routes.set("/override-content-length/request/init/object-literal/true", async ()
61
62
if ( error ) { return error }
62
63
}
63
64
64
- return pass ( 'ok' )
65
+ return pass ( "ok" )
65
66
} ) ;
66
67
67
68
routes . set ( "/override-content-length/request/init/object-literal/false" , async ( ) => {
@@ -70,7 +71,7 @@ routes.set("/override-content-length/request/init/object-literal/false", async (
70
71
error = assert ( actual , expected , `await requestInitObjectLiteral(false)` )
71
72
if ( error ) { return error }
72
73
73
- return pass ( 'ok' )
74
+ return pass ( "ok" )
74
75
} ) ;
75
76
76
77
routes . set ( "/override-content-length/request/clone/true" , async ( ) => {
@@ -84,7 +85,7 @@ routes.set("/override-content-length/request/clone/true", async () => {
84
85
if ( error ) { return error }
85
86
}
86
87
87
- return pass ( 'ok' )
88
+ return pass ( "ok" )
88
89
} ) ;
89
90
90
91
routes . set ( "/override-content-length/request/clone/false" , async ( ) => {
@@ -93,7 +94,7 @@ routes.set("/override-content-length/request/clone/false", async () => {
93
94
error = assert ( actual , expected , `await requestClone(false)` )
94
95
if ( error ) { return error }
95
96
96
- return pass ( 'ok' )
97
+ return pass ( "ok" )
97
98
} ) ;
98
99
99
100
routes . set ( "/override-content-length/fetch/init/object-literal/true" , async ( ) => {
@@ -107,7 +108,7 @@ routes.set("/override-content-length/fetch/init/object-literal/true", async () =
107
108
if ( error ) { return error }
108
109
}
109
110
110
- return pass ( 'ok' )
111
+ return pass ( "ok" )
111
112
} ) ;
112
113
113
114
routes . set ( "/override-content-length/fetch/init/object-literal/false" , async ( ) => {
@@ -116,27 +117,42 @@ routes.set("/override-content-length/fetch/init/object-literal/false", async ()
116
117
error = assert ( actual , expected , `await fetchInitObjectLiteral(false)` )
117
118
if ( error ) { return error }
118
119
119
- return pass ( 'ok' )
120
+ return pass ( "ok" )
120
121
} ) ;
121
122
122
123
async function responseInitObjectLiteral ( overrideContentLength ) {
123
- let response = new Response ( 'meow' , {
124
+ let response = new Response ( new ReadableStream ( {
125
+ start ( controller ) {
126
+ controller . enqueue ( new TextEncoder ( ) . encode ( "meow" ) ) ;
127
+ controller . close ( ) ;
128
+ } ,
129
+ } ) , {
124
130
overrideContentLength,
125
131
headers : {
126
- "transfer-encoding " : "chunked "
132
+ "content-length " : "4 "
127
133
}
128
134
} ) ;
129
135
return response ;
130
136
}
131
137
132
138
async function responseInitresponseInstance ( overrideContentLength ) {
133
- let response = new Response ( 'meow' , {
139
+ let response = new Response ( new ReadableStream ( {
140
+ start ( controller ) {
141
+ controller . enqueue ( new TextEncoder ( ) . encode ( "meow" ) ) ;
142
+ controller . close ( ) ;
143
+ } ,
144
+ } ) , {
134
145
overrideContentLength,
135
146
headers : {
136
- "transfer-encoding " : "chunked "
147
+ "content-length " : "4 "
137
148
}
138
149
} ) ;
139
- response = new Response ( 'meow' , response ) ;
150
+ response = new Response ( new ReadableStream ( {
151
+ start ( controller ) {
152
+ controller . enqueue ( new TextEncoder ( ) . encode ( "meow" ) ) ;
153
+ controller . close ( ) ;
154
+ } ,
155
+ } ) , response ) ;
140
156
return response ;
141
157
}
142
158
@@ -156,13 +172,31 @@ routes.set("/override-content-length/response/init/response-instance/false", asy
156
172
return responseInitresponseInstance ( false ) ;
157
173
} ) ;
158
174
175
+ async function responseInitfetch ( overrideContentLength ) {
176
+ const response = await fetch ( "https://httpbin.org/stream-bytes/11" , {
177
+ backend : "httpbin" ,
178
+ overrideContentLength,
179
+ cacheOverride : new CacheOverride ( 'pass' )
180
+ } ) ;
181
+ response . headers . set ( "content-length" , "11" )
182
+ return response ;
183
+ }
184
+
185
+ routes . set ( "/override-content-length/response/init/fetch/false" , async ( ) => {
186
+ return responseInitfetch ( false ) ;
187
+ } ) ;
188
+
189
+ routes . set ( "/override-content-length/response/init/fetch/true" , async ( ) => {
190
+ return responseInitfetch ( true ) ;
191
+ } ) ;
192
+
159
193
160
194
// TODO: uncomment when we have an implementation of Response.prototype.clone
161
195
// async function responseClone(overrideContentLength) {
162
- // let response = new Response(' meow' , {
163
- // backend: ' httpme' ,
164
- // method: ' POST' ,
165
- // body: ' meow' ,
196
+ // let response = new Response(" meow" , {
197
+ // backend: " httpme" ,
198
+ // method: " POST" ,
199
+ // body: " meow" ,
166
200
// overrideContentLength,
167
201
// headers: {
168
202
// "transfer-encoding": "chunked"
0 commit comments