UNPKG

@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
/** * @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;