UNPKG

shikimori-graphql-api-lightweight-client

Version:

Lightweight Shikimori GraphQL API client. Exports only minimal Fetch call. Fully compatible with AWS LLRT.

72 lines (50 loc) 2.08 kB
# Shikimori GraphQL API Lightweight Client This is typed lightweight client for GraphQL. It contains only methods and types and exports only `fetch` calls to make requests. ## Installation ```bash npm install shikimori-graphql-api-lightweight-client npm install -D graphql # for types, if needed ``` ## Usage The library provides 2 types of methods: api endpoints and the `client_` methods. ### Client methods The `client_` methods are used to set up the client. They are: - `client_setUserAgent(agent: string)`: Sets the user agent for the client (required, according to Shikimori API). - `client_setAuthToken(token: string)`: Sets the authentication token for the client. - `client_setCustomFetch(callback)`: Sets a custom fetch function for the client. ### API methods The API methods are used to make requests to the Shikimori API. They accepts 2 arguments: 1. `args` - The arguments for the request (e.g. `search`, `page`, `limit`, etc.). 2. `resultDescription` - The description of the result. This is an _object_, where the keys are the names of the fields in the result and the values are always `1`. For nested objects, the value is an object with the same structure. Available API methods are: - animes - characters - contests - currentUser - genres - mangas - people - userRates - users ### Examples ```typescript import { animes, client_setUserAgent } from 'shikimori-graphql-api-lightweight-client'; import { client_setAuthToken } from './core'; client_setUserAgent('my-app/1.0'); // client_setAuthToken('your_auth_token'); - optional, for authenticated requests const result = await animes( { ids: '1' }, { malId: 1, genres: { name: 1 } }); console.log(result); ``` ## Features - No dependencies. - When using code minifiers, only the fetch command is exported. - Can be used in browser and Node.js. - Fully compatible with AWS LLRT. - Fully typed API. ## License This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details.