@@ -478,22 +478,26 @@ describe("error handling", () => {
478478 ) ;
479479
480480 let errorCaught = false ;
481+ let receivedRequest : Request | undefined ;
481482 const customResponse = new Response ( "Custom error response" , {
482483 status : 418 ,
483484 } ) ;
484485
485486 const router = createRouter (
486487 { endpoint } ,
487488 {
488- onError : ( e ) => {
489+ onError : ( error , request ) => {
489490 errorCaught = true ;
491+ receivedRequest = request ;
490492 return customResponse ;
491493 } ,
492494 } ,
493495 ) ;
494496
495- const response = await router . handler ( new Request ( "http://localhost" ) ) ;
497+ const request = new Request ( "http://localhost" ) ;
498+ const response = await router . handler ( request ) ;
496499 expect ( errorCaught ) . toBe ( true ) ;
500+ expect ( receivedRequest ) . toBe ( request ) ;
497501 expect ( response ) . toBe ( customResponse ) ;
498502 expect ( response . status ) . toBe ( 418 ) ;
499503 } ) ;
@@ -517,7 +521,7 @@ describe("error handling", () => {
517521 const router = createRouter (
518522 { endpoint } ,
519523 {
520- onError : ( e ) => {
524+ onError : ( error , request ) => {
521525 errorCaught = true ;
522526 // Convert APIError to Response
523527 return toResponse ( apiError ) ;
@@ -548,7 +552,7 @@ describe("error handling", () => {
548552 const router = createRouter (
549553 { endpoint } ,
550554 {
551- onError : ( e ) => {
555+ onError : ( error , request ) => {
552556 // Throw the error in the callback
553557 throw newError ;
554558 } ,
@@ -930,6 +934,93 @@ describe("error handling", () => {
930934 } ) ;
931935} ) ;
932936
937+ describe ( "onRequest and onResponse callbacks" , ( ) => {
938+ it ( "should pass request to onRequest callback" , async ( ) => {
939+ const endpoint = createEndpoint (
940+ "/" ,
941+ {
942+ method : "GET" ,
943+ } ,
944+ async ( ) => {
945+ return "hello world" ;
946+ } ,
947+ ) ;
948+
949+ let receivedRequest : Request | undefined ;
950+ const router = createRouter (
951+ { endpoint } ,
952+ {
953+ onRequest : ( request ) => {
954+ receivedRequest = request ;
955+ } ,
956+ } ,
957+ ) ;
958+
959+ const request = new Request ( "http://localhost" ) ;
960+ await router . handler ( request ) ;
961+ expect ( receivedRequest ) . toBe ( request ) ;
962+ } ) ;
963+
964+ it ( "should pass response and request to onResponse callback" , async ( ) => {
965+ const endpoint = createEndpoint (
966+ "/" ,
967+ {
968+ method : "GET" ,
969+ } ,
970+ async ( ) => {
971+ return "hello world" ;
972+ } ,
973+ ) ;
974+
975+ let receivedResponse : Response | undefined ;
976+ let receivedRequest : Request | undefined ;
977+ const router = createRouter (
978+ { endpoint } ,
979+ {
980+ onResponse : ( response , request ) => {
981+ receivedResponse = response ;
982+ receivedRequest = request ;
983+ } ,
984+ } ,
985+ ) ;
986+
987+ const request = new Request ( "http://localhost" ) ;
988+ await router . handler ( request ) ;
989+ expect ( receivedRequest ) . toBe ( request ) ;
990+ expect ( receivedResponse ) . toBeInstanceOf ( Response ) ;
991+ } ) ;
992+
993+ it ( "should pass request to onError callback" , async ( ) => {
994+ const endpoint = createEndpoint (
995+ "/" ,
996+ {
997+ method : "GET" ,
998+ } ,
999+ async ( ) => {
1000+ throw new Error ( "Test error" ) ;
1001+ } ,
1002+ ) ;
1003+
1004+ let receivedError : unknown ;
1005+ let receivedRequest : Request | undefined ;
1006+ const router = createRouter (
1007+ { endpoint } ,
1008+ {
1009+ onError : ( error , request ) => {
1010+ receivedError = error ;
1011+ receivedRequest = request ;
1012+ } ,
1013+ } ,
1014+ ) ;
1015+
1016+ const request = new Request ( "http://localhost" ) ;
1017+ await router . handler ( request ) ;
1018+ expect ( receivedRequest ) . toBe ( request ) ;
1019+ expect ( receivedError ) . toBeInstanceOf ( Error ) ;
1020+ expect ( ( receivedError as Error ) . message ) . toBe ( "Test error" ) ;
1021+ } ) ;
1022+ } ) ;
1023+
9331024describe ( "base path" , ( ) => {
9341025 it ( "should work with base path" , async ( ) => {
9351026 const endpoint = createEndpoint (
0 commit comments