Skip to content

tutkli/jikan-ts

Repository files navigation

jikan-ts

jikan-ts-890w

Language Shield GitHub License Code Style Shield NPM Downloads npm bundle size

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 ky

Types only (zero runtime dependencies)

If you want to use the types and endpoint constants to build your own HTTP client:

npm install @tutkli/jikan-ts

Example

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

About

Jikan API wrapper for Typescript and NodeJS with built in typings.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages