diff --git a/.changeset/swift-birds-read.md b/.changeset/swift-birds-read.md new file mode 100644 index 00000000..84d2deb4 --- /dev/null +++ b/.changeset/swift-birds-read.md @@ -0,0 +1,5 @@ +--- +'@smooai/utils': patch +--- + +Fixed addHonoMiddleware. diff --git a/src/api/hono.spec.ts b/src/api/hono.spec.ts index 2e2c16d6..be213d13 100644 --- a/src/api/hono.spec.ts +++ b/src/api/hono.spec.ts @@ -3,7 +3,7 @@ import * as env from '@/env'; import { Hono } from 'hono'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { z } from 'zod'; -import { addHonoMiddleware } from './hono'; +import { addHonoMiddleware, createHonoAwsLambdaHandler } from './hono'; // Mock dependencies vi.mock('@/env'); @@ -25,12 +25,11 @@ describe('addHonoMiddleware', () => { }); it('should create a Hono app with middleware', async () => { - const appFunction = (app: Hono) => { - app.get('/test', (c) => c.json({ message: 'success' })); - return app; - }; + const app = new Hono(); + app.get('/test', (c) => c.json({ message: 'success' })); - const handler = addHonoMiddleware(appFunction); + const middlewaredApp = addHonoMiddleware(app); + const handler = createHonoAwsLambdaHandler(middlewaredApp); const event = { version: '2.0', rawPath: '/test', @@ -64,16 +63,15 @@ describe('addHonoMiddleware', () => { name: z.string(), }); - const appFunction = (app: Hono) => { - app.post('/validate', async (c) => { - const body = await c.req.json(); - schema.parse(body); - return c.json({ success: true }); - }); - return app; - }; + const app = new Hono(); + app.post('/validate', async (c) => { + const body = await c.req.json(); + schema.parse(body); + return c.json({ success: true }); + }); - const handler = addHonoMiddleware(appFunction); + const middlewaredApp = addHonoMiddleware(app); + const handler = createHonoAwsLambdaHandler(middlewaredApp); const event = { version: '2.0', rawPath: '/validate', @@ -103,12 +101,11 @@ describe('addHonoMiddleware', () => { it('should add pretty JSON middleware when running locally', async () => { vi.mocked(env.isRunningLocally).mockReturnValue(true); - const appFunction = (app: Hono) => { - app.get('/test', (c) => c.json({ message: 'success' })); - return app; - }; + const app = new Hono(); + app.get('/test', (c) => c.json({ message: 'success' })); - const handler = addHonoMiddleware(appFunction); + const middlewaredApp = addHonoMiddleware(app); + const handler = createHonoAwsLambdaHandler(middlewaredApp); const event = { version: '2.0', rawPath: '/test', diff --git a/src/api/hono.ts b/src/api/hono.ts index 5eea7e84..5d5ab890 100644 --- a/src/api/hono.ts +++ b/src/api/hono.ts @@ -14,8 +14,8 @@ import { fromZodError } from 'zod-validation-error'; const logger = new AwsServerLogger(); // eslint-disable-next-line @typescript-eslint/no-explicit-any -- accepting any hono generic -export function addHonoMiddleware(appFunction: (app: Hono) => Hono): ReturnType { - const app = new Hono(); +export function addHonoMiddleware(_app: Hono): Hono { + const app = _app ?? new Hono(); app.use(requestId()); app.use( @@ -51,11 +51,7 @@ export function addHonoMiddleware(appFunction: (app: Hono) => Hono): R throw error; }); - const appWithRoutes = appFunction(app); - return (event: LambdaEvent, lambdaContext?: LambdaContext) => { - logger.addLambdaContext(event as unknown as APIGatewayProxyEventV2, lambdaContext as unknown as Context); - return handle(appWithRoutes)(event, lambdaContext); - }; + return app; } // eslint-disable-next-line @typescript-eslint/no-explicit-any -- accepting any hono generic