@@ -69,11 +69,14 @@ export class ThrottledQueue {
6969 return this . updateMap . get ( key )
7070 }
7171
72- flush ( {
73- getSearchParamsSnapshot = getSearchParamsSnapshotFromLocation ,
74- rateLimitFactor = 1 ,
75- ...adapter
76- } : UpdateQueueAdapterContext ) : Promise < URLSearchParams > {
72+ flush (
73+ {
74+ getSearchParamsSnapshot = getSearchParamsSnapshotFromLocation ,
75+ rateLimitFactor = 1 ,
76+ ...adapter
77+ } : UpdateQueueAdapterContext ,
78+ processUrlSearchParams ?: ( search : URLSearchParams ) => URLSearchParams
79+ ) : Promise < URLSearchParams > {
7780 this . controller ??= new AbortController ( )
7881 if ( ! Number . isFinite ( this . timeMs ) ) {
7982 debug ( '[nuqs gtq] Skipping flush due to throttleMs=Infinity' )
@@ -90,7 +93,7 @@ export class ThrottledQueue {
9093 ...adapter ,
9194 autoResetQueueOnUpdate : adapter . autoResetQueueOnUpdate ?? true ,
9295 getSearchParamsSnapshot
93- } )
96+ } , processUrlSearchParams )
9497 if ( error === null ) {
9598 this . resolvers ! . resolve ( search )
9699 } else {
@@ -152,10 +155,11 @@ export class ThrottledQueue {
152155 }
153156
154157 applyPendingUpdates (
155- adapter : Required < Omit < UpdateQueueAdapterContext , 'rateLimitFactor' > >
158+ adapter : Required < Omit < UpdateQueueAdapterContext , 'rateLimitFactor' > > ,
159+ processUrlSearchParams ?: ( search : URLSearchParams ) => URLSearchParams
156160 ) : [ URLSearchParams , null | unknown ] {
157161 const { updateUrl, getSearchParamsSnapshot } = adapter
158- const search = getSearchParamsSnapshot ( )
162+ let search = getSearchParamsSnapshot ( )
159163 debug (
160164 `[nuqs gtq] Applying %d pending update(s) on top of %s` ,
161165 this . updateMap . size ,
@@ -181,6 +185,9 @@ export class ThrottledQueue {
181185 search . set ( key , value )
182186 }
183187 }
188+ if ( processUrlSearchParams ) {
189+ search = processUrlSearchParams ( search )
190+ }
184191 try {
185192 compose ( transitions , ( ) => {
186193 updateUrl ( search , options )
0 commit comments