Skip to content

Commit fdd2f5a

Browse files
committed
🔧 fix: ReadableStream is not pass to handleStream in mapCompactResponse, and mapEarlyResponse
1 parent 9c68be6 commit fdd2f5a

File tree

7 files changed

+101
-247
lines changed

7 files changed

+101
-247
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# 1.3.18 - 23 Aug 2025
2+
Bug fix:
3+
- `ReadableStream` is not pass to `handleStream` in `mapCompactResponse`, and `mapEarlyResponse`
4+
15
# 1.3.17 - 23 Aug 2025
26
Bug fix:
37
- [#1353](https://github.com/elysiajs/elysia/issues/1353) normalize encodeSchema with Transform

bun.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"name": "elysia",
66
"dependencies": {
77
"cookie": "^1.0.2",
8-
"exact-mirror": "^0.1.6",
8+
"exact-mirror": "0.1.6",
99
"fast-decode-uri-component": "^1.0.1",
1010
},
1111
"devDependencies": {

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "elysia",
33
"description": "Ergonomic Framework for Human",
4-
"version": "1.3.17",
4+
"version": "1.3.18",
55
"author": {
66
"name": "saltyAom",
77
"url": "https://github.com/SaltyAom",
@@ -184,7 +184,7 @@
184184
},
185185
"dependencies": {
186186
"cookie": "^1.0.2",
187-
"exact-mirror": "^0.1.6",
187+
"exact-mirror": "0.1.6",
188188
"fast-decode-uri-component": "^1.0.1"
189189
},
190190
"devDependencies": {

src/adapter/bun/handler.ts

Lines changed: 20 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -56,30 +56,6 @@ export const mapResponse = (
5656
request
5757
)
5858

59-
case 'ReadableStream':
60-
if (
61-
!set.headers['content-type']?.startsWith(
62-
'text/event-stream'
63-
)
64-
)
65-
set.headers['content-type'] =
66-
'text/event-stream; charset=utf-8'
67-
68-
request?.signal?.addEventListener(
69-
'abort',
70-
{
71-
handleEvent() {
72-
if (request?.signal && !request?.signal?.aborted)
73-
(response as ReadableStream).cancel()
74-
}
75-
},
76-
{
77-
once: true
78-
}
79-
)
80-
81-
return new Response(response as ReadableStream, set as any)
82-
8359
case undefined:
8460
if (!response) return new Response('', set as any)
8561

@@ -138,8 +114,11 @@ export const mapResponse = (
138114
)
139115
}
140116

141-
// @ts-expect-error
142-
if (typeof response?.next === 'function')
117+
if (
118+
// @ts-expect-error
119+
typeof response?.next === 'function' ||
120+
response instanceof ReadableStream
121+
)
143122
return handleStream(response as any, set, request) as any
144123

145124
// @ts-expect-error
@@ -228,30 +207,6 @@ export const mapEarlyResponse = (
228207
request
229208
)
230209

231-
case 'ReadableStream':
232-
if (
233-
!set.headers['content-type']?.startsWith(
234-
'text/event-stream'
235-
)
236-
)
237-
set.headers['content-type'] =
238-
'text/event-stream; charset=utf-8'
239-
240-
request?.signal?.addEventListener(
241-
'abort',
242-
{
243-
handleEvent() {
244-
if (request?.signal && !request?.signal?.aborted)
245-
(response as ReadableStream).cancel()
246-
}
247-
},
248-
{
249-
once: true
250-
}
251-
)
252-
253-
return new Response(response as ReadableStream, set as any)
254-
255210
case undefined:
256211
if (!response) return
257212

@@ -310,8 +265,11 @@ export const mapEarlyResponse = (
310265
)
311266
}
312267

313-
// @ts-expect-error
314-
if (typeof response?.next === 'function')
268+
if (
269+
// @ts-expect-error
270+
typeof response?.next === 'function' ||
271+
response instanceof ReadableStream
272+
)
315273
return handleStream(response as any, set, request) as any
316274

317275
// @ts-expect-error
@@ -367,26 +325,6 @@ export const mapEarlyResponse = (
367325
request
368326
)
369327

370-
case 'ReadableStream':
371-
request?.signal?.addEventListener(
372-
'abort',
373-
{
374-
handleEvent() {
375-
if (request?.signal && !request?.signal?.aborted)
376-
(response as ReadableStream).cancel()
377-
}
378-
},
379-
{
380-
once: true
381-
}
382-
)
383-
384-
return new Response(response as ReadableStream, {
385-
headers: {
386-
'Content-Type': 'text/event-stream; charset=utf-8'
387-
}
388-
})
389-
390328
case undefined:
391329
if (!response) return new Response('')
392330

@@ -457,8 +395,11 @@ export const mapEarlyResponse = (
457395
)
458396
}
459397

460-
// @ts-expect-error
461-
if (typeof response?.next === 'function')
398+
if (
399+
// @ts-expect-error
400+
typeof response?.next === 'function' ||
401+
response instanceof ReadableStream
402+
)
462403
return handleStream(response as any, set, request) as any
463404

464405
// @ts-expect-error
@@ -522,26 +463,6 @@ export const mapCompactResponse = (
522463
}
523464
)
524465

525-
case 'ReadableStream':
526-
request?.signal?.addEventListener(
527-
'abort',
528-
{
529-
handleEvent() {
530-
if (request?.signal && !request?.signal?.aborted)
531-
(response as ReadableStream).cancel()
532-
}
533-
},
534-
{
535-
once: true
536-
}
537-
)
538-
539-
return new Response(response as ReadableStream, {
540-
headers: {
541-
'Content-Type': 'text/event-stream; charset=utf-8'
542-
}
543-
})
544-
545466
case undefined:
546467
if (!response) return new Response('')
547468

