igdb-ts
Version:
Unofficial IGDB API TypeScript wrapper.
341 lines (340 loc) • 14.4 kB
TypeScript
import { rateLimitOptions } from "axios-rate-limit";
import { AgeRating, AgeRatingContentDescription, AlternativeName, Artwork, Character, CharacterMugShot, Collection, Company, CompanyLogo, CompanyWebsite, Cover, ExternalGame, Franchise, Game, GameEngine, Query, ImageOptions, GameEngineLogo, GameMode, GameVersion, GameVersionFeature, GameVersionFeatureValue, GameVideo, Genre, InvolvedCompany, Keyword, MultiplayerMode, Platform, PlatformFamily, PlatformLogo, PlatformVersion, PlatformVersionReleaseDate, PlatformWebsite, PlayerPerspective, ReleaseDate, Screenshot, Search, Theme, Website, PlatformVersionCompany, UntypedIGDBOptions, DefaultIGDBOptions, SearchableIGDBOptions } from './types';
export declare class IGDB {
private clientId;
private clientToken;
private clientSecret;
private API_URL;
private IMAGE_URL;
_axios: import("axios-rate-limit").RateLimitedAxiosInstance;
private onAccessTokenRetrieved;
private tokenExpiry;
/**
* Use function init() before calling endpoints.
*/
constructor();
/**
* Initialises wrapper and generates access token (if needed) to call API.
* @param clientId - Twitch Client Id
* @param clientSecret - Twitch Client Secret
* @param clientToken - Twitch App Access Token
* @param rateLimitOptions - Axios Rate Limit Options. Default is 4 requests/s as per IGDB documentation.
* @param onAccessTokenRetrieved - Callback which can be used to save token to storage. Includes timestamp of when the token will expire.
*/
init(clientId: string, clientSecret: string, clientToken?: {
token: string;
tokenExpiry: number;
}, onAccessTokenRetrieved?: (token: string, tokenExpiry: number) => void, rateLimitOptions?: rateLimitOptions): Promise<void>;
/**
* Ensures token is valid and has not expired.
*/
private validateToken;
/**
* Can be used to generate a new access token.
*
* As per documentation, the access token cannot be refreshed. Therefore, when an access token expires you need create a new one.
*
* https://dev.twitch.tv/docs/authentication/refresh-tokens
*/
private getToken;
private buildFilter;
private buildCombinedFilter;
private buildOptions;
private buildUntypedOptions;
private request;
private buildMultiQuery;
/**
* Get a multiquery.
*
*
* Maximum of 10 Queries.
*
* {@link https://api-docs.igdb.com/#multi-query}
* @param {Array} queries - an array of [Query]({@link Query})
* @returns any[]
**/
multiQuery(queries: Query[]): Promise<any[]>;
/**
* Get an Image URL.
* {@link https://api-docs.igdb.com/#images}
* @param {Object} imageOptions - [Image Options]({@link ImageOptions})
*
**/
getImageUrl({ imageId, size, retina }: ImageOptions): string;
/**
* Generic Endpoint Call.
*
* Provide your own endpoint and response type.
*
* {@link https://api-docs.igdb.com/#about}
* @param {Object} options - [Untyped Endpoint Options]({@link UntypedIGDBOptions})
*
**/
get<T>(endpoint: string, options?: UntypedIGDBOptions): Promise<T>;
/**
* Get Age Ratings.
* {@link https://api-docs.igdb.com/#age-rating}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getAgeRatings(options?: DefaultIGDBOptions<AgeRating>): Promise<AgeRating[]>;
/**
* Get Age Rating Content Descriptions.
* {@link https://api-docs.igdb.com/#age-rating-content-description}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getAgeRatingContentDescriptions(options?: DefaultIGDBOptions<AgeRatingContentDescription>): Promise<AgeRatingContentDescription[]>;
/**
* Get Alternative Names.
* {@link https://api-docs.igdb.com/#alternative-name}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getAlternativeNames(options?: DefaultIGDBOptions<AlternativeName>): Promise<AlternativeName[]>;
/**
* Get Artworks.
* {@link https://api-docs.igdb.com/#artwork}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getArtworks(options?: DefaultIGDBOptions<Artwork>): Promise<Artwork[]>;
/**
* Get Characters.
* {@link https://api-docs.igdb.com/#character}
* @param {Object} options - [Searchable Endpoint Options]({@link SearchableIGDBOptions})
*
**/
getCharacters(options?: SearchableIGDBOptions<Character>): Promise<Character[]>;
/**
* Get Character Mug Shot.
* {@link https://api-docs.igdb.com/#character-mug-shot}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getCharacterMugShots(options?: DefaultIGDBOptions<CharacterMugShot>): Promise<CharacterMugShot[]>;
/**
* Get Collections.
* {@link https://api-docs.igdb.com/#collection}
* @param {Object} options - [Searchable Endpoint Options]({@link SearchableIGDBOptions})
*
**/
getCollections(options?: SearchableIGDBOptions<Collection>): Promise<Collection[]>;
/**
* Get Companies.
* {@link https://api-docs.igdb.com/#company}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getCompanies(options?: DefaultIGDBOptions<Company>): Promise<Company[]>;
/**
* Get Company Logos.
* {@link https://api-docs.igdb.com/#company-logo}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getCompanyLogos(options?: DefaultIGDBOptions<CompanyLogo>): Promise<CompanyLogo[]>;
/**
* Get Company Website.
* {@link https://api-docs.igdb.com/#company-website}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getCompanyWebsite(options?: DefaultIGDBOptions<CompanyWebsite>): Promise<CompanyWebsite[]>;
/**
* Get Covers.
* {@link https://api-docs.igdb.com/#cover}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getCovers(options?: DefaultIGDBOptions<Cover>): Promise<Cover[]>;
/**
* Get External Games.
* {@link https://api-docs.igdb.com/#external-game}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getExternalGames(options?: DefaultIGDBOptions<ExternalGame>): Promise<ExternalGame[]>;
/**
* Get Franchises.
* {@link https://api-docs.igdb.com/#franchise}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getFranchises(options?: DefaultIGDBOptions<Franchise>): Promise<Franchise[]>;
/**
* Get Games.
* {@link https://api-docs.igdb.com/#game}
* @param {Object} options - [Searchable Endpoint Options]({@link SearchableIGDBOptions})
*
**/
getGames(options?: SearchableIGDBOptions<Game>): Promise<Game[]>;
/**
* Get Game Engines.
* {@link https://api-docs.igdb.com/#game-engine}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getGameEngines(options?: DefaultIGDBOptions<GameEngine>): Promise<GameEngine[]>;
/**
* Get Game Engine Logos.
* {@link https://api-docs.igdb.com/#game-engine-logo}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getGameEngineLogos(options?: DefaultIGDBOptions<GameEngineLogo>): Promise<GameEngineLogo[]>;
/**
* Get Game Modes.
* {@link https://api-docs.igdb.com/#game-mode}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getGameModes(options?: DefaultIGDBOptions<GameMode>): Promise<GameMode[]>;
/**
* Get Game Versions.
* {@link https://api-docs.igdb.com/#game-version}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getGameVersions(options?: DefaultIGDBOptions<GameVersion>): Promise<GameVersion[]>;
/**
* Get Game Version Features.
* {@link https://api-docs.igdb.com/#game-version-feature}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getGameVersionFeatures(options?: DefaultIGDBOptions<GameVersionFeature>): Promise<GameVersionFeature[]>;
/**
* Get Game Version Feature Values.
* {@link https://api-docs.igdb.com/#game-engine-feature-value}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getGameVersionFeatureValues(options?: DefaultIGDBOptions<GameVersionFeatureValue>): Promise<GameVersionFeatureValue[]>;
/**
* Get Game Videos.
* {@link https://api-docs.igdb.com/#game-video}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getGameVideos(options?: DefaultIGDBOptions<GameVideo>): Promise<GameVideo[]>;
/**
* Get Genres.
* {@link https://api-docs.igdb.com/#genre}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getGenres(options?: DefaultIGDBOptions<Genre>): Promise<Genre[]>;
/**
* Get Involved Companies.
* {@link https://api-docs.igdb.com/#involved-company}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getInvolvedCompanies(options?: DefaultIGDBOptions<InvolvedCompany>): Promise<InvolvedCompany[]>;
/**
* Get Keywords.
* {@link https://api-docs.igdb.com/#keyword}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getKeywords(options?: DefaultIGDBOptions<Keyword>): Promise<Keyword[]>;
/**
* Get Multiplayer Modes.
* {@link https://api-docs.igdb.com/#multiplayer-mode}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getMultiplayerModes(options?: DefaultIGDBOptions<MultiplayerMode>): Promise<MultiplayerMode[]>;
/**
* Get Platform.
* {@link https://api-docs.igdb.com/#platform}
* @param {Object} options - [Searchable Endpoint Options]({@link SearchableIGDBOptions})
*
**/
getPlatforms(options?: SearchableIGDBOptions<Platform>): Promise<Platform[]>;
/**
* Get Platform Families.
* {@link https://api-docs.igdb.com/#platform-family}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getPlatformFamilies(options?: DefaultIGDBOptions<PlatformFamily>): Promise<PlatformFamily[]>;
/**
* Get Platform Logos.
* {@link https://api-docs.igdb.com/#platform-logo}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getPlatformLogos(options?: DefaultIGDBOptions<PlatformLogo>): Promise<PlatformLogo[]>;
/**
* Get Platform Versions.
* {@link https://api-docs.igdb.com/#platform-version}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getPlatformVersion(options?: DefaultIGDBOptions<PlatformVersion>): Promise<PlatformVersion[]>;
/**
* Get Platform Version Companies.
* {@link https://api-docs.igdb.com/#platform-version-company}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getPlatformVersionCompanies(options?: DefaultIGDBOptions<PlatformVersionCompany>): Promise<PlatformVersionCompany[]>;
/**
* Get Platform Version Release Dates.
* {@link https://api-docs.igdb.com/#platform-version-release_date}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getPlatformVersionReleaseDates(options?: DefaultIGDBOptions<PlatformVersionReleaseDate>): Promise<PlatformVersionReleaseDate[]>;
/**
* Get Platform Websites.
* {@link https://api-docs.igdb.com/#platform-website}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getPlatformWebsites(options?: DefaultIGDBOptions<PlatformWebsite>): Promise<PlatformWebsite[]>;
/**
* Get Player Perspectives.
* {@link https://api-docs.igdb.com/#player-perspective}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getPlayerPerspectives(options?: DefaultIGDBOptions<PlayerPerspective>): Promise<PlayerPerspective[]>;
/**
* Get Release Dates.
* {@link https://api-docs.igdb.com/#release-date}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getReleaseDates(options?: DefaultIGDBOptions<ReleaseDate>): Promise<ReleaseDate[]>;
/**
* Get Screenshots.
* {@link https://api-docs.igdb.com/#screenshot}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getScreenshots(options?: DefaultIGDBOptions<Screenshot>): Promise<Screenshot[]>;
/**
* Search IGDB.
* {@link https://api-docs.igdb.com/#search}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
search(options?: DefaultIGDBOptions<Search>): Promise<Search[]>;
/**
* Get Themes.
* {@link https://api-docs.igdb.com/#theme}
* @param {Object} options - [Searchable Endpoint Options]({@link SearchableIGDBOptions})
*
**/
getThemes(options?: SearchableIGDBOptions<Theme>): Promise<Theme[]>;
/**
* Get Websites.
* {@link https://api-docs.igdb.com/#website}
* @param {Object} options - [Default Endpoint Options]({@link DefaultIGDBOptions})
*
**/
getWebsites(options?: DefaultIGDBOptions<Website>): Promise<Website[]>;
}