react-native-nitro-background-geolocation 0.1.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 (306) hide show
  1. package/NitroBackgroundGeolocation.podspec +29 -0
  2. package/android/CMakeLists.txt +24 -0
  3. package/android/build.gradle +133 -0
  4. package/android/src/main/AndroidManifest.xml +65 -0
  5. package/android/src/main/cpp/cpp-adapter.cpp +11 -0
  6. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/ConfigMapper.kt +332 -0
  7. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/HeadlessTaskRegistry.kt +23 -0
  8. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/HeadlessTaskService.kt +66 -0
  9. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/NitroBackgroundGeolocation.kt +538 -0
  10. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/NitroBackgroundGeolocationPackage.kt +22 -0
  11. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/ReactNativeHeadlessTaskRunner.kt +62 -0
  12. package/android/src/main/java/com/marianhello/bgloc/BackgroundGeolocationFacade.java +542 -0
  13. package/android/src/main/java/com/marianhello/bgloc/BootCompletedReceiver.java +59 -0
  14. package/android/src/main/java/com/marianhello/bgloc/Config.java +652 -0
  15. package/android/src/main/java/com/marianhello/bgloc/ConnectivityListener.java +5 -0
  16. package/android/src/main/java/com/marianhello/bgloc/HttpPostService.java +168 -0
  17. package/android/src/main/java/com/marianhello/bgloc/LocationManager.java +138 -0
  18. package/android/src/main/java/com/marianhello/bgloc/PluginDelegate.java +19 -0
  19. package/android/src/main/java/com/marianhello/bgloc/PluginException.java +38 -0
  20. package/android/src/main/java/com/marianhello/bgloc/PostLocationTask.java +186 -0
  21. package/android/src/main/java/com/marianhello/bgloc/ResourceResolver.java +55 -0
  22. package/android/src/main/java/com/marianhello/bgloc/data/AbstractLocationTemplate.java +69 -0
  23. package/android/src/main/java/com/marianhello/bgloc/data/ArrayListLocationTemplate.java +88 -0
  24. package/android/src/main/java/com/marianhello/bgloc/data/BackgroundActivity.java +108 -0
  25. package/android/src/main/java/com/marianhello/bgloc/data/BackgroundLocation.java +994 -0
  26. package/android/src/main/java/com/marianhello/bgloc/data/ConfigurationDAO.java +13 -0
  27. package/android/src/main/java/com/marianhello/bgloc/data/DAOFactory.java +17 -0
  28. package/android/src/main/java/com/marianhello/bgloc/data/HashMapLocationTemplate.java +82 -0
  29. package/android/src/main/java/com/marianhello/bgloc/data/LocationDAO.java +22 -0
  30. package/android/src/main/java/com/marianhello/bgloc/data/LocationTemplate.java +12 -0
  31. package/android/src/main/java/com/marianhello/bgloc/data/LocationTemplateFactory.java +65 -0
  32. package/android/src/main/java/com/marianhello/bgloc/data/LocationTransform.java +19 -0
  33. package/android/src/main/java/com/marianhello/bgloc/data/provider/ContentProviderLocationDAO.java +395 -0
  34. package/android/src/main/java/com/marianhello/bgloc/data/provider/LocationContentProvider.java +321 -0
  35. package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationContract.java +76 -0
  36. package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationDAO.java +160 -0
  37. package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationContract.java +112 -0
  38. package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationDAO.java +506 -0
  39. package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteOpenHelper.java +151 -0
  40. package/android/src/main/java/com/marianhello/bgloc/headless/AbstractTaskRunner.java +15 -0
  41. package/android/src/main/java/com/marianhello/bgloc/headless/ActivityTask.java +48 -0
  42. package/android/src/main/java/com/marianhello/bgloc/headless/JsCallback.java +10 -0
  43. package/android/src/main/java/com/marianhello/bgloc/headless/LocationTask.java +61 -0
  44. package/android/src/main/java/com/marianhello/bgloc/headless/StationaryTask.java +25 -0
  45. package/android/src/main/java/com/marianhello/bgloc/headless/Task.java +8 -0
  46. package/android/src/main/java/com/marianhello/bgloc/headless/TaskRunner.java +5 -0
  47. package/android/src/main/java/com/marianhello/bgloc/headless/TaskRunnerFactory.java +8 -0
  48. package/android/src/main/java/com/marianhello/bgloc/provider/AbstractLocationProvider.java +171 -0
  49. package/android/src/main/java/com/marianhello/bgloc/provider/ActivityRecognitionLocationProvider.java +280 -0
  50. package/android/src/main/java/com/marianhello/bgloc/provider/DistanceFilterLocationProvider.java +586 -0
  51. package/android/src/main/java/com/marianhello/bgloc/provider/LocationProvider.java +32 -0
  52. package/android/src/main/java/com/marianhello/bgloc/provider/LocationProviderFactory.java +47 -0
  53. package/android/src/main/java/com/marianhello/bgloc/provider/ProviderDelegate.java +12 -0
  54. package/android/src/main/java/com/marianhello/bgloc/provider/RawLocationProvider.java +142 -0
  55. package/android/src/main/java/com/marianhello/bgloc/service/LocationService.java +17 -0
  56. package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceImpl.java +760 -0
  57. package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceInfo.java +6 -0
  58. package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceInfoImpl.java +41 -0
  59. package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceIntentBuilder.java +203 -0
  60. package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceProxy.java +140 -0
  61. package/android/src/main/java/com/marianhello/bgloc/sync/AccountHelper.java +39 -0
  62. package/android/src/main/java/com/marianhello/bgloc/sync/Authenticator.java +68 -0
  63. package/android/src/main/java/com/marianhello/bgloc/sync/AuthenticatorService.java +28 -0
  64. package/android/src/main/java/com/marianhello/bgloc/sync/BatchManager.java +246 -0
  65. package/android/src/main/java/com/marianhello/bgloc/sync/NotificationHelper.java +148 -0
  66. package/android/src/main/java/com/marianhello/bgloc/sync/SyncAdapter.java +233 -0
  67. package/android/src/main/java/com/marianhello/bgloc/sync/SyncService.java +68 -0
  68. package/android/src/main/java/com/marianhello/logging/DBLogReader.java +203 -0
  69. package/android/src/main/java/com/marianhello/logging/LogEntry.java +99 -0
  70. package/android/src/main/java/com/marianhello/logging/LoggerManager.java +70 -0
  71. package/android/src/main/java/com/marianhello/logging/UncaughtExceptionLogger.java +36 -0
  72. package/android/src/main/java/com/marianhello/utils/CloneHelper.java +22 -0
  73. package/android/src/main/java/com/marianhello/utils/Convert.java +56 -0
  74. package/android/src/main/java/com/marianhello/utils/TextUtils.java +72 -0
  75. package/android/src/main/java/com/marianhello/utils/ToneGenerator.java +68 -0
  76. package/android/src/main/java/org/apache/commons/io/Charsets.java +153 -0
  77. package/android/src/main/java/org/apache/commons/io/input/ReversedLinesFileReader.java +344 -0
  78. package/android/src/main/java/org/chromium/content/browser/ThreadUtils.java +134 -0
  79. package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlExpression.java +398 -0
  80. package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlSelectStatement.java +671 -0
  81. package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlStatement.java +29 -0
  82. package/android/src/main/java/ru/andremoniy/utils/TextUtils.java +61 -0
  83. package/android/src/main/res/values/strings.xml +6 -0
  84. package/android/src/main/res/xml/authenticator.xml +7 -0
  85. package/android/src/main/res/xml/syncadapter.xml +9 -0
  86. package/app.plugin.js +64 -0
  87. package/ios/NitroBackgroundGeolocation.swift +719 -0
  88. package/ios/NitroBackgroundGeolocationBootstrap.m +98 -0
  89. package/ios/common/BackgroundGeolocation/CocoaLumberjack.h +1945 -0
  90. package/ios/common/BackgroundGeolocation/CocoaLumberjack.m +5255 -0
  91. package/ios/common/BackgroundGeolocation/FMDB.h +2357 -0
  92. package/ios/common/BackgroundGeolocation/FMDB.m +2672 -0
  93. package/ios/common/BackgroundGeolocation/FMDBLogger.h +42 -0
  94. package/ios/common/BackgroundGeolocation/FMDBLogger.m +264 -0
  95. package/ios/common/BackgroundGeolocation/INTULocationManager/INTUHeadingRequest.h +41 -0
  96. package/ios/common/BackgroundGeolocation/INTULocationManager/INTUHeadingRequest.m +68 -0
  97. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager+Internal.h +33 -0
  98. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager.h +178 -0
  99. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager.m +1025 -0
  100. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequest.h +103 -0
  101. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequest.m +238 -0
  102. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequestDefines.h +163 -0
  103. package/ios/common/BackgroundGeolocation/INTULocationManager/INTURequestIDGenerator.h +39 -0
  104. package/ios/common/BackgroundGeolocation/INTULocationManager/INTURequestIDGenerator.m +37 -0
  105. package/ios/common/BackgroundGeolocation/MAURAbstractLocationProvider.h +51 -0
  106. package/ios/common/BackgroundGeolocation/MAURAbstractLocationProvider.m +53 -0
  107. package/ios/common/BackgroundGeolocation/MAURActivity.h +23 -0
  108. package/ios/common/BackgroundGeolocation/MAURActivity.m +52 -0
  109. package/ios/common/BackgroundGeolocation/MAURActivityLocationProvider.h +18 -0
  110. package/ios/common/BackgroundGeolocation/MAURActivityLocationProvider.m +202 -0
  111. package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.h +62 -0
  112. package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.m +650 -0
  113. package/ios/common/BackgroundGeolocation/MAURBackgroundSync.h +34 -0
  114. package/ios/common/BackgroundGeolocation/MAURBackgroundSync.m +184 -0
  115. package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.h +25 -0
  116. package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.m +105 -0
  117. package/ios/common/BackgroundGeolocation/MAURConfig.h +74 -0
  118. package/ios/common/BackgroundGeolocation/MAURConfig.m +485 -0
  119. package/ios/common/BackgroundGeolocation/MAURConfigurationContract.h +49 -0
  120. package/ios/common/BackgroundGeolocation/MAURConfigurationContract.m +51 -0
  121. package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.h +20 -0
  122. package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.m +523 -0
  123. package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.h +17 -0
  124. package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.m +97 -0
  125. package/ios/common/BackgroundGeolocation/MAURLocation.h +59 -0
  126. package/ios/common/BackgroundGeolocation/MAURLocation.m +349 -0
  127. package/ios/common/BackgroundGeolocation/MAURLocationContract.h +34 -0
  128. package/ios/common/BackgroundGeolocation/MAURLocationContract.m +35 -0
  129. package/ios/common/BackgroundGeolocation/MAURLocationManager.h +53 -0
  130. package/ios/common/BackgroundGeolocation/MAURLocationManager.m +308 -0
  131. package/ios/common/BackgroundGeolocation/MAURLogReader.h +26 -0
  132. package/ios/common/BackgroundGeolocation/MAURLogReader.m +122 -0
  133. package/ios/common/BackgroundGeolocation/MAURLogging.h +19 -0
  134. package/ios/common/BackgroundGeolocation/MAURPostLocationTask.h +40 -0
  135. package/ios/common/BackgroundGeolocation/MAURPostLocationTask.m +218 -0
  136. package/ios/common/BackgroundGeolocation/MAURProviderDelegate.h +52 -0
  137. package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.h +18 -0
  138. package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.m +129 -0
  139. package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.h +26 -0
  140. package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.m +278 -0
  141. package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.h +57 -0
  142. package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.m +93 -0
  143. package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.h +38 -0
  144. package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.m +380 -0
  145. package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.h +32 -0
  146. package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.m +276 -0
  147. package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.h +20 -0
  148. package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.m +62 -0
  149. package/ios/common/BackgroundGeolocation/Reachability.h +102 -0
  150. package/ios/common/BackgroundGeolocation/Reachability.m +474 -0
  151. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOLocationManager.h +80 -0
  152. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOLocationManager.m +147 -0
  153. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionActivity.h +30 -0
  154. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionActivity.m +42 -0
  155. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionDetector.h +99 -0
  156. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionDetector.m +327 -0
  157. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOStepDetector.h +44 -0
  158. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOStepDetector.m +94 -0
  159. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/ext/NSString+ZIMString.h +55 -0
  160. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/ext/NSString+ZIMString.m +47 -0
  161. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlDataManipulationCommand.h +27 -0
  162. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlExpression.h +250 -0
  163. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlExpression.m +259 -0
  164. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlSelectStatement.h +360 -0
  165. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlSelectStatement.m +427 -0
  166. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlStatement.h +37 -0
  167. package/lib/module/NitroBackgroundGeolocation.nitro.js +172 -0
  168. package/lib/module/NitroBackgroundGeolocation.nitro.js.map +1 -0
  169. package/lib/module/headless.js +72 -0
  170. package/lib/module/headless.js.map +1 -0
  171. package/lib/module/index.js +60 -0
  172. package/lib/module/index.js.map +1 -0
  173. package/lib/module/package.json +1 -0
  174. package/lib/typescript/package.json +1 -0
  175. package/lib/typescript/src/NitroBackgroundGeolocation.nitro.d.ts +616 -0
  176. package/lib/typescript/src/NitroBackgroundGeolocation.nitro.d.ts.map +1 -0
  177. package/lib/typescript/src/headless.d.ts +40 -0
  178. package/lib/typescript/src/headless.d.ts.map +1 -0
  179. package/lib/typescript/src/index.d.ts +8 -0
  180. package/lib/typescript/src/index.d.ts.map +1 -0
  181. package/nitro.json +23 -0
  182. package/nitrogen/generated/android/c++/JActivity.hpp +61 -0
  183. package/nitrogen/generated/android/c++/JAuthorizationStatus.hpp +61 -0
  184. package/nitrogen/generated/android/c++/JBackgroundGeolocationError.hpp +61 -0
  185. package/nitrogen/generated/android/c++/JConfigureOptions.hpp +179 -0
  186. package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
  187. package/nitrogen/generated/android/c++/JFunc_void_Activity.hpp +78 -0
  188. package/nitrogen/generated/android/c++/JFunc_void_AuthorizationStatus.hpp +77 -0
  189. package/nitrogen/generated/android/c++/JFunc_void_BackgroundGeolocationError.hpp +78 -0
  190. package/nitrogen/generated/android/c++/JFunc_void_Location.hpp +78 -0
  191. package/nitrogen/generated/android/c++/JFunc_void_StationaryLocation.hpp +78 -0
  192. package/nitrogen/generated/android/c++/JHybridNitroBackgroundGeolocationSpec.cpp +530 -0
  193. package/nitrogen/generated/android/c++/JHybridNitroBackgroundGeolocationSpec.hpp +90 -0
  194. package/nitrogen/generated/android/c++/JLocation.hpp +105 -0
  195. package/nitrogen/generated/android/c++/JLocationAccuracy.hpp +64 -0
  196. package/nitrogen/generated/android/c++/JLocationOptions.hpp +65 -0
  197. package/nitrogen/generated/android/c++/JLocationProvider.hpp +61 -0
  198. package/nitrogen/generated/android/c++/JLogEntry.hpp +73 -0
  199. package/nitrogen/generated/android/c++/JNativeLogLevel.hpp +67 -0
  200. package/nitrogen/generated/android/c++/JServiceStatus.hpp +66 -0
  201. package/nitrogen/generated/android/c++/JStationaryLocation.hpp +109 -0
  202. package/nitrogen/generated/android/c++/JVariant_NullType_AnyMap.cpp +26 -0
  203. package/nitrogen/generated/android/c++/JVariant_NullType_AnyMap.hpp +71 -0
  204. package/nitrogen/generated/android/c++/JVariant_NullType_Boolean.cpp +26 -0
  205. package/nitrogen/generated/android/c++/JVariant_NullType_Boolean.hpp +69 -0
  206. package/nitrogen/generated/android/c++/JVariant_NullType_Double.cpp +26 -0
  207. package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +69 -0
  208. package/nitrogen/generated/android/c++/JVariant_NullType_LocationAccuracy.cpp +26 -0
  209. package/nitrogen/generated/android/c++/JVariant_NullType_LocationAccuracy.hpp +71 -0
  210. package/nitrogen/generated/android/c++/JVariant_NullType_LocationProvider.cpp +26 -0
  211. package/nitrogen/generated/android/c++/JVariant_NullType_LocationProvider.hpp +71 -0
  212. package/nitrogen/generated/android/c++/JVariant_NullType_Map_String__String_.cpp +33 -0
  213. package/nitrogen/generated/android/c++/JVariant_NullType_Map_String__String_.hpp +77 -0
  214. package/nitrogen/generated/android/c++/JVariant_NullType_String.cpp +26 -0
  215. package/nitrogen/generated/android/c++/JVariant_NullType_String.hpp +70 -0
  216. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Activity.kt +56 -0
  217. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/AuthorizationStatus.kt +24 -0
  218. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/BackgroundGeolocationError.kt +56 -0
  219. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/ConfigureOptions.kt +182 -0
  220. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void.kt +80 -0
  221. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_Activity.kt +80 -0
  222. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_AuthorizationStatus.kt +80 -0
  223. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_BackgroundGeolocationError.kt +80 -0
  224. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_Location.kt +80 -0
  225. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_StationaryLocation.kt +80 -0
  226. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/HybridNitroBackgroundGeolocationSpec.kt +218 -0
  227. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Location.kt +111 -0
  228. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationAccuracy.kt +25 -0
  229. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationOptions.kt +61 -0
  230. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationProvider.kt +24 -0
  231. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LogEntry.kt +71 -0
  232. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/NativeLogLevel.kt +26 -0
  233. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/ServiceStatus.kt +61 -0
  234. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/StationaryLocation.kt +116 -0
  235. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_AnyMap.kt +63 -0
  236. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Boolean.kt +62 -0
  237. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Double.kt +62 -0
  238. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_LocationAccuracy.kt +62 -0
  239. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_LocationProvider.kt +62 -0
  240. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Map_String__String_.kt +62 -0
  241. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_String.kt +62 -0
  242. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/nitrobackgroundgeolocationOnLoad.kt +35 -0
  243. package/nitrogen/generated/android/nitrobackgroundgeolocation+autolinking.cmake +88 -0
  244. package/nitrogen/generated/android/nitrobackgroundgeolocation+autolinking.gradle +27 -0
  245. package/nitrogen/generated/android/nitrobackgroundgeolocationOnLoad.cpp +66 -0
  246. package/nitrogen/generated/android/nitrobackgroundgeolocationOnLoad.hpp +34 -0
  247. package/nitrogen/generated/ios/NitroBackgroundGeolocation+autolinking.rb +62 -0
  248. package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Bridge.cpp +129 -0
  249. package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Bridge.hpp +911 -0
  250. package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Umbrella.hpp +88 -0
  251. package/nitrogen/generated/ios/NitroBackgroundGeolocationAutolinking.mm +33 -0
  252. package/nitrogen/generated/ios/NitroBackgroundGeolocationAutolinking.swift +26 -0
  253. package/nitrogen/generated/ios/c++/HybridNitroBackgroundGeolocationSpecSwift.cpp +11 -0
  254. package/nitrogen/generated/ios/c++/HybridNitroBackgroundGeolocationSpecSwift.hpp +335 -0
  255. package/nitrogen/generated/ios/swift/Activity.swift +34 -0
  256. package/nitrogen/generated/ios/swift/AuthorizationStatus.swift +44 -0
  257. package/nitrogen/generated/ios/swift/BackgroundGeolocationError.swift +34 -0
  258. package/nitrogen/generated/ios/swift/ConfigureOptions.swift +1037 -0
  259. package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
  260. package/nitrogen/generated/ios/swift/Func_void_Activity.swift +46 -0
  261. package/nitrogen/generated/ios/swift/Func_void_AuthorizationStatus.swift +46 -0
  262. package/nitrogen/generated/ios/swift/Func_void_BackgroundGeolocationError.swift +46 -0
  263. package/nitrogen/generated/ios/swift/Func_void_ConfigureOptions.swift +46 -0
  264. package/nitrogen/generated/ios/swift/Func_void_Location.swift +46 -0
  265. package/nitrogen/generated/ios/swift/Func_void_ServiceStatus.swift +46 -0
  266. package/nitrogen/generated/ios/swift/Func_void_StationaryLocation.swift +46 -0
  267. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  268. package/nitrogen/generated/ios/swift/Func_void_std__optional_StationaryLocation_.swift +46 -0
  269. package/nitrogen/generated/ios/swift/Func_void_std__vector_Location_.swift +46 -0
  270. package/nitrogen/generated/ios/swift/Func_void_std__vector_LogEntry_.swift +46 -0
  271. package/nitrogen/generated/ios/swift/HybridNitroBackgroundGeolocationSpec.swift +82 -0
  272. package/nitrogen/generated/ios/swift/HybridNitroBackgroundGeolocationSpec_cxx.swift +675 -0
  273. package/nitrogen/generated/ios/swift/Location.swift +89 -0
  274. package/nitrogen/generated/ios/swift/LocationAccuracy.swift +48 -0
  275. package/nitrogen/generated/ios/swift/LocationOptions.swift +78 -0
  276. package/nitrogen/generated/ios/swift/LocationProvider.swift +44 -0
  277. package/nitrogen/generated/ios/swift/LogEntry.swift +49 -0
  278. package/nitrogen/generated/ios/swift/NativeLogLevel.swift +52 -0
  279. package/nitrogen/generated/ios/swift/ServiceStatus.swift +39 -0
  280. package/nitrogen/generated/ios/swift/StationaryLocation.swift +94 -0
  281. package/nitrogen/generated/ios/swift/Variant_NullType_AnyMap.swift +30 -0
  282. package/nitrogen/generated/ios/swift/Variant_NullType_Bool.swift +30 -0
  283. package/nitrogen/generated/ios/swift/Variant_NullType_Dictionary_String__String_.swift +30 -0
  284. package/nitrogen/generated/ios/swift/Variant_NullType_Double.swift +30 -0
  285. package/nitrogen/generated/ios/swift/Variant_NullType_LocationAccuracy.swift +30 -0
  286. package/nitrogen/generated/ios/swift/Variant_NullType_LocationProvider.swift +30 -0
  287. package/nitrogen/generated/ios/swift/Variant_NullType_String.swift +30 -0
  288. package/nitrogen/generated/shared/c++/Activity.hpp +87 -0
  289. package/nitrogen/generated/shared/c++/AuthorizationStatus.hpp +63 -0
  290. package/nitrogen/generated/shared/c++/BackgroundGeolocationError.hpp +87 -0
  291. package/nitrogen/generated/shared/c++/ConfigureOptions.hpp +197 -0
  292. package/nitrogen/generated/shared/c++/HybridNitroBackgroundGeolocationSpec.cpp +48 -0
  293. package/nitrogen/generated/shared/c++/HybridNitroBackgroundGeolocationSpec.hpp +121 -0
  294. package/nitrogen/generated/shared/c++/Location.hpp +131 -0
  295. package/nitrogen/generated/shared/c++/LocationAccuracy.hpp +69 -0
  296. package/nitrogen/generated/shared/c++/LocationOptions.hpp +91 -0
  297. package/nitrogen/generated/shared/c++/LocationProvider.hpp +63 -0
  298. package/nitrogen/generated/shared/c++/LogEntry.hpp +99 -0
  299. package/nitrogen/generated/shared/c++/NativeLogLevel.hpp +65 -0
  300. package/nitrogen/generated/shared/c++/ServiceStatus.hpp +92 -0
  301. package/nitrogen/generated/shared/c++/StationaryLocation.hpp +135 -0
  302. package/package.json +112 -0
  303. package/react-native.config.js +10 -0
  304. package/src/NitroBackgroundGeolocation.nitro.ts +656 -0
  305. package/src/headless.ts +91 -0
  306. package/src/index.tsx +100 -0
