@tutkli/jikan-ts
v3.0.0
Published
Node.js wrapper for the Jikan API with built-in typings.
Maintainers
Readme
jikan-ts

Jikan API wrapper for TypeScript and Node.js with built-in typing.
Features
- 💅 Fully typed
- ♻ Built-in in-memory response cache (TTL-based)
- 📄 Request logging
- 📦 ESM with tree shaking support
Installation
Full client (with ky)
npm install @tutkli/jikan-ts kyTypes only (zero runtime dependencies)
If you want to use the types and endpoint constants to build your own HTTP client:
npm install @tutkli/jikan-tsExample
Using the types-only import
import type { Anime, JikanResponse } from '@tutkli/jikan-ts/types'
import { AnimeEndpoints, BASE_URL } from '@tutkli/jikan-ts/types'
// Build your own HTTP client using the provided types and endpoints
const response = await fetch(
`${BASE_URL}${AnimeEndpoints.AnimeById.replace('{id}', '1')}`
)
const data: JikanResponse<Anime> = await response.json()Using a specific client, like AnimeClient
import { AnimeClient, JikanResponse, Anime } from '@tutkli/jikan-ts'
const animeClient = new AnimeClient()
animeClient.getAnimeById(1).then((response: JikanResponse<Anime>) => {
/* ... */
})Using the JikanClient
import { JikanClient, JikanResponse, Anime } from '@tutkli/jikan-ts'
const jikanClient = new JikanClient()
jikanClient.anime.getAnimeById(1).then((response: JikanResponse<Anime>) => {
/* ... */
})Client configuration
Cache Configuration
Jikan-ts uses a built-in in-memory cache with TTL-based expiry (default: 5 minutes).
To customize the cache, pass the cacheOptions argument when instantiating a client:
import { AnimeClient } from '@tutkli/jikan-ts'
const animeClient = new AnimeClient({
cacheOptions: { ttl: 10 * 60 * 1000 } // 10 minutes
})Custom Ky Instance
Jikan-ts uses Ky as its HTTP client. You can provide your own Ky instance via the optional kyInstance argument:
import { AnimeClient } from '@tutkli/jikan-ts'
import ky from 'ky'
const animeClient = new AnimeClient({
kyInstance: ky.create({
/* ... */
})
})Logging
To enable logging, pass the enableLogging argument as true.
import { AnimeClient } from '@tutkli/jikan-ts'
const animeClient = new AnimeClient({
enableLogging: true
})Leave your feedback
- Did you find this project useful? Leave a ⭐
- Found a problem? Create an issue 🔎
- Want to contribute? Submit a PR 📑
