1
0
Fork 0

[node] Big Ships lib refactoring

This commit is contained in:
Julien Dessaux 2024-04-05 00:42:30 +02:00
parent a58394230d
commit 234770b611
Signed by: adyxax
GPG key ID: F92E51B86E07177E
27 changed files with 500 additions and 589 deletions

View file

@ -3,8 +3,39 @@ import events from 'events';
import { PriorityQueue } from './priority_queue.ts';
import { getToken } from '../database/tokens.ts';
import { APIError, Request, RequestPromise, Response } from '../model/api.ts';
import { RateLimitError } from '../model/errors.ts';
import { RateLimitError } from './errors.ts';
export type APIError = {
error: string;
code: number;
data: unknown;
};
export type Meta = {
limit: number;
page: number;
total: number;
}
export type Request = {
endpoint: string; // the path part of the url to call
method?: string; // HTTP method for `fetch` call, defaults to 'GET'
page?: number; // run a paginated request starting from this page until all the following pages are fetched
payload?: { [key:string]: any}; // optional json object that will be sent along the request
priority?: number; // optional priority value, defaults to 10. lower than 10 means the message will be sent faster
};
export type RequestPromise<T> = {
reject: (reason?: any) => void;
request: Request;
resolve: (value: Response<T> | PromiseLike<Response<T>>) => void;
};
export type Response<T> = {
data: T;
error?: APIError;
meta?: Meta;
}
// queue processor module variables
const bus = new events.EventEmitter(); // a bus to notify the queue processor to start processing messages