user-agents
Version:
A JavaScript library for generating random user agents.
45 lines (43 loc) • 1.63 kB
TypeScript
type NestedValueOf<T> = T extends object ? T[keyof T] | NestedValueOf<T[keyof T]> : T;
type Filter<T extends UserAgentData | NestedValueOf<UserAgentData> = UserAgentData> = ((parentObject: T) => boolean) | RegExp | Array<Filter<T>> | {
[key: string]: Filter<T>;
} | string;
interface UserAgentData {
appName: 'Netscape';
connection: {
downlink: number;
effectiveType: '3g' | '4g';
rtt: number;
downlinkMax?: number | null;
type?: 'cellular' | 'wifi';
};
language?: string | null;
oscpu?: string | null;
platform: 'iPad' | 'iPhone' | 'Linux aarch64' | 'Linux armv81' | 'Linux armv8l' | 'Linux x86_64' | 'MacIntel' | 'Win32';
pluginsLength: number;
screenHeight: number;
screenWidth: number;
userAgent: string;
vendor: 'Apple Computer, Inc.' | 'Google Inc.' | '';
weight: number;
}
declare module './user-agent' {
interface UserAgent extends Readonly<UserAgentData> {
readonly cumulativeWeightIndexPairs: Array<[number, number]>;
readonly data: UserAgentData;
(): UserAgent;
}
}
declare class UserAgent {
static [Symbol.hasInstance](instance: unknown): boolean;
static random: (filters: Filter) => UserAgent | null;
static top: (count?: number, filters?: Filter) => UserAgentData[];
readonly data: UserAgentData;
constructor(filters?: Filter);
[Symbol.toPrimitive]: () => string;
toString: () => string;
random: () => UserAgent;
top: (count?: number) => UserAgentData[];
randomize: () => void;
}
export { type Filter, type UserAgentData, UserAgent as default };