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
TypeScript
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 {};