web / lib/services/geocoding/provider-rate-limiter
lib/services/geocoding/provider-rate-limiter
Per-provider rate limiting for geocoding requests.
Implements a simple token bucket algorithm that tracks the last request time for each provider and ensures requests respect the configured rate limit. This is necessary because external geocoding APIs (especially Nominatim/OSM) have strict rate limits that must be respected.
Classes
ProviderRateLimiter
Constructors
Constructor
new ProviderRateLimiter():
ProviderRateLimiter
Returns
Methods
configure()
configure(
providerName,requestsPerSecond):void
Configure rate limit for a provider. Should be called when providers are loaded.
Parameters
providerName
string
requestsPerSecond
number
Returns
void
waitForSlot()
waitForSlot(
providerName):Promise<void>
Wait for a rate limit slot to become available. Returns immediately if within rate limit, otherwise waits.
Parameters
providerName
string
Returns
Promise<void>
canMakeRequest()
canMakeRequest(
providerName):boolean
Check if a request can be made immediately without waiting.
Parameters
providerName
string
Returns
boolean
getTimeUntilAllowed()
getTimeUntilAllowed(
providerName):number
Get time in ms until next request is allowed.
Parameters
providerName
string
Returns
number
reset()
reset(
providerName?):void
Reset rate limiter state for a specific provider or all providers.
Parameters
providerName?
string
Returns
void
Functions
getProviderRateLimiter()
getProviderRateLimiter():
ProviderRateLimiter
Returns
resetProviderRateLimiter()
resetProviderRateLimiter():
void
Returns
void