UNPKG

i18n-ai-translate

Version:

AI-powered localization CLI, Node library, and GitHub Action. Translate i18next JSON, Gettext PO, Java .properties, and iOS .strings with ChatGPT, Claude, Gemini, or local Ollama models.

32 lines (31 loc) 1.15 kB
import RateLimiter from "./rate_limiter"; /** * Usage pattern * ------------- * await limiter.wait(estimatedTokens); // BEFORE the request * ... make API request ... * limiter.apiCalled(actualTokens); // AFTER the request */ export default class TokenRateLimiter implements RateLimiter { private lastAPICall; private readonly delayBetweenCallsMs; private readonly maxTokensPerMinute; private windowStart; private tokensThisWindow; private readonly verboseLogging; constructor(delayBetweenCallsMs: number, verboseLogging: boolean); /** * Call immediately **after** a successful request. * @param tokenCount Prompt + completion tokens the request actually consumed */ apiCalled(tokenCount: number): void; /** * Call immediately **before** you send a request. * It sleeps long enough so that: * • you do not exceed 200 000 tokens in any 60 s window * • you respect `delayBetweenCallsMs` (if you were using that before) * * @param tokenCount Expected token usage for the upcoming request */ wait(tokenCount: number): Promise<void>; }