UNPKG

@adonisjs/limiter

Version:

Rate limiting package for AdonisJS framework

43 lines (42 loc) 1.68 kB
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; };