react-native-nitro-geolocation 1.2.5 → 1.3.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.
Files changed (223) hide show
  1. package/README.md +55 -278
  2. package/android/build.gradle +1 -0
  3. package/android/src/main/AndroidManifest.xml +39 -0
  4. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/AndroidFusedLocationProvider.kt +310 -0
  5. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/AndroidFusedRequestFactory.kt +31 -0
  6. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/AndroidGeolocationConversions.kt +71 -0
  7. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/AndroidGeolocationErrors.kt +85 -0
  8. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/AndroidGeolocationOptions.kt +92 -0
  9. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/AndroidLocationSettings.kt +3 -0
  10. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/AndroidProviderRoute.kt +74 -0
  11. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/NitroBackgroundLocation.kt +132 -0
  12. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/NitroGeolocation.kt +219 -476
  13. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/AndroidBackgroundHttpSync.kt +134 -0
  14. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/AndroidBackgroundPermissions.kt +196 -0
  15. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/AndroidBackgroundSerialization.kt +266 -0
  16. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/NitroActivityRecognitionReceiver.kt +13 -0
  17. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/NitroBackgroundEventHub.kt +65 -0
  18. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/NitroBackgroundHeadlessTaskService.kt +58 -0
  19. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/NitroBackgroundLocationController.kt +710 -0
  20. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/NitroBackgroundLocationService.kt +48 -0
  21. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/NitroBackgroundNotificationFactory.kt +37 -0
  22. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/NitroBackgroundStore.kt +655 -0
  23. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/NitroBootReceiver.kt +26 -0
  24. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/NitroGeofenceReceiver.kt +14 -0
  25. package/android/src/main/java/com/margelo/nitro/nitrogeolocation/background/NitroLocationUpdateReceiver.kt +37 -0
  26. package/android/src/test/java/com/margelo/nitro/nitrogeolocation/AndroidFusedLocationProviderTest.kt +64 -0
  27. package/android/src/test/java/com/margelo/nitro/nitrogeolocation/AndroidProviderRouteTest.kt +116 -0
  28. package/ios/IOSBackgroundHttpSync.swift +126 -0
  29. package/ios/IOSBackgroundLocationDelegate.swift +36 -0
  30. package/ios/IOSBackgroundMotion.swift +55 -0
  31. package/ios/IOSBackgroundSerialization.swift +539 -0
  32. package/ios/IOSGeolocationConversions.swift +131 -0
  33. package/ios/IOSGeolocationDelegate.swift +31 -0
  34. package/ios/IOSGeolocationErrors.swift +39 -0
  35. package/ios/IOSGeolocationOptions.swift +135 -0
  36. package/ios/NitroBackgroundLocation.swift +849 -0
  37. package/ios/NitroGeolocation.swift +14 -347
  38. package/nitrogen/generated/android/c++/JActivityRecognitionOptions.hpp +69 -0
  39. package/nitrogen/generated/android/c++/JAndroidBackgroundLocationOptions.hpp +74 -0
  40. package/nitrogen/generated/android/c++/JAndroidBackgroundLocationStatus.hpp +67 -0
  41. package/nitrogen/generated/android/c++/JAndroidBackgroundProvider.hpp +61 -0
  42. package/nitrogen/generated/android/c++/JAndroidForegroundServiceOptions.hpp +90 -0
  43. package/nitrogen/generated/android/c++/JBackgroundEventEnvelope.hpp +129 -0
  44. package/nitrogen/generated/android/c++/JBackgroundEventType.hpp +70 -0
  45. package/nitrogen/generated/android/c++/JBackgroundHttpMethod.hpp +61 -0
  46. package/nitrogen/generated/android/c++/JBackgroundHttpSyncOptions.hpp +131 -0
  47. package/nitrogen/generated/android/c++/JBackgroundHttpSyncResult.hpp +111 -0
  48. package/nitrogen/generated/android/c++/JBackgroundLocation.hpp +110 -0
  49. package/nitrogen/generated/android/c++/JBackgroundLocationOptions.hpp +162 -0
  50. package/nitrogen/generated/android/c++/JBackgroundLocationSource.hpp +73 -0
  51. package/nitrogen/generated/android/c++/JBackgroundLocationState.hpp +70 -0
  52. package/nitrogen/generated/android/c++/JBackgroundLocationStatus.hpp +126 -0
  53. package/nitrogen/generated/android/c++/JBackgroundPermissionResult.hpp +79 -0
  54. package/nitrogen/generated/android/c++/JBackgroundPermissionStatus.hpp +64 -0
  55. package/nitrogen/generated/android/c++/JBackgroundTrackingMode.hpp +61 -0
  56. package/nitrogen/generated/android/c++/JBatterySnapshot.hpp +61 -0
  57. package/nitrogen/generated/android/c++/JDetectedActivity.hpp +66 -0
  58. package/nitrogen/generated/android/c++/JDetectedActivityType.hpp +76 -0
  59. package/nitrogen/generated/android/c++/JFunc_void_BackgroundEventEnvelope.hpp +114 -0
  60. package/nitrogen/generated/android/c++/JFunc_void_BackgroundLocation.hpp +95 -0
  61. package/nitrogen/generated/android/c++/JGeofenceEvent.hpp +94 -0
  62. package/nitrogen/generated/android/c++/JGeofenceRegion.hpp +112 -0
  63. package/nitrogen/generated/android/c++/JGeofenceTransition.hpp +61 -0
  64. package/nitrogen/generated/android/c++/JGeofencingOptions.hpp +82 -0
  65. package/nitrogen/generated/android/c++/JGetStoredBackgroundEventsOptions.hpp +90 -0
  66. package/nitrogen/generated/android/c++/JGetStoredBackgroundLocationsOptions.hpp +69 -0
  67. package/nitrogen/generated/android/c++/JHybridNitroBackgroundLocationSpec.cpp +662 -0
  68. package/nitrogen/generated/android/c++/JHybridNitroBackgroundLocationSpec.hpp +89 -0
  69. package/nitrogen/generated/android/c++/JIOSBackgroundActivityType.hpp +67 -0
  70. package/nitrogen/generated/android/c++/JIOSBackgroundLocationOptions.hpp +79 -0
  71. package/nitrogen/generated/android/c++/JIOSBackgroundLocationStatus.hpp +61 -0
  72. package/nitrogen/generated/android/c++/JLocationProviderStatus.hpp +5 -1
  73. package/nitrogen/generated/android/c++/JStoredBackgroundEventEnvelope.hpp +115 -0
  74. package/nitrogen/generated/android/c++/JStoredBackgroundLocation.hpp +122 -0
  75. package/nitrogen/generated/android/c++/JVariant_NullType_Boolean_String_Double.cpp +34 -0
  76. package/nitrogen/generated/android/c++/JVariant_NullType_Boolean_String_Double.hpp +100 -0
  77. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/ActivityRecognitionOptions.kt +66 -0
  78. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/AndroidBackgroundLocationOptions.kt +66 -0
  79. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/AndroidBackgroundLocationStatus.kt +61 -0
  80. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/AndroidBackgroundProvider.kt +24 -0
  81. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/AndroidForegroundServiceOptions.kt +91 -0
  82. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundEventEnvelope.kt +96 -0
  83. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundEventType.kt +27 -0
  84. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundHttpMethod.kt +24 -0
  85. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundHttpSyncOptions.kt +101 -0
  86. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundHttpSyncResult.kt +71 -0
  87. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundLocation.kt +96 -0
  88. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundLocationOptions.kt +136 -0
  89. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundLocationSource.kt +28 -0
  90. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundLocationState.kt +27 -0
  91. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundLocationStatus.kt +116 -0
  92. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundPermissionResult.kt +71 -0
  93. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundPermissionStatus.kt +25 -0
  94. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BackgroundTrackingMode.kt +24 -0
  95. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/BatterySnapshot.kt +56 -0
  96. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/DetectedActivity.kt +61 -0
  97. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/DetectedActivityType.kt +29 -0
  98. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/Func_void_BackgroundEventEnvelope.kt +80 -0
  99. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/Func_void_BackgroundLocation.kt +80 -0
  100. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/GeofenceEvent.kt +66 -0
  101. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/GeofenceRegion.kt +96 -0
  102. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/GeofenceTransition.kt +24 -0
  103. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/GeofencingOptions.kt +56 -0
  104. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/GetStoredBackgroundEventsOptions.kt +66 -0
  105. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/GetStoredBackgroundLocationsOptions.kt +66 -0
  106. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/HybridNitroBackgroundLocationSpec.kt +174 -0
  107. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/IOSBackgroundActivityType.kt +26 -0
  108. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/IOSBackgroundLocationOptions.kt +76 -0
  109. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/IOSBackgroundLocationStatus.kt +56 -0
  110. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/LocationProviderStatus.kt +7 -2
  111. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/StoredBackgroundEventEnvelope.kt +76 -0
  112. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/StoredBackgroundLocation.kt +111 -0
  113. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrogeolocation/Variant_NullType_Boolean_String_Double.kt +88 -0
  114. package/nitrogen/generated/android/nitrogeolocation+autolinking.cmake +3 -0
  115. package/nitrogen/generated/android/nitrogeolocationOnLoad.cpp +20 -0
  116. package/nitrogen/generated/ios/NitroGeolocation-Swift-Cxx-Bridge.cpp +104 -15
  117. package/nitrogen/generated/ios/NitroGeolocation-Swift-Cxx-Bridge.hpp +1107 -50
  118. package/nitrogen/generated/ios/NitroGeolocation-Swift-Cxx-Umbrella.hpp +102 -0
  119. package/nitrogen/generated/ios/NitroGeolocationAutolinking.mm +8 -0
  120. package/nitrogen/generated/ios/NitroGeolocationAutolinking.swift +15 -3
  121. package/nitrogen/generated/ios/c++/HybridNitroBackgroundLocationSpecSwift.cpp +11 -0
  122. package/nitrogen/generated/ios/c++/HybridNitroBackgroundLocationSpecSwift.hpp +416 -0
  123. package/nitrogen/generated/ios/swift/ActivityRecognitionOptions.swift +96 -0
  124. package/nitrogen/generated/ios/swift/AndroidBackgroundLocationOptions.swift +76 -0
  125. package/nitrogen/generated/ios/swift/AndroidBackgroundLocationStatus.swift +58 -0
  126. package/nitrogen/generated/ios/swift/AndroidBackgroundProvider.swift +44 -0
  127. package/nitrogen/generated/ios/swift/AndroidForegroundServiceOptions.swift +160 -0
  128. package/nitrogen/generated/ios/swift/BackgroundEventEnvelope.swift +110 -0
  129. package/nitrogen/generated/ios/swift/BackgroundEventType.swift +56 -0
  130. package/nitrogen/generated/ios/swift/BackgroundHttpMethod.swift +44 -0
  131. package/nitrogen/generated/ios/swift/BackgroundHttpSyncOptions.swift +259 -0
  132. package/nitrogen/generated/ios/swift/BackgroundHttpSyncResult.swift +87 -0
  133. package/nitrogen/generated/ios/swift/BackgroundLocation.swift +118 -0
  134. package/nitrogen/generated/ios/swift/BackgroundLocationOptions.swift +292 -0
  135. package/nitrogen/generated/ios/swift/BackgroundLocationSource.swift +60 -0
  136. package/nitrogen/generated/ios/swift/BackgroundLocationState.swift +56 -0
  137. package/nitrogen/generated/ios/swift/BackgroundLocationStatus.swift +124 -0
  138. package/nitrogen/generated/ios/swift/BackgroundPermissionResult.swift +81 -0
  139. package/nitrogen/generated/ios/swift/BackgroundPermissionStatus.swift +48 -0
  140. package/nitrogen/generated/ios/swift/BackgroundTrackingMode.swift +44 -0
  141. package/nitrogen/generated/ios/swift/BatterySnapshot.swift +60 -0
  142. package/nitrogen/generated/ios/swift/DetectedActivity.swift +39 -0
  143. package/nitrogen/generated/ios/swift/DetectedActivityType.swift +64 -0
  144. package/nitrogen/generated/ios/swift/Func_void_BackgroundEventEnvelope.swift +46 -0
  145. package/nitrogen/generated/ios/swift/Func_void_BackgroundHttpSyncResult.swift +46 -0
  146. package/nitrogen/generated/ios/swift/Func_void_BackgroundLocation.swift +46 -0
  147. package/nitrogen/generated/ios/swift/Func_void_BackgroundLocationStatus.swift +46 -0
  148. package/nitrogen/generated/ios/swift/Func_void_BackgroundPermissionResult.swift +46 -0
  149. package/nitrogen/generated/ios/swift/Func_void_std__optional_BackgroundLocationOptions_.swift +46 -0
  150. package/nitrogen/generated/ios/swift/Func_void_std__vector_GeofenceRegion_.swift +46 -0
  151. package/nitrogen/generated/ios/swift/Func_void_std__vector_StoredBackgroundEventEnvelope_.swift +46 -0
  152. package/nitrogen/generated/ios/swift/Func_void_std__vector_StoredBackgroundLocation_.swift +46 -0
  153. package/nitrogen/generated/ios/swift/GeofenceEvent.swift +50 -0
  154. package/nitrogen/generated/ios/swift/GeofenceRegion.swift +195 -0
  155. package/nitrogen/generated/ios/swift/GeofenceTransition.swift +44 -0
  156. package/nitrogen/generated/ios/swift/GeofencingOptions.swift +66 -0
  157. package/nitrogen/generated/ios/swift/GetStoredBackgroundEventsOptions.swift +102 -0
  158. package/nitrogen/generated/ios/swift/GetStoredBackgroundLocationsOptions.swift +96 -0
  159. package/nitrogen/generated/ios/swift/HybridNitroBackgroundLocationSpec.swift +81 -0
  160. package/nitrogen/generated/ios/swift/HybridNitroBackgroundLocationSpec_cxx.swift +654 -0
  161. package/nitrogen/generated/ios/swift/IOSBackgroundActivityType.swift +52 -0
  162. package/nitrogen/generated/ios/swift/IOSBackgroundLocationOptions.swift +125 -0
  163. package/nitrogen/generated/ios/swift/IOSBackgroundLocationStatus.swift +34 -0
  164. package/nitrogen/generated/ios/swift/LocationProviderStatus.swift +19 -1
  165. package/nitrogen/generated/ios/swift/StoredBackgroundEventEnvelope.swift +54 -0
  166. package/nitrogen/generated/ios/swift/StoredBackgroundLocation.swift +120 -0
  167. package/nitrogen/generated/ios/swift/Variant_NullType_Bool_String_Double.swift +34 -0
  168. package/nitrogen/generated/shared/c++/ActivityRecognitionOptions.hpp +95 -0
  169. package/nitrogen/generated/shared/c++/AndroidBackgroundLocationOptions.hpp +100 -0
  170. package/nitrogen/generated/shared/c++/AndroidBackgroundLocationStatus.hpp +93 -0
  171. package/nitrogen/generated/shared/c++/AndroidBackgroundProvider.hpp +80 -0
  172. package/nitrogen/generated/shared/c++/AndroidForegroundServiceOptions.hpp +116 -0
  173. package/nitrogen/generated/shared/c++/BackgroundEventEnvelope.hpp +140 -0
  174. package/nitrogen/generated/shared/c++/BackgroundEventType.hpp +92 -0
  175. package/nitrogen/generated/shared/c++/BackgroundHttpMethod.hpp +80 -0
  176. package/nitrogen/generated/shared/c++/BackgroundHttpSyncOptions.hpp +129 -0
  177. package/nitrogen/generated/shared/c++/BackgroundHttpSyncResult.hpp +101 -0
  178. package/nitrogen/generated/shared/c++/BackgroundLocation.hpp +134 -0
  179. package/nitrogen/generated/shared/c++/BackgroundLocationOptions.hpp +174 -0
  180. package/nitrogen/generated/shared/c++/BackgroundLocationSource.hpp +96 -0
  181. package/nitrogen/generated/shared/c++/BackgroundLocationState.hpp +92 -0
  182. package/nitrogen/generated/shared/c++/BackgroundLocationStatus.hpp +158 -0
  183. package/nitrogen/generated/shared/c++/BackgroundPermissionResult.hpp +107 -0
  184. package/nitrogen/generated/shared/c++/BackgroundPermissionStatus.hpp +84 -0
  185. package/nitrogen/generated/shared/c++/BackgroundTrackingMode.hpp +80 -0
  186. package/nitrogen/generated/shared/c++/BatterySnapshot.hpp +87 -0
  187. package/nitrogen/generated/shared/c++/DetectedActivity.hpp +92 -0
  188. package/nitrogen/generated/shared/c++/DetectedActivityType.hpp +100 -0
  189. package/nitrogen/generated/shared/c++/GeofenceEvent.hpp +103 -0
  190. package/nitrogen/generated/shared/c++/GeofenceRegion.hpp +123 -0
  191. package/nitrogen/generated/shared/c++/GeofenceTransition.hpp +80 -0
  192. package/nitrogen/generated/shared/c++/GeofencingOptions.hpp +90 -0
  193. package/nitrogen/generated/shared/c++/GetStoredBackgroundEventsOptions.hpp +98 -0
  194. package/nitrogen/generated/shared/c++/GetStoredBackgroundLocationsOptions.hpp +95 -0
  195. package/nitrogen/generated/shared/c++/HybridNitroBackgroundLocationSpec.cpp +47 -0
  196. package/nitrogen/generated/shared/c++/HybridNitroBackgroundLocationSpec.hpp +133 -0
  197. package/nitrogen/generated/shared/c++/IOSBackgroundActivityType.hpp +88 -0
  198. package/nitrogen/generated/shared/c++/IOSBackgroundLocationOptions.hpp +105 -0
  199. package/nitrogen/generated/shared/c++/IOSBackgroundLocationStatus.hpp +87 -0
  200. package/nitrogen/generated/shared/c++/LocationProviderStatus.hpp +5 -1
  201. package/nitrogen/generated/shared/c++/StoredBackgroundEventEnvelope.hpp +108 -0
  202. package/nitrogen/generated/shared/c++/StoredBackgroundLocation.hpp +146 -0
  203. package/package.json +17 -6
  204. package/src/NitroGeolocation.nitro.ts +4 -4
  205. package/src/api/getCurrentPosition.ts +1 -1
  206. package/src/api/requestLocationSettings.ts +3 -2
  207. package/src/background/NitroBackgroundLocation.nitro.ts +83 -0
  208. package/src/background/index.ts +200 -0
  209. package/src/background/index.web.ts +120 -0
  210. package/src/background/task.ts +13 -0
  211. package/src/background/types.ts +328 -0
  212. package/src/compat/index.web.ts +141 -0
  213. package/src/index.tsx +3 -0
  214. package/src/index.web.tsx +41 -0
  215. package/src/publicTypes.ts +6 -5
  216. package/src/types.ts +3 -0
  217. package/src/web/browser.ts +171 -0
  218. package/src/web/index.ts +167 -0
  219. package/src/web/useWatchPosition.ts +76 -0
  220. package/src/web/watch.ts +81 -0
  221. package/src/devtools/index.test.ts +0 -54
  222. package/src/utils/errors.test.ts +0 -65
  223. package/src/utils/provider.test.ts +0 -303
