@angular-helpers/browser-web-apis 21.2.0 → 21.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import * as i0 from '@angular/core';
3
- import { DestroyRef, Signal, ElementRef, EnvironmentProviders } from '@angular/core';
3
+ import { DestroyRef, ElementRef, Signal, EnvironmentProviders } from '@angular/core';
4
4
  import { CanActivateFn } from '@angular/router';
5
5
 
6
6
  type PermissionNameExt = PermissionName | 'clipboard-read' | 'clipboard-write';
@@ -21,44 +21,74 @@ declare class PermissionsService implements BrowserPermissions {
21
21
  }
22
22
 
23
23
  /**
24
- * Base class for all Browser Web API services
24
+ * Base class for all Browser Web API services.
25
25
  * Provides common functionality for:
26
- * - Support checking
27
- * - Permission management
28
- * - Error handling
26
+ * - Platform detection (browser vs server)
27
+ * - Support assertion via Template Method
28
+ * - Error creation with cause chaining
29
+ * - Structured logging
29
30
  * - Lifecycle management with destroyRef
30
- * - Logging
31
+ *
32
+ * Services that also need permission querying should extend
33
+ * `PermissionAwareBrowserApiBaseService` instead.
31
34
  */
32
35
  declare abstract class BrowserApiBaseService {
33
- protected permissionsService: PermissionsService;
34
36
  protected destroyRef: DestroyRef;
35
37
  protected platformId: Object;
36
38
  /**
37
- * Abstract method that must be implemented by child services
38
- * Returns the API name for support checking
39
+ * Abstract method that must be implemented by child services.
40
+ * Returns the API name used in log messages and error strings.
39
41
  */
40
42
  protected abstract getApiName(): string;
41
43
  /**
42
- * Check if running in browser environment using Angular's platform detection
44
+ * Check if running in browser environment using Angular's platform detection.
43
45
  */
44
46
  protected isBrowserEnvironment(): boolean;
45
47
  /**
46
- * Check if running in server environment using Angular's platform detection
48
+ * Check if running in server environment using Angular's platform detection.
47
49
  */
48
50
  protected isServerEnvironment(): boolean;
49
51
  /**
50
- * Request a permission
52
+ * Template Method: throws a standard error when the API is not available.
53
+ * Uses getApiName() to produce consistent error messages.
51
54
  */
52
- protected requestPermission(permission: PermissionNameExt): Promise<boolean>;
55
+ protected ensureSupported(): void;
53
56
  /**
54
- * Create an error with proper cause chaining
57
+ * Create an error with proper cause chaining.
55
58
  */
56
59
  protected createError(message: string, cause?: unknown): Error;
60
+ /**
61
+ * Log an error with the service name as prefix.
62
+ */
63
+ protected logError(message: string, error?: unknown): void;
64
+ /**
65
+ * Log an informational message with the service name as prefix.
66
+ */
67
+ protected logInfo(message: string): void;
57
68
  static ɵfac: i0.ɵɵFactoryDeclaration<BrowserApiBaseService, never>;
58
69
  static ɵprov: i0.ɵɵInjectableDeclaration<BrowserApiBaseService>;
59
70
  }
60
71
 
