UNPKG

igdb-ts

Version:

Unofficial IGDB API TypeScript wrapper.

341 lines (340 loc) 14.4 kB
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[]>; }