@@ -0,0 +1,328 @@
1
+ import type {
2
+ LocationError,
3
+ PermissionStatus
4
+ } from "../NitroGeolocation.nitro";
5
+ import type {
6
+ AccuracyAuthorization,
7
+ AndroidGranularity,
8
+ GeolocationResponse,
9
+ LocationAccuracyOptions,
10
+ LocationProviderStatus,
11
+ LocationProviderUsed
12
+ } from "../publicTypes";
13
+
14
+ export type BackgroundPermissionStatus =
15
+ | "granted"
16
+ | "denied"
17
+ | "restricted"
18
+ | "undetermined";
19
+
20
+ export interface BackgroundPermissionResult {
21
+ foreground: PermissionStatus;
22
+ background: BackgroundPermissionStatus;
23
+ accuracyAuthorization?: AccuracyAuthorization;
24
+ canRequestBackgroundInline?: boolean;
25
+ needsSettingsRedirect?: boolean;
26
+ }
27
+
28
+ export type BackgroundLocationState =
29
+ | "idle"
30
+ | "starting"
31
+ | "running"
32
+ | "stopping"
33
+ | "stopped"
34
+ | "error";
35
+
36
+ export interface AndroidBackgroundLocationStatus {
37
+ isForegroundServiceRunning: boolean;
38
+ isIgnoringBatteryOptimizations?: boolean;
39
+ notificationPermission?: PermissionStatus;
40
+ }
41
+
42
+ export interface IOSBackgroundLocationStatus {
43
+ allowsBackgroundLocationUpdates: boolean;
44
+ significantChangesEnabled: boolean;
45
+ }
46
+
47
+ export interface BackgroundLocationStatus {
48
+ state: BackgroundLocationState;
49
+ isRunning: boolean;
50
+ isConfigured: boolean;
51
+ foregroundPermission: PermissionStatus;
52
+ backgroundPermission: BackgroundPermissionStatus;
53
+ accuracyAuthorization?: AccuracyAuthorization;
54
+ locationServicesEnabled: boolean;
55
+ providerStatus?: LocationProviderStatus;
56
+ storedLocationCount: number;
57
+ storedEventCount: number;
58
+ geofenceCount: number;
59
+ android?: AndroidBackgroundLocationStatus;
60
+ ios?: IOSBackgroundLocationStatus;
61
+ lastError?: LocationError;
62
+ }
63
+
64
+ export type BackgroundTrackingMode =
65
+ | "continuous"
66
+ | "significantChanges"
67
+ | "activityAware";
68
+
69
+ export interface BackgroundLocationOptions {
70
+ trackingMode?: BackgroundTrackingMode;
71
+ accuracy?: LocationAccuracyOptions;
72
+ granularity?: AndroidGranularity;
73
+ interval?: number;
74
+ fastestInterval?: number;
75
+ distanceFilter?: number;
76
+ maxUpdateDelay?: number;
77
+ waitForAccurateLocation?: boolean;
78
+ persist?: boolean;
79
+ maxStoredLocations?: number;
80
+ maxStoredEvents?: number;
81
+ stopOnTerminate?: boolean;
82
+ startOnBoot?: boolean;
83
+ android?: AndroidBackgroundLocationOptions;
84
+ ios?: IOSBackgroundLocationOptions;
85
+ geofencing?: GeofencingOptions;
86
+ activityRecognition?: ActivityRecognitionOptions;
87
+ sync?: BackgroundHttpSyncOptions;
88
+ }
89
+
90
+ export type AndroidBackgroundProvider =
91
+ | "auto"
92
+ | "playServices"
93
+ | "android_platform";
94
+
95
+ export interface AndroidBackgroundLocationOptions {
96
+ locationProvider?: AndroidBackgroundProvider;
97
+ foregroundService: AndroidForegroundServiceOptions;
98
+ requestNotificationPermission?: boolean;
99
+ requestIgnoreBatteryOptimizations?: boolean;
100
+ }
101
+
102
+ export interface AndroidForegroundServiceOptions {
103
+ notificationId?: number;
104
+ notificationTitle: string;
105
+ notificationText: string;
106
+ notificationChannelId?: string;
107
+ notificationChannelName?: string;
108
+ notificationChannelDescription?: string;
109
+ notificationIcon?: string;
110
+ notificationColor?: string;
111
+ stopActionTitle?: string;
112
+ }
113
+
114
+ export type IOSBackgroundActivityType =
115
+ | "other"
116
+ | "automotiveNavigation"
117
+ | "fitness"
118
+ | "otherNavigation"
119
+ | "airborne";
120
+
121
+ export interface IOSBackgroundLocationOptions {
122
+ activityType?: IOSBackgroundActivityType;
123
+ pausesLocationUpdatesAutomatically?: boolean;
124
+ showsBackgroundLocationIndicator?: boolean;
125
+ useSignificantChanges?: boolean;
126
+ deferredUpdatesDistance?: number;
127
+ deferredUpdatesInterval?: number;
128
+ }
129
+
130
+ export type BackgroundLocationSource =
131
+ | "foregroundService"
132
+ | "background"
133
+ | "significantChange"
134
+ | "geofence"
135
+ | "deferred"
136
+ | "manual"
137
+ | "unknown";
138
+
139
+ export interface BatterySnapshot {
140
+ level?: number;
141
+ isCharging?: boolean;
142
+ }
143
+
144
+ export interface BackgroundLocation extends GeolocationResponse {
145
+ id?: string;
146
+ source: BackgroundLocationSource;
147
+ isFromBackground: boolean;
148
+ provider?: LocationProviderUsed;
149
+ mocked?: boolean;
150
+ recordedAt: number;
151
+ activity?: DetectedActivity;
152
+ battery?: BatterySnapshot;
153
+ }
154
+
155
+ export interface StoredBackgroundLocation extends BackgroundLocation {
156
+ id: string;
157
+ deliveredToJS: boolean;
158
+ synced: boolean;
159
+ createdAt: number;
160
+ }
161
+
162
+ export type BackgroundEventType =
163
+ | "location"
164
+ | "geofence"
165
+ | "activity"
166
+ | "providerChange"
167
+ | "httpSync"
168
+ | "error";
169
+
170
+ export interface BackgroundEventBase {
171
+ id: string;
172
+ type: BackgroundEventType;
173
+ timestamp: number;
174
+ deliveredToJS: boolean;
175
+ }
176
+
177
+ export interface BackgroundLocationEvent extends BackgroundEventBase {
178
+ type: "location";
179
+ location: BackgroundLocation;
180
+ }
181
+
182
+ export interface BackgroundGeofenceEventEnvelope extends BackgroundEventBase {
183
+ type: "geofence";
184
+ geofence: GeofenceEvent;
185
+ }
186
+
187
+ export interface BackgroundActivityEventEnvelope extends BackgroundEventBase {
188
+ type: "activity";
189
+ activity: DetectedActivity;
190
+ }
191
+
192
+ export interface BackgroundProviderChangeEvent extends BackgroundEventBase {
193
+ type: "providerChange";
194
+ providerStatus: LocationProviderStatus;
195
+ }
196
+
197
+ export interface BackgroundHttpSyncEvent extends BackgroundEventBase {
198
+ type: "httpSync";
199
+ result: BackgroundHttpSyncResult;
200
+ }
201
+
202
+ export interface BackgroundErrorEvent extends BackgroundEventBase {
203
+ type: "error";
204
+ error: LocationError;
205
+ }
206
+
207
+ export interface BackgroundEventEnvelope extends BackgroundEventBase {
208
+ location?: BackgroundLocation;
209
+ geofence?: GeofenceEvent;
210
+ activity?: DetectedActivity;
211
+ providerStatus?: LocationProviderStatus;
212
+ result?: BackgroundHttpSyncResult;
213
+ error?: LocationError;
214
+ }
215
+
216
+ export type BackgroundEvent =
217
+ | BackgroundLocationEvent
218
+ | BackgroundGeofenceEventEnvelope
219
+ | BackgroundActivityEventEnvelope
220
+ | BackgroundProviderChangeEvent
221
+ | BackgroundHttpSyncEvent
222
+ | BackgroundErrorEvent;
223
+
224
+ export type GeofenceTransition = "enter" | "exit" | "dwell";
225
+
226
+ export interface GeofenceRegion {
227
+ identifier: string;
228
+ latitude: number;
229
+ longitude: number;
230
+ radius: number;
231
+ notifyOnEntry?: boolean;
232
+ notifyOnExit?: boolean;
233
+ notifyOnDwell?: boolean;
234
+ loiteringDelay?: number;
235
+ expirationDuration?: number;
236
+ metadata?: Record<string, string | number | boolean | null>;
237
+ }
238
+
239
+ export interface GeofencingOptions {
240
+ initialTrigger?: GeofenceTransition[];
241
+ notificationResponsiveness?: number;
242
+ }
243
+
244
+ export interface GeofenceEvent {
245
+ region: GeofenceRegion;
246
+ transition: GeofenceTransition;
247
+ location?: BackgroundLocation;
248
+ timestamp: number;
249
+ }
250
+
251
+ export type DetectedActivityType =
252
+ | "still"
253
+ | "walking"
254
+ | "running"
255
+ | "onFoot"
256
+ | "onBicycle"
257
+ | "inVehicle"
258
+ | "tilting"
259
+ | "unknown";
260
+
261
+ export interface DetectedActivity {
262
+ type: DetectedActivityType;
263
+ confidence: number;
264
+ timestamp: number;
265
+ }
266
+
267
+ export interface ActivityRecognitionOptions {
268
+ enabled?: boolean;
269
+ interval?: number;
270
+ stopOnStill?: boolean;
271
+ minimumConfidence?: number;
272
+ }
273
+
274
+ export type BackgroundHttpMethod = "POST" | "PUT" | "PATCH";
275
+
276
+ export interface BackgroundHttpSyncOptions {
277
+ url: string;
278
+ method?: BackgroundHttpMethod;
279
+ headers?: Record<string, string>;
280
+ batch?: boolean;
281
+ batchSize?: number;
282
+ syncThreshold?: number;
283
+ syncInterval?: number;
284
+ retry?: boolean;
285
+ maxRetries?: number;
286
+ bodyTemplate?: Record<string, string | number | boolean | null>;
287
+ autoClear?: boolean;
288
+ }
289
+
290
+ export interface BackgroundHttpSyncResult {
291
+ success: boolean;
292
+ statusCode?: number;
293
+ syncedLocationIds: string[];
294
+ failedLocationIds: string[];
295
+ error?: string;
296
+ }
297
+
298
+ export interface StoredBackgroundEvent extends BackgroundEventBase {
299
+ event: BackgroundEvent;
300
+ createdAt: number;
301
+ }
302
+
303
+ export interface StoredBackgroundEventEnvelope extends BackgroundEventBase {
304
+ event: BackgroundEventEnvelope;
305
+ createdAt: number;
306
+ }
307
+
308
+ export interface GetStoredBackgroundLocationsOptions {
309
+ limit?: number;
310
+ since?: number;
311
+ includeDelivered?: boolean;
312
+ includeSynced?: boolean;
313
+ }
314
+
315
+ export interface GetStoredBackgroundEventsOptions {
316
+ types?: BackgroundEventType[];
317
+ limit?: number;
318
+ since?: number;
319
+ includeDelivered?: boolean;
320
+ }
321
+
322
+ export interface BackgroundSubscription {
323
+ remove(): void;
324
+ }
325
+
326
+ export type BackgroundTaskHandler = (
327
+ event: BackgroundEvent
328
+ ) => void | Promise<void>;
@@ -0,0 +1,141 @@
1
+ import type {
2
+ CompatGeolocationConfiguration,
3
+ CompatGeolocationError,
4
+ CompatGeolocationOptions,
5
+ CompatGeolocationResponse
6
+ } from "../publicTypes";
7
+ import type { BrowserPosition, BrowserPositionError } from "../web/browser";
8
+ import { getGeolocation } from "../web/browser";
9
+
10
+ export type {
11
+ CompatGeolocationConfiguration as GeolocationConfiguration,
12
+ CompatGeolocationResponse as GeolocationResponse,
13
+ CompatGeolocationError as GeolocationError,
14
+ CompatGeolocationOptions as GeolocationOptions
15
+ } from "../publicTypes";
16
+
17
+ function mapPosition(pos: BrowserPosition): CompatGeolocationResponse {
18
+ return {
19
+ coords: {
20
+ latitude: pos.coords.latitude,
21
+ longitude: pos.coords.longitude,
22
+ altitude: pos.coords.altitude,
23
+ accuracy: pos.coords.accuracy,
24
+ altitudeAccuracy: pos.coords.altitudeAccuracy,
25
+ heading: pos.coords.heading,
26
+ speed: pos.coords.speed
27
+ },
28
+ timestamp: pos.timestamp
29
+ };
30
+ }
31
+
32
+ function mapError(err: BrowserPositionError): CompatGeolocationError {
33
+ return {
34
+ code: err.code,
35
+ message: err.message,
36
+ PERMISSION_DENIED: 1,
37
+ POSITION_UNAVAILABLE: 2,
38
+ TIMEOUT: 3
39
+ };
40
+ }
41
+
42
+ export function setRNConfiguration(
43
+ _config: CompatGeolocationConfiguration
44
+ ): void {}
45
+
46
+ export function requestAuthorization(
47
+ success?: () => void,
48
+ _error?: (error: CompatGeolocationError) => void
49
+ ): void {
50
+ success?.();
51
+ }
52
+
53
+ export function getCurrentPosition(
54
+ success: (position: CompatGeolocationResponse) => void,
55
+ error?: (error: CompatGeolocationError) => void,
56
+ options?: CompatGeolocationOptions
57
+ ): void {
58
+ const geo = getGeolocation();
59
+ if (!geo) {
60
+ error?.({
61
+ code: 2,
62
+ message: "Browser geolocation is unavailable.",
63
+ PERMISSION_DENIED: 1,
64
+ POSITION_UNAVAILABLE: 2,
65
+ TIMEOUT: 3
66
+ });
67
+ return;
68
+ }
69
+ geo.getCurrentPosition(
70
+ (pos) => success(mapPosition(pos)),
71
+ error ? (err) => error(mapError(err)) : undefined,
72
+ options
73
+ ? {
74
+ timeout: options.timeout,
75
+ maximumAge: options.maximumAge,
76
+ enableHighAccuracy: options.enableHighAccuracy
77
+ }
78
+ : undefined
79
+ );
80
+ }
81
+
82
+ const activeWatches = new Set<number>();
83
+
84
+ export function watchPosition(
85
+ success: (position: CompatGeolocationResponse) => void,
86
+ error?: (error: CompatGeolocationError) => void,
87
+ options?: CompatGeolocationOptions
88
+ ): number {
89
+ const geo = getGeolocation();
90
+ if (!geo) {
91
+ error?.({
92
+ code: 2,
93
+ message: "Browser geolocation is unavailable.",
94
+ PERMISSION_DENIED: 1,
95
+ POSITION_UNAVAILABLE: 2,
96
+ TIMEOUT: 3
97
+ });
98
+ return -1;
99
+ }
100
+ const watchId = geo.watchPosition(
101
+ (pos) => success(mapPosition(pos)),
102
+ error ? (err) => error(mapError(err)) : undefined,
103
+ options
104
+ ? {
105
+ timeout: options.timeout,
106
+ maximumAge: options.maximumAge,
107
+ enableHighAccuracy: options.enableHighAccuracy
108
+ }
109
+ : undefined
110
+ );
111
+ activeWatches.add(watchId);
112
+ return watchId;
113
+ }
114
+
115
+ export function clearWatch(watchId: number): void {
116
+ getGeolocation()?.clearWatch(watchId);
117
+ activeWatches.delete(watchId);
118
+ }
119
+
120
+ export function stopObserving(): void {
121
+ const geo = getGeolocation();
122
+ if (!geo) {
123
+ activeWatches.clear();
124
+ return;
125
+ }
126
+ for (const watchId of activeWatches) {
127
+ geo.clearWatch(watchId);
128
+ }
129
+ activeWatches.clear();
130
+ }
131
+
132
+ const Geolocation = {
133
+ setRNConfiguration,
134
+ requestAuthorization,
135
+ getCurrentPosition,
136
+ watchPosition,
137
+ clearWatch,
138
+ stopObserving
139
+ };
140
+
141
+ export default Geolocation;
package/src/index.tsx CHANGED
@@ -70,6 +70,9 @@ export {
70
70
  stopObserving
71
71
  } from "./api";
