import { Request } from 'express'; import { DyNTS_RateLimit_Policy } from './rate-limit-policy.interface'; /** * Config a `DyNTS_RateLimit_Middleware.configure(...)`-hoz. * * Minden mezo opcionalis — a default-ok megfelelnek a tipikus API * rate-limit-elvarasoknak (100 req/min, sliding window, IP-alapu kulcs, * path-alapu endpoint-csoportositas, X-RateLimit-* response header-ek). */ export interface DyNTS_RateLimit_Config { /** * Default request-limit `windowMs` alatt, ha az adott kulcsra nincs * `setPolicyForKey()`-szel beallitott egyedi policy. Default: `100`. */ defaultLimit?: number; /** * Default sliding-window hossza milliszekundumban. Default: `60000` (1 perc). */ defaultWindowMs?: number; /** * Rate-limit subject-extractor. Visszater a karakterlanccal, ami azonositja * a rate-limit alanyat (pl. IP-cim, API-kulcs ID, account ID). * * Default: a `req.headers['x-forwarded-for']` (csak az elso IP, ha lista) * vagy ha hianyzik akkor `req.ip` vagy `'unknown'`. Ez webszerver elotti * proxy/CDN-mentes setup-ra megfelelo; ha az nd-space mar identifikalja az * API-kulcsot a `req`-ben, a host adhat sajat extractort ami a key-ID-t * adja vissza. */ keyExtractor?: (req: Request) => string; /** * Endpoint-csoportosito. Visszater a karakterlanccal, ami azonositja az * adott endpoint-csoportot. A storage-key `${subject}|${endpoint}` lesz. * * Default: `req.path` — minden uri-path kulon vodorbe kerul. Csoportositas * mas szempontok szerint (pl. "datasets" csoport = `/api/datasets/*`) * a hostnal felulirhato. */ endpointGrouper?: (req: Request) => string; /** * Beallitja-e a `X-RateLimit-Limit`, `X-RateLimit-Remaining`, * `X-RateLimit-Reset` (es a 429-re `Retry-After`) response header-eket. * Default: `true`. * * Test/dev kornyezetben opcionalisan kikapcsolhato. */ responseHeaders?: boolean; /** * Per-policy override-ok az induloskor. A `setPolicyForKey()` runtime-ban is * felulhatja ezeket. */ initialKeyPolicies?: Record; /** * Per-endpoint(-csoport) policy override-ok az induloskor. A `setPolicyForEndpoint()` * runtime-ban is felulhatja ezeket. A kulcs annak felel meg, amit az `endpointGrouper` * visszaad (default: `req.path`). Akkor hasznos, ha kulonbozo endpointoknak kulonbozo * limit kell (pl. egy webhook nagy burst-toleranciat igenyel a legit forgalomhoz, mig * egy admin-endpoint szuk limitet). Precedencia: per-kulcs policy > per-endpoint policy > default. */ initialEndpointPolicies?: Record; } //# sourceMappingURL=rate-limit-config.interface.d.ts.map