@@ -0,0 +1,719 @@
1
+ import Foundation
2
+ import NitroModules
3
+ import UIKit
4
+
5
+ final class NitroBackgroundGeolocation: HybridNitroBackgroundGeolocationSpec {
6
+ private final class DelegateProxy: NSObject, MAURProviderDelegate {
7
+ weak var owner: NitroBackgroundGeolocation?
8
+
9
+ init(owner: NitroBackgroundGeolocation) {
10
+ self.owner = owner
11
+ }
12
+
13
+ func onAuthorizationChanged(_ authStatus: MAURLocationAuthorizationStatus) {
14
+ owner?.emitAuthorization(status: authStatus)
15
+ }
16
+
17
+ func onLocationChanged(_ location: MAURLocation) {
18
+ owner?.emitLocation(location)
19
+ }
20
+
21
+ func onStationaryChanged(_ location: MAURLocation) {
22
+ owner?.emitStationary(location)
23
+ }
24
+
25
+ func onLocationPause() {
26
+ }
27
+
28
+ func onLocationResume() {
29
+ }
30
+
31
+ func onActivityChanged(_ activity: MAURActivity) {
32
+ owner?.emitActivity(activity)
33
+ }
34
+
35
+ func onAbortRequested() {
36
+ owner?.emitAbortRequested()
37
+ }
38
+
39
+ func onHttpAuthorization() {
40
+ owner?.emitHttpAuthorization()
41
+ }
42
+
43
+ func onError(_ error: Error) {
44
+ owner?.emitError(error as NSError)
45
+ }
46
+ }
47
+
48
+ private enum BridgeError: LocalizedError {
49
+ case deallocated
50
+ case operationFailed(String, String)
51
+
52
+ var errorDescription: String? {
53
+ switch self {
54
+ case .deallocated:
55
+ return "NitroBackgroundGeolocation was deallocated before the operation completed."
56
+ case .operationFailed(let method, let message):
57
+ return "NitroBackgroundGeolocation iOS \(method) failed: \(message)"
58
+ }
59
+ }
60
+ }
61
+
62
+ private let facade = MAURBackgroundGeolocationFacade.sharedInstance()!
63
+ private lazy var delegateProxy = DelegateProxy(owner: self)
64
+
65
+ private var locationCallbacks: [UUID: (Location) -> Void] = [:]
66
+ private var stationaryCallbacks: [UUID: (StationaryLocation) -> Void] = [:]
67
+ private var activityCallbacks: [UUID: (Activity) -> Void] = [:]
68
+ private var startCallbacks: [UUID: () -> Void] = [:]
69
+ private var stopCallbacks: [UUID: () -> Void] = [:]
70
+ private var errorCallbacks: [UUID: (BackgroundGeolocationError) -> Void] = [:]
71
+ private var authorizationCallbacks: [UUID: (AuthorizationStatus) -> Void] = [:]
72
+ private var foregroundCallbacks: [UUID: () -> Void] = [:]
73
+ private var backgroundCallbacks: [UUID: () -> Void] = [:]
74
+ private var abortRequestedCallbacks: [UUID: () -> Void] = [:]
75
+ private var httpAuthorizationCallbacks: [UUID: () -> Void] = [:]
76
+
77
+ override init() {
78
+ super.init()
79
+
80
+ facade.delegate = delegateProxy
81
+ }
82
+
83
+ deinit {
84
+ facade.delegate = nil
85
+ }
86
+
87
+ func configure(options: ConfigureOptions) throws -> Promise<Void> {
88
+ Promise.parallel { [weak self] in
89
+ guard let self else {
90
+ throw BridgeError.deallocated
91
+ }
92
+
93
+ let config = try Self.makeNativeConfig(from: options)
94
+ do {
95
+ try self.facade.configure(config)
96
+ } catch {
97
+ throw Self.makeOperationError(method: "configure", error: error as NSError)
98
+ }
99
+ }
100
+ }
101
+
102
+ func start() throws -> Promise<Void> {
103
+ Promise.parallel { [weak self] in
104
+ guard let self else {
105
+ throw BridgeError.deallocated
106
+ }
107
+
108
+ do {
109
+ try self.facade.start()
110
+ } catch {
111
+ throw Self.makeOperationError(method: "start", error: error as NSError)
112
+ }
113
+ self.startCallbacks.values.forEach { $0() }
114
+ }
115
+ }
116
+
117
+ func stop() throws -> Promise<Void> {
118
+ Promise.parallel { [weak self] in
119
+ guard let self else {
120
+ throw BridgeError.deallocated
121
+ }
122
+
123
+ do {
124
+ try self.facade.stop()
125
+ } catch {
126
+ throw Self.makeOperationError(method: "stop", error: error as NSError)
127
+ }
128
+ self.stopCallbacks.values.forEach { $0() }
129
+ }
130
+ }
131
+
132
+ func getCurrentLocation(options: LocationOptions) throws -> Promise<Location> {
133
+ Promise.parallel { [weak self] in
134
+ guard let self else {
135
+ throw BridgeError.deallocated
136
+ }
137
+
138
+ let timeout = Int32(options.timeout ?? Double(Int32.max))
139
+ let maximumAge = Int(options.maximumAge ?? Double(Int.max))
140
+ let enableHighAccuracy = options.enableHighAccuracy ?? false
141
+
142
+ do {
143
+ let location = try self.facade.getCurrentLocation(
144
+ timeout,
145
+ maximumAge: maximumAge,
146
+ enableHighAccuracy: enableHighAccuracy
147
+ )
148
+ return Self.makeLocation(from: location)
149
+ } catch {
150
+ throw Self.makeOperationError(method: "getCurrentLocation", error: error as NSError)
151
+ }
152
+ }
153
+ }
154
+
155
+ func getStationaryLocation() throws -> Promise<StationaryLocation?> {
156
+ Promise.parallel { [weak self] in
157
+ guard let self else {
158
+ throw BridgeError.deallocated
159
+ }
160
+
161
+ guard let location = self.facade.getStationaryLocation() else {
162
+ return nil
163
+ }
164
+ return Self.makeStationaryLocation(from: location)
165
+ }
166
+ }
167
+
168
+ func checkStatus() throws -> Promise<ServiceStatus> {
169
+ Promise.parallel { [weak self] in
170
+ guard let self else {
171
+ throw BridgeError.deallocated
172
+ }
173
+
174
+ return ServiceStatus(
175
+ isRunning: self.facade.isStarted(),
176
+ locationServicesEnabled: self.facade.locationServicesEnabled(),
177
+ authorization: Self.makeAuthorizationStatus(from: self.facade.authorizationStatus())
178
+ )
179
+ }
180
+ }
181
+
182
+ func getConfig() throws -> Promise<ConfigureOptions> {
183
+ Promise.parallel { [weak self] in
184
+ guard let self else {
185
+ throw BridgeError.deallocated
186
+ }
187
+
188
+ return try Self.makeConfigureOptions(from: self.facade.getConfig())
189
+ }
190
+ }
191
+
192
+ func showAppSettings() throws {
193
+ facade.showAppSettings()
194
+ }
195
+
196
+ func showLocationSettings() throws {
197
+ facade.showLocationSettings()
198
+ }
199
+
200
+ func getLocations() throws -> Promise<[Location]> {
201
+ Promise.parallel { [weak self] in
202
+ guard let self else {
203
+ throw BridgeError.deallocated
204
+ }
205
+
206
+ return self.facade.getLocations().map(Self.makeLocation)
207
+ }
208
+ }
209
+
210
+ func getValidLocations() throws -> Promise<[Location]> {
211
+ Promise.parallel { [weak self] in
212
+ guard let self else {
213
+ throw BridgeError.deallocated
214
+ }
215
+
216
+ return self.facade.getValidLocations().map(Self.makeLocation)
217
+ }
218
+ }
219
+
220
+ func getValidLocationsAndDelete() throws -> Promise<[Location]> {
221
+ Promise.parallel { [weak self] in
222
+ guard let self else {
223
+ throw BridgeError.deallocated
224
+ }
225
+
226
+ return self.facade.getValidLocationsAndDelete().map(Self.makeLocation)
227
+ }
228
+ }
229
+
230
+ func deleteLocation(locationId: Double) throws -> Promise<Void> {
231
+ Promise.parallel { [weak self] in
232
+ guard let self else {
233
+ throw BridgeError.deallocated
234
+ }
235
+
236
+ do {
237
+ try self.facade.deleteLocation(NSNumber(value: Int64(locationId)))
238
+ } catch {
239
+ throw Self.makeOperationError(method: "deleteLocation", error: error as NSError)
240
+ }
241
+ }
242
+ }
243
+
244
+ func deleteAllLocations() throws -> Promise<Void> {
245
+ Promise.parallel { [weak self] in
246
+ guard let self else {
247
+ throw BridgeError.deallocated
248
+ }
249
+
250
+ do {
251
+ try self.facade.deleteAllLocations()
252
+ } catch {
253
+ throw Self.makeOperationError(method: "deleteAllLocations", error: error as NSError)
254
+ }
255
+ }
256
+ }
257
+
258
+ func forceSync() throws -> Promise<Void> {
259
+ Promise.parallel { [weak self] in
260
+ guard let self else {
261
+ throw BridgeError.deallocated
262
+ }
263
+
264
+ self.facade.forceSync()
265
+ }
266
+ }
267
+
268
+ func getLogEntries(limit: Double, fromId: Double, minLevel: NativeLogLevel) throws -> Promise<[LogEntry]> {
269
+ Promise.parallel { [weak self] in
270
+ guard let self else {
271
+ throw BridgeError.deallocated
272
+ }
273
+
274
+ let entries = self.facade.getLogEntries(
275
+ Int(limit),
276
+ fromLogEntryId: Int(fromId),
277
+ minLogLevelFrom: Self.makeNativeLogLevelName(minLevel)
278
+ )
279
+
280
+ return Self.makeLogEntries(from: entries ?? [])
281
+ }
282
+ }
283
+
284
+ func onLocation(callback: @escaping (Location) -> Void) throws -> () -> Void {
285
+ registerCallback(callback, storage: \ .locationCallbacks)
286
+ }
287
+
288
+ func onStationary(callback: @escaping (StationaryLocation) -> Void) throws -> () -> Void {
289
+ registerCallback(callback, storage: \ .stationaryCallbacks)
290
+ }
291
+
292
+ func onActivity(callback: @escaping (Activity) -> Void) throws -> () -> Void {
293
+ registerCallback(callback, storage: \ .activityCallbacks)
294
+ }
295
+
296
+ func onStart(callback: @escaping () -> Void) throws -> () -> Void {
297
+ registerCallback(callback, storage: \ .startCallbacks)
298
+ }
299
+
300
+ func onStop(callback: @escaping () -> Void) throws -> () -> Void {
301
+ registerCallback(callback, storage: \ .stopCallbacks)
302
+ }
303
+
304
+ func onError(callback: @escaping (BackgroundGeolocationError) -> Void) throws -> () -> Void {
305
+ registerCallback(callback, storage: \ .errorCallbacks)
306
+ }
307
+
308
+ func onAuthorization(callback: @escaping (AuthorizationStatus) -> Void) throws -> () -> Void {
309
+ registerCallback(callback, storage: \ .authorizationCallbacks)
310
+ }
311
+
312
+ func onForeground(callback: @escaping () -> Void) throws -> () -> Void {
313
+ registerCallback(callback, storage: \ .foregroundCallbacks)
314
+ }
315
+
316
+ func onBackground(callback: @escaping () -> Void) throws -> () -> Void {
317
+ registerCallback(callback, storage: \ .backgroundCallbacks)
318
+ }
319
+
320
+ func onAbortRequested(callback: @escaping () -> Void) throws -> () -> Void {
321
+ registerCallback(callback, storage: \ .abortRequestedCallbacks)
322
+ }
323
+
324
+ func onHttpAuthorization(callback: @escaping () -> Void) throws -> () -> Void {
325
+ registerCallback(callback, storage: \ .httpAuthorizationCallbacks)
326
+ }
327
+
328
+ func removeAllListeners() throws {
329
+ locationCallbacks.removeAll()
330
+ stationaryCallbacks.removeAll()
331
+ activityCallbacks.removeAll()
332
+ startCallbacks.removeAll()
333
+ stopCallbacks.removeAll()
334
+ errorCallbacks.removeAll()
335
+ authorizationCallbacks.removeAll()
336
+ foregroundCallbacks.removeAll()
337
+ backgroundCallbacks.removeAll()
338
+ abortRequestedCallbacks.removeAll()
339
+ httpAuthorizationCallbacks.removeAll()
340
+ }
341
+
342
+ private func registerCallback<T>(_ callback: T, storage: ReferenceWritableKeyPath<NitroBackgroundGeolocation, [UUID: T]>) -> () -> Void {
343
+ let id = UUID()
344
+ self[keyPath: storage][id] = callback
345
+ return { [weak self] in
346
+ self?[keyPath: storage].removeValue(forKey: id)
347
+ }
348
+ }
349
+
350
+ private func emitLocation(_ location: MAURLocation) {
351
+ let jsLocation = Self.makeLocation(from: location)
352
+ locationCallbacks.values.forEach { $0(jsLocation) }
353
+ }
354
+
355
+ private func emitStationary(_ location: MAURLocation) {
356
+ let jsLocation = Self.makeStationaryLocation(from: location)
357
+ stationaryCallbacks.values.forEach { $0(jsLocation) }
358
+ }
359
+
360
+ private func emitActivity(_ activity: MAURActivity) {
361
+ let jsActivity = Activity(
362
+ confidence: activity.confidence?.doubleValue ?? 0,
363
+ type: activity.type ?? ""
364
+ )
365
+ activityCallbacks.values.forEach { $0(jsActivity) }
366
+ }
367
+
368
+ private func emitAuthorization(status: MAURLocationAuthorizationStatus) {
369
+ let jsStatus = Self.makeAuthorizationStatus(from: status)
370
+ authorizationCallbacks.values.forEach { $0(jsStatus) }
371
+ }
372
+
373
+ private func emitAbortRequested() {
374
+ abortRequestedCallbacks.values.forEach { $0() }
375
+ }
376
+
377
+ private func emitHttpAuthorization() {
378
+ httpAuthorizationCallbacks.values.forEach { $0() }
379
+ }
380
+
381
+ private func emitError(_ error: NSError) {
382
+ let jsError = BackgroundGeolocationError(
383
+ code: Double(error.code),
384
+ message: error.localizedDescription
385
+ )
386
+ errorCallbacks.values.forEach { $0(jsError) }
387
+ }
388
+
389
+ private static func makeOperationError(method: String, error: NSError?) -> Error {
390
+ if let error {
391
+ return error
392
+ }
393
+ return BridgeError.operationFailed(method, "Unknown native failure")
394
+ }
395
+
396
+ private static func makeLocation(from location: MAURLocation) -> Location {
397
+ Location(
398
+ id: location.locationId?.doubleValue ?? 0,
399
+ provider: location.provider ?? "",
400
+ locationProvider: location.locationProvider?.doubleValue ?? 0,
401
+ time: location.time.map { $0.timeIntervalSince1970 * 1000 } ?? 0,
402
+ latitude: location.latitude?.doubleValue ?? 0,
403
+ longitude: location.longitude?.doubleValue ?? 0,
404
+ accuracy: location.accuracy?.doubleValue ?? 0,
405
+ speed: location.speed?.doubleValue ?? 0,
406
+ altitude: location.altitude?.doubleValue ?? 0,
407
+ altitudeAccuracy: location.altitudeAccuracy?.doubleValue ?? 0,
408
+ bearing: location.heading?.doubleValue ?? 0,
409
+ isFromMockProvider: false,
410
+ mockLocationsEnabled: false
411
+ )
412
+ }
413
+
414
+ private static func makeStationaryLocation(from location: MAURLocation) -> StationaryLocation {
415
+ StationaryLocation(
416
+ id: location.locationId?.doubleValue ?? 0,
417
+ provider: location.provider ?? "",
418
+ locationProvider: location.locationProvider?.doubleValue ?? 0,
419
+ time: location.time.map { $0.timeIntervalSince1970 * 1000 } ?? 0,
420
+ latitude: location.latitude?.doubleValue ?? 0,
421
+ longitude: location.longitude?.doubleValue ?? 0,
422
+ accuracy: location.accuracy?.doubleValue ?? 0,
423
+ speed: location.speed?.doubleValue ?? 0,
424
+ altitude: location.altitude?.doubleValue ?? 0,
425
+ altitudeAccuracy: location.altitudeAccuracy?.doubleValue ?? 0,
426
+ bearing: location.heading?.doubleValue ?? 0,
427
+ isFromMockProvider: false,
428
+ mockLocationsEnabled: false,
429
+ radius: location.radius?.doubleValue ?? 0
430
+ )
431
+ }
432
+
433
+ private static func makeAuthorizationStatus(from status: MAURLocationAuthorizationStatus) -> AuthorizationStatus {
434
+ switch status {
435
+ case .always, .allowed:
436
+ return .authorized
437
+ case .foreground:
438
+ return .authorizedForeground
439
+ default:
440
+ return .notAuthorized
441
+ }
442
+ }
443
+
444
+ private static func makeNativeConfig(from options: ConfigureOptions) throws -> MAURConfig {
445
+ let dictionary = NSMutableDictionary()
446
+
447
+ applyLocationProvider(options.locationProvider, key: "locationProvider", into: dictionary)
448
+ applyLocationAccuracy(options.desiredAccuracy, key: "desiredAccuracy", into: dictionary)
449
+ applyDouble(options.stationaryRadius, key: "stationaryRadius", into: dictionary)
450
+ applyBool(options.debug, key: "debug", into: dictionary)
451
+ applyDouble(options.distanceFilter, key: "distanceFilter", into: dictionary)
452
+ applyBool(options.stopOnTerminate, key: "stopOnTerminate", into: dictionary)
453
+ applyString(options.activityType, key: "activityType", into: dictionary)
454
+ applyDouble(options.activitiesInterval, key: "activitiesInterval", into: dictionary)
455
+ applyBool(options.pauseLocationUpdates, key: "pauseLocationUpdates", into: dictionary)
456
+ applyBool(options.saveBatteryOnBackground, key: "saveBatteryOnBackground", into: dictionary)
457
+ applyString(options.url, key: "url", into: dictionary)
458
+ applyString(options.syncUrl, key: "syncUrl", into: dictionary)
459
+ applyDouble(options.syncThreshold, key: "syncThreshold", into: dictionary)
460
+ applyHeaders(options.httpHeaders, key: "httpHeaders", into: dictionary)
461
+ applyDouble(options.maxLocations, key: "maxLocations", into: dictionary)
462
+ try applyAnyMap(options.postTemplate, key: "postTemplate", into: dictionary)
463
+
464
+ return MAURConfig.fromDictionary(dictionary as? [AnyHashable: Any] ?? [:])
465
+ }
466
+
467
+ private static func makeConfigureOptions(from config: MAURConfig) throws -> ConfigureOptions {
468
+ let dictionary = config.toDictionary() as? [String: Any] ?? [:]
469
+ return ConfigureOptions(
470
+ locationProvider: locationProviderVariant(dictionary["locationProvider"]),
471
+ desiredAccuracy: locationAccuracyVariant(dictionary["desiredAccuracy"]),
472
+ stationaryRadius: doubleVariant(dictionary["stationaryRadius"]),
473
+ debug: boolVariant(dictionary["debug"]),
474
+ distanceFilter: doubleVariant(dictionary["distanceFilter"]),
475
+ stopOnTerminate: boolVariant(dictionary["stopOnTerminate"]),
476
+ startOnBoot: nil,
477
+ interval: nil,
478
+ fastestInterval: nil,
479
+ activitiesInterval: doubleVariant(dictionary["activitiesInterval"]),
480
+ stopOnStillActivity: nil,
481
+ notificationsEnabled: nil,
482
+ startForeground: nil,
483
+ notificationTitle: nil,
484
+ notificationText: nil,
485
+ notificationIconColor: nil,
486
+ notificationIconLarge: nil,
487
+ notificationIconSmall: nil,
488
+ activityType: stringVariant(dictionary["activityType"]),
489
+ pauseLocationUpdates: boolVariant(dictionary["pauseLocationUpdates"]),
490
+ saveBatteryOnBackground: boolVariant(dictionary["saveBatteryOnBackground"]),
491
+ url: stringVariant(dictionary["url"]),
492
+ syncUrl: stringVariant(dictionary["syncUrl"]),
493
+ syncThreshold: doubleVariant(dictionary["syncThreshold"]),
494
+ httpHeaders: headersVariant(dictionary["httpHeaders"]),
495
+ maxLocations: doubleVariant(dictionary["maxLocations"]),
496
+ postTemplate: try anyMapVariant(dictionary["postTemplate"])
497
+ )
498
+ }
499
+
500
+ private static func makeNativeLogLevelName(_ level: NativeLogLevel) -> String {
501
+ switch level {
502
+ case .tracevalue:
503
+ return "TRACE"
504
+ case .debugvalue:
505
+ return "DEBUG"
506
+ case .infovalue:
507
+ return "INFO"
508
+ case .warnvalue:
509
+ return "WARN"
510
+ case .errorvalue:
511
+ return "ERROR"
512
+ @unknown default:
513
+ return "DEBUG"
514
+ }
515
+ }
516
+
517
+ private static func makeLogEntries(from entries: [Any]) -> [LogEntry] {
518
+ entries.compactMap { entry in
519
+ guard let dictionary = entry as? [String: Any] else {
520
+ return nil
521
+ }
522
+
523
+ return LogEntry(
524
+ id: (dictionary["id"] as? NSNumber)?.doubleValue ?? 0,
525
+ timestamp: (dictionary["timestamp"] as? NSNumber)?.doubleValue ?? 0,
526
+ level: (dictionary["level"] as? String) ?? "",
527
+ message: (dictionary["message"] as? String) ?? "",
528
+ stackTrace: (dictionary["stackTrace"] as? String) ?? ""
529
+ )
530
+ }
531
+ }
532
+
533
+ private static func applyString(_ value: Variant_NullType_String?, key: String, into dictionary: NSMutableDictionary) {
534
+ guard let value else { return }
535
+ switch value {
536
+ case .first:
537
+ dictionary[key] = NSNull()
538
+ case .second(let string):
539
+ dictionary[key] = string
540
+ }
541
+ }
542
+
543
+ private static func applyBool(_ value: Variant_NullType_Bool?, key: String, into dictionary: NSMutableDictionary) {
544
+ guard let value else { return }
545
+ switch value {
546
+ case .first:
547
+ dictionary[key] = NSNull()
548
+ case .second(let bool):
549
+ dictionary[key] = bool
550
+ }
551
+ }
552
+
553
+ private static func applyDouble(_ value: Variant_NullType_Double?, key: String, into dictionary: NSMutableDictionary) {
554
+ guard let value else { return }
555
+ switch value {
556
+ case .first:
557
+ dictionary[key] = NSNull()
558
+ case .second(let number):
559
+ dictionary[key] = number
560
+ }
561
+ }
562
+
563
+ private static func applyHeaders(_ value: Variant_NullType_Dictionary_String__String_?, key: String, into dictionary: NSMutableDictionary) {
564
+ guard let value else { return }
565
+ switch value {
566
+ case .first:
567
+ dictionary[key] = NSNull()
568
+ case .second(let headers):
569
+ dictionary[key] = headers
570
+ }
571
+ }
572
+
573
+ private static func applyAnyMap(_ value: Variant_NullType_AnyMap?, key: String, into dictionary: NSMutableDictionary) throws {
574
+ guard let value else { return }
575
+ switch value {
576
+ case .first:
577
+ dictionary[key] = NSNull()
578
+ case .second(let anyMap):
579
+ dictionary[key] = anyMapToDictionary(anyMap)
580
+ }
581
+ }
582
+
583
+ private static func applyLocationProvider(_ value: Variant_NullType_LocationProvider?, key: String, into dictionary: NSMutableDictionary) {
584
+ guard let value else { return }
585
+ switch value {
586
+ case .first:
587
+ dictionary[key] = NSNull()
588
+ case .second(let provider):
589
+ dictionary[key] = nativeLocationProvider(provider)
590
+ }
591
+ }
592
+
593
+ private static func applyLocationAccuracy(_ value: Variant_NullType_LocationAccuracy?, key: String, into dictionary: NSMutableDictionary) {
594
+ guard let value else { return }
595
+ switch value {
596
+ case .first:
597
+ dictionary[key] = NSNull()
598
+ case .second(let accuracy):
599
+ dictionary[key] = nativeLocationAccuracy(accuracy)
600
+ }
601
+ }
602
+
603
+ private static func nativeLocationProvider(_ provider: LocationProvider) -> NSNumber {
604
+ switch provider {
605
+ case .distanceFilter:
606
+ return 0
607
+ case .activity:
608
+ return 1
609
+ case .raw:
610
+ return 2
611
+ @unknown default:
612
+ return 0
613
+ }
614
+ }
615
+
616
+ private static func nativeLocationAccuracy(_ accuracy: LocationAccuracy) -> NSNumber {
617
+ switch accuracy {
618
+ case .high:
619
+ return 0
620
+ case .medium:
621
+ return 100
622
+ case .low:
623
+ return 1000
624
+ case .passive:
625
+ return 10000
626
+ @unknown default:
627
+ return 100
628
+ }
629
+ }
630
+
631
+ private static func stringVariant(_ value: Any?) -> Variant_NullType_String? {
632
+ guard let value else { return nil }
633
+ if value is NSNull {
634
+ return .first(.null)
635
+ }
636
+ return .second((value as? String) ?? "")
637
+ }
638
+
639
+ private static func boolVariant(_ value: Any?) -> Variant_NullType_Bool? {
640
+ guard let value else { return nil }
641
+ if value is NSNull {
642
+ return .first(.null)
643
+ }
644
+ return .second((value as? NSNumber)?.boolValue ?? false)
645
+ }
646
+
647
+ private static func doubleVariant(_ value: Any?) -> Variant_NullType_Double? {
648
+ guard let value else { return nil }
649
+ if value is NSNull {
650
+ return .first(.null)
651
+ }
652
+ return .second((value as? NSNumber)?.doubleValue ?? 0)
653
+ }
654
+
655
+ private static func headersVariant(_ value: Any?) -> Variant_NullType_Dictionary_String__String_? {
656
+ guard let value else { return nil }
657
+ if value is NSNull {
658
+ return .first(.null)
659
+ }
660
+ return .second((value as? [String: String]) ?? [:])
661
+ }
662
+
663
+ private static func locationProviderVariant(_ value: Any?) -> Variant_NullType_LocationProvider? {
664
+ guard let value else { return nil }
665
+ if value is NSNull {
666
+ return .first(.null)
667
+ }
668
+ let rawValue = (value as? NSNumber)?.intValue ?? 0
669
+ let provider: LocationProvider
670
+ switch rawValue {
671
+ case 1:
672
+ provider = .activity
673
+ case 2:
674
+ provider = .raw
675
+ default:
676
+ provider = .distanceFilter
677
+ }
678
+ return .second(provider)
679
+ }
680
+
681
+ private static func locationAccuracyVariant(_ value: Any?) -> Variant_NullType_LocationAccuracy? {
682
+ guard let value else { return nil }
683
+ if value is NSNull {
684
+ return .first(.null)
685
+ }
686
+ let rawValue = (value as? NSNumber)?.intValue ?? 100
687
+ let accuracy: LocationAccuracy
688
+ switch rawValue {
689
+ case 0:
690
+ accuracy = .high
691
+ case 1000:
692
+ accuracy = .low
693
+ case 10000:
694
+ accuracy = .passive
695
+ default:
696
+ accuracy = .medium
697
+ }
698
+ return .second(accuracy)
699
+ }
700
+
701
+ private static func anyMapVariant(_ value: Any?) throws -> Variant_NullType_AnyMap? {
702
+ guard let value else { return nil }
703
+ if value is NSNull {
704
+ return .first(.null)
705
+ }
706
+ guard let dictionary = value as? [String: Any] else {
707
+ return nil
708
+ }
709
+ return .second(try AnyMap.fromDictionary(dictionary))
710
+ }
711
+
712
+ private static func anyMapToDictionary(_ anyMap: AnyMap) -> [String: Any] {
713
+ var dictionary: [String: Any] = [:]
714
+ for key in anyMap.getAllKeys() {
715
+ dictionary[key] = anyMap.getAny(key: key)
716
+ }
717
+ return dictionary
718
+ }
719
+ }