diff --git a/.changeset/cuddly-pets-drum.md b/.changeset/cuddly-pets-drum.md new file mode 100644 index 000000000..af868c437 --- /dev/null +++ b/.changeset/cuddly-pets-drum.md @@ -0,0 +1,5 @@ +--- +'@hono/zod-openapi': patch +--- + +fix(zod-openapi): update RouteHandler type to support MaybePromise diff --git a/packages/zod-openapi/src/index.ts b/packages/zod-openapi/src/index.ts index 4372975c8..1659472b3 100644 --- a/packages/zod-openapi/src/index.ts +++ b/packages/zod-openapi/src/index.ts @@ -197,8 +197,8 @@ export type RouteHandler< } } } - ? RouteConfigToTypedResponse - : RouteConfigToTypedResponse | Response | Promise + ? MaybePromise> + : MaybePromise> | MaybePromise > export type RouteHook< diff --git a/packages/zod-openapi/test/handler.test-d.ts b/packages/zod-openapi/test/handler.test-d.ts index 2eaf54294..daf0e4c43 100644 --- a/packages/zod-openapi/test/handler.test-d.ts +++ b/packages/zod-openapi/test/handler.test-d.ts @@ -1,8 +1,7 @@ +import type { RouteHandler } from '../src' import { OpenAPIHono, createRoute, z } from '../src' -test('supports async handler', () => { - const hono = new OpenAPIHono() - +describe('supports async handler', () => { const route = createRoute({ method: 'get', path: '/users', @@ -20,15 +19,37 @@ test('supports async handler', () => { }, }) - hono.openapi(route, (c) => { - return c.json({ - id: '123', + test('argument of openapi method', () => { + const hono = new OpenAPIHono() + + hono.openapi(route, (c) => { + return c.json({ + id: '123', + }) }) - }) - hono.openapi(route, async (c) => { - return c.json({ - id: '123', + hono.openapi(route, async (c) => { + return c.json({ + id: '123', + }) }) }) + + test('RouteHandler type', () => { + const handler: RouteHandler = (c) => { + return c.json({ + id: '123', + }) + } + + const asyncHandler: RouteHandler = async (c) => { + return c.json({ + id: '123', + }) + } + + const hono = new OpenAPIHono() + hono.openapi(route, handler) + hono.openapi(route, asyncHandler) + }) })