@@ -604,8 +525,11 @@ export const mapCompactResponse = (
604525
}
605526
)
606527

607-
// @ts-expect-error
608-
if (typeof response?.next === 'function')
528+
if (
529+
// @ts-expect-error
530+
typeof response?.next === 'function' ||
531+
response instanceof ReadableStream
532+
)
609533
return handleStream(response as any, undefined, request) as any
610534

611535
// @ts-expect-error

src/adapter/utils.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,6 @@ type CreateHandlerParameter = {
147147
mapCompactResponse(response: unknown, request?: Request): Response
148148
}
149149

150-
const asyncIterator = Symbol.asyncIterator
151-
152150
export const createStreamHandler =
153151
({ mapResponse, mapCompactResponse }: CreateHandlerParameter) =>
154152
async (

src/adapter/web-standard/handler.ts

Lines changed: 20 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -85,30 +85,6 @@ export const mapResponse = (
8585
request
8686
)
8787

88-
case 'ReadableStream':
89-
if (
90-
!set.headers['content-type']?.startsWith(
91-
'text/event-stream'
92-
)
93-
)
94-
set.headers['content-type'] =
95-
'text/event-stream; charset=utf-8'
96-
97-
request?.signal?.addEventListener(
98-
'abort',
99-
{
100-
handleEvent() {
101-
if (request?.signal && !request?.signal?.aborted)
102-
(response as ReadableStream).cancel()
103-
}
104-
},
105-
{
106-
once: true
107-
}
108-
)
109-
110-
return new Response(response as ReadableStream, set as any)
111-
11288
case undefined:
11389
if (!response) return new Response('', set as any)
11490

@@ -167,8 +143,11 @@ export const mapResponse = (
167143
)
168144
}
169145

170-
// @ts-expect-error
171-
if (typeof response?.next === 'function')
146+
if (
147+
// @ts-expect-error
148+
typeof response?.next === 'function' ||
149+
response instanceof ReadableStream
150+
)
172151
return handleStream(response as any, set, request) as any
173152

174153
// @ts-expect-error
@@ -258,30 +237,6 @@ export const mapEarlyResponse = (
258237
request
259238
)
260239

261-
case 'ReadableStream':
262-
if (
263-
!set.headers['content-type']?.startsWith(
264-
'text/event-stream'
265-
)
266-
)
267-
set.headers['content-type'] =
268-
'text/event-stream; charset=utf-8'
269-
270-
request?.signal?.addEventListener(
271-
'abort',
272-
{
273-
handleEvent() {
274-
if (request?.signal && !request?.signal?.aborted)
275-
(response as ReadableStream).cancel()
276-
}
277-
},
278-
{
279-
once: true
280-
}
281-
)
282-
283-
return new Response(response as ReadableStream, set as any)
284-
285240
case undefined:
286241
if (!response) return
287242

@@ -340,8 +295,11 @@ export const mapEarlyResponse = (
340295
)
341296
}
342297

343-
// @ts-expect-error
344-
if (typeof response?.next === 'function')
298+
if (
299+
// @ts-expect-error
300+
typeof response?.next === 'function' ||
301+
response instanceof ReadableStream
302+
)
345303
return handleStream(response as any, set, request) as any
346304

347305
// @ts-expect-error
@@ -398,26 +356,6 @@ export const mapEarlyResponse = (
398356
request
399357
)
400358

401-
case 'ReadableStream':
402-
request?.signal?.addEventListener(
403-
'abort',
404-
{
405-
handleEvent() {
406-
if (request?.signal && !request?.signal?.aborted)
407-
(response as ReadableStream).cancel()
408-
}
409-
},
410-
{
411-
once: true
412-
}
413-
)
414-
415-
return new Response(response as ReadableStream, {
416-
headers: {
417-
'Content-Type': 'text/event-stream; charset=utf-8'
418-
}
419-
})
420-
421359
case undefined:
422360
if (!response) return new Response('')
423361

@@ -488,8 +426,11 @@ export const mapEarlyResponse = (
488426
)
489427
}
490428

491-
// @ts-expect-error
492-
if (typeof response?.next === 'function')
429+
if (
430+
// @ts-expect-error
431+
typeof response?.next === 'function' ||
432+
response instanceof ReadableStream
433+
)
493434
return handleStream(response as any, set, request) as any
494435

495436
// @ts-expect-error
@@ -557,26 +498,6 @@ export const mapCompactResponse = (
557498
}
558499
)
559500

560-
case 'ReadableStream':
561-
request?.signal?.addEventListener(
562-
'abort',
563-
{
564-
handleEvent() {
565-
if (request?.signal && !request?.signal?.aborted)
566-
(response as ReadableStream).cancel()
567-
}
568-
},
569-
{
570-
once: true
571-
}
572-
)
573-
574-
return new Response(response as ReadableStream, {
575-
headers: {
576-
'Content-Type': 'text/event-stream; charset=utf-8'
577-
}
578-
})
579-
580501
case undefined:
581502
if (!response) return new Response('')
582503

@@ -639,8 +560,11 @@ export const mapCompactResponse = (
639560
}
640561
)
641562

642-
// @ts-expect-error
643-
if (typeof response?.next === 'function')
563+
if (
564+
// @ts-expect-error
565+
typeof response?.next === 'function' ||
566+
response instanceof ReadableStream
567+
)
644568
return handleStream(response as any, undefined, request) as any
645569

646570
// @ts-expect-error

0 commit comments

Comments
 (0)