UNPKG

pointercrate

Version:

Unofficial Pointercrate API wrapper written in TypeScript

399 lines (336 loc) 13.6 kB
declare module "pointercrate" { export type AddCreatorOptions = { creator: string; } export type AddDemonOptions = { name: string; position: number; requirement: number; verifier: string; publisher: string; creators: string[]; video?: string; } export type AddRecordNoteOptions = { content: string; } export class BaseAuthPointercrate extends Pointercrate { public constructor(token: string, type: "Basic" | "Bearer", api?: string); public token: string; public type: string; public sendAuthRequest(path: string, options?: SendRequestOptions): Promise<ResponseBody<any>>; } export interface BaseDemon { id: number; name: string; position: number; } export interface BaseNationalityDemon { id: number; demon: string; position: number; } export interface BasePlayer { id: number; name: string; banned: boolean; } export class BasePointercrate { public constructor(api?: string); public api: string; public sendRequest(path: string, options?: SendRequestOptions): Promise<ResponseBody<any>>; } export interface BaseRecord { id: number; progress: number; status: string; video: string; } export class BasicAuthPointercrate extends BaseAuthPointercrate { public constructor(token: string, api?: string); public loginAccount(): Promise<ResponseBody<TaggedUser>>; public invalidateTokens(): Promise<ResponseBody<any>>; public patchAccount(headers: MatchHeaders, options?: ModifyAccountOptions): Promise<ResponseBody<Tagged<User>>>; public deleteAccount(headers: MatchHeaders): Promise<ResponseBody<any>>; } export type CreateAccountOptions = { name: string; password: string; } export interface Demon extends BaseDemon { requirement: number; publisher: BasePlayer; verifier: BasePlayer; video: string; level_id: number; } export interface DemonRecord extends BaseRecord { player: BasePlayer; } export class Endpoints { public static registerAuth(): string; public static auth(): string; public static invalidateAuth(): string; public static meAuth(): string; public static users(id?: number | string): string; public static demons(id?: number | string): string; public static listedDemons(): string; public static demonCreators(demonId: number | string, creatorId?: number | string): string; public static players(id?: number | string): string; public static playerRanking(): string; public static records(id?: number | string): string; public static recordNotes(recordId: number | string, noteId?: number | string): string; public static submitters(id?: number | string): string; public static nationalities(code: string): string; public static nationalityRanking(): string; public static nationalitySubdivisions(code: string): string; public static listInformation(): string; } export interface ExtendedDemon extends Demon { creators: BasePlayer[]; records: DemonRecord[]; } export interface ExtendedPlayer extends Player { nationality: SubdivisionNationality; created: BaseDemon[]; records: PlayerRecord[]; published: BaseDemon[]; verified: BaseDemon[]; } export interface ExtendedRecord extends Record { notes: RecordNote[]; submitter: Submitter; } export class JWTAuthPointercrate extends BaseAuthPointercrate { public constructor(token: string, api?: string); public getAccount(headers?: MatchOptionalHeaders): Promise<ResponseBody<Tagged<User>>>; public getUsers(options?: SearchUserOptions): Promise<ResponseBody<User[]>>; public getUser(id: number | string, headers?: MatchOptionalHeaders): Promise<ResponseBody<Tagged<User>>>; public patchUser(id: number | string, headers: MatchHeaders, options?: ModifyUserOptions): Promise<ResponseBody<Tagged<User>>>; public deleteUser(id: number | string, headers: MatchHeaders): Promise<ResponseBody<any>>; public postDemon(options: AddDemonOptions): Promise<ResponseBody<Tagged<ExtendedDemon>>>; public patchDemon(id: number | string, headers: MatchHeaders, options?: ModifyDemonOptions): Promise<ResponseBody<Tagged<ExtendedDemon>>>; public postCreator(demonId: number | string, options: AddCreatorOptions): Promise<ResponseBody<any>>; public deleteCreator(demonId: number | string, creatorId: number | string): Promise<ResponseBody<any>>; public patchPlayer(id: number | string, headers: MatchHeaders, options?: ModifyPlayerOptions): Promise<ResponseBody<Tagged<ExtendedPlayer>>>; public patchRecord(id: number | string, headers: MatchHeaders, options?: ModifyRecordOptions): Promise<ResponseBody<Tagged<ExtendedRecord>>>; public deleteRecord(id: number | string, headers: MatchHeaders): Promise<ResponseBody<any>>; public postRecordNote(recordId: number | string, options: AddRecordNoteOptions): Promise<ResponseBody<Tagged<RecordNote>>>; public patchRecordNote(recordId: number | string, noteId: number | string, options: ModifyRecordNoteOptions): Promise<ResponseBody<Tagged<RecordNote>>>; public deleteRecordNote(recordId: number | string, noteId: number | string): Promise<ResponseBody<any>>; public getSubmitters(options?: SearchSubmitterOptions): Promise<ResponseBody<Submitter[]>>; public getSubmitter(id: number | string, headers?: MatchOptionalHeaders): Promise<ResponseBody<Tagged<Submitter>>>; public patchSubmitter(id: number | string, headers: MatchHeaders, options?: ModifySubmitterOptions): Promise<ResponseBody<Tagged<Submitter>>>; } export interface ListMetadata { list_size: number; extended_list_size: number; } export type MatchHeaders = { "If-Match": string; } export type MatchOptionalHeaders = { "If-Match"?: string; "If-None-Match"?: string; } export type ModifyAccountOptions = { password?: string; display_name?: string; youtube_channel?: string; } export type ModifyDemonOptions = { name?: string; position?: number; requirement?: number; verifier?: string; publisher?: string; video?: string; } export type ModifyPlayerOptions = { name?: string; banned?: string; nationality?: string; subdivision?: string; } export type ModifyRecordNoteOptions = { content?: string; } export type ModifyRecordOptions = { progress?: number; video?: string; status?: string; player?: string; demon?: string; demon_id?: number; } export type ModifySubmitterOptions = { banned?: boolean; } export type ModifyUserOptions = { display_name?: string; youtube_channel?: string; permissions?: string; } export interface Nationality { country_code: string; nation: string; } export interface NationalityDemonPlayer extends BaseNationalityDemon { player: string; } export interface NationalityDemonPlayers extends BaseNationalityDemon { players: string[]; } export interface NationalityRecord { nationality: Nationality; created: NationalityDemonPlayers[]; verified: NationalityDemonPlayer[]; records: NationPlayerRecord[]; unbeaten: BaseDemon[]; } export interface NationPlayerRecord extends NationalityDemonPlayers { progress: number; } export type OptionalAuthHeaders = { Authorization?: string; } export type PaginatedOptions = { limit?: number; before?: number; after?: number; } export interface Player extends BasePlayer { nationality: Nationality; } export interface PlayerRecord extends BaseRecord { demon: BaseDemon; } export class Pointercrate extends BasePointercrate { public createAccount(options: CreateAccountOptions): Promise<ResponseBody<Tagged<User>>>; public getDemons(options?: SearchDemonOptions): Promise<ResponseBody<Demon[]>>; public getListedDemons(options?: SearchDemonOptions): Promise<ResponseBody<Demon[]>>; public getDemon(id: number | string, headers?: MatchOptionalHeaders): Promise<ResponseBody<Tagged<ExtendedDemon>>>; public getPlayers(options?: SearchPlayerOptions, headers?: OptionalAuthHeaders): Promise<ResponseBody<Player[]>>; public getPlayerRanking(options?: SearchPlayerRankingOptions): Promise<ResponseBody<RankedPlayer[]>>; public getPlayer(id: number | string, headers?: MatchOptionalHeaders): Promise<ResponseBody<Tagged<ExtendedPlayer>>>; public getRecords(options?: SearchRecordOptions, headers?: OptionalAuthHeaders): Promise<ResponseBody<Record[]>>; public postRecord(options: SubmitRecordOptions, headers?: OptionalAuthHeaders): Promise<ResponseBody<Tagged<ExtendedRecord>>>; public getRecord(id: number | string, headers?: MatchOptionalHeaders & OptionalAuthHeaders): Promise<ResponseBody<Tagged<ExtendedRecord>>>; public getNationality(code: string): Promise<ResponseBody<Tagged<NationalityRecord>>>; public getNationalityRanking(options?: SearchNationRankingOptions): Promise<ResponseBody<Tagged<RankedNation>>>; public getNationalitySubdivisions(code: string): Promise<ResponseBody<Subdivision[]>>; public getListMetadata(): Promise<ResponseBody<ListMetadata>>; } export interface RankedNation extends Nationality { rank: number; score: number; } export interface RankedPlayer extends Player { rank: number; score: number; } export interface Record extends BaseRecord { player: BasePlayer; demon: BaseDemon; } export interface RecordNote { id: number; author: string; content: string; editors: string[]; transferred: boolean; } export interface ResponseBody<T> { body: T; headers: { [key: string]: string; }; } export type SearchDemonOptions = PaginatedOptions & { name?: string; name_contains?: string; requirement?: number; requirement__lt?: number; requirement__gt?: number; verifier_id?: number; verifier_name?: string; publisher_id?: number; publisher_name?: string; } export type SearchNationRankingOptions = { continent?: string; name_contains?: string; } export type SearchPlayerOptions = { name?: string; name_contains?: string; banned?: boolean; nation?: string; } export type SearchPlayerRankingOptions = { name_contains?: string; continent?: string; nation?: string; subdivision?: string; } export type SearchRecordOptions = PaginatedOptions & { progress__lt?: number; progress__gt?: number; demon_position?: number; demon_position__lt?: number; demon_position__gt?: number; status?: string; player?: number; demon?: string; demon_id?: string; video?: string; submitter?: number; } export type SearchSubmitterOptions = PaginatedOptions & { banned?: boolean; } export type SearchUserOptions = PaginatedOptions & { name?: string; name_contains?: string; display_name?: string; has_permissions?: string; any_permissions?: string; } export type SendRequestOptions = { method?: string; headers?: any; body?: any; } export interface Subdivision { iso_code: string; name: string; } export interface SubdivisionNationality extends Nationality { subdivision: Subdivision; } export type SubmitRecordOptions = { player: string; demon: number; progress: number; video?: string; status?: string; note?: string; } export interface Submitter { id: number; banned: boolean; } export interface Tagged<T> { data: T; } export interface TaggedUser extends Tagged<User> { token: string; } export interface User { id: number; name: string; permissions: number; display_name: string; youtube_channel: string; } }