UNPKG

@tutkli/jikan-ts

Version:

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

126 lines (85 loc) 3.52 kB
# jikan-ts ![jikan-ts-890w](https://user-images.githubusercontent.com/49206247/207465731-9908e843-7c8d-4e05-838b-41bcd8c677f8.png) <p align="center"> ![Language Shield](https://img.shields.io/badge/language-typescript-blue?style=for-the-badge) ![GitHub License](https://img.shields.io/github/license/tutkli/jikan-ts?style=for-the-badge&color=blueviolet) ![Code Style Shield](https://img.shields.io/badge/code%20style-Oxfmt-60A5FA?style=for-the-badge) ![NPM Downloads](https://img.shields.io/npm/dt/%40tutkli%2Fjikan-ts?style=for-the-badge&color=red&logo=npm&link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2F%40tutkli%2Fjikan-ts) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/%40tutkli%2Fjikan-ts?style=for-the-badge&color=darkgreen&link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2F%40tutkli%2Fjikan-ts) </p> > 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) ```bash 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: ```bash npm install @tutkli/jikan-ts ``` ## Example ### Using the types-only import ```ts 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** ```ts import { AnimeClient, JikanResponse, Anime } from '@tutkli/jikan-ts' const animeClient = new AnimeClient() animeClient.getAnimeById(1).then((response: JikanResponse<Anime>) => { /* ... */ }) ``` ### Using the **JikanClient** ```ts 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: ```ts import { AnimeClient } from '@tutkli/jikan-ts' const animeClient = new AnimeClient({ cacheOptions: { ttl: 10 * 60 * 1000 } // 10 minutes }) ``` ### Custom Ky Instance Jikan-ts uses [Ky](https://github.com/sindresorhus/ky) as its HTTP client. You can provide your own Ky instance via the optional `kyInstance` argument: ```ts 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`. ```ts import { AnimeClient } from '@tutkli/jikan-ts' const animeClient = new AnimeClient({ enableLogging: true }) ``` ## Leave your feedback - Did you find this project useful? [Leave a ⭐](https://github.com/tutkli/jikan-ts) - Found a problem? [Create an issue 🔎](https://github.com/tutkli/jikan-ts/issues) - Want to contribute? [Submit a PR 📑](https://github.com/tutkli/jikan-ts/pulls)