@daiso-tech/core
Version:
The library offers flexible, framework-agnostic solutions for modern web applications, built on adaptable components that integrate seamlessly with popular frameworks like Next Js.
40 lines (39 loc) • 1.41 kB
TypeScript
/**
* @module RateLimiter
*/
import { type IEventListenable } from "../../event-bus/contracts/_module.js";
import { type IRateLimiter } from "../../rate-limiter/contracts/rate-limiter.contract.js";
import { type RateLimiterEventMap } from "../../rate-limiter/contracts/rate-limiter.events.js";
import { type ErrorPolicySettings } from "../../utilities/_module.js";
/**
* IMPORT_PATH: `"@daiso-tech/core/rate-limiter/contracts"`
* @group Contracts
*/
export type RateLimiterProviderCreateSettings = ErrorPolicySettings & {
/**
* If true will only apply rate limiting when function errors and not when function is called.
* @default false
*/
onlyError?: boolean;
limit: number;
};
/**
* IMPORT_PATH: `"@daiso-tech/core/rate-limiter/contracts"`
* @group Contracts
*/
export type IRateLimiterProviderBase = {
create(key: string, settings: RateLimiterProviderCreateSettings): IRateLimiter;
};
/**
* The `IRateLimiterListenable` contract defines a way for listening {@link IRateLimiter | `IRateLimiter`} operations and state transitions.
*
* IMPORT_PATH: `"@daiso-tech/core/rate-limiter/contracts"`
* @group Contracts
*/
export type IRateLimiterListenable = IEventListenable<RateLimiterEventMap>;
/**
*
* IMPORT_PATH: `"@daiso-tech/core/rate-limiter/contracts"`
* @group Contracts
*/
export type IRateLimiterProvider = IRateLimiterListenable & IRateLimiterProviderBase;