UNPKG

awake-lock

Version:

A comprehensive wake lock library for preventing device sleep with intelligent fallback strategies and exceptional performance

137 lines 4.53 kB
export type WakeLockType = 'screen' | 'system'; export interface WakeLockOptions { strategies?: FallbackStrategy[]; debug?: boolean; batteryOptimization?: boolean; performanceMonitoring?: boolean; passive?: boolean; } export interface RequestOptions { passive?: boolean; timeout?: number; retryAttempts?: number; signal?: AbortSignal; } export interface WakeLockSentinel { readonly type: WakeLockType; readonly released: boolean; release(): Promise<void>; addEventListener(type: 'release', listener: () => void): void; removeEventListener(type: 'release', listener: () => void): void; } export interface WakeLockStatus { isActive: boolean; type: WakeLockType | null; strategy: string | null; startTime: number | null; batteryLevel: number | null; performanceMetrics: PerformanceMetrics | null; } export interface PerformanceMetrics { cpuUsage: number; memoryUsage: number; batteryDrain: number; timestamp: number; } export interface BatteryManager { readonly charging: boolean; readonly chargingTime: number; readonly dischargingTime: number; readonly level: number; onchargingchange: ((this: BatteryManager, ev: Event) => void) | null; onchargingtimechange: ((this: BatteryManager, ev: Event) => void) | null; ondischargingtimechange: ((this: BatteryManager, ev: Event) => void) | null; onlevelchange: ((this: BatteryManager, ev: Event) => void) | null; } export interface NavigatorWithBattery extends Navigator { getBattery?(): Promise<BatteryManager>; } export interface FallbackStrategy { readonly name: string; readonly priority: number; isSupported(): boolean; request(type: WakeLockType, options?: RequestOptions): Promise<WakeLockSentinel>; release?(): Promise<void>; } export interface WakeLockEvents extends Record<string, unknown> { enabled: { type: WakeLockType; strategy: string; }; disabled: { type: WakeLockType; reason: string; }; error: { error: WakeLockError; strategy?: string; }; performance: PerformanceMetrics; fallback: { from: string; to: string; reason: string; }; 'battery-change': { level: number; charging: boolean; }; 'visibility-change': { hidden: boolean; action: 'acquired' | 'released' | 'none'; }; } export interface EventListener<T = unknown> { (event: T): void; } export declare class WakeLockError extends Error { readonly code: WakeLockErrorCode; readonly strategy?: string | undefined; readonly originalError?: Error | undefined; constructor(message: string, code: WakeLockErrorCode, strategy?: string | undefined, originalError?: Error | undefined); } export declare enum WakeLockErrorCode { NOT_SUPPORTED = "NOT_SUPPORTED", PERMISSION_DENIED = "PERMISSION_DENIED", INVALID_STATE = "INVALID_STATE", TIMEOUT = "TIMEOUT", BATTERY_LOW = "BATTERY_LOW", STRATEGY_FAILED = "STRATEGY_FAILED", UNKNOWN = "UNKNOWN" } export interface VisibilityChangeOptions { autoReacquire?: boolean; releaseOnHidden?: boolean; } export interface BatteryOptimizationOptions { lowBatteryThreshold?: number; autoReleaseOnLowBattery?: boolean; reducedPerformanceMode?: boolean; } export interface DebugOptions { logLevel?: 'error' | 'warn' | 'info' | 'debug'; logStrategy?: boolean; logPerformance?: boolean; logBattery?: boolean; } export interface InternalWakeLockSentinel extends WakeLockSentinel { _strategy: FallbackStrategy; _releaseListeners: Set<() => void>; _released: boolean; } export type EventMap = { [K in keyof WakeLockEvents]: WakeLockEvents[K]; } & Record<string, unknown>; export interface TypedEventTarget<T extends Record<string, unknown>> { addEventListener<K extends keyof T>(type: K, listener: EventListener<T[K]>, options?: boolean | AddEventListenerOptions): void; removeEventListener<K extends keyof T>(type: K, listener: EventListener<T[K]>, options?: boolean | EventListenerOptions): void; dispatchEvent<K extends keyof T>(type: K, event: T[K]): boolean; } export interface CustomWakeLockSentinel { readonly type: WakeLockType; readonly released: boolean; release(): Promise<void>; addEventListener(type: 'release', listener: () => void): void; removeEventListener(type: 'release', listener: () => void): void; } //# sourceMappingURL=types.d.ts.map