72
72
 
73
+ // Background API
74
+ export * from "./background";
75
+
73
76
  // Hooks
74
77
  export * from "./hooks";
75
78
 
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Browser implementation for the Modern API.
3
+ *
4
+ * This entry intentionally avoids Nitro native imports so web bundlers can use
5
+ * the package root without loading native bindings.
6
+ */
7
+
8
+ export * from "./web";
9
+ export * from "./background/index.web";
10
+
11
+ export type {
12
+ PermissionStatus,
13
+ LocationRequestOptions,
14
+ LocationSettingsOptions,
15
+ LocationError
16
+ } from "./NitroGeolocation.nitro";
17
+
18
+ export type {
19
+ GeolocationResponse,
20
+ GeolocationCoordinates,
21
+ LocationProviderStatus,
22
+ LocationAvailability,
23
+ GeocodingCoordinates,
24
+ GeocodedLocation,
25
+ ReverseGeocodedAddress,
26
+ AndroidAccuracyPreset,
27
+ AndroidGranularity,
28
+ IOSAccuracyPreset,
29
+ AccuracyAuthorization,
30
+ IOSActivityType,
31
+ LocationAccuracyOptions,
32
+ Heading,
33
+ HeadingOptions,
34
+ AuthorizationLevel,
35
+ LocationProvider,
36
+ LocationProviderUsed,
37
+ GeolocationConfiguration,
38
+ ModernGeolocationConfiguration
39
+ } from "./publicTypes";
40
+
41
+ export * from "./utils";
@@ -73,8 +73,9 @@ export type GeolocationConfiguration = Omit<
73
73
  /**
74
74
  * Android location provider.
75
75
  *
76
- * `auto` currently uses Android's platform `LocationManager` by default.
77
- * Set `playServices` explicitly to use Google Play Services fused location.
76
+ * `auto` and `playServices` prefer Google Play Services fused location when
77
+ * available and fall back to Android's platform provider. Use `android` to
78
+ * force Android's platform `LocationManager` path.
78
79
  */
79
80
  locationProvider?: LocationProvider;
80
81
  };
@@ -90,10 +91,10 @@ export type CompatGeolocationConfiguration = Omit<
90
91
  "locationProvider"
91
92
  > & {
92
93
  /**
93
- * Android location provider.
94
+ * Android location provider compatibility option.
94
95
  *
95
- * `auto` currently uses Android's platform `LocationManager` by default.
96
- * Set `playServices` explicitly to use Google Play Services fused location.
96
+ * Preserved for the legacy `/compat` configuration surface. Use the Modern
97
+ * API root import when you need Android fused/provider selection.
97
98
  */
98
99
  locationProvider?: LocationProvider;
99
100
  };
package/src/types.ts CHANGED
@@ -112,6 +112,9 @@ export interface LocationProviderStatus {
112
112
  /** Android-only passive provider availability. Undefined on iOS. */
113
113
  passiveAvailable?: boolean;
114
114
 
115
+ /** Android-only Google Play Services availability. Undefined on iOS. */
116
+ googlePlayServicesAvailable?: boolean;
117
+
115
118
  /**
116
119
  * Android-only Google Location Accuracy state when Google Play Services
117
120
  * exposes it. Undefined on iOS or when unavailable.