From 0a43d2c562f5adb12009f6bdd0e7fb7c06a625e6 Mon Sep 17 00:00:00 2001 From: akineko Date: Sun, 19 May 2024 00:58:15 +0900 Subject: [PATCH] fix(zod-openapi): update RouteHandler type to support MaybePromise (#529) * fix(zod-openapi): update RouteHandler type to support MaybePromise * add .changeset/cuddly-pets-drum.md --- .changeset/cuddly-pets-drum.md | 5 +++ packages/zod-openapi/src/index.ts | 4 +- packages/zod-openapi/test/handler.test-d.ts | 41 ++++++++++++++++----- 3 files changed, 38 insertions(+), 12 deletions(-) create mode 100644 .changeset/cuddly-pets-drum.md diff --git a/.changeset/cuddly-pets-drum.md b/.changeset/cuddly-pets-drum.md new file mode 100644 index 00000000..af868c43 --- /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 4372975c..1659472b 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 2eaf5429..daf0e4c4 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) }) })