UNPKG

genshin-manager

Version:

<div align="center"> <p> <a href="https://www.npmjs.com/package/genshin-manager"><img src="https://img.shields.io/npm/v/genshin-manager.svg?maxAge=3600" alt="npm version" /></a> <a href="https://www.npmjs.com/package/genshin-manager"><img src="https:

142 lines (141 loc) 4.09 kB
import { CharacterDetail } from '../models/enka/CharacterDetail'; import { EnkaAccount } from '../models/enka/EnkaAccount'; import { GenshinAccount } from '../models/enka/GenshinAccount'; import { PlayerDetail } from '../models/enka/PlayerDetail'; import { APIEnkaStatus } from '../types/enkaNetwork'; import { PromiseEventEmitter } from '../utils/PromiseEventEmitter'; /** * cached EnkaData type */ export interface EnkaData { /** * UID */ readonly uid: number; /** * Player detail */ readonly playerDetail: PlayerDetail; /** * Character details */ readonly characterDetails: CharacterDetail[]; /** * UID owner Enka Account */ readonly owner?: EnkaAccount; /** * NextShowCaseDate */ readonly nextShowCaseDate: Date; /** * EnkaNetwork URL */ readonly url: string; } /** * EnkaManager events * @see {@link EnkaManager} */ export declare enum EnkaManagerEvents { /** * When new data is added to the cache, fires * @event GET_NEW_ENKA_DATA * @listener * | param | type | description | * | --- | --- | --- | * | data | {@link EnkaData} | New data added to the cache | */ GET_NEW_ENKA_DATA = "GET_NEW_ENKA_DATA" } interface EnkaManagerEventMap { GET_NEW_ENKA_DATA: [data: EnkaData]; } /** * Class for fetching EnkaData from enka.network */ export declare class EnkaManager extends PromiseEventEmitter<EnkaManagerEventMap, EnkaManagerEvents> { /** * URL of enka.network */ private static readonly ENKA_BASE_URL; /** * URL of status.enka.network */ private static readonly ENKA_STATUS_BASE_URL; /** * Default fetch option */ private static readonly defaultFetchOption; /** * Cache of EnkaData * @key UID * @value Cached EnkaData */ private readonly cache; /** * Create a EnkaManager */ constructor(); /** * Fetch All from enka.network * @description The data fetched by this method is stored as a temporary cache. * The storage period depends on ttl. * @param uid UID * @param fetchOption Fetch option * @returns EnkaData */ fetchAll(uid: number, fetchOption?: RequestInit): Promise<EnkaData>; /** * Fetch PlayerDetail from enka.network * @description The data fetched by this method is stored as a temporary cache. * The storage period depends on ttl. * @param uid UID * @param fetchOption Fetch option * @returns PlayerDetail */ fetchPlayerDetail(uid: number, fetchOption?: RequestInit): Promise<PlayerDetail>; /** * Clear cache over nextShowCaseDate */ clearCacheOverNextShowCaseDate(): void; /** * Fetch EnkaAccount from enka.network * @description Data fetched by this method is not stored as a temporary cache. * @param username Enka Account Username * @param fetchOption Fetch option * @returns EnkaAccount */ fetchEnkaAccount(username: string, fetchOption?: RequestInit): Promise<EnkaAccount>; /** * Fetch GenshinAccounts from enka.network * @description Data fetched by this method is not stored as a temporary cache. * @param username Enka Account Username * @param fetchOption Fetch option * @returns GenshinAccounts */ fetchGenshinAccounts(username: string, fetchOption?: RequestInit): Promise<GenshinAccount[]>; /** * Fetch Status from 1 hour ago to now * @param fetchOption Fetch option * @returns Status from 1 hour ago to now */ fetchAllStatus(fetchOption?: RequestInit): Promise<{ [dateText: string]: APIEnkaStatus; }>; /** * Fetch now Status * @param fetchOption Fetch option * @returns Now status */ fetchNowStatus(fetchOption?: RequestInit): Promise<APIEnkaStatus>; /** * Fetch UIDEndPoint from URL * @param uid UID * @param url URL * @param fetchOption Fetch option * @returns EnkaData */ private fetchUID; } export {};