@tutkli/jikan-ts 2.0.2 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -75,6 +75,20 @@ const animeClient = new AnimeClient({
75
75
  );
76
76
  ```
77
77
 
78
+ ### Custom Axios instance
79
+
80
+ Jikan uses `axios` as an `http` client and if you are not satisfied with the default client settings, then you can build your instance by passing it to the optional `axiosInstance` argument
81
+
82
+ ```ts
83
+ import { AnimeClient } from '@tutkli/jikan-ts';
84
+ import Axios from 'axios';
85
+
86
+ const animeClient = new AnimeClient({
87
+ axiosInstance: Axios.create({ ... })
88
+ }
89
+ );
90
+ ```
91
+
78
92
  For more information, check out the [axios-cache-interceptor Documentation](https://axios-cache-interceptor.js.org/).
79
93
 
80
94
  ### Logging
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
+ import { AxiosInstance, AxiosError } from 'axios';
1
2
  import { CacheOptions, InternalCacheRequestConfig, CacheAxiosResponse } from 'axios-cache-interceptor';
2
- import { AxiosError } from 'axios';
3
3
 
4
4
  interface JikanImages {
5
5
  jpg: JikanImagesCollection;
@@ -239,7 +239,7 @@ interface Anime {
239
239
  popularity: number;
240
240
  members: number;
241
241
  favorites: number;
242
- synopsis: string;
242
+ synopsis?: string;
243
243
  background: string;
244
244
  season?: AnimeSeason;
245
245
  year: number;
@@ -486,6 +486,11 @@ interface ClientArgs {
486
486
  * Location of the JikanAPI. Leave empty to use the official JikanAPI instance.
487
487
  */
488
488
  baseURL: string;
489
+ /**
490
+ * **Axios Instance**
491
+ * Еhe ability to build your own axios instance if you need it
492
+ */
493
+ axiosInstance?: AxiosInstance;
489
494
  }
490
495
  /**
491
496
  * **Base Client**
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var C="https://api.jikan.moe/v4";var t={animeFullById:"/anime/{id}/full",animeById:"/anime/{id}",animeCharacters:"/anime/{id}/characters",animeStaff:"/anime/{id}/staff",animeEpisodes:"/anime/{id}/episodes",animeEpisodeById:"/anime/{id}/episodes/{episode}",animeNews:"/anime/{id}/news",animeForum:"/anime/{id}/forum",animeVideos:"/anime/{id}/videos",animeVideosEpisodes:"/anime/{id}/videos/episodes",animePictures:"/anime/{id}/pictures",animeStatistics:"/anime/{id}/statistics",animeMoreInfo:"/anime/{id}/moreinfo",animeRecommendations:"/anime/{id}/recommendations",animeUserUpdates:"/anime/{id}/userupdates",animeReviews:"/anime/{id}/reviews",animeRelations:"/anime/{id}/relations",animeThemes:"/anime/{id}/themes",animeExternal:"/anime/{id}/external",animeStreaming:"/anime/{id}/streaming",animeSearch:"/anime"};var s={characterFullById:"/characters/{id}/full",characterById:"/characters/{id}",characterAnime:"/characters/{id}/anime",charactersManga:"/characters/{id}/manga",characterVoiceActors:"/characters/{id}/voices",characterPictures:"/characters/{id}/pictures",characterSearch:"/characters"};var A={animeGenres:"/genres/anime",mangaGenres:"/genres/manga"};var o={mangaSearch:"/manga",mangaFullById:"/manga/{id}/full",mangaById:"/manga/{id}",mangaCharacters:"/manga/{id}/characters",mangaNews:"manga/{id}/news",mangaTopics:"/manga/{id}/forum",mangaPictures:"/manga/{id}/pictures",mangaStatistics:"/manga/{id}/statistics",mangaMoreInfo:"/manga/{id}/moreinfo",mangaRelations:"manga/{id}/relations",mangaExternal:"/manga/{id}/external",mangaRecommendations:"/manga/{id}/recommendations"};var m={season:"/seasons/{year}/{season}",seasonNow:"/seasons/now",seasonsList:"/seasons",seasonUpcoming:"/seasons/upcoming"};var p={topAnime:"/top/anime",topManga:"/top/manga",topCharacters:"/top/characters"};var u={randomAnime:"/random/anime",randomManga:"/random/manga",randomCharacters:"/random/characters"};import I from"axios";import{setupCache as w}from"axios-cache-interceptor";var E=r=>(console.info(`[Request] ${r.method?.toUpperCase()??""} | ${r.url??""}`),r),S=r=>{throw console.error(`[Request Error] CODE ${r.code??"UNKNOWN"} | ${r.message}`),r},M=r=>(console.info(`[Request Response] ${r.config.method?.toUpperCase()??""} | ${r.config.url??""}`,r.data),r),P=r=>{throw console.error(`[ Response Error ] CODE ${r.code??"UNKNOWN"} | ${r.message}`),r};var n=class{api;constructor(e={}){this.api=w(I.create({baseURL:e.baseURL??C,headers:{"Content-Type":"application/json"}}),{...e.cacheOptions,cacheTakeover:!1}),e.enableLogging&&this.addLoggingInterceptors()}async getResource(e,a={},i={}){return(await this.api.get(this.replacePathParams(e,a),{params:i})).data}replacePathParams(e,a){let i=e;for(let c of Object.keys(a)){if(!RegExp(`{${c}}`).exec(i))throw new Error(`Path does not contain "${c}" parameter.`);i=i.replace(`{${c}}`,String(a[c]))}return i}addLoggingInterceptors(){this.api.interceptors.request.use(e=>E(e),e=>S(e)),this.api.interceptors.response.use(e=>M(e),e=>P(e))}};var g=class extends n{getAnimeFullById(e){return this.getResource(t.animeFullById,{id:e})}getAnimeById(e){return this.getResource(t.animeById,{id:e})}getAnimeCharacters(e){return this.getResource(t.animeCharacters,{id:e})}getAnimeStaff(e){return this.getResource(t.animeStaff,{id:e})}getAnimeEpisodes(e,a=1){return this.getResource(t.animeEpisodes,{id:e},{page:a})}getAnimeEpisodeById(e,a){return this.getResource(t.animeEpisodeById,{id:e,episode:a})}getAnimeNews(e,a){return this.getResource(t.animeNews,{id:e},{page:a})}getAnimeForum(e,a){return this.getResource(t.animeForum,{id:e},a?{filter:a}:void 0)}getAnimeVideos(e){return this.getResource(t.animeVideos,{id:e})}getAnimeEpisodeVideos(e,a=1){return this.getResource(t.animeVideosEpisodes,{id:e},{page:a})}getAnimePictures(e){return this.getResource(t.animePictures,{id:e})}getAnimeStatistics(e){return this.getResource(t.animeStatistics,{id:e})}getAnimeMoreInfo(e){return this.getResource(t.animeMoreInfo,{id:e})}getAnimeRecommendations(e){return this.getResource(t.animeRecommendations,{id:e})}getAnimeRelations(e){return this.getResource(t.animeRelations,{id:e})}getAnimeExternal(e){return this.getResource(t.animeExternal,{id:e})}getAnimeSearch(e){return this.getResource(t.animeSearch,{},e)}};var l=class extends n{getCharacterFullById(e){return this.getResource(s.characterFullById,{id:e})}getCharacterById(e){return this.getResource(s.characterById,{id:e})}getCharacterAnime(e){return this.getResource(s.characterAnime,{id:e})}getCharacterManga(e){return this.getResource(s.charactersManga,{id:e})}getCharacterVoiceActors(e){return this.getResource(s.characterVoiceActors,{id:e})}getCharacterPictures(e){return this.getResource(s.characterPictures,{id:e})}getCharacterSearch(e){return this.getResource(s.characterSearch,{},e)}};var h=class extends n{getAnimeGenres(e){return this.getResource(A.animeGenres,{},{filter:e})}getMangaGenres(e){return this.getResource(A.mangaGenres,{},{filter:e})}};var d=class extends n{getMangaFullById(e){return this.getResource(o.mangaFullById,{id:e})}getMangaById(e){return this.getResource(o.mangaById,{id:e})}getMangaCharacters(e){return this.getResource(o.mangaCharacters,{id:e})}getMangaNews(e){return this.getResource(o.mangaNews,{id:e})}getMangaTopics(e,a){return this.getResource(o.mangaTopics,{id:e},a?{filter:a}:void 0)}getMangaPictures(e){return this.getResource(o.mangaPictures,{id:e})}getMangaStatistics(e){return this.getResource(o.mangaStatistics,{id:e})}getMangaMoreInfo(e){return this.getResource(o.mangaMoreInfo,{id:e})}getMangaRecommendations(e){return this.getResource(o.mangaRecommendations,{id:e})}getMangaRelations(e){return this.getResource(o.mangaRelations,{id:e})}getMangaExternal(e){return this.getResource(o.mangaExternal,{id:e})}getMangaSearch(e){return this.getResource(o.mangaSearch,{},e)}};var f=class extends n{getRandomAnime(){return this.getResource(u.randomAnime)}getRandomManga(){return this.getResource(u.randomManga)}getRandomCharacters(){return this.getResource(u.randomCharacters)}};var y={schedules:"/schedules"};var x=class extends n{getSchedules(e){return this.getResource(y.schedules,{},e)}};var R=class extends n{getSeason(e,a,i){return this.getResource(m.season,{year:e,season:a},i)}getSeasonNow(e){return this.getResource(m.seasonNow,{},e)}getSeasonsList(){return this.getResource(m.seasonsList)}getSeasonUpcoming(e){return this.getResource(m.seasonUpcoming,{},e)}};var b=class extends n{getTopAnime(e){return this.getResource(p.topAnime,{},e)}getTopManga(e){return this.getResource(p.topManga,{},e)}getTopCharacters(e){return this.getResource(p.topCharacters,{},e)}};var k=class{anime;characters;genres;manga;top;schedules;seasons;random;constructor(e){this.anime=new g(e),this.characters=new l(e),this.genres=new h(e),this.manga=new d(e),this.top=new b(e),this.schedules=new x(e),this.seasons=new R(e),this.random=new f(e)}};export{g as AnimeClient,t as AnimeEndpoints,n as BaseClient,C as BaseURL,l as CharactersClient,s as CharactersEndpoints,h as GenresClient,A as GenresEndpoints,k as JikanClient,d as MangaClient,o as MangaEndpoints,f as RandomClient,u as RandomEndpoints,x as SchedulesClient,R as SeasonsClient,m as SeasonsEndpoints,b as TopClient,p as TopEndpoints,E as handleRequest,S as handleRequestError,M as handleResponse,P as handleResponseError};
1
+ var C="https://api.jikan.moe/v4";var t={animeFullById:"/anime/{id}/full",animeById:"/anime/{id}",animeCharacters:"/anime/{id}/characters",animeStaff:"/anime/{id}/staff",animeEpisodes:"/anime/{id}/episodes",animeEpisodeById:"/anime/{id}/episodes/{episode}",animeNews:"/anime/{id}/news",animeForum:"/anime/{id}/forum",animeVideos:"/anime/{id}/videos",animeVideosEpisodes:"/anime/{id}/videos/episodes",animePictures:"/anime/{id}/pictures",animeStatistics:"/anime/{id}/statistics",animeMoreInfo:"/anime/{id}/moreinfo",animeRecommendations:"/anime/{id}/recommendations",animeUserUpdates:"/anime/{id}/userupdates",animeReviews:"/anime/{id}/reviews",animeRelations:"/anime/{id}/relations",animeThemes:"/anime/{id}/themes",animeExternal:"/anime/{id}/external",animeStreaming:"/anime/{id}/streaming",animeSearch:"/anime"};var s={characterFullById:"/characters/{id}/full",characterById:"/characters/{id}",characterAnime:"/characters/{id}/anime",charactersManga:"/characters/{id}/manga",characterVoiceActors:"/characters/{id}/voices",characterPictures:"/characters/{id}/pictures",characterSearch:"/characters"};var A={animeGenres:"/genres/anime",mangaGenres:"/genres/manga"};var o={mangaSearch:"/manga",mangaFullById:"/manga/{id}/full",mangaById:"/manga/{id}",mangaCharacters:"/manga/{id}/characters",mangaNews:"manga/{id}/news",mangaTopics:"/manga/{id}/forum",mangaPictures:"/manga/{id}/pictures",mangaStatistics:"/manga/{id}/statistics",mangaMoreInfo:"/manga/{id}/moreinfo",mangaRelations:"manga/{id}/relations",mangaExternal:"/manga/{id}/external",mangaRecommendations:"/manga/{id}/recommendations"};var m={season:"/seasons/{year}/{season}",seasonNow:"/seasons/now",seasonsList:"/seasons",seasonUpcoming:"/seasons/upcoming"};var p={topAnime:"/top/anime",topManga:"/top/manga",topCharacters:"/top/characters"};var u={randomAnime:"/random/anime",randomManga:"/random/manga",randomCharacters:"/random/characters"};import k from"axios";import{setupCache as w}from"axios-cache-interceptor";var E=r=>(console.info(`[Request] ${r.method?.toUpperCase()??""} | ${r.url??""}`),r),S=r=>{throw console.error(`[Request Error] CODE ${r.code??"UNKNOWN"} | ${r.message}`),r},M=r=>(console.info(`[Request Response] ${r.config.method?.toUpperCase()??""} | ${r.config.url??""}`,r.data),r),P=r=>{throw console.error(`[ Response Error ] CODE ${r.code??"UNKNOWN"} | ${r.message}`),r};var n=class{api;constructor(e={}){let a=e?.axiosInstance?e.axiosInstance:k.create({baseURL:e.baseURL??C,headers:{"Content-Type":"application/json"}});this.api=w(a,{...e.cacheOptions,cacheTakeover:!1}),e.enableLogging&&this.addLoggingInterceptors()}async getResource(e,a={},i={}){return(await this.api.get(this.replacePathParams(e,a),{params:i})).data}replacePathParams(e,a){let i=e;for(let c of Object.keys(a)){if(!RegExp(`{${c}}`).exec(i))throw new Error(`Path does not contain "${c}" parameter.`);i=i.replace(`{${c}}`,String(a[c]))}return i}addLoggingInterceptors(){this.api.interceptors.request.use(e=>E(e),e=>S(e)),this.api.interceptors.response.use(e=>M(e),e=>P(e))}};var g=class extends n{getAnimeFullById(e){return this.getResource(t.animeFullById,{id:e})}getAnimeById(e){return this.getResource(t.animeById,{id:e})}getAnimeCharacters(e){return this.getResource(t.animeCharacters,{id:e})}getAnimeStaff(e){return this.getResource(t.animeStaff,{id:e})}getAnimeEpisodes(e,a=1){return this.getResource(t.animeEpisodes,{id:e},{page:a})}getAnimeEpisodeById(e,a){return this.getResource(t.animeEpisodeById,{id:e,episode:a})}getAnimeNews(e,a){return this.getResource(t.animeNews,{id:e},{page:a})}getAnimeForum(e,a){return this.getResource(t.animeForum,{id:e},a?{filter:a}:void 0)}getAnimeVideos(e){return this.getResource(t.animeVideos,{id:e})}getAnimeEpisodeVideos(e,a=1){return this.getResource(t.animeVideosEpisodes,{id:e},{page:a})}getAnimePictures(e){return this.getResource(t.animePictures,{id:e})}getAnimeStatistics(e){return this.getResource(t.animeStatistics,{id:e})}getAnimeMoreInfo(e){return this.getResource(t.animeMoreInfo,{id:e})}getAnimeRecommendations(e){return this.getResource(t.animeRecommendations,{id:e})}getAnimeRelations(e){return this.getResource(t.animeRelations,{id:e})}getAnimeExternal(e){return this.getResource(t.animeExternal,{id:e})}getAnimeSearch(e){return this.getResource(t.animeSearch,{},e)}};var h=class extends n{getCharacterFullById(e){return this.getResource(s.characterFullById,{id:e})}getCharacterById(e){return this.getResource(s.characterById,{id:e})}getCharacterAnime(e){return this.getResource(s.characterAnime,{id:e})}getCharacterManga(e){return this.getResource(s.charactersManga,{id:e})}getCharacterVoiceActors(e){return this.getResource(s.characterVoiceActors,{id:e})}getCharacterPictures(e){return this.getResource(s.characterPictures,{id:e})}getCharacterSearch(e){return this.getResource(s.characterSearch,{},e)}};var l=class extends n{getAnimeGenres(e){return this.getResource(A.animeGenres,{},{filter:e})}getMangaGenres(e){return this.getResource(A.mangaGenres,{},{filter:e})}};var d=class extends n{getMangaFullById(e){return this.getResource(o.mangaFullById,{id:e})}getMangaById(e){return this.getResource(o.mangaById,{id:e})}getMangaCharacters(e){return this.getResource(o.mangaCharacters,{id:e})}getMangaNews(e){return this.getResource(o.mangaNews,{id:e})}getMangaTopics(e,a){return this.getResource(o.mangaTopics,{id:e},a?{filter:a}:void 0)}getMangaPictures(e){return this.getResource(o.mangaPictures,{id:e})}getMangaStatistics(e){return this.getResource(o.mangaStatistics,{id:e})}getMangaMoreInfo(e){return this.getResource(o.mangaMoreInfo,{id:e})}getMangaRecommendations(e){return this.getResource(o.mangaRecommendations,{id:e})}getMangaRelations(e){return this.getResource(o.mangaRelations,{id:e})}getMangaExternal(e){return this.getResource(o.mangaExternal,{id:e})}getMangaSearch(e){return this.getResource(o.mangaSearch,{},e)}};var f=class extends n{getRandomAnime(){return this.getResource(u.randomAnime)}getRandomManga(){return this.getResource(u.randomManga)}getRandomCharacters(){return this.getResource(u.randomCharacters)}};var I={schedules:"/schedules"};var x=class extends n{getSchedules(e){return this.getResource(I.schedules,{},e)}};var R=class extends n{getSeason(e,a,i){return this.getResource(m.season,{year:e,season:a},i)}getSeasonNow(e){return this.getResource(m.seasonNow,{},e)}getSeasonsList(){return this.getResource(m.seasonsList)}getSeasonUpcoming(e){return this.getResource(m.seasonUpcoming,{},e)}};var b=class extends n{getTopAnime(e){return this.getResource(p.topAnime,{},e)}getTopManga(e){return this.getResource(p.topManga,{},e)}getTopCharacters(e){return this.getResource(p.topCharacters,{},e)}};var y=class{anime;characters;genres;manga;top;schedules;seasons;random;constructor(e){this.anime=new g(e),this.characters=new h(e),this.genres=new l(e),this.manga=new d(e),this.top=new b(e),this.schedules=new x(e),this.seasons=new R(e),this.random=new f(e)}};export{g as AnimeClient,t as AnimeEndpoints,n as BaseClient,C as BaseURL,h as CharactersClient,s as CharactersEndpoints,l as GenresClient,A as GenresEndpoints,y as JikanClient,d as MangaClient,o as MangaEndpoints,f as RandomClient,u as RandomEndpoints,x as SchedulesClient,R as SeasonsClient,m as SeasonsEndpoints,b as TopClient,p as TopEndpoints,E as handleRequest,S as handleRequestError,M as handleResponse,P as handleResponseError};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tutkli/jikan-ts",
3
- "version": "2.0.2",
3
+ "version": "2.1.0",
4
4
  "description": "Node.js wrapper for the Jikan API with built-in typings.",
5
5
  "source": "src/index.ts",
6
6
  "main": "dist/index.js",
@@ -9,7 +9,7 @@
9
9
  "scripts": {
10
10
  "prepare": "git config core.hookspath .githooks",
11
11
  "build": "tsup --config tsup.config.ts",
12
- "prepublishOnly": "yarn run build",
12
+ "prepublishOnly": "bun run build",
13
13
  "test:ci": "vitest --silent --run",
14
14
  "test:coverage": "vitest run --coverage",
15
15
  "test:dev": "vitest",
@@ -44,11 +44,11 @@
44
44
  "@types/node": "20.12.10",
45
45
  "@vitest/coverage-v8": "^1.6.0",
46
46
  "@vitest/ui": "^1.6.0",
47
- "auto-changelog": "^2.4.0",
48
- "axios": "^1.6.8",
49
- "axios-cache-interceptor": "^1.5.2",
50
- "lint-staged": "^15.2.2",
51
- "tsup": "^8.0.2",
47
+ "auto-changelog": "^2.5.0",
48
+ "axios": "^1.7.7",
49
+ "axios-cache-interceptor": "^1.6.1",
50
+ "lint-staged": "^15.2.10",
51
+ "tsup": "^8.3.0",
52
52
  "typescript": "5.4.5",
53
53
  "vitest": "^1.6.0"
54
54
  }