@yuna0x0/anilist-node
Version:
A lightweight Node.js wrapper for the AniList API
855 lines (820 loc) • 69.9 kB
HTML
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>docDefinition.js - AniList-Node Documentation</title>
<meta name="description" content="Documentation for the AniList-Node NPM package." />
<meta property="og:title" content="AniList-Node Documentation" />
<meta property="og:type" content="website" />
<meta property="og:image" content="" />
<meta property="og:site_name" content="AniList-Node Documentation" />
<meta property="og:url" content="https://katsurin.com/docs/anilist-node/" />
<script src="scripts/prettify/prettify.js"></script>
<script src="scripts/prettify/lang-css.js"></script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify.css" />
<link type="text/css" rel="stylesheet" href="styles/jsdoc.css" />
<script src="scripts/nav.js" defer></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
</head>
<body>
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
<label for="nav-trigger" class="navicon-button x">
<div class="navicon"></div>
</label>
<label for="nav-trigger" class="overlay"></label>
<nav>
<input type="text" id="nav-search" placeholder="Search" />
<h2><a href="index.html">Home</a></h2>
<h2>
<a
href="https://github.com/AurelicButter/AniList-Node"
target="_blank"
class="menu-item"
id="website_link"
>GitHub Repository</a
>
</h2>
<h2>
<a href="https://www.npmjs.com/package/anilist-node" target="_blank" class="menu-item" id="website_link"
>AniList-Node on NPM</a
>
</h2>
<h2>
<a href="https://discord.gg/qKfqsjW" target="_blank" class="menu-item" id="website_link"
>Support Server</a
>
</h2>
<h3>Classes</h3>
<ul>
<li>
<a href="AniList.html">AniList</a>
<ul class="methods">
<li data-type="method"><a href="AniList.html#favouriteStudio">favouriteStudio</a></li>
<li data-type="method"><a href="AniList.html#genres">genres</a></li>
<li data-type="method"><a href="AniList.html#mediaTags">mediaTags</a></li>
<li data-type="method"><a href="AniList.html#search">search</a></li>
<li data-type="method"><a href="AniList.html#siteStatistics">siteStatistics</a></li>
<li data-type="method"><a href="AniList.html#studio">studio</a></li>
</ul>
</li>
<li>
<a href="AniList.Activity.html">Activity</a>
<ul class="methods">
<li data-type="method"><a href="AniList.Activity.html#delete">delete</a></li>
<li data-type="method"><a href="AniList.Activity.html#get">get</a></li>
<li data-type="method"><a href="AniList.Activity.html#getUserActivity">getUserActivity</a></li>
<li data-type="method"><a href="AniList.Activity.html#postMessage">postMessage</a></li>
<li data-type="method"><a href="AniList.Activity.html#postText">postText</a></li>
</ul>
</li>
<li>
<a href="AniList.Lists.html">Lists</a>
<ul class="methods">
<li data-type="method"><a href="AniList.Lists.html#addEntry">addEntry</a></li>
<li data-type="method"><a href="AniList.Lists.html#anime">anime</a></li>
<li data-type="method"><a href="AniList.Lists.html#manga">manga</a></li>
<li data-type="method"><a href="AniList.Lists.html#removeEntry">removeEntry</a></li>
<li data-type="method"><a href="AniList.Lists.html#updateEntry">updateEntry</a></li>
</ul>
</li>
<li>
<a href="AniList.Media.html">Media</a>
<ul class="methods">
<li data-type="method"><a href="AniList.Media.html#anime">anime</a></li>
<li data-type="method"><a href="AniList.Media.html#favouriteAnime">favouriteAnime</a></li>
<li data-type="method"><a href="AniList.Media.html#favouriteManga">favouriteManga</a></li>
<li data-type="method"><a href="AniList.Media.html#manga">manga</a></li>
</ul>
</li>
<li>
<a href="AniList.People.html">People</a>
<ul class="methods">
<li data-type="method"><a href="AniList.People.html#character">character</a></li>
<li data-type="method"><a href="AniList.People.html#favouriteChar">favouriteChar</a></li>
<li data-type="method"><a href="AniList.People.html#favouriteStaff">favouriteStaff</a></li>
<li data-type="method">
<a href="AniList.People.html#getBirthdayCharacters">getBirthdayCharacters</a>
</li>
<li data-type="method"><a href="AniList.People.html#getBirthdayStaff">getBirthdayStaff</a></li>
<li data-type="method"><a href="AniList.People.html#staff">staff</a></li>
</ul>
</li>
<li>
<a href="AniList.Recommendation.html">Recommendation</a>
<ul class="methods">
<li data-type="method"><a href="AniList.Recommendation.html#get">get</a></li>
<li data-type="method"><a href="AniList.Recommendation.html#getList">getList</a></li>
</ul>
</li>
<li>
<a href="AniList.Search.html">Search</a>
<ul class="methods">
<li data-type="method"><a href="AniList.Search.html#activity">activity</a></li>
<li data-type="method"><a href="AniList.Search.html#anime">anime</a></li>
<li data-type="method"><a href="AniList.Search.html#character">character</a></li>
<li data-type="method"><a href="AniList.Search.html#manga">manga</a></li>
<li data-type="method"><a href="AniList.Search.html#staff">staff</a></li>
<li data-type="method"><a href="AniList.Search.html#studio">studio</a></li>
<li data-type="method"><a href="AniList.Search.html#user">user</a></li>
</ul>
</li>
<li>
<a href="AniList.Thread.html">Thread</a>
<ul class="methods">
<li data-type="method"><a href="AniList.Thread.html#delete">delete</a></li>
<li data-type="method"><a href="AniList.Thread.html#get">get</a></li>
<li data-type="method"><a href="AniList.Thread.html#getComments">getComments</a></li>
</ul>
</li>
<li>
<a href="AniList.User.html">User</a>
<ul class="methods">
<li data-type="method"><a href="AniList.User.html#all">all</a></li>
<li data-type="method"><a href="AniList.User.html#follow">follow</a></li>
<li data-type="method"><a href="AniList.User.html#getAuthorized">getAuthorized</a></li>
<li data-type="method"><a href="AniList.User.html#getRecentActivity">getRecentActivity</a></li>
<li data-type="method"><a href="AniList.User.html#profile">profile</a></li>
<li data-type="method"><a href="AniList.User.html#stats">stats</a></li>
<li data-type="method"><a href="AniList.User.html#update">update</a></li>
</ul>
</li>
</ul>
<h3>Tutorials</h3>
<ul>
<li><a href="tutorial-Filtering.html">Filtering</a></li>
<li><a href="tutorial-Getting Started.html">Getting Started</a></li>
</ul>
<h3>Global</h3>
<ul>
<li><a href="global.html#ActivityEntry">ActivityEntry</a></li>
<li><a href="global.html#ActivityFilterTypes">ActivityFilterTypes</a></li>
<li><a href="global.html#ActivitySort">ActivitySort</a></li>
<li><a href="global.html#ActivityType">ActivityType</a></li>
<li><a href="global.html#AiringEntry">AiringEntry</a></li>
<li><a href="global.html#AniListStats">AniListStats</a></li>
<li><a href="global.html#AnimeEntry">AnimeEntry</a></li>
<li><a href="global.html#CharacterEntry">CharacterEntry</a></li>
<li><a href="global.html#CharacterName">CharacterName</a></li>
<li><a href="global.html#CountryCode">CountryCode</a></li>
<li><a href="global.html#EntryStatus">EntryStatus</a></li>
<li><a href="global.html#FuzzyDateInt">FuzzyDateInt</a></li>
<li><a href="global.html#FuzzyDateObj">FuzzyDateObj</a></li>
<li><a href="global.html#InitOptions">InitOptions</a></li>
<li><a href="global.html#ListActivity">ListActivity</a></li>
<li><a href="global.html#ListEntry">ListEntry</a></li>
<li><a href="global.html#MangaEntry">MangaEntry</a></li>
<li><a href="global.html#MediaFilterTypes">MediaFilterTypes</a></li>
<li><a href="global.html#MediaFormat">MediaFormat</a></li>
<li><a href="global.html#MediaListOptions">MediaListOptions</a></li>
<li><a href="global.html#MediaListOptionsInput">MediaListOptionsInput</a></li>
<li><a href="global.html#MediaRelation">MediaRelation</a></li>
<li><a href="global.html#MediaSeason">MediaSeason</a></li>
<li><a href="global.html#MediaSort">MediaSort</a></li>
<li><a href="global.html#MediaSource">MediaSource</a></li>
<li><a href="global.html#MediaStatus">MediaStatus</a></li>
<li><a href="global.html#MediaTag">MediaTag</a></li>
<li><a href="global.html#MediaTitle">MediaTitle</a></li>
<li><a href="global.html#MediaType">MediaType</a></li>
<li><a href="global.html#MessageActivity">MessageActivity</a></li>
<li><a href="global.html#ModRole">ModRole</a></li>
<li><a href="global.html#NotificationOption">NotificationOption</a></li>
<li><a href="global.html#NotificationType">NotificationType</a></li>
<li><a href="global.html#PersonName">PersonName</a></li>
<li><a href="global.html#PersonRelation">PersonRelation</a></li>
<li><a href="global.html#RecommendationEntry">RecommendationEntry</a></li>
<li><a href="global.html#RecommendationList">RecommendationList</a></li>
<li><a href="global.html#RecommendationRating">RecommendationRating</a></li>
<li><a href="global.html#ScoreFormat">ScoreFormat</a></li>
<li><a href="global.html#SearchEntry">SearchEntry</a></li>
<li><a href="global.html#SingleRecommendation">SingleRecommendation</a></li>
<li><a href="global.html#StaffEntry">StaffEntry</a></li>
<li><a href="global.html#StaffName">StaffName</a></li>
<li><a href="global.html#StudioEntry">StudioEntry</a></li>
<li><a href="global.html#TextActivity">TextActivity</a></li>
<li><a href="global.html#ThreadComment">ThreadComment</a></li>
<li><a href="global.html#ThreadEntry">ThreadEntry</a></li>
<li><a href="global.html#UpdateEntryOptions">UpdateEntryOptions</a></li>
<li><a href="global.html#UpdatedEntry">UpdatedEntry</a></li>
<li><a href="global.html#UserList">UserList</a></li>
<li><a href="global.html#UserOptions">UserOptions</a></li>
<li><a href="global.html#UserOptionsInput">UserOptionsInput</a></li>
<li><a href="global.html#UserProfile">UserProfile</a></li>
<li><a href="global.html#UserRelation">UserRelation</a></li>
<li><a href="global.html#UserStaffNameLanguage">UserStaffNameLanguage</a></li>
<li><a href="global.html#UserStats">UserStats</a></li>
<li><a href="global.html#UserTitleLanguage">UserTitleLanguage</a></li>
<li><a href="global.html#headerBuilder">headerBuilder</a></li>
</ul>
</nav>
<div id="main">
<h1 class="page-title">docDefinition.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>/**
* @typedef { Object } InitOptions
* @property { Number } timeout - A number in milliseconds which defines a timeout when making requests
*/
/**
* @typedef { Object } MediaTitle
* @enum
* @property { String } english - The offical English licensed title
* @property { String } native - The Japanese title in Japanese
* @property { String } romaji - The Japanese romanized title
* @property { String } userPreferred - The title as it would be displayed to the user
*/
/**
* @typedef { Object } PersonName
* @enum
* @property { String } english - The person's first and last name in English
* @property { String } native - The person's name in Japanese
* @property { String[] } alternative - Any nicknames or titles the person goes by.
*/
/**
* @typedef { Object } CharacterName
* @enum
* @property { String } english - The person's first and last name in English
* @property { String } native - The person's name in Japanese
* @property { String[] } alternative - Any nicknames or titles the person goes by.
* @property { String[] } alternativeSpoiler - Any nicknames or titles the person goes by but is marked as spoilers
* @property { String } userPreferred - The user's preferred name language. Defaults to romaji for non-authenticated
*/
/**
* @typedef { Object } StaffName
* @enum
* @property { String } english - The person's first and last name in English
* @property { String } native - The person's name in Japanese
* @property { String[] } alternative - Any nicknames or titles the person goes by.
* @property { String } userPreferred - The user's preferred name language. Defaults to romaji for non-authenticated
*/
/**
* @typedef { Object } SearchEntry
* @enum
* @property { Object } pageInfo - Information about the search result page
* @property { Number } pageInfo.total - The total amount of pages in the search
* @property { Number } pageInfo.currentPage - The current page of the search result
* @property { Number } pageInfo.lastPage - Last page of the searched term
* @property { Boolean } pageInfo.hasNextPage - Check if there is another page
* @property { Number } pageInfo.perPage - Result count per page.
* @property { Object[] } media - Search results
* @property { Number } media.id - The ID of the media
* @property { MediaTitle } media.title - The media's title (Used for anime and manga searches only)
* @property { PersonName } media.name - The media's name (Used for character and staff searches only)
* @property { String } media.name - The media's name (Used for studio and user searches only)
*/
/**
* @typedef { Object } ActivityEntry
* @property { Object } pageInfo - Information about the search result page
* @property { Number } pageInfo.total - The total amount of pages in the search
* @property { Number } pageInfo.currentPage - The current page of the search result
* @property { Number } pageInfo.lastPage - Last page of the searched term
* @property { Boolean } pageInfo.hasNextPage - Check if there is another page
* @property { Number } pageInfo.perPage - Result count per page.
* @property { Object[] } activities - Search results
* @property { Number } id - The ID of the activity
* @property { ActivityType } type - The activity type
* @property { Number } createdAt - The creation timestamp of the activity
* @property { Number } likeCount - The like count of the activity
*/
/**
* @typedef { Object } StaffEntry
* @enum
* @property { Number } id - The person's ID on AniList
* @property { StaffName } name - The person's name
* @property { Object } image - The person's cover image.
* @property { string } image.large - The large file
* @property { string } image.medium - The medium file
* @property { String } description - The person's description
* @property { string[] } primaryOccupations - The primary occupations that the person does
* @property { string } gender - The person's gender
* @property { Object | null } dateOfBirth - The person's date of birth
* @property { Number } dateOfBirth.year
* @property { Number } dateOfBirth.month
* @property { Number } dateOfBirth.day
* @property { Object | null } dateOfDeath - The person's date of death
* @property { Number } dateOfDeath.year
* @property { Number } dateOfDeath.month
* @property { Number } dateOfDeath.day
* @property { number } age - The person's age
* @property { number[] } yearsActive - Read as (start, end). If only one year is availible, person is still active.
* @property { string } homeTown - Where the person is from
* @property { string } bloodType - The person's blood type
* @property { Boolean } isFavourite - [Requires Login] Check if the person is favourited
* @property { Boolean } isFavouriteBlocked - True if user is not allowed to favourite the person
* @property { Number } favourites - The number of users that have favourited the person
* @property { String } language - The staff's language
* @property { MediaRelation[] } staffMedia - An array of ids and titles of all media that the staff has been apart of. (Up to the first 25 entries)
* @property { PersonRelation[] } characters - An array of ids and the english names of all characters that the staff has voiced. (Up to the first 25 entries)
* @property { MediaRelation[] } characterMedia - An array of ids and titles of all media that the person voiced characters in. (Up to the first 25 entries)
*/
/**
* @typedef { Object } CharacterEntry
* @enum
* @property { Number } id - The person's ID on AniList
* @property { CharacterName } name - The person's name
* @property { Object } image - The person's cover image.
* @property { string } image.large - The large file
* @property { string } image.medium - The medium file
* @property { string } gender - The character's gender. Could be male, female, non-binary, etc...
* @property { Object | null } dateOfBirth - The character's date of birth
* @property { Number } dateOfBirth.year
* @property { Number } dateOfBirth.month
* @property { Number } dateOfBirth.day
* @property { string } age - The character's age. Listed as a string as it may contain additional text or ranges.
* @property { string } bloodType - The character's blood type
* @property { String } description - The person's description
* @property { Boolean } isFavourite - [Requires Login] Check if the person is favourited
* @property { Boolean } isFavouriteBlocked - True if the user is unable to favourite the entry
* @property { Number } favourites - The number of users that have favourited the person
* @property { MediaRelation[] } media - All media that the character is in. (Up to the first 25 entries)
*/
/**
* @typedef { Object } MediaRelation
* @enum
* @property { Number } id - The media's AniList ID
* @property { MediaTitle } title - The media's titles
* @property { String } type - Tells what type of media it is. Returns either ANIME or MANGA
*/
/**
* @typedef { Object } PersonRelation
* @enum
* @property { Number } id - The person's AniList ID
* @property { String } name - The person's name in English
*/
/**
* @typedef { Object } StudioEntry
* @enum
* @property { Number } id - The studio's ID
* @property { String } name - The studio's name
* @property { Boolean } isAnimationStudio - Check if the studio is an animation studio
* @property { Number } favourites - Number of users who have favourited it.
* @property { Object[] } media - A list of all the media the studio has done (Up to the first 25 per AniList's limit).
* @property { Number } media.id - The media's ID
* @property { MediaTitle } media.title - The media's titles
* @property { String } siteUrl - The studio's site URL
* @property { Boolean } isFavourite - [Requires Login] Check if the studio is favourited by the user.
*/
/**
* @typedef { Object } AiringEntry
* @enum
* @property { Number } airingAt - The timestamp that the episode is airing at
* @property { Number } timeUntilAiring - The amount of seconds until the episode airs
* @property { Number } episode - The episode number to air.
*/
/**
* @typedef { Object } AnimeEntry
* @enum
* @property { AiringEntry[] } airingSchedule - The media's airing schedule, ordered by episode number (ie: 1, 2, 3, etc...).
* @property { Boolean } autoCreateForumThread - Checks if the media gets a thread automatically with each release
* @property { Number } averageScore - A weighted average score of the media.
* @property { String } bannerImage - The media's banner image
* @property { PersonRelation[] } characters - An array of characters
* @property { String } countryOfOrigin - The country origin of the media
* @property { Object[] } coverImage - The media's cover image
* @property { String } coverImage.large - The large sized cover image
* @property { String } coverImage.medium - The medium sized cover image
* @property { String } coverImage.small - The small sized cover image
* @property { String } coverImage.color - Average hex colour of the cover image
* @property { String } description - The medias description
* @property { Number } duration - General length of an episode
* @property { FuzzyDateObj } endDate - Official end date of the media
* @property { Number } episodes - Number of episodes
* @property { String[] } externalLinks - A list of external links associated with the media
* @property { Number } favourites - Number of users who have favourited it.
* @property { String } format - The format of the anime. (ie: TV, OVA, etc...)
* @property { String[] } genres - The media's genres
* @property { String } hashtag - Twitter hashtag associated with the anime
* @property { Number } id - The anime's AniList ID
* @property { Number } idMal - The anime's MyAnimeList ID
* @property { Boolean } isAdult - Check if the media is for adult audiences (ie: Hentai)
* @property { Boolean } isFavourite - [Requires Login] Check if the media is favourited
* @property { Boolean } isLicensed - Check if the media is licensed
* @property { Boolean } isLocked - Check if the media is locked for list additions or favouriting.
* @property { Boolean } isRecommendationBlocked - Check if the media is locked for recommendations.
* @property { Number } meanScore - Mean score of the media
* @property { Object } mediaListEntry - [Requires Login] User's media list entry; required for list edits.
* @property { Number } mediaListEntry.id - Id of the media on a user's media list
* @property { String } mediaListEntry.status - Status of the media on the user's media list.
* @property { String } modNotes - Mod notes for the media
* @property { AiringEntry[] | null } nextAiringEpisode - The media's next episode airing schedule. Returns either an AiringEntry object or null depending if there is an episode to air.
* @property { Number } popularity - Number of users with the media on their list
* @property { Object[] } rankings - Media rankings in a particular category compared to others.
* @property { Number } rankings.rank - The rank position
* @property { String } rankings.type - What type of ranking it is. (ie: RATED or POPULAR)
* @property { String } rankings.context - The category of the ranking.
* @property { Number } rankings.year - The year for the ranking
* @property { String } rankings.season - The season of the ranking. (ie: WINTER, SPRING, SUMMER, FALL)
* @property { MediaRelation[] } recommendations - Recommendations for the media.
* @property { MediaRelation[] } relations - All media that relate to the media.
* @property { Object[] } reviews - An array of reviews.
* @property { Number } reviews.id - The id of the review
* @property { Number } reviews.score - The review's media score
* @property { String } reviews.summary - The summary of the review.
* @property { String } reviews.body - The review content.
* @property { String } season - Season that the anime started airing
* @property { Number } seasonYear - The season year that the anime started airing
* @property { String } siteUrl - The media's AniList page
* @property { String } source - Source type that the media was adapted from
* @property { PersonRelation[] } staff - An array of credited staff
* @property { FuzzyDateObj } startDate - Official release date of the media
* @property { Object } stats - Statistics on the media
* @property { Object[] } stats.scoreDistribution - An array of how the users have rated the media. Each object contains a score and amount.
* @property { Object[] } stats.statusDistribution - An array of the users status with the show. Each object contains a status and amount.
* @property { String } status - The current status of the media
* @property { Object[] } streamingEpisodes - An ordered array of episodes and where it can be streamed.
* @property { String } streamingEpisodes.title - The title of the episode
* @property { String } streamingEpisodes.thumbnail - The thumbnail image for the episode
* @property { String } streamingEpisodes.url - The URL of the episode
* @property { String } streamingEpisodes.site - The name of the site where the episode is provided.
* @property { Object[] } studios - An array of studios that produced the anime.
* @property { Number } studios.id - The studio's id
* @property { String } studios.name - The studio's name
* @property { Boolean } studios.isAnimationStudio - Check if the studio is the animation studio for the anime.
* @property { String[] } synonyms - The media's alternative titles
* @property { Object[] } tags - Tags that describes the media
* @property {Number} tags.id - The ID of the tag
* @property { String } tags.name - The name of the tag
* @property { Boolean } tags.isMediaSpoiler - Checks if the tag is a spoiler for the media.
* @property { MediaTitle } title - The manga's titles
* @property { String | Object | null } trailer - Returns the trailer URL if the trailer is a Youtube or Dailymotion video. Will return an object if it is a video outside of YouTube and Dailymotion or null if no trailer is found.
* @property { Number } trending - Number of related activity in the past week.
* @property { Object[] } trends - An array of the media's daily trend status
* @property { Number } trends.date - The timestamp of the day the data was recorded
* @property { Number } trends.trending - Amount of media acitivity for that day
* @property { Number | null } trends.popularity - Number of users with the media on their list
* @property { Number | null } trends.inProgress - Number of users watching the media.
* @property { Number } updatedAt - Timestamp of when the page was last updated
*/
/**
* @typedef { Object } MangaEntry
* @enum
* @property { Boolean } autoCreateForumThread - Checks if the media gets a thread automatically with each release
* @property { Number } averageScore - A weighted average score of the media.
* @property { String } bannerImage - The media's banner image
* @property { Number } chapters - Number of chapters
* @property { PersonRelation[] } characters - An array of characters
* @property { String } countryOfOrigin - The country origin of the media
* @property { Object[] } coverImage - The media's cover image
* @property { String } coverImage.large - The large sized cover image
* @property { String } coverImage.medium - The medium sized cover image
* @property { String } coverImage.small - The small sized cover image
* @property { String } coverImage.color - Average hex colour of the cover image
* @property { String } description - The manga's description
* @property { FuzzyDateObj } endDate - Official end date of the media
* @property { String[] } externalLinks - A list of external links associated with the media
* @property { Number } favourites - Number of users who have favourited it.
* @property { String } format - The format of the manga. (ie: Manga, Novel, etc...)
* @property { String[] } genres - The media's genres
* @property { Number } id - The manga's AniList ID
* @property { Number } idMal - The manga's MyAnimeList ID
* @property { Boolean } isAdult - Check if the media is for adult audiences (ie: Hentai)
* @property { Boolean } isFavourite - [Requires Login] Check if the media is favourited
* @property { Boolean } isLicensed - Check if the media is licensed
* @property { Boolean } isLocked - Check if the media is locked for list additions or favouriting.
* @property { Boolean } isRecommendationBlocked - Check if the media is locked for recommendations.
* @property { Number } meanScore - Mean score of the media
* @property { Object } mediaListEntry - [Requires Login] User's media list entry; required for list edits.
* @property { Number } mediaListEntry.id - Id of the media on a user's media list
* @property { String } mediaListEntry.status - Status of the media on the user's media list.
* @property { String } modNotes - Mod notes for the media
* @property { Number } popularity - Number of users with the media on their list
* @property { Object[] } rankings - Media rankings in a particular category compared to others.
* @property { Number } rankings.rank - The rank position
* @property { String } rankings.type - What type of ranking it is. (ie: RATED or POPULAR)
* @property { String } rankings.context - The category of the ranking.
* @property { Number } rankings.year - The year for the ranking
* @property { String } rankings.season - The season of the ranking. (ie: WINTER, SPRING, SUMMER, FALL)
* @property { MediaRelation[] } recommendations - Recommendations for the media.
* @property { MediaRelation[] } relations - All media that relate to the media.
* @property { Object[] } reviews - An array of reviews.
* @property { Number } reviews.id - The id of the review
* @property { Number } reviews.score - The review's media score
* @property { String } reviews.summary - The summary of the review.
* @property { String } reviews.body - The review content.
* @property { String } siteUrl - The media's AniList page
* @property { PersonRelation[] } staff - An array of credited staff
* @property { FuzzyDateObj } startDate - Official release date of the media
* @property { Object } stats - Statistics on the media
* @property { Object[] } stats.scoreDistribution - An array of how the users have rated the media. Each object contains a score and amount.
* @property { Object[] } stats.statusDistribution - An array of the users status with the show. Each object contains a status and amount.
* @property { String } status - The current status of the media
* @property { String[] } synonyms - The media's alternative titles
* @property { Object[] } tags - Tags that describes the media
* @property {Number} tags.id - The ID of the tag
* @property { String } tags.name - The name of the tag
* @property { Boolean } tags.isMediaSpoiler - Checks if the tag is a spoiler for the media.
* @property { MediaTitle } title - The manga's titles
* @property { Number } trending - Number of related activity in the past week.
* @property { Object[] } trends - An array of the media's daily trend status.
* @property { Number } trends.date - The timestamp of the day the data was recorded
* @property { Number } trends.trending - Amount of media acitivity for that day
* @property { Number | null } trends.popularity - Number of users with the media on their list
* @property { Number | null } trends.inProgress - Number of users reading the media.
* @property { Number } updatedAt - Timestamp of when the page was last updated
* @property { Number } volumes - Number of volumes
*/
/**
* @typedef { Object } UserRelation
* @enum
* @property { Number } id - The user's ID
* @property { String } name - The user's name
*/
/**
* @typedef { Object } UserProfile
* @enum
* @property { Number } id - The user's ID
* @property { String } name - The user's username
* @property { String } about - The user's about section
* @property { Object } avatar - The user's avatar
* @property { String } avatar.large - A large version of the avatar
* @property { String } avatar.medium - A medium version of the avatar
* @property { String } bannerImage - The user's banner image
* @property { Boolean } isFollowing - [Requires Login] Check if the authorized user is following this user
* @property { Boolean } isBlocked - [Requires Login] Check if the authorized user has blocked this user
* @property { Boolean } isFollower - [Requires Login] Check if the user is following the authorized user
* @property { String } bans - Record of the user's bans
* @property { Object } options - The user's options
* @property { String } options.titleLanguage - The language that the user prefers to see (ie: English, Japanese)
* @property { Boolean } options.displayAdultContent - Check if the user allows adult content to be displayed
* @property { Boolean } options.airingNotifications - Check if the user receives notification about airing episodes
* @property { String } options.profileColor - The highlight colour that the user uses.
* @property { Number } options.activityMergeTime - Minutes between activity for them to be merged together. 0 is Never, Above 2 weeks (20160 mins) is Always.
* @property { StaffNameLanguage } options.staffNameLanguage - The language the user wants to see staff and character names in
* @property { NotificationOptions[] } options.notificationOptions - The user's notification options
* @property { Object } mediaListOptions - A user's media list settings
* @property { String } mediaListOptions.scoreFormat - The scoring format the user uses.
* @property { String } mediaListOptions.rowOrder - The default order list rows should be displayed in.
* @property { MediaListOptions } mediaListOptions.animeList - Settings pertaining to the user's anime list.
* @property { MediaListOptions } mediaListOptions.mangaList - Settings pertaining to the user's manga list.
* @property { Object } favourites - An object containing all of the user's favourited entries
* @property { MediaRelation[] } favourites.anime - An array of the user's favourite anime
* @property { MediaRelation[] } favourites.manga - An array of the user's favourite manga
* @property { PersonRelation[] } favourites.characters - An array of the user's favourite characters
* @property { PersonRelation[] } favourites.staff - An array of the user's favourite staff
* @property { Object[] } favourites.studios - An array of the user's favourite studios
* @property { Number } favourites.studios.id - The id of the studio
* @property { String } favourites.studios.name - The name of the studio
* @property { Number } unreadNotificationCount - Number of notifications that aren't read yet
* @property { String } siteUrl - The user's profile link
* @property { Number } donatorTier - The donator tier of the user
* @property { String } donatorBadge - Custom donation badge text
* @property { ModRole[] } moderatorRoles - Check if the user is a moderator.
* @property { Number } updatedAt - Timestamp of the last update for the profile.
*/
/**
* @typedef { Object } UserStats
* @enum
* @property { Object } anime - The user's statistics with anime
* @property { Number } anime.meanScore - The mean score of all entries
* @property { Number } anime.standardDeviation - The standard deviation of all scores with all entries
* @property { Number } anime.count - Total amount of entries
* @property { Number } anime.minutesWatched - Total amount of minutes the user has seen
* @property { Number } anime.episodesWatched - Total amount of episodes the user watched.
* @property { Object[] } anime.statuses - Undocumented
* @property { Number } anime.statuses.count - Number of entries
* @property { Number } anime.statuses.meanScore - The mean score of all entries
* @property { Number } anime.statuses.watchedTime - The total watched time
* @property { String } anime.statuses.status - The status of the entries
* @property { Object[] } anime.formats - Undocumented
* @property { Number } anime.formats.count - Number of entries
* @property { Number } anime.formats.meanScore - The mean score of all entries
* @property { Number } anime.formats.watchedTime - The total watched time
* @property { String } anime.formats.format - The format of the entries
* @property { Object[] } anime.lengths - Undocumented
* @property { Number } anime.lengths.count - Number of entries
* @property { Number } anime.lengths.meanScore - The mean score of all entries
* @property { Number } anime.lengths.watchedTime - The total watched time
* @property { String } anime.lengths.length - The length of the entries.
* @property { Object[] } anime.releaseYears - Undocumented
* @property { Number } anime.releaseYears.count - Number of entries
* @property { Number } anime.releaseYears.meanScore - The mean score of all entries
* @property { Number } anime.releaseYears.watchedTime - The total watched time
* @property { String } anime.releaseYears.releaseYear - The release year of the entries.
* @property { Object[] } anime.startYears - Undocumented
* @property { Number } anime.startYears.count - Number of entries
* @property { Number } anime.startYears.meanScore - The mean score of all entries
* @property { Number } anime.startYears.watchedTime - The total watched time
* @property { String } anime.startYears.startYear - The start year of the entries.
* @property { Object[] } anime.genres - Undocumented
* @property { Number } anime.genres.count - Number of entries
* @property { Number } anime.genres.meanScore - The mean score of all entries
* @property { Number } anime.genres.watchedTime - The total watched time
* @property { String } anime.genres.genre - The genre of the entries.
* @property { Object[] } anime.tags - Undocumented
* @property { Number } anime.tags.count - Number of entries
* @property { Number } anime.tags.meanScore - The mean score of all entries
* @property { Number } anime.tags.watchedTime - The total watched time
* @property { Object } anime.tags.tag - The tag of the entries.
* @property { Number } anime.tags.tag.id - The id of the tag
* @property { String } anime.tags.tag.name - The name of the tag.
* @property { Object[] } anime.countries - Undocumented
* @property { Number } anime.countries.count - Number of entries
* @property { Number } anime.countries.meanScore - The mean score of all entries
* @property { Number } anime.countries.watchedTime - The total watched time
* @property { String } anime.countries.country - The country of origin of the entries.
* @property { Object[] } anime.voiceActors - Undocumented
* @property { Number } anime.voiceActors.count - Number of entries
* @property { Number } anime.voiceActors.meanScore - The mean score of all entries
* @property { Number } anime.voiceActors.watchedTime - The total watched time
* @property { PersonRelation } anime.voiceActors.voiceActor - The VA of the entries.
* @property { Object[] } anime.staff - Undocumented
* @property { Number } anime.staff.count - Number of entries
* @property { Number } anime.staff.meanScore - The mean score of all entries
* @property { Number } anime.staff.watchedTime - The total watched time
* @property { PersonRelation } anime.staff.staff - The staff of the entries.
* @property { Object[] } anime.studios - Undocumented
* @property { Number } anime.studios.count - Number of entries
* @property { Number } anime.studios.meanScore - The mean score of all entries
* @property { Number } anime.studios.watchedTime - The total watched time
* @property { Object } anime.studios.studio - The studio of the entries.
* @property { Number } anime.studios.studio.id - The ID of the studio
* @property { String } anime.studios.studio.name - The name of the studio.
* @property { Object } manga - The user's statistics with manga
* @property { Number } manga.meanScore - The mean score of all entries
* @property { Number } manga.standardDeviation - The standard deviation of all scores with all entries
* @property { Number } manga.count - Total amount of entries
* @property { Number } manga.chaptersRead - Total amount of chapters read
* @property { Number } manga.volumesRead - Total amount of volumes read.
* @property { Object[] } manga.statuses - Undocumented
* @property { Number } manga.statuses.count - Number of entries
* @property { Number } manga.statuses.meanScore - The mean score of all entries
* @property { Number } manga.statuses.chaptersRead - The total chapters read
* @property { String } manga.statuses.status - The status of the entries
* @property { Object[] } manga.formats - Undocumented
* @property { Number } manga.formats.count - Number of entries
* @property { Number } manga.formats.meanScore - The mean score of all entries
* @property { Number } manga.formats.chaptersRead - The total chapters read
* @property { String } manga.formats.format - The format of the entries
* @property { Object[] } manga.lengths - Undocumented
* @property { Number } manga.lengths.count - Number of entries
* @property { Number } manga.lengths.meanScore - The mean score of all entries
* @property { Number } manga.lengths.chaptersRead - The total chapters read
* @property { String } manga.lengths.length - The length of the entries.
* @property { Object[] } manga.releaseYears - Undocumented
* @property { Number } manga.releaseYears.count - Number of entries
* @property { Number } manga.releaseYears.meanScore - The mean score of all entries
* @property { Number } manga.releaseYears.chaptersRead - The total chapters read
* @property { String } manga.releaseYears.releaseYear - The release year of the entries.
* @property { Object[] } manga.startYears - Undocumented
* @property { Number } manga.startYears.count - Number of entries
* @property { Number } manga.startYears.meanScore - The mean score of all entries
* @property { Number } manga.startYears.chaptersRead - The total chapters read
* @property { String } manga.startYears.startYear - The start year of the entries.
* @property { Object[] } manga.genres - Undocumented
* @property { Number } manga.genres.count - Number of entries
* @property { Number } manga.genres.meanScore - The mean score of all entries
* @property { Number } manga.genres.chaptersRead - The total chapters read
* @property { String } manga.genres.genre - The genre of the entries.
* @property { Object[] } manga.tags - Undocumented
* @property { Number } manga.tags.count - Number of entries
* @property { Number } manga.tags.meanScore - The mean score of all entries
* @property { Number } manga.tags.chaptersRead - The total chapters read
* @property { Object } manga.tags.tag - The tag of the entries.
* @property { Number } manga.tags.tag.id - The id of the tag
* @property { String } manga.tags.tag.name - The name of the tag.
* @property { Object[] } manga.countries - Undocumented
* @property { Number } manga.countries.count - Number of entries
* @property { Number } manga.countries.meanScore - The mean score of all entries
* @property { Number } manga.countries.chaptersRead - The total chapters read
* @property { String } manga.countries.country - The country of origin of the entries.
* @property { Object[] } manga.staff - Undocumented
* @property { Number } manga.staff.count - Number of entries
* @property { Number } manga.staff.meanScore - The mean score of all entries
* @property { Number } manga.staff.chaptersRead - The total chapters read
* @property { PersonRelation } manga.staff.staff - The staff of the entries.
*/
/**
* @typedef { Object } UserList
* @enum
* @property { String } name - The user's list name
* @property { Boolean } isCustomList - Checks if the list is a custom one (not created by default)
* @property { Boolean } isSplitCompletedList - Checks if the list is a split completed list. (ie: If the user chose to have each media format in a separate list)
* @property { EntryStatus } status - The user's list status. Returns either "CURRENT", "PLANNING", "COMPLETED", "PAUSED", "DROPPED", "REPEATING"
* @property { ListEntry[] } entries - A list of entries on this list
*/
/**
* @typedef { Object } ListEntry
* @enum
* @property { Object } media - An object containing various media information
* @property { Number } media.id - The id of the media
* @property { Number } media.idMAL - The MAL id of the media
* @property { MediaTitle } media.title - The media's titles
* @property { String } media.description - The media's description
* @property { String } media.format - The media's format (ie: TV, OVA, Novel)
* @property { Object[] } media.tags - Tags relating to the media
* @property { String } media.tags.name - The name of the tag
* @property { Boolean } media.tags.isMediaSpoiler - Checks if the tag is a spoiler or not.
* @property { FuzzyDateObj } media.startDate - Starting date
* @property { FuzzyDateObj } media.endDate - The official end date
* @property { String[] } media.genres - The genres of the media
* @property { Boolean } media.isFavourite - [Requires Login] Checks if the media is on the user's favourites list
* @property { Boolean } media.isAdult - Checks if the media is for adult audiences (ie: Hentai)
* @property { String[] } media.synonyms - The media's alternative titles
* @property { String } media.siteUrl - The media's AniList page
* @property { Number } media.duration - General length of an episode (Anime only)
* @property { Number } media.episodes - Number of episodes (Anime only)
* @property { Number } media.volumes - Number of volumes (Manga only)
* @property { Number } media.chapters - Number of chapters (Manga only)
* @property { Number } id - The AniList list ID for the entry
* @property { String } status - The user's status ("CURRENT", "PLANNING", "COMPLETED", "PAUSED", "DROPPED", "REPEATING") for that media
* @property { Number } score - The user's score for the entry
* @property { Number } progress - The user's progress for that entry. (Episode count for anime, chapter count for manga)
* @property { Number } progressVolumes - The user's volume progress for that media (Manga only)
* @property { Number } repeat - The amount of times the user rewatched or read the media
* @property { Number } priority - The user's priority status for that media
* @property { Boolean } private - [Requires Login] Check if the entry should only be visible to the authenticated user.
* @property { String } notes - The user's notes
* @property { Boolean } hiddenFromStatusLists - Checks if the entry should be hidden from non-custom lists
* @property { Object } advancedScores - The user's advanced scores for that media (Story, Characters, Visuals, Audio, Enjoyment, …)
* @property { Object } dates - Dates related to that entry in ISO 8601 format
* @property { String } dates.startedAt - The date the user started the entry
* @property { String } dates.completedAt - The date the user finished the entry
* @property { String } dates.updatedAt - The time the entry was last updated
* @property { String } dates.createdAt - When the entry data was created.
*/
/**
* @typedef { Object } ListActivity
* @enum
* @property { Number } id - The id of the activity
* @property { UserRelation } user - The user of the activity
* @property { String } status - The status of the update
* @property { String } type - The activity type
* @property { Number | null } progress - Progress of the media
* @property { MediaRelation } media - The target media
* @property { Number } createdAt - The timestamp of the creation time
* @property { Object[] } replies - The replies for the activity
* @property { Number } replies.id - The id of the reply
* @property { String } replies.text - The content of the reply
* @property { Number } replies.likeCount - The amount of likes on the reply
* @property { Boolean } isLocked - True if the activity cannot receive replies
* @property { Boolean } isSubscribed - [Requires Login] True if the authorized user is subscribed.
* @property { Boolean } isLiked - [Requires Login] True if authorized user liked it
* @property { UserRelation[] } likes - All users who liked the activity
*/
/**
* @typedef { Object } TextActivity
* @enum
* @property { Number } id - The id of the activity
* @property { UserRelation } user - The user of the activity
* @property { String } text - The content of the activity
* @property { String } type - The activity type
* @property { Number } createdAt - The timestamp of the creation time
* @property { Object } replies - The replies for the activity
* @property { Number } replies.id - The id of the reply
* @property { String } replies.text - The content of the reply
* @property { Number } replies.likeCount - The amount of likes on the reply
* @property { Boolean } isLocked - True if the activity cannot receive replies
* @property { Boolean } isSubscribed - [Requires Login] True if the authorized user is subscribed.
* @property { Boolean } isLiked - [Requires Login] True if authorized user liked it
* @property { UserRelation[] } likes - All users who liked the activity
*/
/**
* @typedef { Object } MessageActivity
* @enum
* @property { Number } id - The id of the activity
* @property { UserRelation } user - The sender of the activity
* @property { UserRelation } recipient - The user receiving the message
* @property { String } message - The content of the activity
* @property { String } type - The activity type
* @property { Number } createdAt - The timestamp of the creation time
* @property { Boolean } isPrivate - True if message is private and only viewable to sender and recipients
* @property { Object } replies - The replies for the activity
* @property { Number } replies.id - The id of the reply
* @property { String } replies.text - The content of the reply
* @property { Number } replies.likeCount - The amount of likes on the reply
* @property { Boolean } isLocked - True if the activity cannot receive replies
* @property { Boolean } isSubscribed - [Requires Login] True if the authorized user is subscribed.
* @property { Boolean } isLiked - [Requires Login] True if authorized user liked it
* @property { UserRelation[] } likes - All users who liked the activity
*/
/**
* @typedef {Number} FuzzyDateInt
* @example
* 6 Jan 2021 = 20210106
* April 2016 = 20160400
* 1969 = 19690000
* @description 8 digit integer (YYYYMMDD). Unknown dates are represented by 0.
*/
/**
* @typedef {Object} FuzzyDateObj
* @description An object that contains the year, month, and date of an item.
* @property { Number | null } year
* @property { Number | null } month
* @property { Number | null } day
*/
/**
* @typedef {Number} CountryCode
* @description ISO 3166-1 alpha-2 country code
*/
/**
* @typedef MediaFilterTypes
* @description An enum for filter types for values
* @enum
* @readonly
* @property {Number} id The AniList ID
* @property {Number} idMal The MAL ID
* @property {FuzzyDateInt} startDate The start date
* @property {FuzzyDateInt} endDate The end date
* @property {MediaSeason} season The season the