Skip to content

Commit

Permalink
fix(jsx-renderer): don't overwrite headers if stream is true (#2363)
Browse files Browse the repository at this point in the history
* fix(jsx-renderer): dont overwrite headers if stream is `true`

* denoify
  • Loading branch information
yusukebe authored Mar 16, 2024
1 parent 72f8650 commit dd7561a
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 18 deletions.
18 changes: 9 additions & 9 deletions deno_dist/middleware/jsx-renderer/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,15 @@ const createRenderer =
)}`

if (options?.stream) {
return c.body(renderToReadableStream(body), {
headers:
options.stream === true
? {
'Transfer-Encoding': 'chunked',
'Content-Type': 'text/html; charset=UTF-8',
}
: options.stream,
})
if (options.stream === true) {
c.header('Transfer-Encoding', 'chunked')
c.header('Content-Type', 'text/html; charset=UTF-8')
} else {
for (const [key, value] of Object.entries(options.stream)) {
c.header(key, value)
}
}
return c.body(renderToReadableStream(body))
} else {
return c.html(body)
}
Expand Down
17 changes: 17 additions & 0 deletions src/middleware/jsx-renderer/index.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,23 @@ d.replaceWith(c.content)
])
})

it('Should return as streaming content with headers added in a handler', async () => {
const app = new Hono()
app.use(jsxRenderer(async ({ children }) => <div>{children}</div>, { stream: true }))
app.get('/', (c) => {
c.header('X-Message-Set', 'Hello')
c.header('X-Message-Append', 'Hello', { append: true })
return c.render('Hi', { title: 'Hi' })
})
const res = await app.request('/')
expect(res.status).toBe(200)
expect(res.headers.get('Transfer-Encoding')).toBe('chunked')
expect(res.headers.get('Content-Type')).toBe('text/html; charset=UTF-8')
expect(res.headers.get('X-Message-Set')).toBe('Hello')
expect(res.headers.get('X-Message-Append')).toBe('Hello')
expect(await res.text()).toBe('<!DOCTYPE html><div>Hi</div>')
})

it('Env', async () => {
type JSXRendererEnv = {
Variables: {
Expand Down
18 changes: 9 additions & 9 deletions src/middleware/jsx-renderer/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,15 @@ const createRenderer =
)}`

if (options?.stream) {
return c.body(renderToReadableStream(body), {
headers:
options.stream === true
? {
'Transfer-Encoding': 'chunked',
'Content-Type': 'text/html; charset=UTF-8',
}
: options.stream,
})
if (options.stream === true) {
c.header('Transfer-Encoding', 'chunked')
c.header('Content-Type', 'text/html; charset=UTF-8')
} else {
for (const [key, value] of Object.entries(options.stream)) {
c.header(key, value)
}
}
return c.body(renderToReadableStream(body))
} else {
return c.html(body)
}
Expand Down

0 comments on commit dd7561a

Please sign in to comment.