47 lines
1.1 KiB
TypeScript
47 lines
1.1 KiB
TypeScript
type Event = {
|
|
name: string;
|
|
cooldown: number;
|
|
maxAttempts: number;
|
|
lastAttempt?: number;
|
|
attempts?: number[];
|
|
};
|
|
type user = {
|
|
token: string;
|
|
events: {
|
|
[name: string]: Event;
|
|
};
|
|
};
|
|
export default class RateLimit {
|
|
users: {
|
|
[token: string]: user;
|
|
};
|
|
events: {
|
|
[name: string]: Event;
|
|
};
|
|
constructor(users?: {
|
|
[token: string]: user;
|
|
}, events?: {
|
|
[name: string]: Event;
|
|
});
|
|
addEvent(event: Event): boolean;
|
|
removeEvent(name: string): boolean;
|
|
addUser(token: string): boolean;
|
|
removeUser(token: string): boolean;
|
|
attempt(token: string, name: string): boolean;
|
|
getEvents(): {
|
|
[name: string]: Event;
|
|
};
|
|
getUsers(): {
|
|
[token: string]: user;
|
|
};
|
|
getEvent(name: string): Event;
|
|
getUser(token: string): user;
|
|
remainingAttempts(token: string, name: string): number;
|
|
resetAttempts(token: string, name: string): boolean;
|
|
resetAllAttempts(token: string): boolean;
|
|
resetAllUsers(): boolean;
|
|
resetEvent(name: string): boolean;
|
|
resetUser(token: string): boolean;
|
|
}
|
|
export {};
|