UNPKG

aocjs

Version:

Advent of Code API client.

87 lines (83 loc) 2.76 kB
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 };