61
- declare class CameraService extends BrowserApiBaseService {
72
+ /**
73
+ * Extension of `BrowserApiBaseService` for services that need to query
74
+ * browser permissions via the Permissions API.
75
+ *
76
+ * Only services that actively call `requestPermission()` should extend this
77
+ * class. All other services should extend `BrowserApiBaseService` directly
78
+ * to avoid carrying an unnecessary PermissionsService dependency.
79
+ */
80
+ declare abstract class PermissionAwareBrowserApiBaseService extends BrowserApiBaseService {
81
+ protected permissionsService: PermissionsService;
82
+ /**
83
+ * Query the Permissions API for the given permission name.
84
+ * Returns `true` if the permission state is `'granted'`.
85
+ */
86
+ protected requestPermission(permission: PermissionNameExt): Promise<boolean>;
87
+ static ɵfac: i0.ɵɵFactoryDeclaration<PermissionAwareBrowserApiBaseService, never>;
88
+ static ɵprov: i0.ɵɵInjectableDeclaration<PermissionAwareBrowserApiBaseService>;
89
+ }
90
+
91
+ declare class CameraService extends PermissionAwareBrowserApiBaseService {
62
92
  private currentStream;
63
93
  protected getApiName(): string;
64
94
  private ensureCameraSupport;
@@ -116,17 +146,16 @@ declare class NotificationService extends BrowserApiBaseService {
116
146
  static ɵprov: i0.ɵɵInjectableDeclaration<NotificationService>;
117
147
  }
118
148
 
119
- declare class ClipboardService extends BrowserApiBaseService {
149
+ declare class ClipboardService extends PermissionAwareBrowserApiBaseService {
120
150
  protected getApiName(): string;
121
151
  private ensureClipboardPermission;
122
152
  writeText(text: string): Promise<void>;
123
153
  readText(): Promise<string>;
124
- writeTextSecure(text: string): Promise<void>;
125
154
  static ɵfac: i0.ɵɵFactoryDeclaration<ClipboardService, never>;
126
155
  static ɵprov: i0.ɵɵInjectableDeclaration<ClipboardService>;
127
156
  }
128
157
 
129
- type BrowserCapabilityId = 'permissions' | 'geolocation' | 'clipboard' | 'notification' | 'mediaDevices' | 'camera' | 'webWorker' | 'regexSecurity' | 'webStorage' | 'webShare' | 'battery' | 'webSocket' | 'intersectionObserver' | 'resizeObserver' | 'pageVisibility' | 'broadcastChannel' | 'networkInformation' | 'screenWakeLock' | 'screenOrientation' | 'fullscreen' | 'fileSystemAccess' | 'mediaRecorder' | 'serverSentEvents' | 'vibration' | 'speechSynthesis';
158
+ type BrowserCapabilityId = 'permissions' | 'geolocation' | 'clipboard' | 'notification' | 'mediaDevices' | 'camera' | 'webWorker' | 'regexSecurity' | 'webStorage' | 'webShare' | 'battery' | 'webSocket' | 'intersectionObserver' | 'resizeObserver' | 'pageVisibility' | 'broadcastChannel' | 'networkInformation' | 'screenWakeLock' | 'screenOrientation' | 'fullscreen' | 'fileSystemAccess' | 'mediaRecorder' | 'serverSentEvents' | 'vibration' | 'speechSynthesis' | 'mutationObserver' | 'performanceObserver' | 'idleDetector' | 'eyeDropper' | 'barcodeDetector' | 'webAudio' | 'gamepad' | 'webBluetooth' | 'webUsb' | 'webNfc' | 'paymentRequest' | 'credentialManagement';
130
159
  declare class BrowserCapabilityService {
131
160
  getCapabilities(): readonly [{
132
161
  readonly id: "permissions";
@@ -228,12 +257,60 @@ declare class BrowserCapabilityService {
228
257
  readonly id: "speechSynthesis";
229
258
  readonly label: "Speech Synthesis API";
230
259
  readonly requiresSecureContext: false;
260
+ }, {
261
+ readonly id: "mutationObserver";
262
+ readonly label: "Mutation Observer";
263
+ readonly requiresSecureContext: false;
264
+ }, {
265
+ readonly id: "performanceObserver";
266
+ readonly label: "Performance Observer";
267
+ readonly requiresSecureContext: false;
268
+ }, {
269
+ readonly id: "idleDetector";
270
+ readonly label: "Idle Detection API";
271
+ readonly requiresSecureContext: true;
272
+ }, {
273
+ readonly id: "eyeDropper";
274
+ readonly label: "EyeDropper API";
275
+ readonly requiresSecureContext: true;
276
+ }, {
277
+ readonly id: "barcodeDetector";
278
+ readonly label: "Barcode Detection API";
279
+ readonly requiresSecureContext: true;
280
+ }, {
281
+ readonly id: "webAudio";
282
+ readonly label: "Web Audio API";
283
+ readonly requiresSecureContext: false;
284
+ }, {
285
+ readonly id: "gamepad";
286
+ readonly label: "Gamepad API";
287
+ readonly requiresSecureContext: true;
288
+ }, {
289
+ readonly id: "webBluetooth";
290
+ readonly label: "Web Bluetooth API";
291
+ readonly requiresSecureContext: true;
292
+ }, {
293
+ readonly id: "webUsb";
294
+ readonly label: "WebUSB API";
295
+ readonly requiresSecureContext: true;
296
+ }, {
297
+ readonly id: "webNfc";
298
+ readonly label: "Web NFC API";
299
+ readonly requiresSecureContext: true;
300
+ }, {
301
+ readonly id: "paymentRequest";
302
+ readonly label: "Payment Request API";
303
+ readonly requiresSecureContext: true;
304
+ }, {
305
+ readonly id: "credentialManagement";
306
+ readonly label: "Credential Management API";
307
+ readonly requiresSecureContext: true;
231
308
  }];
232
309
  isSecureContext(): boolean;
233
310
  isSupported(capability: BrowserCapabilityId): boolean;
234
311
  getAllStatuses(): {
235
- id: "camera" | "geolocation" | "permissions" | "mediaDevices" | "clipboard" | "notification" | "webWorker" | "regexSecurity" | "webStorage" | "webShare" | "battery" | "webSocket" | "intersectionObserver" | "resizeObserver" | "pageVisibility" | "broadcastChannel" | "networkInformation" | "screenWakeLock" | "screenOrientation" | "fullscreen" | "fileSystemAccess" | "mediaRecorder" | "serverSentEvents" | "vibration" | "speechSynthesis";
236
- label: "Permissions API" | "Geolocation API" | "Clipboard API" | "Notification API" | "MediaDevices API" | "Camera API" | "Web Worker API" | "Regex Security" | "Web Storage" | "Web Share" | "Battery API" | "WebSocket API" | "Intersection Observer" | "Resize Observer" | "Page Visibility API" | "Broadcast Channel API" | "Network Information API" | "Screen Wake Lock API" | "Screen Orientation API" | "Fullscreen API" | "File System Access API" | "MediaRecorder API" | "Server-Sent Events" | "Vibration API" | "Speech Synthesis API";
312
+ id: "camera" | "geolocation" | "permissions" | "mediaDevices" | "clipboard" | "notification" | "webWorker" | "regexSecurity" | "webStorage" | "webShare" | "battery" | "webSocket" | "intersectionObserver" | "resizeObserver" | "pageVisibility" | "broadcastChannel" | "networkInformation" | "screenWakeLock" | "screenOrientation" | "fullscreen" | "fileSystemAccess" | "mediaRecorder" | "serverSentEvents" | "vibration" | "speechSynthesis" | "mutationObserver" | "performanceObserver" | "idleDetector" | "eyeDropper" | "barcodeDetector" | "webAudio" | "gamepad" | "webBluetooth" | "webUsb" | "webNfc" | "paymentRequest" | "credentialManagement";
313
+ label: "Permissions API" | "Geolocation API" | "Clipboard API" | "Notification API" | "MediaDevices API" | "Camera API" | "Web Worker API" | "Regex Security" | "Web Storage" | "Web Share" | "Battery API" | "WebSocket API" | "Intersection Observer" | "Resize Observer" | "Page Visibility API" | "Broadcast Channel API" | "Network Information API" | "Screen Wake Lock API" | "Screen Orientation API" | "Fullscreen API" | "File System Access API" | "MediaRecorder API" | "Server-Sent Events" | "Vibration API" | "Speech Synthesis API" | "Mutation Observer" | "Performance Observer" | "Idle Detection API" | "EyeDropper API" | "Barcode Detection API" | "Web Audio API" | "Gamepad API" | "Web Bluetooth API" | "WebUSB API" | "Web NFC API" | "Payment Request API" | "Credential Management API";
237
314
  supported: boolean;
238
315
  secureContext: boolean;
239
316
  requiresSecureContext: boolean;
@@ -276,7 +353,6 @@ declare class BatteryService extends BrowserApiBaseService {
276
353
  initialize(): Promise<BatteryInfo>;
277
354
  getBatteryInfo(): BatteryInfo;
278
355
  watchBatteryInfo(): Observable<BatteryInfo>;
279
- private setupEventListeners;
280
356
  getNativeBatteryManager(): BatteryManager;
281
357
  isCharging(): boolean;
282
358
  getLevel(): number;
@@ -308,6 +384,11 @@ type BrowserError = Error & {
308
384
  type EventHandler<T = Event> = (event: T) => void;
309
385
  type StorageValue = string | number | boolean | object | null;
310
386
  type ErrorCallback = (error: BrowserError) => void;
387
+ /**
388
+ * Accepted element input for inject functions.
389
+ * Supports static elements, ElementRef, or deferred signals (e.g. from viewChild).
390
+ */
391
+ type ElementInput = Element | ElementRef<Element> | Signal<Element | ElementRef<Element> | undefined>;
311
392
 
312
393
  interface StorageOptions {
313
394
  prefix?: string;
@@ -444,8 +525,8 @@ interface IntersectionObserverOptions {
444
525
  rootMargin?: string;
445
526
  threshold?: number | number[];
446
527
  }
447
- declare class IntersectionObserverService {
448
- private readonly platformId;
528
+ declare class IntersectionObserverService extends BrowserApiBaseService {
529
+ protected getApiName(): string;
449
530
  isSupported(): boolean;
450
531
  observe(element: Element, options?: IntersectionObserverOptions): Observable<IntersectionObserverEntry[]>;
451
532
  observeVisibility(element: Element, options?: IntersectionObserverOptions): Observable<boolean>;
@@ -462,8 +543,8 @@ interface ElementSize {
462
543
  inlineSize: number;
463
544
  blockSize: number;
464
545
  }
465
- declare class ResizeObserverService {
466
- private readonly platformId;
546
+ declare class ResizeObserverService extends BrowserApiBaseService {
547
+ protected getApiName(): string;
467
548
  isSupported(): boolean;
468
549
  observe(element: Element, options?: ResizeObserverOptions): Observable<ResizeObserverEntry[]>;
469
550
  observeSize(element: Element, options?: ResizeObserverOptions): Observable<ElementSize>;
@@ -472,8 +553,8 @@ declare class ResizeObserverService {
472
553
  }
473
554
 
474
555
  type VisibilityState = 'visible' | 'hidden' | 'prerender';
475
- declare class PageVisibilityService {
476
- private readonly platformId;
556
+ declare class PageVisibilityService extends BrowserApiBaseService {
557
+ protected getApiName(): string;
477
558
  isSupported(): boolean;
478
559
  get isHidden(): boolean;
479
560
  get visibilityState(): VisibilityState;
@@ -483,12 +564,46 @@ declare class PageVisibilityService {
483
564
  static ɵprov: i0.ɵɵInjectableDeclaration<PageVisibilityService>;
484
565
  }
485
566
 
486
- declare class BroadcastChannelService {
487
- private readonly destroyRef;
488
- private readonly platformId;
489
- private channels;
567
+ /**
568
+ * Base class for services that manage a named registry of persistent
569
+ * connections (e.g. BroadcastChannel, EventSource, WebSocket pools).
570
+ *
571
+ * Implements the Template Method pattern: subclasses define how a single
572
+ * native connection is closed via `closeNativeConnection()`, while this
573
+ * class handles the Map lifecycle (remove, closeAll, getActiveKeys).
574
+ *
575
+ * Public-facing method names (`close`, `disconnect`, `getOpenChannels`, etc.)
576
+ * remain the responsibility of the concrete service to preserve the public API.
577
+ */
578
+ declare abstract class ConnectionRegistryBaseService<T> extends BrowserApiBaseService {
579
+ protected readonly connections: Map<string, T>;
580
+ /**
581
+ * Template Method: close a single native connection.
582
+ * Implemented by each concrete service.
583
+ */
584
+ protected abstract closeNativeConnection(connection: T): void;
585
+ /**
586
+ * Remove and close the connection registered under `key`.
587
+ * Safe to call even if the key does not exist.
588
+ */
589
+ protected removeConnection(key: string): void;
590
+ /**
591
+ * Close all registered connections and clear the registry.
592
+ */
593
+ protected closeAllConnections(): void;
594
+ /**
595
+ * Return the keys of all currently open connections.
596
+ */
597
+ protected getConnectionKeys(): string[];
598
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConnectionRegistryBaseService<any>, never>;
599
+ static ɵprov: i0.ɵɵInjectableDeclaration<ConnectionRegistryBaseService<any>>;
600
+ }
601
+
602
+ declare class BroadcastChannelService extends ConnectionRegistryBaseService<BroadcastChannel> {
603
+ protected getApiName(): string;
604
+ protected closeNativeConnection(channel: BroadcastChannel): void;
490
605
  isSupported(): boolean;
491
- private ensureSupport;
606
+ private ensureBroadcastChannelSupported;
492
607
  open<T = unknown>(name: string): Observable<T>;
493
608
  post<T = unknown>(name: string, data: T): void;
494
609
  close(name: string): void;
@@ -509,8 +624,8 @@ interface NetworkInformation {
509
624
  saveData?: boolean;
510
625
  online: boolean;
511
626
  }
512
- declare class NetworkInformationService {
513
- private readonly platformId;
627
+ declare class NetworkInformationService extends BrowserApiBaseService {
628
+ protected getApiName(): string;
514
629
  isSupported(): boolean;
515
630
  getSnapshot(): NetworkInformation;
516
631
  watch(): Observable<NetworkInformation>;
@@ -543,8 +658,8 @@ interface OrientationInfo {
543
658
  type: OrientationType;
544
659
  angle: number;
545
660
  }
546
- declare class ScreenOrientationService {
547
- private readonly platformId;
661
+ declare class ScreenOrientationService extends BrowserApiBaseService {
662
+ protected getApiName(): string;
548
663
  isSupported(): boolean;
549
664
  getSnapshot(): OrientationInfo;
550
665
  get isPortrait(): boolean;
@@ -556,9 +671,8 @@ declare class ScreenOrientationService {
556
671
  static ɵprov: i0.ɵɵInjectableDeclaration<ScreenOrientationService>;
557
672
  }
558
673
 
559
- declare class FullscreenService {
560
- private readonly destroyRef;
561
- private readonly platformId;
674
+ declare class FullscreenService extends BrowserApiBaseService {
675
+ protected getApiName(): string;
562
676
  isSupported(): boolean;
563
677
  get isFullscreen(): boolean;
564
678
  get fullscreenElement(): Element | null;
@@ -650,12 +764,11 @@ interface SSEConfig {
650
764
  withCredentials?: boolean;
651
765
  eventTypes?: string[];
652
766
  }
653
- declare class ServerSentEventsService {
654
- private readonly destroyRef;
655
- private readonly platformId;
656
- private sources;
767
+ declare class ServerSentEventsService extends ConnectionRegistryBaseService<EventSource> {
768
+ protected getApiName(): string;
769
+ protected closeNativeConnection(source: EventSource): void;
657
770
  isSupported(): boolean;
658
- private ensureSupport;
771
+ private ensureSSESupported;
659
772
  connect<T = unknown>(url: string, config?: SSEConfig): Observable<SSEMessage<T>>;
660
773
  disconnect(url: string): void;
661
774
  disconnectAll(): void;
@@ -672,8 +785,8 @@ interface VibrationPreset {
672
785
  notification: VibrationPattern;
673
786
  doubleTap: VibrationPattern;
674
787
  }
675
- declare class VibrationService {
676
- private readonly platformId;
788
+ declare class VibrationService extends BrowserApiBaseService {
789
+ protected getApiName(): string;
677
790
  readonly presets: VibrationPreset;
678
791
  isSupported(): boolean;
679
792
  vibrate(pattern?: VibrationPattern): boolean;
@@ -694,11 +807,10 @@ interface SpeechOptions {
694
807
  rate?: number;
695
808
  pitch?: number;
696
809
  }
697
- declare class SpeechSynthesisService {
698
- private readonly destroyRef;
699
- private readonly platformId;
810
+ declare class SpeechSynthesisService extends BrowserApiBaseService {
811
+ protected getApiName(): string;
700
812
  isSupported(): boolean;
701
- private ensureSupport;
813
+ private ensureSpeechSynthesisSupported;
702
814
  get state(): SpeechState;
703
815
  get isPending(): boolean;
704
816
  getVoices(): SpeechSynthesisVoice[];
@@ -711,6 +823,359 @@ declare class SpeechSynthesisService {
711
823
  static ɵprov: i0.ɵɵInjectableDeclaration<SpeechSynthesisService>;
712
824
  }
713
825
 
826
+ interface MutationObserverOptions {
827
+ childList?: boolean;
828
+ attributes?: boolean;
829
+ characterData?: boolean;
830
+ subtree?: boolean;
831
+ attributeOldValue?: boolean;
832
+ characterDataOldValue?: boolean;
833
+ attributeFilter?: string[];
834
+ }
835
+
836
+ declare class MutationObserverService extends BrowserApiBaseService {
837
+ protected getApiName(): string;
838
+ isSupported(): boolean;
839
+ observe(target: Node, options?: MutationObserverOptions): Observable<MutationRecord[]>;
840
+ static ɵfac: i0.ɵɵFactoryDeclaration<MutationObserverService, never>;
841
+ static ɵprov: i0.ɵɵInjectableDeclaration<MutationObserverService>;
842
+ }
843
+
844
+ type PerformanceEntryType = 'element' | 'event' | 'first-input' | 'largest-contentful-paint' | 'layout-shift' | 'longtask' | 'mark' | 'measure' | 'navigation' | 'paint' | 'resource' | 'visibility-state';
845
+ interface PerformanceObserverConfig {
846
+ entryTypes?: PerformanceEntryType[];
847
+ type?: PerformanceEntryType;
848
+ buffered?: boolean;
849
+ }
850
+
851
+ declare class PerformanceObserverService extends BrowserApiBaseService {
852
+ protected getApiName(): string;
853
+ isSupported(): boolean;
854
+ observe(config: PerformanceObserverConfig): Observable<PerformanceEntryList>;
855
+ observeByType(type: PerformanceEntryType, buffered?: boolean): Observable<PerformanceEntryList>;
856
+ getSupportedEntryTypes(): PerformanceEntryType[];
857
+ static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceObserverService, never>;
858
+ static ɵprov: i0.ɵɵInjectableDeclaration<PerformanceObserverService>;
859
+ }
860
+
861
+ type UserIdleState = 'active' | 'idle';
862
+ type ScreenIdleState = 'locked' | 'unlocked';
863
+ interface IdleState {
864
+ user: UserIdleState;
865
+ screen: ScreenIdleState;
866
+ }
867
+ interface IdleDetectorOptions {
868
+ threshold?: number;
869
+ }
870
+ declare class IdleDetectorService extends BrowserApiBaseService {
871
+ protected getApiName(): string;
872
+ isSupported(): boolean;
873
+ requestPermission(): Promise<PermissionState>;
874
+ watch(options?: IdleDetectorOptions): Observable<IdleState>;
875
+ static ɵfac: i0.ɵɵFactoryDeclaration<IdleDetectorService, never>;
876
+ static ɵprov: i0.ɵɵInjectableDeclaration<IdleDetectorService>;
877
+ }
878
+
879
+ interface ColorSelectionResult {
880
+ sRGBHex: string;
881
+ }
882
+ declare class EyeDropperService extends BrowserApiBaseService {
883
+ protected getApiName(): string;
884
+ isSupported(): boolean;
885
+ open(signal?: AbortSignal): Promise<ColorSelectionResult>;
886
+ static ɵfac: i0.ɵɵFactoryDeclaration<EyeDropperService, never>;
887
+ static ɵprov: i0.ɵɵInjectableDeclaration<EyeDropperService>;
888
+ }
889
+
890
+ type BarcodeFormat = 'aztec' | 'code_128' | 'code_39' | 'code_93' | 'codabar' | 'data_matrix' | 'ean_13' | 'ean_8' | 'itf' | 'pdf417' | 'qr_code' | 'upc_a' | 'upc_e' | 'unknown';
891
+ interface DetectedBarcode {
892
+ boundingBox: DOMRectReadOnly;
893
+ cornerPoints: ReadonlyArray<{
894
+ x: number;
895
+ y: number;
896
+ }>;
897
+ format: BarcodeFormat;
898
+ rawValue: string;
899
+ }
900
+ declare class BarcodeDetectorService extends BrowserApiBaseService {
901
+ protected getApiName(): string;
902
+ isSupported(): boolean;
903
+ getSupportedFormats(): Promise<BarcodeFormat[]>;
904
+ detect(image: ImageBitmapSource, formats?: BarcodeFormat[]): Promise<DetectedBarcode[]>;
905
+ static ɵfac: i0.ɵɵFactoryDeclaration<BarcodeDetectorService, never>;
906
+ static ɵprov: i0.ɵɵInjectableDeclaration<BarcodeDetectorService>;
907
+ }
908
+
909
+ type AudioContextState = 'suspended' | 'running' | 'closed';
910
+ interface AudioAnalyserData {
911
+ frequencyData: Uint8Array;
912
+ timeDomainData: Uint8Array;
913
+ }
914
+ declare class WebAudioService extends BrowserApiBaseService {
915
+ protected getApiName(): string;
916
+ private context;
917
+ isSupported(): boolean;
918
+ getContext(): AudioContext;
919
+ resume(): Promise<void>;
920
+ close(): Promise<void>;
921
+ getState(): AudioContextState;
922
+ createOscillator(type?: OscillatorType, frequency?: number): OscillatorNode;
923
+ createGain(value?: number): GainNode;
924
+ createAnalyser(fftSize?: number): AnalyserNode;
925
+ watchAnalyser(analyser: AnalyserNode, intervalMs?: number): Observable<AudioAnalyserData>;
926
+ decodeAudioData(arrayBuffer: ArrayBuffer): Promise<AudioBuffer>;
927
+ playBuffer(buffer: AudioBuffer, loop?: boolean): AudioBufferSourceNode;
928
+ static ɵfac: i0.ɵɵFactoryDeclaration<WebAudioService, never>;
929
+ static ɵprov: i0.ɵɵInjectableDeclaration<WebAudioService>;
930
+ }
931
+
932
+ interface GamepadState {
933
+ id: string;
934
+ index: number;
935
+ connected: boolean;
936
+ buttons: ReadonlyArray<{
937
+ pressed: boolean;
938
+ value: number;
939
+ }>;
940
+ axes: readonly number[];
941
+ timestamp: number;
942
+ }
943
+
944
+ declare class GamepadService extends BrowserApiBaseService {
945
+ protected getApiName(): string;
946
+ isSupported(): boolean;
947
+ getSnapshot(index: number): GamepadState | null;
948
+ getConnectedGamepads(): GamepadState[];
949
+ watchConnections(): Observable<{
950
+ gamepad: GamepadState;
951
+ type: 'connected' | 'disconnected';
952
+ }>;
953
+ poll(index: number, intervalMs?: number): Observable<GamepadState>;
954
+ static ɵfac: i0.ɵɵFactoryDeclaration<GamepadService, never>;
955
+ static ɵprov: i0.ɵɵInjectableDeclaration<GamepadService>;
956
+ }
957
+
958
+ interface BluetoothRequestDeviceOptions {
959
+ filters?: Array<{
960
+ services?: string[];
961
+ name?: string;
962
+ namePrefix?: string;
963
+ }>;
964
+ optionalServices?: string[];
965
+ acceptAllDevices?: boolean;
966
+ }
967
+ interface BluetoothRemoteGATTServer {
968
+ readonly connected: boolean;
969
+ readonly device: BluetoothDeviceRef;
970
+ connect(): Promise<BluetoothRemoteGATTServer>;
971
+ disconnect(): void;
972
+ getPrimaryService(service: string): Promise<BluetoothRemoteGATTService>;
973
+ }
974
+ interface BluetoothRemoteGATTService {
975
+ getCharacteristic(characteristic: string): Promise<BluetoothRemoteGATTCharacteristic>;
976
+ }
977
+ interface BluetoothRemoteGATTCharacteristic extends EventTarget {
978
+ readonly value: DataView | null;
979
+ readValue(): Promise<DataView>;
980
+ writeValue(value: BufferSource): Promise<void>;
981
+ startNotifications(): Promise<BluetoothRemoteGATTCharacteristic>;
982
+ stopNotifications(): Promise<BluetoothRemoteGATTCharacteristic>;
983
+ }
984
+ interface BluetoothDeviceRef extends EventTarget {
985
+ readonly id: string;
986
+ readonly name: string | undefined;
987
+ readonly gatt: BluetoothRemoteGATTServer | undefined;
988
+ }
989
+ interface UsbDeviceRef {
990
+ readonly vendorId: number;
991
+ readonly productId: number;
992
+ readonly productName: string | undefined;
993
+ readonly manufacturerName: string | undefined;
994
+ readonly serialNumber: string | undefined;
995
+ readonly opened: boolean;
996
+ open(): Promise<void>;
997
+ close(): Promise<void>;
998
+ selectConfiguration(configurationValue: number): Promise<void>;
999
+ claimInterface(interfaceNumber: number): Promise<void>;
1000
+ releaseInterface(interfaceNumber: number): Promise<void>;
1001
+ transferIn(endpointNumber: number, length: number): Promise<UsbTransferResult>;
1002
+ transferOut(endpointNumber: number, data: BufferSource): Promise<UsbTransferResult>;
1003
+ }
1004
+ interface UsbTransferResult {
1005
+ readonly data: DataView | undefined;
1006
+ readonly status: 'ok' | 'stall' | 'babble';
1007
+ }
1008
+ interface UsbDeviceFilterDef {
1009
+ vendorId?: number;
1010
+ productId?: number;
1011
+ classCode?: number;
1012
+ subclassCode?: number;
1013
+ protocolCode?: number;
1014
+ serialNumber?: string;
1015
+ }
1016
+ interface NdefMessage {
1017
+ records: NdefRecord[];
1018
+ }
1019
+ interface NdefRecord {
1020
+ recordType: string;
1021
+ mediaType?: string;
1022
+ id?: string;
1023
+ data?: DataView;
1024
+ encoding?: string;
1025
+ lang?: string;
1026
+ }
1027
+ interface NdefReadingEvent {
1028
+ serialNumber: string;
1029
+ message: NdefMessage;
1030
+ }
1031
+ interface NdefWriteOptions {
1032
+ overwrite?: boolean;
1033
+ signal?: AbortSignal;
1034
+ }
1035
+
1036
+ interface BluetoothDeviceInfo {
1037
+ id: string;
1038
+ name: string | undefined;
1039
+ connected: boolean;
1040
+ }
1041
+ declare class WebBluetoothService extends BrowserApiBaseService {
1042
+ protected getApiName(): string;
1043
+ isSupported(): boolean;
1044
+ requestDevice(options?: BluetoothRequestDeviceOptions): Promise<BluetoothDeviceRef>;
1045
+ connect(device: BluetoothDeviceRef): Promise<BluetoothRemoteGATTServer>;
1046
+ disconnect(device: BluetoothDeviceRef): void;
1047
+ watchDisconnection(device: BluetoothDeviceRef): Observable<void>;
1048
+ readCharacteristic(server: BluetoothRemoteGATTServer, serviceUuid: string, characteristicUuid: string): Promise<DataView>;
1049
+ writeCharacteristic(server: BluetoothRemoteGATTServer, serviceUuid: string, characteristicUuid: string, value: BufferSource): Promise<void>;
1050
+ watchCharacteristic(server: BluetoothRemoteGATTServer, serviceUuid: string, characteristicUuid: string): Observable<DataView>;
1051
+ static ɵfac: i0.ɵɵFactoryDeclaration<WebBluetoothService, never>;
1052
+ static ɵprov: i0.ɵɵInjectableDeclaration<WebBluetoothService>;
1053
+ }
1054
+
1055
+ interface UsbDeviceInfo {
1056
+ vendorId: number;
1057
+ productId: number;
1058
+ productName: string | undefined;
1059
+ manufacturerName: string | undefined;
1060
+ serialNumber: string | undefined;
1061
+ opened: boolean;
1062
+ }
1063
+ declare class WebUsbService extends BrowserApiBaseService {
1064
+ protected getApiName(): string;
1065
+ isSupported(): boolean;
1066
+ requestDevice(filters?: UsbDeviceFilterDef[]): Promise<UsbDeviceRef>;
1067
+ getDevices(): Promise<UsbDeviceRef[]>;
1068
+ open(device: UsbDeviceRef): Promise<void>;
1069
+ close(device: UsbDeviceRef): Promise<void>;
1070
+ selectConfiguration(device: UsbDeviceRef, configurationValue: number): Promise<void>;
1071
+ claimInterface(device: UsbDeviceRef, interfaceNumber: number): Promise<void>;
1072
+ releaseInterface(device: UsbDeviceRef, interfaceNumber: number): Promise<void>;
1073
+ transferIn(device: UsbDeviceRef, endpointNumber: number, length: number): Promise<UsbTransferResult>;
1074
+ transferOut(device: UsbDeviceRef, endpointNumber: number, data: BufferSource): Promise<UsbTransferResult>;
1075
+ watchConnection(): Observable<{
1076
+ device: UsbDeviceRef;
1077
+ type: 'connect' | 'disconnect';
1078
+ }>;
1079
+ getDeviceInfo(device: UsbDeviceRef): UsbDeviceInfo;
1080
+ static ɵfac: i0.ɵɵFactoryDeclaration<WebUsbService, never>;
1081
+ static ɵprov: i0.ɵɵInjectableDeclaration<WebUsbService>;
1082
+ }
1083
+
1084
+ declare class WebNfcService extends BrowserApiBaseService {
1085
+ protected getApiName(): string;
1086
+ isSupported(): boolean;
1087
+ scan(): Observable<NdefReadingEvent>;
1088
+ write(message: NdefMessage | string, options?: NdefWriteOptions): Promise<void>;
1089
+ static ɵfac: i0.ɵɵFactoryDeclaration<WebNfcService, never>;
1090
+ static ɵprov: i0.ɵɵInjectableDeclaration<WebNfcService>;
1091
+ }
1092
+
1093
+ interface PaymentMethodConfig {
1094
+ supportedMethods: string;
1095
+ data?: Record<string, unknown>;
1096
+ }
1097
+ interface PaymentDetailsInit {
1098
+ total: {
1099
+ label: string;
1100
+ amount: {
1101
+ currency: string;
1102
+ value: string;
1103
+ };
1104
+ };
1105
+ displayItems?: Array<{
1106
+ label: string;
1107
+ amount: {
1108
+ currency: string;
1109
+ value: string;
1110
+ };
1111
+ }>;
1112
+ }
1113
+ interface PaymentOptionsConfig {
1114
+ requestPayerName?: boolean;
1115
+ requestPayerEmail?: boolean;
1116
+ requestPayerPhone?: boolean;
1117
+ requestShipping?: boolean;
1118
+ }
1119
+ interface PaymentResult {
1120
+ methodName: string;
1121
+ details: Record<string, unknown>;
1122
+ payerName: string | null;
1123
+ payerEmail: string | null;
1124
+ payerPhone: string | null;
1125
+ }
1126
+ declare class PaymentRequestService extends BrowserApiBaseService {
1127
+ protected getApiName(): string;
1128
+ isSupported(): boolean;
1129
+ canMakePayment(methods: PaymentMethodConfig[], details: PaymentDetailsInit): Promise<boolean>;
1130
+ show(methods: PaymentMethodConfig[], details: PaymentDetailsInit, options?: PaymentOptionsConfig): Promise<PaymentResult>;
1131
+ abort(methods: PaymentMethodConfig[], details: PaymentDetailsInit): Promise<void>;
1132
+ static ɵfac: i0.ɵɵFactoryDeclaration<PaymentRequestService, never>;
1133
+ static ɵprov: i0.ɵɵInjectableDeclaration<PaymentRequestService>;
1134
+ }
1135
+
1136
+ interface PasswordCredentialData {
1137
+ id: string;
1138
+ password: string;
1139
+ name?: string;
1140
+ iconURL?: string;
1141
+ }
1142
+ interface PublicKeyCredentialOptions {
1143
+ challenge: BufferSource;
1144
+ rp: {
1145
+ name: string;
1146
+ id?: string;
1147
+ };
1148
+ user: {
1149
+ id: BufferSource;
1150
+ name: string;
1151
+ displayName: string;
1152
+ };
1153
+ pubKeyCredParams: Array<{
1154
+ type: 'public-key';
1155
+ alg: number;
1156
+ }>;
1157
+ timeout?: number;
1158
+ attestation?: AttestationConveyancePreference;
1159
+ authenticatorSelection?: AuthenticatorSelectionCriteria;
1160
+ }
1161
+ interface CredentialResult {
1162
+ id: string;
1163
+ type: string;
1164
+ }
1165
+ declare class CredentialManagementService extends BrowserApiBaseService {
1166
+ protected getApiName(): string;
1167
+ isSupported(): boolean;
1168
+ isPublicKeySupported(): boolean;
1169
+ get(options?: CredentialRequestOptions): Promise<Credential | null>;
1170
+ store(credential: Credential): Promise<void>;
1171
+ createPasswordCredential(data: PasswordCredentialData): Promise<Credential>;
1172
+ createPublicKeyCredential(options: PublicKeyCredentialOptions): Promise<Credential | null>;
1173
+ preventSilentAccess(): Promise<void>;
1174
+ isConditionalMediationAvailable(): Promise<boolean>;
1175
+ static ɵfac: i0.ɵɵFactoryDeclaration<CredentialManagementService, never>;
1176
+ static ɵprov: i0.ɵɵInjectableDeclaration<CredentialManagementService>;
1177
+ }
1178
+
714
1179
  interface MediaDevice {
715
1180
  deviceId: string;
716
1181
  groupId: string;
@@ -814,13 +1279,13 @@ interface ResizeRef {
814
1279
  readonly inlineSize: Signal<number>;
815
1280
  readonly blockSize: Signal<number>;
816
1281
  }
817
- declare function injectResizeObserver(elementOrRef: Element | ElementRef<Element>, options?: ResizeObserverOptions): ResizeRef;
1282
+ declare function injectResizeObserver(elementOrRef: ElementInput, options?: ResizeObserverOptions): ResizeRef;
818
1283
 
819
1284
  interface IntersectionRef {
820
1285
  readonly isIntersecting: Signal<boolean>;
821
1286
  readonly isVisible: Signal<boolean>;
822
1287
  }
823
- declare function injectIntersectionObserver(elementOrRef: Element | ElementRef<Element>, options?: IntersectionObserverOptions): IntersectionRef;
1288
+ declare function injectIntersectionObserver(elementOrRef: ElementInput, options?: IntersectionObserverOptions): IntersectionRef;
824
1289
 
825
1290
  interface NetworkInformationRef {
826
1291
  readonly snapshot: Signal<NetworkInformation>;
@@ -844,6 +1309,39 @@ interface ScreenOrientationRef {
844
1309
  }
845
1310
  declare function injectScreenOrientation(): ScreenOrientationRef;
846
1311
 
1312
+ interface MutationRef {
1313
+ readonly mutations: Signal<MutationRecord[]>;
1314
+ readonly mutationCount: Signal<number>;
1315
+ }
1316
+ declare function injectMutationObserver(elementOrRef: ElementInput, options?: MutationObserverOptions): MutationRef;
1317
+
1318
+ interface PerformanceObserverRef {
1319
+ readonly entries: Signal<PerformanceEntryList>;
1320
+ readonly entryCount: Signal<number>;
1321
+ readonly latestEntry: Signal<PerformanceEntry | undefined>;
1322
+ }
1323
+ declare function injectPerformanceObserver(config: PerformanceObserverConfig): PerformanceObserverRef;
1324
+
1325
+ interface IdleDetectorRef {
1326
+ readonly state: Signal<IdleState>;
1327
+ readonly userState: Signal<UserIdleState>;
1328
+ readonly screenState: Signal<ScreenIdleState>;
1329
+ readonly isUserIdle: Signal<boolean>;
1330
+ readonly isScreenLocked: Signal<boolean>;
1331
+ }
1332
+ declare function injectIdleDetector(options?: IdleDetectorOptions): IdleDetectorRef;
1333
+
1334
+ interface GamepadRef {
1335
+ readonly state: Signal<GamepadState | null>;
1336
+ readonly connected: Signal<boolean>;
1337
+ readonly buttons: Signal<ReadonlyArray<{
1338
+ pressed: boolean;
1339
+ value: number;
1340
+ }>>;
1341
+ readonly axes: Signal<readonly number[]>;
1342
+ }
1343
+ declare function injectGamepad(index: number, intervalMs?: number): GamepadRef;
1344
+
847
1345
  declare class BrowserSupportUtil {
848
1346
  static isSupported(feature: string): boolean;
849
1347
  static getUnsupportedFeatures(): string[];
@@ -893,6 +1391,18 @@ interface BrowserWebApisConfig {
893
1391
  enableServerSentEvents?: boolean;
894
1392
  enableVibration?: boolean;
895
1393
  enableSpeechSynthesis?: boolean;
1394
+ enableMutationObserver?: boolean;
1395
+ enablePerformanceObserver?: boolean;
1396
+ enableIdleDetector?: boolean;
1397
+ enableEyeDropper?: boolean;
1398
+ enableBarcodeDetector?: boolean;
1399
+ enableWebAudio?: boolean;
1400
+ enableGamepad?: boolean;
1401
+ enableWebBluetooth?: boolean;
1402
+ enableWebUsb?: boolean;
1403
+ enableWebNfc?: boolean;
1404
+ enablePaymentRequest?: boolean;
1405
+ enableCredentialManagement?: boolean;
896
1406
  }
897
1407
  declare const defaultBrowserWebApisConfig: BrowserWebApisConfig;
898
1408
  declare function provideBrowserWebApis(config?: BrowserWebApisConfig): EnvironmentProviders;
@@ -924,8 +1434,20 @@ declare function provideMediaRecorder(): EnvironmentProviders;
924
1434
  declare function provideServerSentEvents(): EnvironmentProviders;
925
1435
  declare function provideVibration(): EnvironmentProviders;
926
1436
  declare function provideSpeechSynthesis(): EnvironmentProviders;
1437
+ declare function provideMutationObserver(): EnvironmentProviders;
1438
+ declare function providePerformanceObserver(): EnvironmentProviders;
1439
+ declare function provideIdleDetector(): EnvironmentProviders;
1440
+ declare function provideEyeDropper(): EnvironmentProviders;
1441
+ declare function provideBarcodeDetector(): EnvironmentProviders;
1442
+ declare function provideWebAudio(): EnvironmentProviders;
1443
+ declare function provideGamepad(): EnvironmentProviders;
1444
+ declare function provideWebBluetooth(): EnvironmentProviders;
1445
+ declare function provideWebUsb(): EnvironmentProviders;
1446
+ declare function provideWebNfc(): EnvironmentProviders;
1447
+ declare function providePaymentRequest(): EnvironmentProviders;
1448
+ declare function provideCredentialManagement(): EnvironmentProviders;
927
1449
 
928
1450
  declare const version = "0.1.0";
929
1451
 
930
- export { BatteryService, BroadcastChannelService, BrowserApiBaseService, BrowserCapabilityService, BrowserSupportUtil, CameraService, ClipboardService, FileSystemAccessService, FullscreenService, GeolocationService, IntersectionObserverService, MediaDevicesService, MediaRecorderService, NetworkInformationService, NotificationService, PageVisibilityService, PermissionsService, ResizeObserverService, ScreenOrientationService, ScreenWakeLockService, ServerSentEventsService, SpeechSynthesisService, VibrationService, WebShareService, WebSocketService, WebStorageService, WebWorkerService, permissionGuard as createPermissionGuard, defaultBrowserWebApisConfig, injectIntersectionObserver, injectNetworkInformation, injectPageVisibility, injectResizeObserver, injectScreenOrientation, permissionGuard, provideBattery, provideBroadcastChannel, provideBrowserWebApis, provideCamera, provideClipboard, provideCommunicationApis, provideFileSystemAccess, provideFullscreen, provideGeolocation, provideIntersectionObserver, provideLocationApis, provideMediaApis, provideMediaDevices, provideMediaRecorder, provideNetworkInformation, provideNotifications, providePageVisibility, providePermissions, provideResizeObserver, provideScreenOrientation, provideScreenWakeLock, provideServerSentEvents, provideSpeechSynthesis, provideStorageApis, provideVibration, provideWebShare, provideWebSocket, provideWebStorage, provideWebWorker, version };
931
- export type { BatteryInfo, BatteryManager, BrowserCapabilityId, BrowserError, BrowserPermissions, BrowserWebApisConfig, CameraCapabilities, CameraInfo, ConnectionType, EffectiveConnectionType, ElementSize, ErrorCallback, EventHandler, FileOpenOptions, FileSaveOptions, GeolocationCoordinates, GeolocationError, GeolocationOptions, GeolocationPosition$1 as GeolocationPosition, GeolocationWatchOptions, IntersectionObserverOptions, IntersectionRef, MediaDevice, MediaDeviceKind, MediaDevicesInfo, MediaStreamConstraints$1 as MediaStreamConstraints, MediaTrackConstraints$1 as MediaTrackConstraints, NetworkInformation, NetworkInformationRef, OrientationInfo, OrientationLockType, OrientationType, PageVisibilityRef, PermissionNameExt, PermissionRequest, RecordingOptions, RecordingResult, RecordingState, ResizeObserverOptions, ResizeRef, SSEConfig, SSEConnectionState, SSEMessage, ScreenOrientationRef, SpeechOptions, SpeechState, StorageEvent, StorageOptions, StorageValue, VibrationPattern, VibrationPreset, VisibilityState, WakeLockStatus, WakeLockType, WebSocketConfig, WebSocketMessage, WebSocketStatus, WorkerMessage, WorkerStatus, WorkerTask };
1452
+ export { BarcodeDetectorService, BatteryService, BroadcastChannelService, BrowserApiBaseService, BrowserCapabilityService, BrowserSupportUtil, CameraService, ClipboardService, ConnectionRegistryBaseService, CredentialManagementService, EyeDropperService, FileSystemAccessService, FullscreenService, GamepadService, GeolocationService, IdleDetectorService, IntersectionObserverService, MediaDevicesService, MediaRecorderService, MutationObserverService, NetworkInformationService, NotificationService, PageVisibilityService, PaymentRequestService, PerformanceObserverService, PermissionAwareBrowserApiBaseService, PermissionsService, ResizeObserverService, ScreenOrientationService, ScreenWakeLockService, ServerSentEventsService, SpeechSynthesisService, VibrationService, WebAudioService, WebBluetoothService, WebNfcService, WebShareService, WebSocketService, WebStorageService, WebUsbService, WebWorkerService, permissionGuard as createPermissionGuard, defaultBrowserWebApisConfig, injectGamepad, injectIdleDetector, injectIntersectionObserver, injectMutationObserver, injectNetworkInformation, injectPageVisibility, injectPerformanceObserver, injectResizeObserver, injectScreenOrientation, permissionGuard, provideBarcodeDetector, provideBattery, provideBroadcastChannel, provideBrowserWebApis, provideCamera, provideClipboard, provideCommunicationApis, provideCredentialManagement, provideEyeDropper, provideFileSystemAccess, provideFullscreen, provideGamepad, provideGeolocation, provideIdleDetector, provideIntersectionObserver, provideLocationApis, provideMediaApis, provideMediaDevices, provideMediaRecorder, provideMutationObserver, provideNetworkInformation, provideNotifications, providePageVisibility, providePaymentRequest, providePerformanceObserver, providePermissions, provideResizeObserver, provideScreenOrientation, provideScreenWakeLock, provideServerSentEvents, provideSpeechSynthesis, provideStorageApis, provideVibration, provideWebAudio, provideWebBluetooth, provideWebNfc, provideWebShare, provideWebSocket, provideWebStorage, provideWebUsb, provideWebWorker, version };
1453
+ export type { AudioAnalyserData, AudioContextState, BarcodeFormat, BatteryInfo, BatteryManager, BluetoothDeviceInfo, BluetoothDeviceRef, BluetoothRequestDeviceOptions, BrowserCapabilityId, BrowserError, BrowserPermissions, BrowserWebApisConfig, CameraCapabilities, CameraInfo, ColorSelectionResult, ConnectionType, CredentialResult, DetectedBarcode, EffectiveConnectionType, ElementInput, ElementSize, ErrorCallback, EventHandler, FileOpenOptions, FileSaveOptions, GamepadRef, GamepadState, GeolocationCoordinates, GeolocationError, GeolocationOptions, GeolocationPosition$1 as GeolocationPosition, GeolocationWatchOptions, IdleDetectorOptions, IdleDetectorRef, IdleState, IntersectionObserverOptions, IntersectionRef, MediaDevice, MediaDeviceKind, MediaDevicesInfo, MediaStreamConstraints$1 as MediaStreamConstraints, MediaTrackConstraints$1 as MediaTrackConstraints, MutationObserverOptions, MutationRef, NdefMessage, NdefReadingEvent, NdefWriteOptions, NetworkInformation, NetworkInformationRef, OrientationInfo, OrientationLockType, OrientationType, PageVisibilityRef, PasswordCredentialData, PaymentDetailsInit, PaymentMethodConfig, PaymentOptionsConfig, PaymentResult, PerformanceEntryType, PerformanceObserverConfig, PerformanceObserverRef, PermissionNameExt, PermissionRequest, PublicKeyCredentialOptions, RecordingOptions, RecordingResult, RecordingState, ResizeObserverOptions, ResizeRef, SSEConfig, SSEConnectionState, SSEMessage, ScreenIdleState, ScreenOrientationRef, SpeechOptions, SpeechState, StorageEvent, StorageOptions, StorageValue, UsbDeviceFilterDef, UsbDeviceInfo, UsbDeviceRef, UserIdleState, VibrationPattern, VibrationPreset, VisibilityState, WakeLockStatus, WakeLockType, WebSocketConfig, WebSocketMessage, WebSocketStatus, WorkerMessage, WorkerStatus, WorkerTask };