- Notifications
You must be signed in to change notification settings - Fork 358
Open
Description
定义了一下browser-tool的类型,需要的同志可以自取
declare module 'browser-tool' { type UnionToIntersection<U> = ( U extends any ? (k: U) => void : never ) extends (k: infer I) => void ? I : never; interface BrowserParser { parse(ua: string): { browser: string; browserVersion: string; engine: string; isWebview: boolean; isRobot: boolean; }; getInfo(): Promise< ReturnType<BrowserParser['parse']> & { cookieEnabled: boolean; userAgent: string; } >; } interface SystemParser { parse(ua: string): { system: string; systemVersion: string; platform: string; architecture: string; bitness: number; } getInfo(): Promise<ReturnType<SystemParser['parse']>>; } interface DeviceParser { parse(ua: string): { device: string; } getInfo(): Promise<ReturnType<DeviceParser['parse']>> & { devicePixelRatio: number; deviceMemory: number; }; } interface GpuParser { parse(): Record<string, never>; getInfo(): Promise<{ gpu: string; gpuModel: string; }>; } interface NetworkParser { parse(): Record<string, never>; getInfo(): Promise<{ network: string; isOnline: boolean; ip: string; }>; } interface BatteryParser { parse(): Record<string, never>; getInfo(): Promise<{ isCharging: boolean; battery: string; }>; } interface ScreenParser { parse(): Record<string, never>; getInfo(): Promise<{ screenWidth: number; screenHeight: number; clientWidth: number; clientHeight: number; screenFPS: number; screenColorDepth: number; screenPixelDepth: number; isTouch: boolean; }> } interface LanguageParser { parse(): Record<string, never>; getInfo(): Promise<{ language: string; }> } interface TimezoneParser { parse(): Record<string, never>; getInfo(): Promise<{ timezone: string; }> } type InfoParserMap = { browser: BrowserParser; system: SystemParser; device: DeviceParser; gpu: GpuParser; network: NetworkParser; battery: BatteryParser; screen: ScreenParser; language: LanguageParser; timezone: TimezoneParser; } type FingerprintList = 'webgl' | 'canvas' | 'font' | 'audio' | 'mime'; interface BrowserTool { parse(ua: string): ReturnType<BrowserParser['parse']> & ReturnType<SystemParser['parse']> & ReturnType<DeviceParser['parse']>; getInfo(): Promise<UnionToIntersection<{ [K in keyof InfoParserMap]: Awaited<ReturnType<InfoParserMap[K]['getInfo']>> }[keyof InfoParserMap]>>; getInfo<T extends (keyof InfoParserMap)[]>(list: [...T]): Promise<UnionToIntersection<{ [K in T[number]]: Awaited<ReturnType<InfoParserMap[K]['getInfo']>> }[T[number]]>>; getFingerprint(): Promise<{ value: string; } &{ [K in FingerprintList]: string; }> getFingerprint<T extends FingerprintList>(list: T[]): Promise<{ value: string; } &{ [K in T]: string; }>; isSupport(name: string, value: string): boolean; } const browserTool: BrowserTool; export default browserTool; }Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels