Skip to content

type .d.ts #108

@Shana-AE

Description

@Shana-AE

定义了一下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; }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions