aocjs
Version:
Advent of Code API client.
87 lines (83 loc) • 2.76 kB
text/typescript
interface Leaderboard {
members: Record<string, {
id: number;
name: string;
stars: number;
global_score: number;
local_score: number;
last_star_ts: number;
}>;
}
interface ClientOptions {
/** Browser session key.*/
session: string;
/** User-Agent for requests, not recommended to change. */
'user-agent'?: string;
}
declare class ClientError extends Error {
constructor(message: string);
}
declare class AuthenticationError extends ClientError {
constructor(message?: string);
}
declare class NetworkError extends ClientError {
status?: number;
statusText?: string;
constructor(message: string, status?: number, statusText?: string);
}
declare class LeaderboardError extends ClientError {
constructor(message: string);
}
declare class SubmissionError extends ClientError {
constructor(message: string);
}
declare class Client {
private session;
private 'user-agent'?;
private logger;
constructor(options: ClientOptions & {
logger?: (message: string) => void;
});
/**
* Internal fetcher with improved error handling
*/
fetcher(path: string, _options?: RequestInit): Promise<Response>;
/**
* Get a puzzle's input.
*
* @param year Advent of Code year.
* @param day Advent of Code year's puzzle day.
*/
getInput(year: number, day: number): Promise<string>;
/**
* Gets your specified private leaderboard.
* @param year Advent of Code year.
* @param id Your leaderboard id.
* @param [sorted=false] If true, returns a sorted array of leaderboard members by stars.
*/
getLeaderboard<const T extends boolean = false>(year: number, id: number, sorted?: T): Promise<T extends true ? Array<Leaderboard['members'][string]> : Leaderboard>;
/**
* Get a puzzle's problem.
*
* @param year Advent of Code year.
* @param day Advent of Code year's puzzle day.
* @param raw If true, returns the raw HTML of the problem.
*/
getProblem(year: number, day: number, raw?: boolean): Promise<string>;
/**
* Get the main element HTML from a response.
*
* @param html Response HTML.
*/
getMainElementHtml(html: string): string;
/**
* Submits a solution to the server.
*
* @param year Advent of Code year.
* @param day Advent of Code year's puzzle day.
* @param part Part of the puzzle to submit.
* @param solution Solution to the puzzle.
*/
submit(year: number, day: number, part: number, solution: string): Promise<boolean>;
}
export { AuthenticationError, Client, ClientError, type ClientOptions, type Leaderboard, LeaderboardError, NetworkError, SubmissionError };