UNPKG

@tutkli/jikan-ts

Version:

Node.js wrapper for the Jikan API with built-in typings.

2 lines (1 loc) 8.79 kB
import{A as R,B as K,C as D,D as Q,E as S,F as v,G as o,H as V,I as k,J as X,u as U,v as c,w as N,x as j,y as F,z as l}from"./chunk-ygw2424n.js";import p from"ky";class Z{cache=new Map;ttl;constructor($={}){this.ttl=$.ttl??300000}get($){let x=this.cache.get($);if(!x)return;if(Date.now()>x.expiry){this.cache.delete($);return}return x.data}set($,x){this.cache.set($,{data:x,expiry:Date.now()+this.ttl})}}var E=($)=>{console.info(`[Request] ${$.method.toUpperCase()} | ${$.url}`)},h=($,x,I)=>{if(I.ok)console.info(`[Request Response] ${$.method.toUpperCase()} | ${$.url}`);else console.error(`[Response Error] CODE ${I.status} | ${I.statusText}`)},m=($)=>{return console.error(`[Request Error] CODE ${$.response?.status??"UNKNOWN"} | ${$.message}`),$};function Y($={}){let x=new Z($.cacheOptions);if($.kyInstance)return{api:$.kyInstance,cache:x};return{api:p.create({prefixUrl:c,headers:{"Content-Type":"application/json"},retry:0,hooks:$.enableLogging?{beforeRequest:[E],afterResponse:[h],beforeError:[m]}:{}}),cache:x}}class H{api;cache;constructor($={}){if($._cache&&$.kyInstance)this.api=$.kyInstance,this.cache=$._cache;else{let{api:x,cache:I}=Y({enableLogging:$.enableLogging,cacheOptions:$.cacheOptions,kyInstance:$.kyInstance});this.api=x,this.cache=I}}async getResource($,x={},I={}){let q=this.replacePathParams($,x),L=this.buildCacheKey(q,I),g=this.cache.get(L);if(g)return g;let r=q.startsWith("/")?q.slice(1):q,C=this.cleanParams(I),P=await this.api.get(r,{searchParams:Object.keys(C).length>0?C:void 0}).json();return this.cache.set(L,P),P}buildCacheKey($,x){let I=Object.entries(x).filter(([,q])=>q!==void 0).sort(([q],[L])=>q.localeCompare(L)).map(([q,L])=>`${q}=${L}`).join("&");return I?`${$}?${I}`:$}cleanParams($){return Object.fromEntries(Object.entries($).filter(([,x])=>x!==void 0))}replacePathParams($,x){let I=$;for(let q of Object.keys(x)){if(!RegExp(`{${q}}`).exec(I))throw Error(`Path does not contain "${q}" parameter.`);I=I.replace(`{${q}}`,String(x[q]))}return I}}class _ extends H{getAnimeFullById($){return this.getResource(U.animeFullById,{id:$})}getAnimeById($){return this.getResource(U.animeById,{id:$})}getAnimeCharacters($){return this.getResource(U.animeCharacters,{id:$})}getAnimeStaff($){return this.getResource(U.animeStaff,{id:$})}getAnimeEpisodes($,x=1){return this.getResource(U.animeEpisodes,{id:$},{page:x})}getAnimeEpisodeById($,x){return this.getResource(U.animeEpisodeById,{id:$,episode:x})}getAnimeNews($,x){return this.getResource(U.animeNews,{id:$},{page:x})}getAnimeForum($,x){return this.getResource(U.animeForum,{id:$},x?{filter:x}:void 0)}getAnimeVideos($){return this.getResource(U.animeVideos,{id:$})}getAnimeEpisodeVideos($,x=1){return this.getResource(U.animeVideosEpisodes,{id:$},{page:x})}getAnimePictures($){return this.getResource(U.animePictures,{id:$})}getAnimeStatistics($){return this.getResource(U.animeStatistics,{id:$})}getAnimeMoreInfo($){return this.getResource(U.animeMoreInfo,{id:$})}getAnimeRecommendations($){return this.getResource(U.animeRecommendations,{id:$})}getAnimeRelations($){return this.getResource(U.animeRelations,{id:$})}getAnimeExternal($){return this.getResource(U.animeExternal,{id:$})}getAnimeStreaming($){return this.getResource(U.animeStreaming,{id:$})}getAnimeThemes($){return this.getResource(U.animeThemes,{id:$})}getAnimeUserUpdates($,x=1){return this.getResource(U.animeUserUpdates,{id:$},{page:x})}getAnimeReviews($,x){return this.getResource(U.animeReviews,{id:$},x)}getAnimeSearch($){return this.getResource(U.animeSearch,{},$)}}class f extends H{getCharacterFullById($){return this.getResource(N.characterFullById,{id:$})}getCharacterById($){return this.getResource(N.characterById,{id:$})}getCharacterAnime($){return this.getResource(N.characterAnime,{id:$})}getCharacterManga($){return this.getResource(N.charactersManga,{id:$})}getCharacterVoiceActors($){return this.getResource(N.characterVoiceActors,{id:$})}getCharacterPictures($){return this.getResource(N.characterPictures,{id:$})}getCharacterSearch($){return this.getResource(N.characterSearch,{},$)}}class y extends H{getClubsById($){return this.getResource(j.clubById,{id:$})}getClubMembers($,x={}){return this.getResource(j.clubMembers,{id:$},x)}getClubStaff($){return this.getResource(j.clubStaff,{id:$})}getClubRelations($){return this.getResource(j.clubRelations,{id:$})}getClubSearch($={}){return this.getResource(j.clubSearch,{},$)}}class J extends H{getAnimeGenres($){return this.getResource(F.animeGenres,{},{filter:$})}getMangaGenres($){return this.getResource(F.mangaGenres,{},{filter:$})}}class z extends H{getMagazines($={}){return this.getResource(l.magazines,{},$)}}class W extends H{getMangaFullById($){return this.getResource(R.mangaFullById,{id:$})}getMangaById($){return this.getResource(R.mangaById,{id:$})}getMangaCharacters($){return this.getResource(R.mangaCharacters,{id:$})}getMangaNews($){return this.getResource(R.mangaNews,{id:$})}getMangaTopics($,x){return this.getResource(R.mangaTopics,{id:$},x?{filter:x}:void 0)}getMangaPictures($){return this.getResource(R.mangaPictures,{id:$})}getMangaStatistics($){return this.getResource(R.mangaStatistics,{id:$})}getMangaMoreInfo($){return this.getResource(R.mangaMoreInfo,{id:$})}getMangaRecommendations($){return this.getResource(R.mangaRecommendations,{id:$})}getMangaRelations($){return this.getResource(R.mangaRelations,{id:$})}getMangaExternal($){return this.getResource(R.mangaExternal,{id:$})}getMangaUserUpdates($,x=1){return this.getResource(R.mangaUserUpdates,{id:$},{page:x})}getMangaReviews($,x){return this.getResource(R.mangaReviews,{id:$},x)}getMangaSearch($){return this.getResource(R.mangaSearch,{},$)}}class B extends H{getPersonFullById($){return this.getResource(K.personFullById,{id:$})}getPersonById($){return this.getResource(K.personById,{id:$})}getPersonAnime($){return this.getResource(K.personAnime,{id:$})}getPersonVoices($){return this.getResource(K.personVoices,{id:$})}getPersonManga($){return this.getResource(K.personManga,{id:$})}getPersonPictures($){return this.getResource(K.personPictures,{id:$})}getPeopleSearch($){return this.getResource(K.peopleSearch,{},$)}}class T extends H{getProducerFullById($){return this.getResource(D.producerFullById,{id:$})}getProducerById($){return this.getResource(D.producerById,{id:$})}getProducerExternal($){return this.getResource(D.producerExternal,{id:$})}getProducersSearch($){return this.getResource(D.producersSearch,{},$)}}class G extends H{getRandomAnime(){return this.getResource(Q.randomAnime)}getRandomManga(){return this.getResource(Q.randomManga)}getRandomCharacters(){return this.getResource(Q.randomCharacters)}getRandomPerson(){return this.getResource(Q.randomPeople)}}class w extends H{getRecentAnimeRecommendations($){return this.getResource(S.recentAnimeRecommendations,{},$)}getRecentMangaRecommendations($){return this.getResource(S.recentMangaRecommendations,{},$)}}class A extends H{getRecentAnimeReviews($){return this.getResource(v.animeReviews,{},$)}getRecentMangaReviews($){return this.getResource(v.mangaReviews,{},$)}}class u extends H{getSchedules($){return this.getResource(o.schedules,{},$)}}class M extends H{getSeason($,x,I){return this.getResource(V.season,{year:$,season:x},I)}getSeasonNow($){return this.getResource(V.seasonNow,{},$)}getSeasonsList(){return this.getResource(V.seasonsList)}getSeasonUpcoming($){return this.getResource(V.seasonUpcoming,{},$)}}class b extends H{getTopAnime($){return this.getResource(k.topAnime,{},$)}getTopManga($){return this.getResource(k.topManga,{},$)}getTopCharacters($){return this.getResource(k.topCharacters,{},$)}getTopPeople($){return this.getResource(k.topPeople,{},$)}getTopReviews($){return this.getResource(k.topReviews,{},$)}}class O extends H{getWatchRecentEpisodes(){return this.getResource(X.watchRecentEpisodes)}getWatchPopularEpisodes(){return this.getResource(X.watchPopularEpisodes)}getWatchRecentPromos($={}){return this.getResource(X.watchRecentPromos,{},$)}getWatchPopularPromos(){return this.getResource(X.watchPopularPromos)}}class d{anime;characters;clubs;genres;magazines;manga;people;producers;top;schedules;seasons;random;recommendations;reviews;watch;constructor($={}){let{api:x,cache:I}=Y({enableLogging:$.enableLogging,cacheOptions:$.cacheOptions,kyInstance:$.kyInstance}),q={...$,kyInstance:x,_cache:I};this.anime=new _(q),this.characters=new f(q),this.clubs=new y(q),this.genres=new J(q),this.magazines=new z(q),this.manga=new W(q),this.people=new B(q),this.producers=new T(q),this.top=new b(q),this.schedules=new u(q),this.seasons=new M(q),this.random=new G(q),this.recommendations=new w(q),this.reviews=new A(q),this.watch=new O(q)}}export{E as a,h as b,m as c,H as d,_ as e,f,y as g,J as h,z as i,W as j,B as k,T as l,G as m,w as n,A as o,u as p,M as q,b as r,O as s,d as t};