deno.land / x / anilist_js@0.1.0 / src / search.ts
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207import { MEDIA_TYPE } from './utils/constants.ts';import { req } from './utils/req.ts';
const media_query = `query ($search: String, $page: Int, $perPage: Int, $type: MediaType) { Page(page: $page, perPage: $perPage) { media(search: $search, type: $type) { id title { romaji english native userPreferred } } } }`;
/** * Sub class for search related functions * @since 1.0.0 * @memberof Anilist */export class Search { /** * Search for animes by a search term * @since 1.0.0 * @param {string} search Name of the anime to search for * @param {number} [page=1] Page number to view result of. Defaults to 1 * @param {number} [amount=5] Amount of results per page * @returns {AnimeSearch} AnimeSearch */ async anime(search: string, page = 1, amount = 5) { if ( !search || typeof search !== 'string' || typeof page !== 'number' || typeof amount !== 'number' ) { throw new TypeError( 'Invalid argument types. Search is a required string, amount and page must be of number types', ); } return await req({ query: media_query, variables: { search: search, page: page, perPage: amount, type: MEDIA_TYPE['ANIME'], }, }) .then((body) => body.Page); } /** * Search for mangas by a search term * @since 1.0.0 * @param {string} search Name of the anime to search for * @param {number} [page=1] Page number to view result of. Defaults to 1 * @param {number} [amount=5] Amount of results per page * @returns {MangaSearch} MangaSearch */ async manga(search: string, page = 1, amount = 5) { if ( !search || typeof search !== 'string' || typeof page !== 'number' || typeof amount !== 'number' ) { throw new TypeError( 'Invalid argument types. Search is a required string, amount and page must be of number types', ); } return await req({ query: media_query, variables: { search: search, page: page, perPage: amount, type: MEDIA_TYPE['MANGA'], }, }) .then((body) => body.Page); } /** * Search for users by a search term * @since 1.0.0 * @param {string} search Name of the anime to search for * @param {number} [page=1] Page number to view result of. Defaults to 1 * @param {number} [amount=5] Amount of results per page * @returns {UserSearch} UserSearch */ async user(search: string, page = 1, amount = 5) { if ( !search || typeof search !== 'string' || typeof page !== 'number' || typeof amount !== 'number' ) { throw new TypeError( 'Invalid argument types. Search is a required string, amount and page must be of number types', ); } return await req({ query: `query ($page: Int, $perPage: Int, $search: String) { Page(page: $page, perPage: $perPage) { pageInfo { total currentPage lastPage hasNextPage perPage } users(search: $search) { id name } } }`, variables: { search: search, page: page, perPage: amount, }, }) .then((body) => body.Page); } /** * Search for staffs by a search term * @since 1.0.0 * @param {string} search Name of the anime to search for * @param {number} [page=1] Page number to view result of. Defaults to 1 * @param {number} [amount=5] Amount of results per page * @returns {StaffSearch} StaffSearch */ async staff(search: string, page = 1, amount = 5) { if ( !search || typeof search !== 'string' || typeof page !== 'number' || typeof amount !== 'number' ) { throw new TypeError( 'Invalid argument types. Search is a required string, amount and page must be of number types', ); } return await req({ query: `query ($page: Int, $perPage: Int, $search: String) { Page(page: $page, perPage: $perPage) { pageInfo { total currentPage lastPage hasNextPage perPage } staff(search: $search) { id name { english: full } } } }`, variables: { search: search, page: page, perPage: amount, }, }) .then((body) => body.Page); } /** * Search for studios by a search term * @since 1.0.0 * @param {string} search Name of the anime to search for * @param {number} [page=1] Page number to view result of. Defaults to 1 * @param {number} [amount=5] Amount of results per page * @returns {StudioSearch} StudioSearch */ async studio(search: string, page = 1, amount = 5) { if ( !search || typeof search !== 'string' || typeof page !== 'number' || typeof amount !== 'number' ) { throw new TypeError( 'Invalid argument types. Search is a required string, amount and page must be of number types', ); } return await req({ query: `query ($page: Int, $perPage: Int, $search: String) { Page(page: $page, perPage: $perPage) { pageInfo { total currentPage lastPage hasNextPage perPage } studios(search: $search) { id name } } }`, variables: { search: search, page: page, perPage: amount, }, }) .then((body) => body.Page); }}
Version Info
External Dependencies