Skip to content

Commit b20d8d3

Browse files
committed
Merge branch 'main' into next
2 parents be72aec + a5d2069 commit b20d8d3

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

src/adapter/bun/handler.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,10 @@ export const mapResponse = (
3737
return new Response(JSON.stringify(response), set as any)
3838

3939
case 'ElysiaFile':
40-
return handleFile((response as ElysiaFile).value as File)
40+
return handleFile(
41+
(response as ElysiaFile).value as File,
42+
set as any
43+
)
4144

4245
case 'File':
4346
return handleFile(response as File, set as any)

src/adapter/utils.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ export const createStreamHandler =
159159
| IteratorResult<unknown>
160160
| undefined
161161

162+
if (set) handleSet(set)
162163
if (init instanceof Promise) init = await init
163164

164165
// Generator or ReadableStream is returned from a generator function

test/response/stream.test.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,31 @@ describe('Stream', () => {
9696
expect(response).toBe('ab')
9797
})
9898

99+
it('include multiple set-cookie headers in streamed response', async () => {
100+
const app = new Elysia().get('/', async function* (context) {
101+
context.cookie['cookie1'].set({
102+
value: 'value1'
103+
})
104+
context.cookie['cookie2'].set({
105+
value: 'value2'
106+
})
107+
108+
yield sse({ event: 'test', data: { count: 1 } })
109+
yield sse({ event: 'test', data: { count: 2 } })
110+
})
111+
112+
const response = await app.handle(req('/'))
113+
114+
const cookieHeaders = response.headers.getSetCookie()
115+
expect(cookieHeaders).toHaveLength(2)
116+
expect(cookieHeaders.some((h) => h.includes('cookie1=value1'))).toBe(
117+
true
118+
)
119+
expect(cookieHeaders.some((h) => h.includes('cookie2=value2'))).toBe(
120+
true
121+
)
122+
})
123+
99124
it('mutate set before yield is called', async () => {
100125
const expected = ['a', 'b', 'c']
101126

0 commit comments

Comments
 (0)