kitcn
Version:
kitcn - React Query integration and CLI tools for Convex
76 lines (75 loc) • 2.15 kB
TypeScript
'use client';
import { FunctionReference } from "convex/server";
//#region src/ratelimit/types.d.ts
type RatelimitSnapshot = {
value: number;
ts: number;
shard: number;
config: ResolvedAlgorithm;
};
type FixedWindowAlgorithm = {
kind: 'fixedWindow';
limit: number;
window: number;
capacity: number;
start?: number;
maxReserved?: number;
shards: number;
};
type SlidingWindowAlgorithm = {
kind: 'slidingWindow';
limit: number;
window: number;
maxReserved?: number;
shards: number;
};
type TokenBucketAlgorithm = {
kind: 'tokenBucket';
refillRate: number;
interval: number;
maxTokens: number;
maxReserved?: number;
shards: number;
};
type ResolvedAlgorithm = FixedWindowAlgorithm | SlidingWindowAlgorithm | TokenBucketAlgorithm;
type HookCheckValue = {
value: number;
ts: number;
config: ResolvedAlgorithm;
shard: number;
ok: boolean;
retryAt?: number;
};
//#endregion
//#region src/ratelimit/react/use-rate-limit.d.ts
type GetRatelimitValueQueryRef = FunctionReference<'query', 'public', {
identifier?: string;
sampleShards?: number;
}, RatelimitSnapshot>;
type GetServerTimeMutationRef = FunctionReference<'mutation', 'public', Record<string, never>, number>;
type GetRatelimitValueQuery = GetRatelimitValueQueryRef | string;
type GetServerTimeMutation = GetServerTimeMutationRef | string;
type UseRatelimitOptions = {
identifier?: string;
count?: number;
sampleShards?: number;
getServerTimeMutation?: GetServerTimeMutation;
};
declare function useRatelimit(getRatelimitValueQuery: GetRatelimitValueQuery, options?: UseRatelimitOptions): {
status: undefined;
check: (ts?: number, requestedCount?: number) => HookCheckValue | undefined;
} | {
status: {
ok: false;
retryAt: number;
};
check: (ts?: number, requestedCount?: number) => HookCheckValue | undefined;
} | {
status: {
ok: true;
retryAt: undefined;
};
check: (ts?: number, requestedCount?: number) => HookCheckValue | undefined;
};
//#endregion
export { GetRatelimitValueQuery, GetRatelimitValueQueryRef, GetServerTimeMutation, GetServerTimeMutationRef, UseRatelimitOptions, useRatelimit };