@@ -11,6 +11,7 @@ import type { NextMiddleware } from 'next/server';
1111import { NextResponse } from 'next/server' ;
1212
1313import { isRedirect , serverRedirectWithAuth , setHeader } from '../utils' ;
14+ import { withLogger } from '../utils/debugLogger' ;
1415import { clerkClient } from './clerkClient' ;
1516import { PUBLISHABLE_KEY , SECRET_KEY , SIGN_IN_URL , SIGN_UP_URL } from './constants' ;
1617import { errorThrower } from './errorThrower' ;
@@ -48,7 +49,7 @@ export type ClerkMiddlewareOptions = AuthenticateRequestOptions & { debug?: bool
4849
4950/**
5051 * Middleware for Next.js that handles authentication and authorization with Clerk.
51- * For more details, please refer to the docs: https://clerk.com/docs/references/nextjs/clerkMiddleware
52+ * For more details, please refer to the docs: https://beta. clerk.com/docs/references/nextjs/clerk-middleware
5253 */
5354interface ClerkMiddleware {
5455 /**
@@ -68,9 +69,13 @@ interface ClerkMiddleware {
6869 ( request : NextMiddlewareRequestParam , event : NextMiddlewareEvtParam ) : NextMiddlewareReturn ;
6970}
7071
71- export const clerkMiddleware : ClerkMiddleware = ( ...args : unknown [ ] ) : any => {
72+ export const clerkMiddleware : ClerkMiddleware = withLogger ( 'clerkMiddleware' , logger => ( ...args : unknown [ ] ) : any => {
7273 const [ request , event ] = parseRequestAndEvent ( args ) ;
7374 const [ handler , params ] = parseHandlerAndOptions ( args ) ;
75+ if ( params . debug ) {
76+ logger . enable ( ) ;
77+ }
78+
7479 const publishableKey = assertKey ( params . publishableKey || PUBLISHABLE_KEY , ( ) =>
7580 errorThrower . throwMissingPublishableKeyError ( ) ,
7681 ) ;
@@ -96,12 +101,20 @@ export const clerkMiddleware: ClerkMiddleware = (...args: unknown[]): any => {
96101
97102 const nextMiddleware : NextMiddleware = async ( request , event ) => {
98103 const clerkRequest = createClerkRequest ( request ) ;
104+ logger . debug ( 'options' , options ) ;
105+ logger . debug ( 'url' , ( ) => clerkRequest . toJSON ( ) ) ;
99106
100107 const requestState = await clerkClient . authenticateRequest (
101108 clerkRequest ,
102109 createAuthenticateRequestOptions ( clerkRequest , options ) ,
103110 ) ;
104111
112+ logger . debug ( 'requestState' , ( ) => ( {
113+ status : requestState . status ,
114+ headers : JSON . stringify ( Object . fromEntries ( requestState . headers ) ) ,
115+ reason : requestState . reason ,
116+ } ) ) ;
117+
105118 const locationHeader = requestState . headers . get ( constants . Headers . Location ) ;
106119 if ( locationHeader ) {
107120 return new Response ( null , { status : 307 , headers : requestState . headers } ) ;
@@ -110,6 +123,7 @@ export const clerkMiddleware: ClerkMiddleware = (...args: unknown[]): any => {
110123 }
111124
112125 const authObject = requestState . toAuth ( ) ;
126+ logger . debug ( 'auth' , ( ) => ( { auth : authObject , debug : authObject . debug ( ) } ) ) ;
113127
114128 const redirectToSignIn = createMiddlewareRedirectToSignIn ( clerkRequest ) ;
115129 const protect = createMiddlewareProtect ( clerkRequest , authObject , redirectToSignIn ) ;
@@ -123,6 +137,7 @@ export const clerkMiddleware: ClerkMiddleware = (...args: unknown[]): any => {
123137 }
124138
125139 if ( isRedirect ( handlerResult ) ) {
140+ logger . debug ( 'handlerResult is redirect' ) ;
126141 return serverRedirectWithAuth ( clerkRequest , handlerResult , options ) ;
127142 }
128143
@@ -152,7 +167,7 @@ export const clerkMiddleware: ClerkMiddleware = (...args: unknown[]): any => {
152167 // Otherwise, return a middleware that can be called with a request and event
153168 // eg, export default clerkMiddleware(auth => { ... });
154169 return nextMiddleware ;
155- } ;
170+ } ) ;
156171
157172const parseRequestAndEvent = ( args : unknown [ ] ) => {
158173 return [ args [ 0 ] instanceof Request ? args [ 0 ] : undefined , args [ 0 ] instanceof Request ? args [ 1 ] : undefined ] as [
0 commit comments