@adonisjs/limiter
Version:
Rate limiting package for AdonisJS framework
43 lines (42 loc) • 1.68 kB
TypeScript
import type { ConfigProvider } from '@adonisjs/core/types';
import type { RedisConnections } from '@adonisjs/redis/types';
import type { LimiterRedisStoreConfig, LimiterMemoryStoreConfig, LimiterManagerStoreFactory, LimiterDatabaseStoreConfig, LimiterConsumptionOptions } from './types.js';
/**
* Helper to define limiter config. This function exports a
* config provider and hence you cannot access raw config
* directly.
*
* Therefore use the "limiterManager.config" property to access
* raw config.
*/
export declare function defineConfig<KnownStores extends Record<string, LimiterManagerStoreFactory | ConfigProvider<LimiterManagerStoreFactory>>>(config: {
default: keyof KnownStores;
stores: KnownStores;
}): ConfigProvider<{
default: keyof KnownStores;
stores: {
[K in keyof KnownStores]: KnownStores[K] extends ConfigProvider<infer A> ? A : KnownStores[K];
};
}>;
/**
* Config helpers to instantiate limiter stores inside
* an AdonisJS application
*/
export declare const stores: {
/**
* Configure redis limiter store
*/
redis: (config: Omit<LimiterRedisStoreConfig, keyof LimiterConsumptionOptions> & {
connectionName?: keyof RedisConnections;
}) => ConfigProvider<LimiterManagerStoreFactory>;
/**
* Configure database limiter store
*/
database: (config: Omit<LimiterDatabaseStoreConfig, keyof LimiterConsumptionOptions> & {
connectionName?: string;
}) => ConfigProvider<LimiterManagerStoreFactory>;
/**
* Configure memory limiter store
*/
memory: (config: Omit<LimiterMemoryStoreConfig, keyof LimiterConsumptionOptions>) => LimiterManagerStoreFactory;
};