diff --git a/.changeset/cool-houses-bake.md b/.changeset/cool-houses-bake.md new file mode 100644 index 00000000000..e03399ab399 --- /dev/null +++ b/.changeset/cool-houses-bake.md @@ -0,0 +1,5 @@ +--- +'@clerk/nextjs': patch +--- + +Fixing a Typing error in clerkMiddleware diff --git a/packages/nextjs/src/server/clerkMiddleware.ts b/packages/nextjs/src/server/clerkMiddleware.ts index 53bdb9f82e1..b64f756426c 100644 --- a/packages/nextjs/src/server/clerkMiddleware.ts +++ b/packages/nextjs/src/server/clerkMiddleware.ts @@ -94,12 +94,11 @@ interface ClerkMiddleware { /** * The `clerkMiddleware()` helper integrates Clerk authentication into your Next.js application through Middleware. `clerkMiddleware()` is compatible with both the App and Pages routers. */ -// @ts-expect-error TS is not happy here. Will dig into it -export const clerkMiddleware: ClerkMiddleware = (...args: unknown[]) => { +export const clerkMiddleware = ((...args: unknown[]): NextMiddleware | NextMiddlewareReturn => { const [request, event] = parseRequestAndEvent(args); const [handler, params] = parseHandlerAndOptions(args); - return clerkMiddlewareRequestDataStorage.run(clerkMiddlewareRequestDataStore, () => { + const middleware = clerkMiddlewareRequestDataStorage.run(clerkMiddlewareRequestDataStore, () => { const baseNextMiddleware: NextMiddleware = withLogger('clerkMiddleware', logger => async (request, event) => { // Handles the case where `options` is a callback function to dynamically access `NextRequest` const resolvedParams = typeof params === 'function' ? await params(request) : params; @@ -263,7 +262,9 @@ export const clerkMiddleware: ClerkMiddleware = (...args: unknown[]) => { // eg, export default clerkMiddleware(auth => { ... }); return nextMiddleware; }); -}; + + return middleware; +}) as ClerkMiddleware; const parseRequestAndEvent = (args: unknown[]) => { return [args[0] instanceof Request ? args[0] : undefined, args[0] instanceof Request ? args[1] : undefined] as [