honojs / middleware

monorepo for Hono third-party middleware/helpers/wrappers
https://hono.dev
440 stars 157 forks source link

[zod-openapi] streamSSE from hono/streaming together with @hono/zod-openapi have type issues #735

Open sebastianwessel opened 1 month ago

sebastianwessel commented 1 month ago

Think it is related to this: #374

Issue:

The return type of streamSSE does not match and typsescript is complaining

Example:

const chatRoute = createRoute({
  method: 'post',
  path: '/{projectId}/chat',
  security: [{ Bearer: [] }],
  description: 'Send a message to the project chat and receive a response via SSE',
  request: {
    params: z.object({
      projectId: z.string().describe('The ID of the project'),
    }),
    body: {
      content: {
        'application/json': {
          schema: z.object({
            message: z.string().describe('The message to send'),
            conversationId: z
              .string()
              .optional()
              .describe('The ID of the conversation, if continuing an existing one'),
          }),
        },
      },
    },
  },
  responses: {
    200: {
      description: 'Successful response with SSE stream',
      content: {
        'text/event-stream': {
          schema: z.object({
            event: z.enum(['start', 'token', 'end', 'error']),
            data: z.string(),
          }),
        },
      },
    },
    ...errorResponse,
  },
})

app.openapi(chatRoute, async (c) => {
  return streamSSE(c, async (stream) => {
   [...]
  })
})
yusukebe commented 1 month ago

This related to https://github.com/honojs/hono/issues/3309