native-fn
Version:
98 lines (92 loc) • 2.52 kB
TypeScript
declare interface NativePlugin<Key extends string, Module, Constants extends Record<string, any> = Record<string, any>, Errors extends Record<string, ErrorConstructor> = Record<string, ErrorConstructor>> {
installed: boolean;
name: Key;
module: Module;
Constants: Constants;
Errors: Errors;
}
declare enum OS {
Unknown = "Unknown",
Android = "Android",
iOS = "iOS",
Windows = "Windows",
MacOS = "MacOS"
}
declare enum Devices {
Unknown = "Unknown",
Mobile = "Mobile",
Desktop = "Desktop"
}
declare enum Engines {
Unknown = "Unknown",
EdgeHTML = "EdgeHTML",
ArkWeb = "ArkWeb",
Blink = "Blink",
Presto = "Presto",
WebKit = "WebKit",
Trident = "Trident",
NetFront = "NetFront",
KHTML = "KHTML",
Tasman = "Tasman",
Gecko = "Gecko"
}
declare enum Browsers {
Unknown = "Unknown",
Chrome = "Chrome",
Safari = "Safari",
Edge = "Edge",
Firefox = "Firefox",
Opera = "Opera",
IE = "IE",
SamsungInternet = "SamsungInternet"
}
declare enum CrossPlatformFramework {
Unknown = "Unknown",
ReactNative = "ReactNative",
Electron = "Electron",
Cordova = "Cordova"
}
declare type VersionResolver = undefined | string | ((string: string | undefined) => string);
declare interface PlatformInstance {
os: NameVersionPair<OS>;
engine: NameVersionPair<Engines>;
browser: NameVersionPair<Browsers>;
device: Devices;
crossPlatformFramework: CrossPlatformFramework;
locale: Locale;
renderer: string;
userAgent: string;
readyState: 'loading' | 'complete';
isNode: boolean;
isStandalone: boolean;
isWebview: boolean;
onready(callback: (platform: PlatformInstance) => void): void;
}
declare interface NameVersionPair<T> {
name: T;
version: string;
}
declare interface Locale {
language: string | null;
languages: string[];
timezone: string | null;
timezoneOffset: number;
}
declare module 'native-fn' {
interface NativePlugins {
Platform: PlatformInstance;
}
interface NativeConstants {
}
interface NativeErrors {
}
}
declare const NativePlatformPlugin: NativePlugin<'Platform', PlatformInstance, {
OS: typeof OS;
Devices: typeof Devices;
Engines: typeof Engines;
Browsers: typeof Browsers;
CrossPlatformFramework: typeof CrossPlatformFramework;
}, {}>;
export { NativePlatformPlugin as default };
export type { Locale, NameVersionPair, PlatformInstance, VersionResolver };