(Response: typeof GlobalResponse)
| 134 | |
| 135 | describe('various response body types', () => { |
| 136 | const runner = (Response: typeof GlobalResponse) => { |
| 137 | const largeText = 'a'.repeat(1024 * 1024 * 10) |
| 138 | let server: ServerType |
| 139 | let resolveReadableStreamPromise: () => void |
| 140 | let resolveEventStreamPromise: () => void |
| 141 | let resolveEventStreamWithoutTransferEncodingPromise: () => void |
| 142 | beforeAll(() => { |
| 143 | const app = new Hono() |
| 144 | app.use('*', async (c, next) => { |
| 145 | await next() |
| 146 | |
| 147 | // generate internal response object |
| 148 | const status = c.res.status |
| 149 | if (status > 999) { |
| 150 | c.res = new Response('Internal Server Error', { status: 500 }) |
| 151 | } |
| 152 | }) |
| 153 | app.get('/', () => { |
| 154 | const response = new Response('Hello! Node!') |
| 155 | return response |
| 156 | }) |
| 157 | app.get('/large', () => { |
| 158 | // 10MB text |
| 159 | const response = new Response(largeText) |
| 160 | return response |
| 161 | }) |
| 162 | app.get('/uint8array', () => { |
| 163 | const response = new Response(new Uint8Array([1, 2, 3]), { |
| 164 | headers: { 'content-type': 'application/octet-stream' }, |
| 165 | }) |
| 166 | return response |
| 167 | }) |
| 168 | app.get('/blob', () => { |
| 169 | const response = new Response(new Blob([new Uint8Array([1, 2, 3])]), { |
| 170 | headers: { 'content-type': 'application/octet-stream' }, |
| 171 | }) |
| 172 | return response |
| 173 | }) |
| 174 | const readableStreamPromise = new Promise<void>((resolve) => { |
| 175 | resolveReadableStreamPromise = resolve |
| 176 | }) |
| 177 | app.get('/readable-stream', () => { |
| 178 | const stream = new ReadableStream({ |
| 179 | async start(controller) { |
| 180 | await readableStreamPromise |
| 181 | controller.enqueue('Hello!') |
| 182 | controller.enqueue(' Node!') |
| 183 | controller.close() |
| 184 | }, |
| 185 | }) |
| 186 | return new Response(stream) |
| 187 | }) |
| 188 | app.get('/readable-stream-with-transfer-encoding', () => { |
| 189 | const stream = new ReadableStream({ |
| 190 | async start(controller) { |
| 191 | controller.enqueue('Hello!') // send one chunk synchronously |
| 192 | controller.close() |
| 193 | }, |
no test coverage detected
searching dependent graphs…