@onairos/react-native 3.4.1 → 3.6.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 (574) hide show
  1. package/README.md +423 -374
  2. package/lib/commonjs/api/index.js +9 -145
  3. package/lib/commonjs/assets/animations/loaderani.json +1 -0
  4. package/lib/commonjs/assets/animations/persona-animation.json +1 -0
  5. package/lib/commonjs/assets/fonts/EBGaramond-VariableFont_wght.ttf +0 -0
  6. package/lib/commonjs/assets/fonts/IBMPlexSans-VariableFont_wdth,wght.ttf +0 -0
  7. package/lib/commonjs/assets/icons/Facebookicon.png +0 -0
  8. package/lib/commonjs/assets/icons/Gmail.png +0 -0
  9. package/lib/commonjs/assets/icons/Linkedinicon.png +0 -0
  10. package/lib/commonjs/assets/icons/Redditicon.png +0 -0
  11. package/lib/commonjs/assets/icons/YouTubeicon2.png +0 -0
  12. package/lib/commonjs/assets/icons/YouTubeicon3.png +0 -0
  13. package/lib/commonjs/assets/icons/chatgpt.png +0 -0
  14. package/lib/commonjs/assets/icons/claude.png +0 -0
  15. package/lib/commonjs/assets/icons/gemini.png +0 -0
  16. package/lib/commonjs/assets/icons/grok.png +0 -0
  17. package/lib/commonjs/assets/images/Checkbox.svg +3 -0
  18. package/lib/commonjs/assets/images/EnochE.svg +19 -0
  19. package/lib/commonjs/assets/images/Enochicon1.png +0 -0
  20. package/lib/commonjs/assets/images/Face_ID_logo.png +0 -0
  21. package/lib/commonjs/assets/images/Facebookicon.png +0 -0
  22. package/lib/commonjs/assets/images/Gmail.png +0 -0
  23. package/lib/commonjs/assets/images/Googlelogo.png +0 -0
  24. package/lib/commonjs/assets/images/Linkedinicon.png +0 -0
  25. package/lib/commonjs/assets/images/OnairosNewLogo.png +0 -0
  26. package/lib/commonjs/assets/images/Onairoslogo.png +0 -0
  27. package/lib/commonjs/assets/images/Personalityprofile.svg +3 -0
  28. package/lib/commonjs/assets/images/Personalitytraits.svg +3 -0
  29. package/lib/commonjs/assets/images/Redditicon.png +0 -0
  30. package/lib/commonjs/assets/images/Userpreferences.svg +3 -0
  31. package/lib/commonjs/assets/images/YouTubeicon3.png +0 -0
  32. package/lib/commonjs/assets/images/arrow.svg +20 -0
  33. package/lib/commonjs/assets/images/basicproficon.svg +43 -0
  34. package/lib/commonjs/assets/images/basicprofile.svg +3 -0
  35. package/lib/commonjs/assets/images/chatgpt.png +0 -0
  36. package/lib/commonjs/assets/images/checkmark.svg +4 -0
  37. package/lib/commonjs/assets/images/claude.png +0 -0
  38. package/lib/commonjs/assets/images/contentanalysis.svg +3 -0
  39. package/lib/commonjs/assets/images/contenticon.svg +23 -0
  40. package/lib/commonjs/assets/images/gemini.png +0 -0
  41. package/lib/commonjs/assets/images/grok.png +0 -0
  42. package/lib/commonjs/assets/images/persona1.png +0 -0
  43. package/lib/commonjs/assets/images/persona2.png +0 -0
  44. package/lib/commonjs/assets/images/persona3.png +0 -0
  45. package/lib/commonjs/assets/images/persona4.png +0 -0
  46. package/lib/commonjs/assets/images/persona5.png +0 -0
  47. package/lib/commonjs/assets/images/personalityicon.svg +18 -0
  48. package/lib/commonjs/assets/images/x-close.svg +3 -0
  49. package/lib/commonjs/components/BodyText.js +9 -0
  50. package/lib/commonjs/components/BrandMark.js +10 -0
  51. package/lib/commonjs/components/CodeInput.js +9 -0
  52. package/lib/commonjs/components/EmailInput.js +8 -0
  53. package/lib/commonjs/components/GoogleButton.js +9 -0
  54. package/lib/commonjs/components/HeadingGroup.js +9 -0
  55. package/lib/commonjs/components/LLMDataInputModal.js +14 -0
  56. package/lib/commonjs/components/ModalHeader.js +9 -0
  57. package/lib/commonjs/components/ModalSheet.js +9 -0
  58. package/lib/commonjs/components/Onairos.js +14 -374
  59. package/lib/commonjs/components/OnairosButton.js +13 -309
  60. package/lib/commonjs/components/OnairosSignInButton.js +12 -0
  61. package/lib/commonjs/components/Overlay.js +13 -483
  62. package/lib/commonjs/components/PersonaImage.js +10 -0
  63. package/lib/commonjs/components/PersonaLoadingScreen.js +12 -0
  64. package/lib/commonjs/components/PersonalizationConsentScreen.js +13 -0
  65. package/lib/commonjs/components/PinCreationScreen.js +12 -0
  66. package/lib/commonjs/components/PinInput.js +9 -302
  67. package/lib/commonjs/components/PlatformConnectorsStep.js +23 -0
  68. package/lib/commonjs/components/PlatformList.js +10 -137
  69. package/lib/commonjs/components/PlatformToggle.js +9 -0
  70. package/lib/commonjs/components/PrimaryButton.js +10 -0
  71. package/lib/commonjs/components/SignInMatchAnimation.js +9 -0
  72. package/lib/commonjs/components/SignInStep.js +12 -0
  73. package/lib/commonjs/components/UniversalOnboarding.js +30 -1702
  74. package/lib/commonjs/components/VerificationStep.js +11 -0
  75. package/lib/commonjs/components/WelcomeScreen.js +22 -0
  76. package/lib/commonjs/components/icons/Basicproficon.js +8 -0
  77. package/lib/commonjs/components/icons/Basicprofile.js +8 -0
  78. package/lib/commonjs/components/icons/Checkbox.js +8 -0
  79. package/lib/commonjs/components/icons/Checkmark.js +8 -0
  80. package/lib/commonjs/components/icons/Contentanalysis.js +8 -0
  81. package/lib/commonjs/components/icons/Contenticon.js +8 -0
  82. package/lib/commonjs/components/icons/EnochE.js +8 -0
  83. package/lib/commonjs/components/icons/Personalityicon.js +8 -0
  84. package/lib/commonjs/components/icons/Personalityprofile.js +8 -0
  85. package/lib/commonjs/components/icons/Personalitytraits.js +8 -0
  86. package/lib/commonjs/components/icons/Userpreferences.js +8 -0
  87. package/lib/commonjs/components/icons/index.js +17 -0
  88. package/lib/commonjs/components/onboarding/OAuthWebView.js +18 -827
  89. package/lib/commonjs/components/onboarding/OnboardingHeader.js +10 -74
  90. package/lib/commonjs/components/onboarding/PinInput.js +10 -283
  91. package/lib/commonjs/components/onboarding/PlatformConnector.js +11 -249
  92. package/lib/commonjs/config/api.js +7 -0
  93. package/lib/commonjs/constants/index.js +7 -83
  94. package/lib/commonjs/context/AuthContext.js +10 -0
  95. package/lib/commonjs/hooks/useConnectedAccounts.js +9 -0
  96. package/lib/commonjs/hooks/useConnections.js +8 -159
  97. package/lib/commonjs/hooks/useCredentials.js +10 -177
  98. package/lib/commonjs/hooks/useUserConnections.js +10 -0
  99. package/lib/commonjs/index.js +34 -106
  100. package/lib/commonjs/services/SDK_API_KEY_VALIDATION.md +421 -421
  101. package/lib/commonjs/services/apiClient.js +8 -0
  102. package/lib/commonjs/services/apiKeyService.js +9 -952
  103. package/lib/commonjs/services/authService.js +10 -0
  104. package/lib/commonjs/services/biometricPinService.js +8 -0
  105. package/lib/commonjs/services/chatGPTConversationExtractor.js +8 -0
  106. package/lib/commonjs/services/chatGPTConversationService.js +9 -0
  107. package/lib/commonjs/services/claudeConversationExtractor.js +8 -0
  108. package/lib/commonjs/services/claudeConversationService.js +9 -0
  109. package/lib/commonjs/services/connectedAccountsService.js +10 -0
  110. package/lib/commonjs/services/googleAuthService.js +11 -0
  111. package/lib/commonjs/services/hingeDataExtractor.js +8 -0
  112. package/lib/commonjs/services/hingeDataService.js +9 -0
  113. package/lib/commonjs/services/imageCompressionService.js +7 -0
  114. package/lib/commonjs/services/instagramDataExtractor.js +8 -0
  115. package/lib/commonjs/services/instagramDataService.js +9 -0
  116. package/lib/commonjs/services/jwtStorageService.js +7 -0
  117. package/lib/commonjs/services/linkedinDOMExtractor.js +7 -0
  118. package/lib/commonjs/services/linkedinProfileService.js +9 -0
  119. package/lib/commonjs/services/linkedinScrapingService.js +8 -0
  120. package/lib/commonjs/services/llmDataStorage.js +8 -0
  121. package/lib/commonjs/services/mobileTrainingService.js +8 -0
  122. package/lib/commonjs/services/oauthService.js +11 -390
  123. package/lib/commonjs/services/pinEncryptionService.js +8 -0
  124. package/lib/commonjs/services/pinStorageUtils.js +7 -0
  125. package/lib/commonjs/services/platformAuthService.js +12 -1067
  126. package/lib/commonjs/services/sephoraDataExtractor.js +8 -0
  127. package/lib/commonjs/services/sephoraDataService.js +9 -0
  128. package/lib/commonjs/services/storageService.js +8 -0
  129. package/lib/commonjs/services/telegramDataExtractor.js +8 -0
  130. package/lib/commonjs/services/telegramDataService.js +11 -0
  131. package/lib/commonjs/services/trainingApiHelpers.js +7 -0
  132. package/lib/commonjs/services/userConnectionsService.js +10 -0
  133. package/lib/commonjs/services/youtubeMigrationService.js +10 -0
  134. package/lib/commonjs/theme/index.js +7 -0
  135. package/lib/commonjs/types/ambient.d.js +1 -2
  136. package/lib/commonjs/types/declarations.d.js +1 -2
  137. package/lib/commonjs/types/index.js +1 -6
  138. package/lib/commonjs/types/node-fix.d.js +1 -2
  139. package/lib/commonjs/types/node-override.d.js +1 -2
  140. package/lib/commonjs/types/opacity.d.js +1 -2
  141. package/lib/commonjs/types.js +1 -14
  142. package/lib/commonjs/utils/Portal.js +8 -98
  143. package/lib/commonjs/utils/api.js +9 -129
  144. package/lib/commonjs/utils/assetRegistry.js +33 -0
  145. package/lib/commonjs/utils/auth.js +9 -111
  146. package/lib/commonjs/utils/connectorTests.js +29 -0
  147. package/lib/commonjs/utils/crypto.js +8 -62
  148. package/lib/commonjs/utils/debugHelper.js +1 -64
  149. package/lib/commonjs/utils/encryption.js +7 -76
  150. package/lib/commonjs/utils/eventUtils.js +1 -0
  151. package/lib/commonjs/utils/haptics.js +9 -0
  152. package/lib/commonjs/utils/imagePreloader.js +1 -0
  153. package/lib/commonjs/utils/networkDiagnostics.js +8 -0
  154. package/lib/commonjs/utils/onairosApi.js +9 -350
  155. package/lib/commonjs/utils/programmaticFlow.js +9 -117
  156. package/lib/commonjs/utils/retryHelper.js +1 -220
  157. package/lib/commonjs/utils/secureStorage.js +10 -349
  158. package/lib/commonjs/utils/webviewScripts/chatgpt.js +1 -0
  159. package/lib/commonjs/utils/webviewScripts/claude.js +1 -0
  160. package/lib/commonjs/utils/webviewScripts/hinge.js +1 -0
  161. package/lib/commonjs/utils/webviewScripts/index.js +13 -0
  162. package/lib/commonjs/utils/webviewScripts/instagram.js +1 -0
  163. package/lib/commonjs/utils/webviewScripts/linkedin.js +1 -0
  164. package/lib/commonjs/utils/webviewScripts/sephora.js +1 -0
  165. package/lib/commonjs/utils/webviewScripts/telegram.js +1 -0
  166. package/lib/module/api/index.js +1 -139
  167. package/lib/module/assets/animations/loaderani.json +1 -0
  168. package/lib/module/assets/animations/persona-animation.json +1 -0
  169. package/lib/module/assets/fonts/EBGaramond-VariableFont_wght.ttf +0 -0
  170. package/lib/module/assets/fonts/IBMPlexSans-VariableFont_wdth,wght.ttf +0 -0
  171. package/lib/module/assets/icons/Facebookicon.png +0 -0
  172. package/lib/module/assets/icons/Gmail.png +0 -0
  173. package/lib/module/assets/icons/Linkedinicon.png +0 -0
  174. package/lib/module/assets/icons/Redditicon.png +0 -0
  175. package/lib/module/assets/icons/YouTubeicon2.png +0 -0
  176. package/lib/module/assets/icons/YouTubeicon3.png +0 -0
  177. package/lib/module/assets/icons/chatgpt.png +0 -0
  178. package/lib/module/assets/icons/claude.png +0 -0
  179. package/lib/module/assets/icons/farcaster.png +0 -0
  180. package/lib/module/assets/icons/gemini.png +0 -0
  181. package/lib/module/assets/icons/grok.png +0 -0
  182. package/lib/module/assets/icons/instagram.png +0 -0
  183. package/lib/module/assets/icons/pinterest.png +0 -0
  184. package/lib/module/assets/icons/swerv_logo.png +0 -0
  185. package/lib/module/assets/icons/twitter.jpg +0 -0
  186. package/lib/module/assets/images/Checkbox.svg +3 -0
  187. package/lib/module/assets/images/EnochE.svg +19 -0
  188. package/lib/module/assets/images/Enochicon1.png +0 -0
  189. package/lib/module/assets/images/Face_ID_logo.png +0 -0
  190. package/lib/module/assets/images/Facebookicon.png +0 -0
  191. package/lib/module/assets/images/Gmail.png +0 -0
  192. package/lib/module/assets/images/Googlelogo.png +0 -0
  193. package/lib/module/assets/images/Linkedinicon.png +0 -0
  194. package/lib/module/assets/images/OnairosNewLogo.png +0 -0
  195. package/lib/module/assets/images/Onairoslogo.png +0 -0
  196. package/lib/module/assets/images/Personalityprofile.svg +3 -0
  197. package/lib/module/assets/images/Personalitytraits.svg +3 -0
  198. package/lib/module/assets/images/Redditicon.png +0 -0
  199. package/lib/module/assets/images/Userpreferences.svg +3 -0
  200. package/lib/module/assets/images/YouTubeicon3.png +0 -0
  201. package/lib/module/assets/images/arrow.svg +20 -0
  202. package/lib/module/assets/images/basicproficon.svg +43 -0
  203. package/lib/module/assets/images/basicprofile.svg +3 -0
  204. package/lib/module/assets/images/chatgpt.png +0 -0
  205. package/lib/module/assets/images/checkmark.svg +4 -0
  206. package/lib/module/assets/images/claude.png +0 -0
  207. package/lib/module/assets/images/contentanalysis.svg +3 -0
  208. package/lib/module/assets/images/contenticon.svg +23 -0
  209. package/lib/module/assets/images/gemini.png +0 -0
  210. package/lib/module/assets/images/grok.png +0 -0
  211. package/lib/module/assets/images/persona1.png +0 -0
  212. package/lib/module/assets/images/persona2.png +0 -0
  213. package/lib/module/assets/images/persona3.png +0 -0
  214. package/lib/module/assets/images/persona4.png +0 -0
  215. package/lib/module/assets/images/persona5.png +0 -0
  216. package/lib/module/assets/images/personalityicon.svg +18 -0
  217. package/lib/module/assets/images/x-close.svg +3 -0
  218. package/lib/module/components/BodyText.js +1 -0
  219. package/lib/module/components/BrandMark.js +1 -0
  220. package/lib/module/components/CodeInput.js +1 -0
  221. package/lib/module/components/EmailInput.js +1 -0
  222. package/lib/module/components/GoogleButton.js +1 -0
  223. package/lib/module/components/HeadingGroup.js +1 -0
  224. package/lib/module/components/LLMDataInputModal.js +8 -0
  225. package/lib/module/components/ModalHeader.js +1 -0
  226. package/lib/module/components/ModalSheet.js +1 -0
  227. package/lib/module/components/Onairos.js +1 -367
  228. package/lib/module/components/OnairosButton.js +1 -302
  229. package/lib/module/components/OnairosSignInButton.js +1 -0
  230. package/lib/module/components/Overlay.js +1 -474
  231. package/lib/module/components/PersonaImage.js +1 -0
  232. package/lib/module/components/PersonaLoadingScreen.js +1 -0
  233. package/lib/module/components/PersonalizationConsentScreen.js +1 -0
  234. package/lib/module/components/PinCreationScreen.js +1 -0
  235. package/lib/module/components/PinInput.js +1 -293
  236. package/lib/module/components/PlatformConnectorsStep.js +7 -0
  237. package/lib/module/components/PlatformList.js +1 -129
  238. package/lib/module/components/PlatformToggle.js +1 -0
  239. package/lib/module/components/PrimaryButton.js +1 -0
  240. package/lib/module/components/SignInMatchAnimation.js +1 -0
  241. package/lib/module/components/SignInStep.js +1 -0
  242. package/lib/module/components/UniversalOnboarding.js +1 -1693
  243. package/lib/module/components/VerificationStep.js +1 -0
  244. package/lib/module/components/WelcomeScreen.js +1 -0
  245. package/lib/module/components/icons/Basicproficon.js +1 -0
  246. package/lib/module/components/icons/Basicprofile.js +1 -0
  247. package/lib/module/components/icons/Checkbox.js +1 -0
  248. package/lib/module/components/icons/Checkmark.js +1 -0
  249. package/lib/module/components/icons/Contentanalysis.js +1 -0
  250. package/lib/module/components/icons/Contenticon.js +1 -0
  251. package/lib/module/components/icons/EnochE.js +1 -0
  252. package/lib/module/components/icons/Personalityicon.js +1 -0
  253. package/lib/module/components/icons/Personalityprofile.js +1 -0
  254. package/lib/module/components/icons/Personalitytraits.js +1 -0
  255. package/lib/module/components/icons/Userpreferences.js +1 -0
  256. package/lib/module/components/icons/index.js +1 -0
  257. package/lib/module/components/onboarding/OAuthWebView.js +1 -818
  258. package/lib/module/components/onboarding/OnboardingHeader.js +1 -66
  259. package/lib/module/components/onboarding/PinInput.js +1 -274
  260. package/lib/module/components/onboarding/PlatformConnector.js +1 -240
  261. package/lib/module/config/api.js +1 -0
  262. package/lib/module/constants/index.js +1 -77
  263. package/lib/module/context/AuthContext.js +1 -0
  264. package/lib/module/hooks/useConnectedAccounts.js +1 -0
  265. package/lib/module/hooks/useConnections.js +1 -152
  266. package/lib/module/hooks/useCredentials.js +6 -169
  267. package/lib/module/hooks/useUserConnections.js +1 -0
  268. package/lib/module/index.js +1 -32
  269. package/lib/module/services/SDK_API_KEY_VALIDATION.md +421 -421
  270. package/lib/module/services/apiClient.js +1 -0
  271. package/lib/module/services/apiKeyService.js +1 -925
  272. package/lib/module/services/authService.js +1 -0
  273. package/lib/module/services/biometricPinService.js +1 -0
  274. package/lib/module/services/chatGPTConversationExtractor.js +1 -0
  275. package/lib/module/services/chatGPTConversationService.js +1 -0
  276. package/lib/module/services/claudeConversationExtractor.js +1 -0
  277. package/lib/module/services/claudeConversationService.js +1 -0
  278. package/lib/module/services/connectedAccountsService.js +1 -0
  279. package/lib/module/services/googleAuthService.js +1 -0
  280. package/lib/module/services/hingeDataExtractor.js +1 -0
  281. package/lib/module/services/hingeDataService.js +1 -0
  282. package/lib/module/services/imageCompressionService.js +1 -0
  283. package/lib/module/services/instagramDataExtractor.js +1 -0
  284. package/lib/module/services/instagramDataService.js +1 -0
  285. package/lib/module/services/jwtStorageService.js +1 -0
  286. package/lib/module/services/linkedinDOMExtractor.js +1 -0
  287. package/lib/module/services/linkedinProfileService.js +1 -0
  288. package/lib/module/services/linkedinScrapingService.js +1 -0
  289. package/lib/module/services/llmDataStorage.js +1 -0
  290. package/lib/module/services/mobileTrainingService.js +1 -0
  291. package/lib/module/services/oauthService.js +1 -380
  292. package/lib/module/services/pinEncryptionService.js +7 -0
  293. package/lib/module/services/pinStorageUtils.js +1 -0
  294. package/lib/module/services/platformAuthService.js +1 -1041
  295. package/lib/module/services/sephoraDataExtractor.js +1 -0
  296. package/lib/module/services/sephoraDataService.js +1 -0
  297. package/lib/module/services/storageService.js +1 -0
  298. package/lib/module/services/telegramDataExtractor.js +1 -0
  299. package/lib/module/services/telegramDataService.js +8 -0
  300. package/lib/module/services/trainingApiHelpers.js +1 -0
  301. package/lib/module/services/userConnectionsService.js +1 -0
  302. package/lib/module/services/youtubeMigrationService.js +1 -0
  303. package/lib/module/theme/index.js +1 -0
  304. package/lib/module/types.js +1 -10
  305. package/lib/module/utils/Portal.js +1 -90
  306. package/lib/module/utils/api.js +1 -117
  307. package/lib/module/utils/assetRegistry.js +33 -0
  308. package/lib/module/utils/auth.js +1 -99
  309. package/lib/module/utils/connectorTests.js +28 -0
  310. package/lib/module/utils/crypto.js +1 -54
  311. package/lib/module/utils/debugHelper.js +1 -54
  312. package/lib/module/utils/encryption.js +1 -67
  313. package/lib/module/utils/eventUtils.js +1 -0
  314. package/lib/module/utils/haptics.js +8 -0
  315. package/lib/module/utils/imagePreloader.js +1 -0
  316. package/lib/module/utils/networkDiagnostics.js +1 -0
  317. package/lib/module/utils/onairosApi.js +1 -333
  318. package/lib/module/utils/programmaticFlow.js +1 -111
  319. package/lib/module/utils/retryHelper.js +1 -211
  320. package/lib/module/utils/secureStorage.js +6 -330
  321. package/lib/module/utils/webviewScripts/chatgpt.js +1 -0
  322. package/lib/module/utils/webviewScripts/claude.js +1 -0
  323. package/lib/module/utils/webviewScripts/hinge.js +1 -0
  324. package/lib/module/utils/webviewScripts/index.js +1 -0
  325. package/lib/module/utils/webviewScripts/instagram.js +1 -0
  326. package/lib/module/utils/webviewScripts/linkedin.js +1 -0
  327. package/lib/module/utils/webviewScripts/sephora.js +1 -0
  328. package/lib/module/utils/webviewScripts/telegram.js +1 -0
  329. package/package.json +62 -39
  330. package/lib/commonjs/api/index.js.map +0 -1
  331. package/lib/commonjs/assets/images/email.png +0 -0
  332. package/lib/commonjs/assets/images/linkedin.png +0 -0
  333. package/lib/commonjs/assets/images/reddit.png +0 -0
  334. package/lib/commonjs/assets/images/youtube.png +0 -0
  335. package/lib/commonjs/components/DataRequestModal.js +0 -228
  336. package/lib/commonjs/components/DataRequestModal.js.map +0 -1
  337. package/lib/commonjs/components/DataRequestScreen.js +0 -329
  338. package/lib/commonjs/components/DataRequestScreen.js.map +0 -1
  339. package/lib/commonjs/components/EmailVerificationModal.js +0 -320
  340. package/lib/commonjs/components/EmailVerificationModal.js.map +0 -1
  341. package/lib/commonjs/components/Onairos.js.map +0 -1
  342. package/lib/commonjs/components/OnairosButton.js.map +0 -1
  343. package/lib/commonjs/components/Overlay.js.map +0 -1
  344. package/lib/commonjs/components/PinInput.js.map +0 -1
  345. package/lib/commonjs/components/PlatformList.js.map +0 -1
  346. package/lib/commonjs/components/TrainingModal.js +0 -717
  347. package/lib/commonjs/components/TrainingModal.js.map +0 -1
  348. package/lib/commonjs/components/UniversalOnboarding.js.map +0 -1
  349. package/lib/commonjs/components/UniversalOnboarding.tsx.new +0 -455
  350. package/lib/commonjs/components/onboarding/OAuthWebView.js.map +0 -1
  351. package/lib/commonjs/components/onboarding/OnboardingHeader.js.map +0 -1
  352. package/lib/commonjs/components/onboarding/PinInput.js.map +0 -1
  353. package/lib/commonjs/components/onboarding/PlatformConnector.js.map +0 -1
  354. package/lib/commonjs/components/screens/ConnectorScreen.js +0 -146
  355. package/lib/commonjs/components/screens/ConnectorScreen.js.map +0 -1
  356. package/lib/commonjs/components/screens/LoadingScreen.js +0 -91
  357. package/lib/commonjs/components/screens/LoadingScreen.js.map +0 -1
  358. package/lib/commonjs/components/screens/PinCreationScreen.js +0 -61
  359. package/lib/commonjs/components/screens/PinCreationScreen.js.map +0 -1
  360. package/lib/commonjs/constants/index.js.map +0 -1
  361. package/lib/commonjs/hooks/useConnections.js.map +0 -1
  362. package/lib/commonjs/hooks/useCredentials.js.map +0 -1
  363. package/lib/commonjs/index.js.map +0 -1
  364. package/lib/commonjs/services/apiKeyService.js.map +0 -1
  365. package/lib/commonjs/services/oauthService.js.map +0 -1
  366. package/lib/commonjs/services/platformAuthService.js.map +0 -1
  367. package/lib/commonjs/types/ambient.d.js.map +0 -1
  368. package/lib/commonjs/types/declarations.d.js.map +0 -1
  369. package/lib/commonjs/types/index.d.js.map +0 -1
  370. package/lib/commonjs/types/index.js.map +0 -1
  371. package/lib/commonjs/types/node-fix.d.js.map +0 -1
  372. package/lib/commonjs/types/node-override.d.js.map +0 -1
  373. package/lib/commonjs/types/opacity.d.js.map +0 -1
  374. package/lib/commonjs/types/types.d.js.map +0 -1
  375. package/lib/commonjs/types.js.map +0 -1
  376. package/lib/commonjs/utils/Portal.js.map +0 -1
  377. package/lib/commonjs/utils/api.js.map +0 -1
  378. package/lib/commonjs/utils/auth.js.map +0 -1
  379. package/lib/commonjs/utils/crypto.js.map +0 -1
  380. package/lib/commonjs/utils/debugHelper.js.map +0 -1
  381. package/lib/commonjs/utils/encryption.js.map +0 -1
  382. package/lib/commonjs/utils/onairosApi.js.map +0 -1
  383. package/lib/commonjs/utils/programmaticFlow.js.map +0 -1
  384. package/lib/commonjs/utils/retryHelper.js.map +0 -1
  385. package/lib/commonjs/utils/secureStorage.js.map +0 -1
  386. package/lib/module/api/index.js.map +0 -1
  387. package/lib/module/assets/images/email.png +0 -0
  388. package/lib/module/assets/images/linkedin.png +0 -0
  389. package/lib/module/assets/images/reddit.png +0 -0
  390. package/lib/module/assets/images/youtube.png +0 -0
  391. package/lib/module/components/DataRequestModal.js +0 -220
  392. package/lib/module/components/DataRequestModal.js.map +0 -1
  393. package/lib/module/components/DataRequestScreen.js +0 -321
  394. package/lib/module/components/DataRequestScreen.js.map +0 -1
  395. package/lib/module/components/EmailVerificationModal.js +0 -311
  396. package/lib/module/components/EmailVerificationModal.js.map +0 -1
  397. package/lib/module/components/Onairos.js.map +0 -1
  398. package/lib/module/components/OnairosButton.js.map +0 -1
  399. package/lib/module/components/Overlay.js.map +0 -1
  400. package/lib/module/components/PinInput.js.map +0 -1
  401. package/lib/module/components/PlatformList.js.map +0 -1
  402. package/lib/module/components/TrainingModal.js +0 -708
  403. package/lib/module/components/TrainingModal.js.map +0 -1
  404. package/lib/module/components/UniversalOnboarding.js.map +0 -1
  405. package/lib/module/components/UniversalOnboarding.tsx.new +0 -455
  406. package/lib/module/components/onboarding/OAuthWebView.js.map +0 -1
  407. package/lib/module/components/onboarding/OnboardingHeader.js.map +0 -1
  408. package/lib/module/components/onboarding/PinInput.js.map +0 -1
  409. package/lib/module/components/onboarding/PlatformConnector.js.map +0 -1
  410. package/lib/module/components/screens/ConnectorScreen.js +0 -138
  411. package/lib/module/components/screens/ConnectorScreen.js.map +0 -1
  412. package/lib/module/components/screens/LoadingScreen.js +0 -83
  413. package/lib/module/components/screens/LoadingScreen.js.map +0 -1
  414. package/lib/module/components/screens/PinCreationScreen.js +0 -53
  415. package/lib/module/components/screens/PinCreationScreen.js.map +0 -1
  416. package/lib/module/constants/index.js.map +0 -1
  417. package/lib/module/hooks/useConnections.js.map +0 -1
  418. package/lib/module/hooks/useCredentials.js.map +0 -1
  419. package/lib/module/index.js.map +0 -1
  420. package/lib/module/services/apiKeyService.js.map +0 -1
  421. package/lib/module/services/oauthService.js.map +0 -1
  422. package/lib/module/services/platformAuthService.js.map +0 -1
  423. package/lib/module/types/ambient.d.js.map +0 -1
  424. package/lib/module/types/declarations.d.js.map +0 -1
  425. package/lib/module/types/index.d.js.map +0 -1
  426. package/lib/module/types/index.js.map +0 -1
  427. package/lib/module/types/node-fix.d.js.map +0 -1
  428. package/lib/module/types/node-override.d.js.map +0 -1
  429. package/lib/module/types/opacity.d.js.map +0 -1
  430. package/lib/module/types/types.d.js.map +0 -1
  431. package/lib/module/types.js.map +0 -1
  432. package/lib/module/utils/Portal.js.map +0 -1
  433. package/lib/module/utils/api.js.map +0 -1
  434. package/lib/module/utils/auth.js.map +0 -1
  435. package/lib/module/utils/crypto.js.map +0 -1
  436. package/lib/module/utils/debugHelper.js.map +0 -1
  437. package/lib/module/utils/encryption.js.map +0 -1
  438. package/lib/module/utils/onairosApi.js.map +0 -1
  439. package/lib/module/utils/programmaticFlow.js.map +0 -1
  440. package/lib/module/utils/retryHelper.js.map +0 -1
  441. package/lib/module/utils/secureStorage.js.map +0 -1
  442. package/lib/typescript/api/index.d.ts +0 -8
  443. package/lib/typescript/api/index.d.ts.map +0 -1
  444. package/lib/typescript/components/DataRequestModal.d.ts +0 -11
  445. package/lib/typescript/components/DataRequestModal.d.ts.map +0 -1
  446. package/lib/typescript/components/DataRequestScreen.d.ts +0 -11
  447. package/lib/typescript/components/DataRequestScreen.d.ts.map +0 -1
  448. package/lib/typescript/components/EmailVerificationModal.d.ts +0 -11
  449. package/lib/typescript/components/EmailVerificationModal.d.ts.map +0 -1
  450. package/lib/typescript/components/Onairos.d.ts +0 -4
  451. package/lib/typescript/components/Onairos.d.ts.map +0 -1
  452. package/lib/typescript/components/OnairosButton.d.ts +0 -12
  453. package/lib/typescript/components/OnairosButton.d.ts.map +0 -1
  454. package/lib/typescript/components/Overlay.d.ts +0 -4
  455. package/lib/typescript/components/Overlay.d.ts.map +0 -1
  456. package/lib/typescript/components/PinInput.d.ts +0 -4
  457. package/lib/typescript/components/PinInput.d.ts.map +0 -1
  458. package/lib/typescript/components/PlatformList.d.ts +0 -4
  459. package/lib/typescript/components/PlatformList.d.ts.map +0 -1
  460. package/lib/typescript/components/TrainingModal.d.ts +0 -4
  461. package/lib/typescript/components/TrainingModal.d.ts.map +0 -1
  462. package/lib/typescript/components/UniversalOnboarding.d.ts +0 -4
  463. package/lib/typescript/components/UniversalOnboarding.d.ts.map +0 -1
  464. package/lib/typescript/components/onboarding/OAuthWebView.d.ts +0 -10
  465. package/lib/typescript/components/onboarding/OAuthWebView.d.ts.map +0 -1
  466. package/lib/typescript/components/onboarding/OnboardingHeader.d.ts +0 -11
  467. package/lib/typescript/components/onboarding/OnboardingHeader.d.ts.map +0 -1
  468. package/lib/typescript/components/onboarding/PinInput.d.ts +0 -4
  469. package/lib/typescript/components/onboarding/PinInput.d.ts.map +0 -1
  470. package/lib/typescript/components/onboarding/PlatformConnector.d.ts +0 -13
  471. package/lib/typescript/components/onboarding/PlatformConnector.d.ts.map +0 -1
  472. package/lib/typescript/components/screens/ConnectorScreen.d.ts +0 -9
  473. package/lib/typescript/components/screens/ConnectorScreen.d.ts.map +0 -1
  474. package/lib/typescript/components/screens/LoadingScreen.d.ts +0 -9
  475. package/lib/typescript/components/screens/LoadingScreen.d.ts.map +0 -1
  476. package/lib/typescript/components/screens/PinCreationScreen.d.ts +0 -10
  477. package/lib/typescript/components/screens/PinCreationScreen.d.ts.map +0 -1
  478. package/lib/typescript/constants/index.d.ts +0 -53
  479. package/lib/typescript/constants/index.d.ts.map +0 -1
  480. package/lib/typescript/hooks/useConnections.d.ts +0 -9
  481. package/lib/typescript/hooks/useConnections.d.ts.map +0 -1
  482. package/lib/typescript/hooks/useCredentials.d.ts +0 -9
  483. package/lib/typescript/hooks/useCredentials.d.ts.map +0 -1
  484. package/lib/typescript/index.d.ts +0 -18
  485. package/lib/typescript/index.d.ts.map +0 -1
  486. package/lib/typescript/services/apiKeyService.d.ts +0 -132
  487. package/lib/typescript/services/apiKeyService.d.ts.map +0 -1
  488. package/lib/typescript/services/oauthService.d.ts +0 -50
  489. package/lib/typescript/services/oauthService.d.ts.map +0 -1
  490. package/lib/typescript/services/platformAuthService.d.ts +0 -144
  491. package/lib/typescript/services/platformAuthService.d.ts.map +0 -1
  492. package/lib/typescript/types/index.d.ts +0 -231
  493. package/lib/typescript/types/index.d.ts.map +0 -1
  494. package/lib/typescript/types.d.ts +0 -270
  495. package/lib/typescript/types.d.ts.map +0 -1
  496. package/lib/typescript/utils/Portal.d.ts +0 -14
  497. package/lib/typescript/utils/Portal.d.ts.map +0 -1
  498. package/lib/typescript/utils/api.d.ts +0 -6
  499. package/lib/typescript/utils/api.d.ts.map +0 -1
  500. package/lib/typescript/utils/auth.d.ts +0 -6
  501. package/lib/typescript/utils/auth.d.ts.map +0 -1
  502. package/lib/typescript/utils/crypto.d.ts +0 -4
  503. package/lib/typescript/utils/crypto.d.ts.map +0 -1
  504. package/lib/typescript/utils/debugHelper.d.ts +0 -29
  505. package/lib/typescript/utils/debugHelper.d.ts.map +0 -1
  506. package/lib/typescript/utils/encryption.d.ts +0 -19
  507. package/lib/typescript/utils/encryption.d.ts.map +0 -1
  508. package/lib/typescript/utils/onairosApi.d.ts +0 -87
  509. package/lib/typescript/utils/onairosApi.d.ts.map +0 -1
  510. package/lib/typescript/utils/programmaticFlow.d.ts +0 -23
  511. package/lib/typescript/utils/programmaticFlow.d.ts.map +0 -1
  512. package/lib/typescript/utils/retryHelper.d.ts +0 -69
  513. package/lib/typescript/utils/retryHelper.d.ts.map +0 -1
  514. package/lib/typescript/utils/secureStorage.d.ts +0 -94
  515. package/lib/typescript/utils/secureStorage.d.ts.map +0 -1
  516. package/src/api/index.ts +0 -111
  517. package/src/assets/images/email.png +0 -0
  518. package/src/assets/images/linkedin.png +0 -0
  519. package/src/assets/images/onairos_logo.png +0 -0
  520. package/src/assets/images/reddit.png +0 -0
  521. package/src/assets/images/youtube.png +0 -0
  522. package/src/components/DataRequestModal.tsx +0 -227
  523. package/src/components/DataRequestScreen.tsx +0 -356
  524. package/src/components/EmailVerificationModal.tsx +0 -364
  525. package/src/components/Onairos.tsx +0 -425
  526. package/src/components/OnairosButton.tsx +0 -359
  527. package/src/components/Overlay.tsx +0 -506
  528. package/src/components/PinInput.tsx +0 -343
  529. package/src/components/PlatformList.tsx +0 -145
  530. package/src/components/TrainingModal.tsx +0 -737
  531. package/src/components/UniversalOnboarding.tsx +0 -1839
  532. package/src/components/UniversalOnboarding.tsx.new +0 -455
  533. package/src/components/onboarding/OAuthWebView.tsx +0 -838
  534. package/src/components/onboarding/OnboardingHeader.tsx +0 -70
  535. package/src/components/onboarding/PinInput.tsx +0 -356
  536. package/src/components/onboarding/PlatformConnector.tsx +0 -302
  537. package/src/components/screens/ConnectorScreen.tsx +0 -153
  538. package/src/components/screens/LoadingScreen.tsx +0 -100
  539. package/src/components/screens/PinCreationScreen.tsx +0 -67
  540. package/src/constants/index.ts +0 -83
  541. package/src/hooks/useConnections.ts +0 -163
  542. package/src/hooks/useCredentials.ts +0 -175
  543. package/src/index.js +0 -14
  544. package/src/index.ts +0 -50
  545. package/src/services/SDK_API_KEY_VALIDATION.md +0 -421
  546. package/src/services/apiKeyService.ts +0 -984
  547. package/src/services/oauthService.ts +0 -412
  548. package/src/services/platformAuthService.ts +0 -1113
  549. package/src/types/ambient.d.ts +0 -29
  550. package/src/types/declarations.d.ts +0 -26
  551. package/src/types/index.d.ts +0 -274
  552. package/src/types/index.ts +0 -244
  553. package/src/types/node-fix.d.ts +0 -19
  554. package/src/types/node-override.d.ts +0 -24
  555. package/src/types/opacity.d.ts +0 -16
  556. package/src/types/types.d.ts +0 -18
  557. package/src/types.ts +0 -298
  558. package/src/utils/Portal.tsx +0 -83
  559. package/src/utils/api.js +0 -112
  560. package/src/utils/auth.js +0 -104
  561. package/src/utils/crypto.js +0 -60
  562. package/src/utils/debugHelper.ts +0 -53
  563. package/src/utils/encryption.ts +0 -69
  564. package/src/utils/onairosApi.ts +0 -391
  565. package/src/utils/programmaticFlow.ts +0 -113
  566. package/src/utils/retryHelper.ts +0 -275
  567. package/src/utils/secureStorage.ts +0 -361
  568. package/types/index.d.ts +0 -218
  569. package/types/node-env.d.ts +0 -15
  570. /package/{src/assets/images → lib/commonjs/assets/icons}/farcaster.png +0 -0
  571. /package/{src/assets/images → lib/commonjs/assets/icons}/instagram.png +0 -0
  572. /package/{src/assets/images → lib/commonjs/assets/icons}/pinterest.png +0 -0
  573. /package/{src/assets/images → lib/commonjs/assets/icons}/swerv_logo.png +0 -0
  574. /package/{src/assets/images → lib/commonjs/assets/icons}/twitter.jpg +0 -0
@@ -1,220 +1 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.NETWORK_RETRY_OPTIONS = exports.DEFAULT_RETRY_OPTIONS = exports.API_RETRY_OPTIONS = void 0;
7
- exports.fetchWithRetry = fetchWithRetry;
8
- exports.healthCheck = healthCheck;
9
- exports.withRetry = withRetry;
10
- /**
11
- * 🔄 Retry Helper Utility
12
- *
13
- * Provides robust retry logic with exponential backoff for network operations.
14
- * Used throughout the Onairos SDK for handling transient failures gracefully.
15
- */
16
-
17
- /**
18
- * Default retry options for the Onairos SDK
19
- */
20
- const DEFAULT_RETRY_OPTIONS = exports.DEFAULT_RETRY_OPTIONS = {
21
- maxRetries: 3,
22
- baseDelay: 1000,
23
- maxDelay: 5000,
24
- exponentialBackoff: true,
25
- enableLogging: false,
26
- shouldRetry: (error, attempt) => {
27
- // Don't retry client errors (4xx) except for 408 (timeout) and 429 (rate limit)
28
- if (error.status >= 400 && error.status < 500 && error.status !== 408 && error.status !== 429) {
29
- return false;
30
- }
31
-
32
- // Retry network errors, timeouts, and server errors (5xx)
33
- if (error.name === 'AbortError' || error.message.includes('Network request failed') || error.message.includes('fetch') || error.message.includes('ENOTFOUND') || error.message.includes('timeout') || error.status >= 500) {
34
- return true;
35
- }
36
-
37
- // Retry JSON parse errors (likely server issues)
38
- if (error.message.includes('JSON Parse error') || error.message.includes('Unexpected character')) {
39
- return true;
40
- }
41
- return false;
42
- }
43
- };
44
-
45
- /**
46
- * Execute a function with retry logic and exponential backoff
47
- * @param fn Function to execute (should return a Promise)
48
- * @param options Retry configuration options
49
- * @returns Promise with retry result
50
- */
51
- async function withRetry(fn, options = {}) {
52
- const config = {
53
- ...DEFAULT_RETRY_OPTIONS,
54
- ...options
55
- };
56
- const startTime = Date.now();
57
- let lastError = null;
58
- for (let attempt = 1; attempt <= config.maxRetries + 1; attempt++) {
59
- try {
60
- if (config.enableLogging && attempt > 1) {
61
- console.log(`🔄 Retry attempt ${attempt}/${config.maxRetries + 1}`);
62
- }
63
- const result = await fn();
64
- return {
65
- success: true,
66
- data: result,
67
- attempts: attempt,
68
- totalDuration: Date.now() - startTime
69
- };
70
- } catch (error) {
71
- lastError = error;
72
-
73
- // Check if we should retry this error
74
- const shouldRetryError = config.shouldRetry ? config.shouldRetry(error, attempt) : true;
75
-
76
- // If this is the last attempt or we shouldn't retry, throw the error
77
- if (attempt > config.maxRetries || !shouldRetryError) {
78
- if (config.enableLogging) {
79
- console.error(`❌ All retry attempts exhausted or error not retryable: ${error.message}`);
80
- }
81
- break;
82
- }
83
-
84
- // Calculate delay for next attempt
85
- let delay = config.baseDelay;
86
- if (config.exponentialBackoff) {
87
- delay = Math.min(config.baseDelay * Math.pow(2, attempt - 1), config.maxDelay);
88
- }
89
-
90
- // Add some jitter to prevent thundering herd
91
- const jitter = Math.random() * 0.1 * delay;
92
- delay = Math.floor(delay + jitter);
93
- if (config.onRetry) {
94
- config.onRetry(error, attempt, delay);
95
- }
96
- if (config.enableLogging) {
97
- console.log(`⏳ Waiting ${delay}ms before retry (attempt ${attempt}/${config.maxRetries + 1})`);
98
- }
99
-
100
- // Wait before next attempt
101
- await new Promise(resolve => setTimeout(() => resolve(), delay));
102
- }
103
- }
104
- return {
105
- success: false,
106
- error: lastError || new Error('Unknown error'),
107
- attempts: config.maxRetries + 1,
108
- totalDuration: Date.now() - startTime
109
- };
110
- }
111
-
112
- /**
113
- * Retry configuration for API calls
114
- */
115
- const API_RETRY_OPTIONS = exports.API_RETRY_OPTIONS = {
116
- maxRetries: 3,
117
- baseDelay: 1000,
118
- maxDelay: 5000,
119
- exponentialBackoff: true,
120
- shouldRetry: (error, attempt) => {
121
- // Enhanced retry logic for API calls
122
-
123
- // Never retry authentication errors (401) or permission errors (403)
124
- if (error.status === 401 || error.status === 403) {
125
- return false;
126
- }
127
-
128
- // Never retry bad request errors (400) or not found (404) unless it's a specific case
129
- if (error.status === 400 || error.status === 404 && !error.message.includes('validation endpoint')) {
130
- return false;
131
- }
132
-
133
- // Retry rate limiting (429) with longer delays
134
- if (error.status === 429) {
135
- return attempt <= 2; // Limit retries for rate limiting
136
- }
137
-
138
- // Retry server errors (5xx)
139
- if (error.status >= 500) {
140
- return true;
141
- }
142
-
143
- // Retry timeout and network errors
144
- if (error.name === 'AbortError' || error.message.includes('timeout') || error.message.includes('Network request failed') || error.message.includes('fetch') || error.message.includes('ENOTFOUND')) {
145
- return true;
146
- }
147
-
148
- // Retry JSON parse errors (server returning HTML instead of JSON)
149
- if (error.message.includes('JSON Parse error') || error.message.includes('Unexpected character') || error.message.includes('HTML page instead of JSON')) {
150
- return true;
151
- }
152
- return false;
153
- },
154
- onRetry: (error, attempt, delay) => {
155
- console.warn(`⚠️ API call failed (attempt ${attempt}), retrying in ${delay}ms: ${error.message}`);
156
- }
157
- };
158
-
159
- /**
160
- * Specialized retry for network/connectivity issues
161
- */
162
- const NETWORK_RETRY_OPTIONS = exports.NETWORK_RETRY_OPTIONS = {
163
- maxRetries: 2,
164
- baseDelay: 2000,
165
- maxDelay: 8000,
166
- exponentialBackoff: true,
167
- shouldRetry: (error, attempt) => {
168
- // Only retry actual network/connectivity issues
169
- return error.message.includes('Network request failed') || error.message.includes('ENOTFOUND') || error.message.includes('DNS') || error.name === 'AbortError';
170
- }
171
- };
172
-
173
- /**
174
- * Create a retry wrapper for fetch requests
175
- * @param url Request URL
176
- * @param options Fetch options
177
- * @param retryOptions Retry configuration
178
- * @returns Promise with fetch response
179
- */
180
- async function fetchWithRetry(url, options = {}, retryOptions = API_RETRY_OPTIONS) {
181
- const result = await withRetry(() => fetch(url, options), retryOptions);
182
- if (!result.success) {
183
- throw result.error;
184
- }
185
- return result.data;
186
- }
187
-
188
- /**
189
- * Health check function with retry for testing connectivity
190
- * @param url URL to check
191
- * @param timeout Timeout in milliseconds
192
- * @returns Promise indicating if the service is reachable
193
- */
194
- async function healthCheck(url, timeout = 5000) {
195
- const startTime = Date.now();
196
- try {
197
- const controller = new AbortController();
198
- const timeoutId = setTimeout(() => controller.abort(), timeout);
199
- const response = await fetch(url, {
200
- method: 'GET',
201
- signal: controller.signal,
202
- headers: {
203
- 'User-Agent': 'OnairosReactNative/HealthCheck'
204
- }
205
- });
206
- clearTimeout(timeoutId);
207
- return {
208
- reachable: true,
209
- status: response.status,
210
- duration: Date.now() - startTime
211
- };
212
- } catch (error) {
213
- return {
214
- reachable: false,
215
- error: error.message,
216
- duration: Date.now() - startTime
217
- };
218
- }
219
- }
220
- //# sourceMappingURL=retryHelper.js.map
1
+ 'use strict';Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['NETWORK_RETRY_OPTIONS']=exports['DEFAULT_RETRY_OPTIONS']=exports[_0xd65f(0x0)]=void 0x0,exports[_0xd65f(0x1)]=fetchWithRetry,exports[_0xd65f(0x2)]=healthCheck,exports[_0xd65f(0x3)]=withRetry;const DEFAULT_RETRY_OPTIONS=exports[_0xd65f(0x4)]={'maxRetries':0x3,'baseDelay':0x3e8,'maxDelay':0x1388,'exponentialBackoff':!![],'enableLogging':![],'shouldRetry':(_0x276cb7,_0x2e63b2)=>{const _0x224ffc={'aKnoe':function(_0x23f929,_0x417e6e){return _0x23f929>=_0x417e6e;},'YXadp':function(_0x254e98,_0x40240e){return _0x254e98!==_0x40240e;},'mEjvw':function(_0x227d8c,_0x297998){return _0x227d8c===_0x297998;},'nakDX':'AbortError','SpBPU':'fetch','eTxah':function(_0x228680,_0x30b520){return _0x228680>=_0x30b520;},'BQvrn':function(_0x552d56,_0x1db73a){return _0x552d56!==_0x1db73a;},'ErPGI':'JSON\x20Parse\x20error','VYnra':_0xd65f(0x5),'RTZvq':_0xd65f(0x6)};if(_0x224ffc['aKnoe'](_0x276cb7[_0xd65f(0x7)],0x190)&&_0x276cb7[_0xd65f(0x7)]<0x1f4&&_0x224ffc[_0xd65f(0x8)](_0x276cb7[_0xd65f(0x7)],0x198)&&_0x224ffc[_0xd65f(0x8)](_0x276cb7[_0xd65f(0x7)],0x1ad))return![];if(_0x224ffc['mEjvw'](_0x276cb7['name'],_0x224ffc[_0xd65f(0x9)])||_0x276cb7[_0xd65f(0xa)]['includes'](_0xd65f(0xb))||_0x276cb7[_0xd65f(0xa)][_0xd65f(0xc)](_0x224ffc['SpBPU'])||_0x276cb7[_0xd65f(0xa)][_0xd65f(0xc)](_0xd65f(0xd))||_0x276cb7[_0xd65f(0xa)]['includes'](_0xd65f(0xe))||_0x224ffc[_0xd65f(0xf)](_0x276cb7[_0xd65f(0x7)],0x1f4)){if(_0x224ffc[_0xd65f(0x10)](_0xd65f(0x11),_0xd65f(0x11)))_0x556a19[_0xd65f(0x12)]('⏳\x20Waiting\x20'+_0x323cc4+'ms\x20before\x20retry\x20(attempt\x20'+_0x1216eb+'/'+(_0x71cea6[_0xd65f(0x13)]+0x1)+')');else return!![];}if(_0x276cb7[_0xd65f(0xa)][_0xd65f(0xc)](_0x224ffc[_0xd65f(0x14)])||_0x276cb7['message'][_0xd65f(0xc)](_0x224ffc[_0xd65f(0x15)])){if(_0x224ffc[_0xd65f(0x16)](_0x224ffc[_0xd65f(0x17)],'twcNg'))return!![];else _0x27c814[_0xd65f(0x18)](_0xd65f(0x19)+_0x43aa3d[_0xd65f(0xa)]);}return![];}};async function withRetry(_0x5eaed1,_0x1e8a03={}){const _0x2536ce={'IYBuY':function(_0x2fadef,_0x45fb5a){return _0x2fadef<=_0x45fb5a;},'EOJkp':function(_0x10c580,_0x301aa7){return _0x10c580+_0x301aa7;},'tziiA':function(_0x46ae8b,_0x293d15){return _0x46ae8b-_0x293d15;},'ZsLzj':function(_0x2c15de,_0x56d9bc){return _0x2c15de>_0x56d9bc;},'SgBOn':function(_0x3a0ca8,_0xd3225b){return _0x3a0ca8===_0xd3225b;},'HjvFR':_0xd65f(0x1a),'raTIU':_0xd65f(0x1b),'StjxG':_0xd65f(0x1c),'AAABn':function(_0xef2c2b,_0x6bb99b){return _0xef2c2b*_0x6bb99b;},'falsM':function(_0x1375fa,_0x10cd29){return _0x1375fa*_0x10cd29;},'TyBya':function(_0x2ff352,_0x232b1c){return _0x2ff352+_0x232b1c;}},_0x8fe728={...DEFAULT_RETRY_OPTIONS,..._0x1e8a03},_0x34fe4c=Date['now']();let _0x48b03b=null;for(let _0x524e2b=0x1;_0x2536ce['IYBuY'](_0x524e2b,_0x2536ce['EOJkp'](_0x8fe728[_0xd65f(0x13)],0x1));_0x524e2b++){try{_0x8fe728[_0xd65f(0x1d)]&&_0x524e2b>0x1&&console['log']('🔄\x20Retry\x20attempt\x20'+_0x524e2b+'/'+_0x2536ce[_0xd65f(0x1e)](_0x8fe728[_0xd65f(0x13)],0x1));const _0x3a22a2=await _0x5eaed1();return{'success':!![],'data':_0x3a22a2,'attempts':_0x524e2b,'totalDuration':_0x2536ce[_0xd65f(0x1f)](Date[_0xd65f(0x20)](),_0x34fe4c)};}catch(_0xa2f58c){_0x48b03b=_0xa2f58c;const _0xdd032=_0x8fe728[_0xd65f(0x21)]?_0x8fe728[_0xd65f(0x21)](_0xa2f58c,_0x524e2b):!![];if(_0x2536ce[_0xd65f(0x22)](_0x524e2b,_0x8fe728[_0xd65f(0x13)])||!_0xdd032){if(_0x2536ce[_0xd65f(0x23)](_0x2536ce[_0xd65f(0x24)],_0x2536ce[_0xd65f(0x24)])){_0x8fe728[_0xd65f(0x1d)]&&console[_0xd65f(0x18)](_0xd65f(0x19)+_0xa2f58c[_0xd65f(0xa)]);break;}else return _0x363f03<=0x2;}let _0x2753ad=_0x8fe728[_0xd65f(0x25)];if(_0x8fe728[_0xd65f(0x26)]){if(_0x2536ce['raTIU']===_0x2536ce[_0xd65f(0x27)])throw _0x597577[_0xd65f(0x18)];else _0x2753ad=Math[_0xd65f(0x28)](_0x8fe728['baseDelay']*Math[_0xd65f(0x29)](0x2,_0x524e2b-0x1),_0x8fe728[_0xd65f(0x2a)]);}const _0x2a73c8=_0x2536ce[_0xd65f(0x2b)](_0x2536ce['falsM'](Math['random'](),0.1),_0x2753ad);_0x2753ad=Math[_0xd65f(0x2c)](_0x2753ad+_0x2a73c8),_0x8fe728[_0xd65f(0x2d)]&&_0x8fe728['onRetry'](_0xa2f58c,_0x524e2b,_0x2753ad),_0x8fe728[_0xd65f(0x1d)]&&console[_0xd65f(0x12)](_0xd65f(0x2e)+_0x2753ad+_0xd65f(0x2f)+_0x524e2b+'/'+_0x2536ce[_0xd65f(0x30)](_0x8fe728['maxRetries'],0x1)+')'),await new Promise(_0x26fa68=>setTimeout(()=>_0x26fa68(),_0x2753ad));}}return{'success':![],'error':_0x48b03b||new Error(_0xd65f(0x31)),'attempts':_0x2536ce['EOJkp'](_0x8fe728[_0xd65f(0x13)],0x1),'totalDuration':Date[_0xd65f(0x20)]()-_0x34fe4c};}function _0xd65f(_0x59dbb2,_0xd65f6d){_0x59dbb2=_0x59dbb2-0x0;const _0x2f0437=_0x59db();let _0x58db88=_0x2f0437[_0x59dbb2];return _0x58db88;}const API_RETRY_OPTIONS=exports[_0xd65f(0x0)]={'maxRetries':0x3,'baseDelay':0x3e8,'maxDelay':0x1388,'exponentialBackoff':!![],'shouldRetry':(_0x24726e,_0x1f36ad)=>{const _0x4d9298={'LKnVb':function(_0x536d74,_0x592e2e){return _0x536d74+_0x592e2e;},'aHiiZ':function(_0x50f223,_0x2cca22){return _0x50f223===_0x2cca22;},'tCbIs':function(_0x52435e,_0x4a1a33){return _0x52435e!==_0x4a1a33;},'axLdS':_0xd65f(0x32),'oYnzC':_0xd65f(0x33),'WddvX':function(_0x3fb2c2,_0x348783){return _0x3fb2c2<=_0x348783;},'wuiBz':function(_0x43dba3,_0x6e9a2e){return _0x43dba3>=_0x6e9a2e;},'UvbZV':function(_0x522e8b,_0x272721){return _0x522e8b===_0x272721;},'yoRPS':_0xd65f(0x34),'EsGxw':_0xd65f(0xb),'aveeE':'fTUFu','RLLtL':'JSON\x20Parse\x20error','BFZNu':_0xd65f(0x35)};if(_0x24726e[_0xd65f(0x7)]===0x191||_0x4d9298[_0xd65f(0x36)](_0x24726e[_0xd65f(0x7)],0x193))return![];if(_0x4d9298[_0xd65f(0x36)](_0x24726e[_0xd65f(0x7)],0x190)||_0x4d9298[_0xd65f(0x36)](_0x24726e[_0xd65f(0x7)],0x194)&&!_0x24726e[_0xd65f(0xa)][_0xd65f(0xc)](_0xd65f(0x37)))return![];if(_0x24726e[_0xd65f(0x7)]===0x1ad)return _0x4d9298[_0xd65f(0x38)](_0x4d9298[_0xd65f(0x39)],_0x4d9298[_0xd65f(0x3a)])?_0x4d9298[_0xd65f(0x3b)](_0x1f36ad,0x2):!![];if(_0x4d9298[_0xd65f(0x3c)](_0x24726e[_0xd65f(0x7)],0x1f4))return!![];if(_0x4d9298[_0xd65f(0x3d)](_0x24726e[_0xd65f(0x3e)],_0x4d9298[_0xd65f(0x3f)])||_0x24726e[_0xd65f(0xa)][_0xd65f(0xc)](_0xd65f(0xe))||_0x24726e[_0xd65f(0xa)]['includes'](_0x4d9298[_0xd65f(0x40)])||_0x24726e[_0xd65f(0xa)][_0xd65f(0xc)](_0xd65f(0x41))||_0x24726e[_0xd65f(0xa)][_0xd65f(0xc)](_0xd65f(0xd))){if(_0xd65f(0x42)!==_0x4d9298[_0xd65f(0x43)])return!![];else _0x14d470[_0xd65f(0x12)]('🔄\x20Retry\x20attempt\x20'+_0x5c1659+'/'+_0x4d9298['LKnVb'](_0x5b38c1[_0xd65f(0x13)],0x1));}if(_0x24726e['message'][_0xd65f(0xc)](_0x4d9298['RLLtL'])||_0x24726e[_0xd65f(0xa)][_0xd65f(0xc)](_0xd65f(0x5))||_0x24726e['message'][_0xd65f(0xc)](_0x4d9298[_0xd65f(0x44)]))return!![];return![];},'onRetry':(_0xf3b9f2,_0x276a24,_0xed66ee)=>{console[_0xd65f(0x45)]('⚠️\x20API\x20call\x20failed\x20(attempt\x20'+_0x276a24+_0xd65f(0x46)+_0xed66ee+_0xd65f(0x47)+_0xf3b9f2['message']);}},NETWORK_RETRY_OPTIONS=exports[_0xd65f(0x48)]={'maxRetries':0x2,'baseDelay':0x7d0,'maxDelay':0x1f40,'exponentialBackoff':!![],'shouldRetry':(_0x531ddc,_0x58ab69)=>{const _0x563a25={'JjMKp':_0xd65f(0xd),'OoyZp':function(_0x4086d3,_0x4aba9c){return _0x4086d3===_0x4aba9c;},'BqECL':_0xd65f(0x34)};return _0x531ddc['message'][_0xd65f(0xc)](_0xd65f(0xb))||_0x531ddc[_0xd65f(0xa)][_0xd65f(0xc)](_0x563a25[_0xd65f(0x49)])||_0x531ddc[_0xd65f(0xa)][_0xd65f(0xc)](_0xd65f(0x4a))||_0x563a25[_0xd65f(0x4b)](_0x531ddc[_0xd65f(0x3e)],_0x563a25['BqECL']);}};function _0x59db(){const _0x77ac3c=['API_RETRY_OPTIONS','fetchWithRetry','healthCheck','withRetry','DEFAULT_RETRY_OPTIONS','Unexpected\x20character','twcNg','status','YXadp','nakDX','message','Network\x20request\x20failed','includes','ENOTFOUND','timeout','eTxah','BQvrn','qvMCa','log','maxRetries','ErPGI','VYnra','mEjvw','RTZvq','error','❌\x20All\x20retry\x20attempts\x20exhausted\x20or\x20error\x20not\x20retryable:\x20','npylq','Jgnfo','NesVH','enableLogging','EOJkp','tziiA','now','shouldRetry','ZsLzj','SgBOn','HjvFR','baseDelay','exponentialBackoff','StjxG','min','pow','maxDelay','AAABn','floor','onRetry','⏳\x20Waiting\x20','ms\x20before\x20retry\x20(attempt\x20','TyBya','Unknown\x20error','OuoiR','qytFf','AbortError','HTML\x20page\x20instead\x20of\x20JSON','aHiiZ','validation\x20endpoint','tCbIs','axLdS','oYnzC','WddvX','wuiBz','UvbZV','name','yoRPS','EsGxw','fetch','qwBMt','aveeE','BFZNu','warn','),\x20retrying\x20in\x20','ms:\x20','NETWORK_RETRY_OPTIONS','JjMKp','DNS','OoyZp','mVSed','success','data','opxXS','signal','OnairosReactNative/HealthCheck'];_0x59db=function(){return _0x77ac3c;};return _0x59db();}async function fetchWithRetry(_0x20086b,_0x3b1da5={},_0x1f1588=API_RETRY_OPTIONS){const _0x5e95a5={'mVSed':function(_0x4746e9,_0x4139b9,_0x2ef43c){return _0x4746e9(_0x4139b9,_0x2ef43c);}},_0x53544c=await _0x5e95a5[_0xd65f(0x4c)](withRetry,()=>fetch(_0x20086b,_0x3b1da5),_0x1f1588);if(!_0x53544c[_0xd65f(0x4d)])throw _0x53544c['error'];return _0x53544c[_0xd65f(0x4e)];}async function healthCheck(_0x271e24,_0x44f53b=0x1388){const _0x13bb32={'opxXS':function(_0x2479ba,_0x5286d2,_0x4fd8c7){return _0x2479ba(_0x5286d2,_0x4fd8c7);},'vVKPw':function(_0x2bb71f,_0x4fed81){return _0x2bb71f(_0x4fed81);}},_0xb6b57e=Date[_0xd65f(0x20)]();try{const _0x5a2738=new AbortController(),_0x4a0579=setTimeout(()=>_0x5a2738['abort'](),_0x44f53b),_0x525653=await _0x13bb32[_0xd65f(0x4f)](fetch,_0x271e24,{'method':'GET','signal':_0x5a2738[_0xd65f(0x50)],'headers':{'User-Agent':_0xd65f(0x51)}});return _0x13bb32['vVKPw'](clearTimeout,_0x4a0579),{'reachable':!![],'status':_0x525653[_0xd65f(0x7)],'duration':Date[_0xd65f(0x20)]()-_0xb6b57e};}catch(_0x8cd2d5){return{'reachable':![],'error':_0x8cd2d5[_0xd65f(0xa)],'duration':Date[_0xd65f(0x20)]()-_0xb6b57e};}}
@@ -1,349 +1,10 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.verifyCredentials = exports.updateCredentials = exports.storeCredentials = exports.isJWTExpired = exports.hasJWT = exports.hasCredentials = exports.getJWTPayload = exports.getJWT = exports.getCredentials = exports.generateDeviceUsername = exports.deleteCredentials = exports.clearJWT = void 0;
7
- var _reactNative = require("react-native");
8
- var _constants = require("../constants");
9
- var _asyncStorage = _interopRequireDefault(require("@react-native-async-storage/async-storage"));
10
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
- // JWT token storage key
12
- const JWT_TOKEN_KEY = 'onairos_jwt_token';
13
-
14
- // Define OnairosCredentials interface locally to avoid circular dependencies
15
-
16
- // Create a mock storage for environments without Keychain access (like Expo Go)
17
- const mockStorage = {};
18
-
19
- // Try to import Keychain, but provide fallbacks if not available
20
- let Keychain = null;
21
- try {
22
- // This import might fail in Expo Go or environments without native modules
23
- Keychain = require('react-native-keychain');
24
- } catch (error) {
25
- console.warn('react-native-keychain module not available, using mock storage');
26
- // Create minimal mock implementation
27
- Keychain = {
28
- ACCESS_CONTROL: {
29
- BIOMETRY_ANY_OR_DEVICE_PASSCODE: 'mock'
30
- },
31
- ACCESSIBLE: {
32
- WHEN_UNLOCKED: 'mock'
33
- },
34
- getGenericPassword: async () => null,
35
- setGenericPassword: async () => true,
36
- resetGenericPassword: async () => true
37
- };
38
- }
39
-
40
- // Check if Keychain is properly initialized and available
41
- const isKeychainAvailable = () => {
42
- try {
43
- return Keychain && typeof Keychain.getGenericPassword === 'function';
44
- } catch (e) {
45
- return false;
46
- }
47
- };
48
-
49
- // Wrapper for getGenericPassword that falls back to mock storage
50
- const safeGetGenericPassword = async options => {
51
- try {
52
- if (isKeychainAvailable()) {
53
- return await Keychain.getGenericPassword(options);
54
- } else {
55
- // Fall back to mock storage in memory
56
- const key = (options === null || options === void 0 ? void 0 : options.service) || 'default';
57
- return mockStorage[key] || null;
58
- }
59
- } catch (error) {
60
- console.warn('Keychain access failed, using mock storage', error);
61
- // Fall back to mock storage on error
62
- const key = (options === null || options === void 0 ? void 0 : options.service) || 'default';
63
- return mockStorage[key] || null;
64
- }
65
- };
66
-
67
- // Wrapper for setGenericPassword that falls back to mock storage
68
- const safeSetGenericPassword = async (username, password, options) => {
69
- try {
70
- if (isKeychainAvailable()) {
71
- return await Keychain.setGenericPassword(username, password, options);
72
- } else {
73
- // Fall back to mock storage in memory
74
- const key = (options === null || options === void 0 ? void 0 : options.service) || 'default';
75
- mockStorage[key] = {
76
- username,
77
- password
78
- };
79
- return true;
80
- }
81
- } catch (error) {
82
- console.warn('Keychain access failed, using mock storage', error);
83
- // Fall back to mock storage on error
84
- const key = (options === null || options === void 0 ? void 0 : options.service) || 'default';
85
- mockStorage[key] = {
86
- username,
87
- password
88
- };
89
- return true;
90
- }
91
- };
92
-
93
- // Wrapper for resetGenericPassword that falls back to mock storage
94
- const safeResetGenericPassword = async options => {
95
- try {
96
- if (isKeychainAvailable()) {
97
- return await Keychain.resetGenericPassword(options);
98
- } else {
99
- // Fall back to mock storage in memory
100
- const key = (options === null || options === void 0 ? void 0 : options.service) || 'default';
101
- delete mockStorage[key];
102
- return true;
103
- }
104
- } catch (error) {
105
- console.warn('Keychain access failed, using mock storage', error);
106
- // Fall back to mock storage on error
107
- const key = (options === null || options === void 0 ? void 0 : options.service) || 'default';
108
- delete mockStorage[key];
109
- return true;
110
- }
111
- };
112
-
113
- /**
114
- * Store credentials in memory (temporary solution)
115
- */
116
- const storeCredentials = async credentials => {
117
- try {
118
- const existingCredentials = await getCredentials();
119
- const updatedCredentials = {
120
- ...existingCredentials,
121
- ...credentials,
122
- createdAt: (existingCredentials === null || existingCredentials === void 0 ? void 0 : existingCredentials.createdAt) || Date.now()
123
- };
124
- const username = updatedCredentials.username;
125
- if (!username) {
126
- throw new Error('Username is required for storing credentials');
127
- }
128
- const options = {
129
- service: _constants.STORAGE_KEYS.credentials
130
- };
131
-
132
- // Only use secure storage options on real devices
133
- if (_reactNative.Platform.OS !== 'web' && isKeychainAvailable()) {
134
- options.accessControl = Keychain.ACCESS_CONTROL.BIOMETRY_ANY_OR_DEVICE_PASSCODE;
135
- options.accessible = Keychain.ACCESSIBLE.WHEN_UNLOCKED;
136
- }
137
- await safeSetGenericPassword(username, JSON.stringify(updatedCredentials), options);
138
- return true;
139
- } catch (error) {
140
- console.error('Error storing credentials:', error);
141
- return false;
142
- }
143
- };
144
-
145
- /**
146
- * Retrieve credentials from memory (temporary solution)
147
- */
148
- exports.storeCredentials = storeCredentials;
149
- const getCredentials = async () => {
150
- try {
151
- const credentials = await safeGetGenericPassword({
152
- service: _constants.STORAGE_KEYS.credentials
153
- });
154
- if (credentials) {
155
- return JSON.parse(credentials.password);
156
- }
157
- return null;
158
- } catch (error) {
159
- console.error('Error getting credentials:', error);
160
- return null;
161
- }
162
- };
163
-
164
- /**
165
- * Check if the user has stored credentials
166
- */
167
- exports.getCredentials = getCredentials;
168
- const hasCredentials = async () => {
169
- try {
170
- const credentials = await safeGetGenericPassword({
171
- service: _constants.STORAGE_KEYS.credentials
172
- });
173
- return !!credentials;
174
- } catch (error) {
175
- console.error('Error checking credentials:', error);
176
- return false;
177
- }
178
- };
179
-
180
- /**
181
- * Delete stored credentials
182
- */
183
- exports.hasCredentials = hasCredentials;
184
- const deleteCredentials = async () => {
185
- try {
186
- await safeResetGenericPassword({
187
- service: _constants.STORAGE_KEYS.credentials
188
- });
189
- return true;
190
- } catch (error) {
191
- console.error('Error deleting credentials:', error);
192
- return false;
193
- }
194
- };
195
-
196
- /**
197
- * Update specific fields in the stored credentials
198
- */
199
- exports.deleteCredentials = deleteCredentials;
200
- const updateCredentials = async credentials => {
201
- return storeCredentials(credentials);
202
- };
203
-
204
- /**
205
- * Generate a device-specific unique username
206
- */
207
- exports.updateCredentials = updateCredentials;
208
- const generateDeviceUsername = () => {
209
- const randomId = Math.random().toString(36).substring(2, 10);
210
- return `dev_${randomId}`;
211
- };
212
-
213
- /**
214
- * Verify credentials (temporary mock implementation)
215
- */
216
- exports.generateDeviceUsername = generateDeviceUsername;
217
- const verifyCredentials = async username => {
218
- try {
219
- // For Expo Go or development, always return true
220
- if (!isKeychainAvailable()) {
221
- return true;
222
- }
223
-
224
- // TODO: Implement actual verification with API
225
- return true;
226
- } catch (error) {
227
- console.error('Error verifying credentials:', error);
228
- return false;
229
- }
230
- };
231
-
232
- /**
233
- * JWT Token Storage Functions
234
- * These functions handle JWT tokens from email verification
235
- *
236
- * Note: Main JWT token management is handled in apiKeyService.ts
237
- * These are utility functions for backwards compatibility
238
- */
239
-
240
- /**
241
- * Retrieve JWT token
242
- * @returns JWT token or null if not found
243
- */
244
- exports.verifyCredentials = verifyCredentials;
245
- const getJWT = async () => {
246
- try {
247
- const token = await _asyncStorage.default.getItem(JWT_TOKEN_KEY);
248
- return token;
249
- } catch (error) {
250
- console.error('❌ Failed to retrieve JWT token:', error);
251
- return null;
252
- }
253
- };
254
-
255
- /**
256
- * Check if JWT token exists
257
- * @returns True if JWT token exists
258
- */
259
- exports.getJWT = getJWT;
260
- const hasJWT = async () => {
261
- try {
262
- const token = await _asyncStorage.default.getItem(JWT_TOKEN_KEY);
263
- return !!token;
264
- } catch (error) {
265
- console.error('❌ Failed to check JWT token:', error);
266
- return false;
267
- }
268
- };
269
-
270
- /**
271
- * Clear JWT token
272
- */
273
- exports.hasJWT = hasJWT;
274
- const clearJWT = async () => {
275
- try {
276
- await _asyncStorage.default.removeItem(JWT_TOKEN_KEY);
277
- console.log('🗑️ JWT token cleared');
278
- return true;
279
- } catch (error) {
280
- console.error('❌ Failed to clear JWT token:', error);
281
- return false;
282
- }
283
- };
284
-
285
- /**
286
- * Simple base64 decoder for React Native
287
- */
288
- exports.clearJWT = clearJWT;
289
- const base64Decode = str => {
290
- // Add padding if needed
291
- while (str.length % 4) {
292
- str += '=';
293
- }
294
-
295
- // Simple base64 decoding
296
- const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
297
- let result = '';
298
- for (let i = 0; i < str.length; i += 4) {
299
- const a = chars.indexOf(str.charAt(i));
300
- const b = chars.indexOf(str.charAt(i + 1));
301
- const c = chars.indexOf(str.charAt(i + 2));
302
- const d = chars.indexOf(str.charAt(i + 3));
303
- const bitmap = a << 18 | b << 12 | c << 6 | d;
304
- result += String.fromCharCode(bitmap >> 16 & 255);
305
- if (c !== 64) result += String.fromCharCode(bitmap >> 8 & 255);
306
- if (d !== 64) result += String.fromCharCode(bitmap & 255);
307
- }
308
- return result;
309
- };
310
-
311
- /**
312
- * Get JWT token payload (decoded)
313
- * @returns Decoded JWT payload or null if invalid
314
- */
315
- const getJWTPayload = async () => {
316
- try {
317
- const token = await getJWT();
318
- if (!token) return null;
319
-
320
- // Decode JWT payload (middle part of token)
321
- const parts = token.split('.');
322
- if (parts.length !== 3) return null;
323
- const decodedPayload = base64Decode(parts[1]);
324
- const payload = JSON.parse(decodedPayload);
325
- return payload;
326
- } catch (error) {
327
- console.error('❌ Failed to decode JWT payload:', error);
328
- return null;
329
- }
330
- };
331
-
332
- /**
333
- * Check if JWT token is expired
334
- * @returns True if token is expired or invalid
335
- */
336
- exports.getJWTPayload = getJWTPayload;
337
- const isJWTExpired = async () => {
338
- try {
339
- const payload = await getJWTPayload();
340
- if (!payload || !payload.exp) return true;
341
- const currentTime = Math.floor(Date.now() / 1000);
342
- return payload.exp < currentTime;
343
- } catch (error) {
344
- console.error('❌ Failed to check JWT expiration:', error);
345
- return true;
346
- }
347
- };
348
- exports.isJWTExpired = isJWTExpired;
349
- //# sourceMappingURL=secureStorage.js.map
1
+ 'use strict';
2
+ // Onairos SDK - Asset Registry (auto-generated)
3
+ var __ONAIROS_REQ_REGISTRY__ = [
4
+ require("react-native"),
5
+ require("../constants"),
6
+ require("@react-native-async-storage/async-storage"),
7
+ require('react-native-keychain')
8
+ ];
9
+ function __ONAIROS_REQ_FUNC__(i) { return __ONAIROS_REQ_REGISTRY__[i]; }
10
+ Object[_0x60b8(0x0)](exports,_0x60b8(0x1),{'value':!![]}),exports[_0x60b8(0x2)]=exports[_0x60b8(0x3)]=exports[_0x60b8(0x4)]=exports[_0x60b8(0x5)]=exports['hasJWT']=exports[_0x60b8(0x6)]=exports[_0x60b8(0x7)]=exports[_0x60b8(0x8)]=exports[_0x60b8(0x9)]=exports[_0x60b8(0xa)]=exports[_0x60b8(0xb)]=exports[_0x60b8(0xc)]=void 0x0;var _reactNative=__ONAIROS_REQ_FUNC__(0x0),_constants=__ONAIROS_REQ_FUNC__(0x1),_asyncStorage=_interopRequireDefault(__ONAIROS_REQ_FUNC__(0x2));function _interopRequireDefault(_0x1d9cdd){return _0x1d9cdd&&_0x1d9cdd[_0x60b8(0x1)]?_0x1d9cdd:{'default':_0x1d9cdd};}const JWT_TOKEN_KEY=_0x60b8(0xd),mockStorage={};let Keychain=null;try{Keychain=__ONAIROS_REQ_FUNC__(0x3);}catch(_0x2f8bec){console[_0x60b8(0xe)]('react-native-keychain module not available, using mock storage'),Keychain={'ACCESS_CONTROL':{'BIOMETRY_ANY_OR_DEVICE_PASSCODE':_0x60b8(0xf)},'ACCESSIBLE':{'WHEN_UNLOCKED':'mock'},'getGenericPassword':async()=>null,'setGenericPassword':async()=>!![],'resetGenericPassword':async()=>!![]};}const isKeychainAvailable=()=>{const _0x90cf92={'QwIwD':'❌\x20Failed\x20to\x20clear\x20JWT\x20token:','AmxGh':_0x60b8(0x10),'PLKFL':function(_0xe052fd,_0x37cd69){return _0xe052fd===_0x37cd69;},'fCDvc':'function'};try{return _0x90cf92[_0x60b8(0x11)]===_0x60b8(0x12)?(_0x6d85a2[_0x60b8(0x13)](_0x90cf92[_0x60b8(0x14)],_0x7ec5fe),![]):Keychain&&_0x90cf92[_0x60b8(0x15)](typeof Keychain['getGenericPassword'],_0x90cf92['fCDvc']);}catch(_0x47521e){return![];}},safeGetGenericPassword=async _0x420eed=>{const _0x10726d={'uKWqy':_0x60b8(0x16),'JUhSE':function(_0x46717b,_0x4cd28f){return _0x46717b%_0x4cd28f;},'MLGKQ':function(_0xdcaf31,_0xbafa26){return _0xdcaf31+_0xbafa26;},'HIVpC':function(_0x131501,_0x16b74e){return _0x131501+_0x16b74e;},'BClpZ':function(_0x3ee28b,_0x489720){return _0x3ee28b|_0x489720;},'YdnUI':function(_0x3bedab,_0x379b7f){return _0x3bedab|_0x379b7f;},'qzPEn':function(_0x49861f,_0x677bd5){return _0x49861f<<_0x677bd5;},'CMbPc':function(_0x5e464a,_0x309d78){return _0x5e464a&_0x309d78;},'NefAV':function(_0x35d511,_0xb3d52e){return _0x35d511>>_0xb3d52e;},'TQTNw':function(_0x5488a9,_0x3fd639){return _0x5488a9!==_0x3fd639;},'HMItH':function(_0x537356){return _0x537356();},'TbJAG':function(_0x5e5f87,_0x208409){return _0x5e5f87!==_0x208409;},'DZFvg':_0x60b8(0x17),'dBovU':function(_0x5effe6,_0x59e0cb){return _0x5effe6===_0x59e0cb;},'ezRgX':_0x60b8(0x18),'mmiro':_0x60b8(0x19),'NebmA':_0x60b8(0x1a),'GAuLC':function(_0x524a3f,_0x328c3e){return _0x524a3f===_0x328c3e;}};try{if(_0x10726d['HMItH'](isKeychainAvailable))return _0x10726d[_0x60b8(0x1b)]('jiyIN',_0x10726d[_0x60b8(0x1c)])?(_0x17080[_0x60b8(0x13)](_0x60b8(0x1d),_0x3487cf),![]):await Keychain[_0x60b8(0x1e)](_0x420eed);else{if(_0x10726d['dBovU'](_0x10726d['ezRgX'],_0x60b8(0x18))){const _0x30cb0f=(_0x420eed===null||_0x10726d['dBovU'](_0x420eed,void 0x0)?void 0x0:_0x420eed[_0x60b8(0x1f)])||_0x10726d[_0x60b8(0x20)];return mockStorage[_0x30cb0f]||null;}else return _0x12d46e[_0x60b8(0x13)](_0x10726d[_0x60b8(0x21)],_0x5215a4),null;}}catch(_0x34fad2){if('UZCce'===_0x60b8(0x22)){console[_0x60b8(0xe)](_0x10726d['NebmA'],_0x34fad2);const _0xf07592=(_0x10726d[_0x60b8(0x23)](_0x420eed,null)||_0x10726d['GAuLC'](_0x420eed,void 0x0)?void 0x0:_0x420eed[_0x60b8(0x1f)])||_0x60b8(0x19);return mockStorage[_0xf07592]||null;}else{while(_0x10726d[_0x60b8(0x24)](_0x5cb365[_0x60b8(0x25)],0x4)){_0x3e52e8+='=';}const _0x64b18c='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';let _0x561fcf='';for(let _0x4aff76=0x0;_0x4aff76<_0x2fecc2['length'];_0x4aff76+=0x4){const _0x1940c4=_0x64b18c[_0x60b8(0x26)](_0x66e5c[_0x60b8(0x27)](_0x4aff76)),_0x38b0ae=_0x64b18c[_0x60b8(0x26)](_0x3816a6[_0x60b8(0x27)](_0x4aff76+0x1)),_0x29b72c=_0x64b18c['indexOf'](_0x1d8ab3[_0x60b8(0x27)](_0x10726d[_0x60b8(0x28)](_0x4aff76,0x2))),_0x619daa=_0x64b18c[_0x60b8(0x26)](_0x537019['charAt'](_0x10726d[_0x60b8(0x29)](_0x4aff76,0x3))),_0x505a2e=_0x10726d['BClpZ'](_0x10726d['YdnUI'](_0x1940c4<<0x12,_0x38b0ae<<0xc)|_0x10726d['qzPEn'](_0x29b72c,0x6),_0x619daa);_0x561fcf+=_0x13c7d3[_0x60b8(0x2a)](_0x10726d[_0x60b8(0x2b)](_0x10726d['NefAV'](_0x505a2e,0x10),0xff));if(_0x29b72c!==0x40)_0x561fcf+=_0xc7812d[_0x60b8(0x2a)](_0x10726d[_0x60b8(0x2b)](_0x10726d[_0x60b8(0x2c)](_0x505a2e,0x8),0xff));if(_0x10726d[_0x60b8(0x2d)](_0x619daa,0x40))_0x561fcf+=_0x2d8213['fromCharCode'](_0x10726d[_0x60b8(0x2b)](_0x505a2e,0xff));}return _0x561fcf;}}},safeSetGenericPassword=async(_0x130cd6,_0x3f7aef,_0x56f0c0)=>{const _0x1911db={'woEVI':function(_0x29e355){return _0x29e355();},'jhYQr':function(_0x4f7c65,_0x3f9c47){return _0x4f7c65===_0x3f9c47;},'tuuaM':function(_0x4de9ba,_0x4d6f16){return _0x4de9ba===_0x4d6f16;},'xauio':_0x60b8(0x19),'ICcOy':function(_0x50eb2e,_0x1fa2d4){return _0x50eb2e!==_0x1fa2d4;},'dkBTj':_0x60b8(0x2e)};try{if(_0x1911db[_0x60b8(0x2f)](isKeychainAvailable))return await Keychain[_0x60b8(0x30)](_0x130cd6,_0x3f7aef,_0x56f0c0);else{const _0x36cd47=(_0x1911db['jhYQr'](_0x56f0c0,null)||_0x1911db[_0x60b8(0x31)](_0x56f0c0,void 0x0)?void 0x0:_0x56f0c0['service'])||_0x1911db[_0x60b8(0x32)];return mockStorage[_0x36cd47]={'username':_0x130cd6,'password':_0x3f7aef},!![];}}catch(_0x41967c){if(_0x1911db['ICcOy'](_0x1911db[_0x60b8(0x33)],_0x60b8(0x2e)))Keychain=_0x49a635(0x3);else{console[_0x60b8(0xe)](_0x60b8(0x1a),_0x41967c);const _0x2b712d=(_0x56f0c0===null||_0x56f0c0===void 0x0?void 0x0:_0x56f0c0[_0x60b8(0x1f)])||_0x1911db[_0x60b8(0x32)];return mockStorage[_0x2b712d]={'username':_0x130cd6,'password':_0x3f7aef},!![];}}},safeResetGenericPassword=async _0xd048ce=>{const _0x30ef5d={'CnXJt':function(_0x4d80b0,_0x1b04dd){return _0x4d80b0===_0x1b04dd;},'ZTSrX':_0x60b8(0x19)};try{if(isKeychainAvailable())return await Keychain[_0x60b8(0x34)](_0xd048ce);else{const _0x47119a=(_0x30ef5d['CnXJt'](_0xd048ce,null)||_0xd048ce===void 0x0?void 0x0:_0xd048ce[_0x60b8(0x1f)])||_0x30ef5d['ZTSrX'];return delete mockStorage[_0x47119a],!![];}}catch(_0x2737b2){console[_0x60b8(0xe)](_0x60b8(0x1a),_0x2737b2);const _0x110808=(_0xd048ce===null||_0x30ef5d[_0x60b8(0x35)](_0xd048ce,void 0x0)?void 0x0:_0xd048ce[_0x60b8(0x1f)])||_0x30ef5d[_0x60b8(0x36)];return delete mockStorage[_0x110808],!![];}},storeCredentials=async _0x3def56=>{const _0x510e83={'DuuFa':function(_0x595776,_0x2a96d4){return _0x595776===_0x2a96d4;},'BsJeG':function(_0x1b45a1,_0x47bcad){return _0x1b45a1===_0x47bcad;},'wPZEO':'default','roXlk':function(_0x50e138){return _0x50e138();},'wlJEG':function(_0x335b9b,_0x8fe8a4){return _0x335b9b===_0x8fe8a4;},'EnrYU':function(_0x4e7948,_0x5b64f7){return _0x4e7948!==_0x5b64f7;},'CHnkE':'jzbRd','vHIss':_0x60b8(0x37),'lrwnc':'Error\x20storing\x20credentials:'};try{const _0x93a40c=await _0x510e83[_0x60b8(0x38)](getCredentials),_0x302801={..._0x93a40c,..._0x3def56,'createdAt':(_0x510e83[_0x60b8(0x39)](_0x93a40c,null)||_0x510e83[_0x60b8(0x3a)](_0x93a40c,void 0x0)?void 0x0:_0x93a40c[_0x60b8(0x3b)])||Date[_0x60b8(0x3c)]()},_0xeb1fcc=_0x302801[_0x60b8(0x3d)];if(!_0xeb1fcc){if(_0x510e83[_0x60b8(0x3e)](_0x510e83[_0x60b8(0x3f)],_0x510e83[_0x60b8(0x3f)])){const _0x2aea33=(_0x510e83[_0x60b8(0x39)](_0x14088f,null)||_0x510e83['BsJeG'](_0xeeafe1,void 0x0)?void 0x0:_0x3f6b61[_0x60b8(0x1f)])||_0x510e83[_0x60b8(0x40)];return _0x37fea6[_0x2aea33]||null;}else throw new Error(_0x60b8(0x41));}const _0x5c2dec={'service':_constants[_0x60b8(0x42)][_0x60b8(0x43)]};return _reactNative[_0x60b8(0x44)]['OS']!==_0x510e83[_0x60b8(0x45)]&&_0x510e83[_0x60b8(0x38)](isKeychainAvailable)&&(_0x5c2dec[_0x60b8(0x46)]=Keychain['ACCESS_CONTROL'][_0x60b8(0x47)],_0x5c2dec[_0x60b8(0x48)]=Keychain['ACCESSIBLE'][_0x60b8(0x49)]),await safeSetGenericPassword(_0xeb1fcc,JSON[_0x60b8(0x4a)](_0x302801),_0x5c2dec),!![];}catch(_0x28bc16){return console['error'](_0x510e83[_0x60b8(0x4b)],_0x28bc16),![];}};exports['storeCredentials']=storeCredentials;function _0x60b8(_0x12c471,_0x60b809){_0x12c471=_0x12c471-0x0;const _0x46801e=_0x12c4();let _0x2cbae8=_0x46801e[_0x12c471];return _0x2cbae8;}const getCredentials=async()=>{const _0x4caa56={'QwCeR':function(_0x3f9acb,_0x20f111){return _0x3f9acb(_0x20f111);},'dPpMJ':'Error\x20getting\x20credentials:'};try{const _0x28ff6e=await _0x4caa56['QwCeR'](safeGetGenericPassword,{'service':_constants[_0x60b8(0x42)][_0x60b8(0x43)]});if(_0x28ff6e)return JSON['parse'](_0x28ff6e[_0x60b8(0x4c)]);return null;}catch(_0x4115a0){return console[_0x60b8(0x13)](_0x4caa56[_0x60b8(0x4d)],_0x4115a0),null;}};exports['getCredentials']=getCredentials;const hasCredentials=async()=>{const _0x5267b0={'adWiD':function(_0x3a2e21,_0x572938){return _0x3a2e21(_0x572938);}};try{const _0xa62333=await _0x5267b0[_0x60b8(0x4e)](safeGetGenericPassword,{'service':_constants[_0x60b8(0x42)][_0x60b8(0x43)]});return!!_0xa62333;}catch(_0x316e5f){return console['error']('Error\x20checking\x20credentials:',_0x316e5f),![];}};exports[_0x60b8(0x6)]=hasCredentials;const deleteCredentials=async()=>{const _0x5dca61={'zLnCM':function(_0x2e69b4,_0x4bb303){return _0x2e69b4(_0x4bb303);}};try{return await _0x5dca61[_0x60b8(0x4f)](safeResetGenericPassword,{'service':_constants[_0x60b8(0x42)][_0x60b8(0x43)]}),!![];}catch(_0xbc6ca8){return console[_0x60b8(0x13)](_0x60b8(0x50),_0xbc6ca8),![];}};exports[_0x60b8(0xb)]=deleteCredentials;const updateCredentials=async _0x542ec2=>{const _0x40948e={'wAaMM':function(_0x2ffd62,_0x294573){return _0x2ffd62(_0x294573);}};return _0x40948e['wAaMM'](storeCredentials,_0x542ec2);};exports[_0x60b8(0x3)]=updateCredentials;const generateDeviceUsername=()=>{const _0x236b82=Math[_0x60b8(0x51)]()[_0x60b8(0x52)](0x24)['substring'](0x2,0xa);return _0x60b8(0x53)+_0x236b82;};exports[_0x60b8(0xa)]=generateDeviceUsername;const verifyCredentials=async _0x2fd79d=>{const _0xa82502={'LWKQB':function(_0x3eda8b){return _0x3eda8b();},'XtyCC':_0x60b8(0x54),'eNEwe':_0x60b8(0x1d)};try{if(!_0xa82502['LWKQB'](isKeychainAvailable))return!![];return!![];}catch(_0x5edc41){return'CIumY'===_0xa82502['XtyCC']?_0x4a25fc&&_0x325989['__esModule']?_0x30dbcb:{'default':_0x34dc24}:(console[_0x60b8(0x13)](_0xa82502[_0x60b8(0x55)],_0x5edc41),![]);}};exports[_0x60b8(0x2)]=verifyCredentials;const getJWT=async()=>{const _0x3e8b1a={'STiYV':function(_0x126577,_0x74fd5e){return _0x126577!==_0x74fd5e;},'yEMEq':_0x60b8(0x56),'IFiXh':'❌\x20Failed\x20to\x20retrieve\x20JWT\x20token:'};try{if(_0x3e8b1a[_0x60b8(0x57)](_0x3e8b1a['yEMEq'],_0x3e8b1a[_0x60b8(0x58)]))return _0x4875ed[_0x60b8(0x59)](_0x59bde0[_0x60b8(0x4c)]);else{const _0x19b350=await _asyncStorage[_0x60b8(0x19)][_0x60b8(0x5a)](JWT_TOKEN_KEY);return _0x19b350;}}catch(_0x4d1d62){return console[_0x60b8(0x13)](_0x3e8b1a['IFiXh'],_0x4d1d62),null;}};exports[_0x60b8(0x8)]=getJWT;const hasJWT=async()=>{const _0x258549={'ckGDz':_0x60b8(0x5b)};try{const _0x166bfe=await _asyncStorage[_0x60b8(0x19)]['getItem'](JWT_TOKEN_KEY);return!!_0x166bfe;}catch(_0x2cfc08){return console[_0x60b8(0x13)](_0x258549['ckGDz'],_0x2cfc08),![];}};exports[_0x60b8(0x5c)]=hasJWT;const clearJWT=async()=>{const _0x4ae175={'ypzDi':_0x60b8(0xf),'hsBhc':_0x60b8(0x5d),'wKuiK':'ntHWH','qvDXC':_0x60b8(0x5e),'UXnOO':_0x60b8(0x5f)};try{return await _asyncStorage[_0x60b8(0x19)][_0x60b8(0x60)](JWT_TOKEN_KEY),console[_0x60b8(0x61)](_0x4ae175['hsBhc']),!![];}catch(_0x29a53){if(_0x4ae175['wKuiK']===_0x4ae175[_0x60b8(0x62)])_0x5b86cf[_0x60b8(0xe)]('react-native-keychain module not available, using mock storage'),Keychain={'ACCESS_CONTROL':{'BIOMETRY_ANY_OR_DEVICE_PASSCODE':_0x60b8(0xf)},'ACCESSIBLE':{'WHEN_UNLOCKED':_0x4ae175[_0x60b8(0x63)]},'getGenericPassword':async()=>null,'setGenericPassword':async()=>!![],'resetGenericPassword':async()=>!![]};else return console['error'](_0x4ae175['UXnOO'],_0x29a53),![];}};exports[_0x60b8(0xc)]=clearJWT;const base64Decode=_0x24a2ac=>{const _0x36b53e={'xkJYL':function(_0x287a80,_0x183095){return _0x287a80%_0x183095;},'uxkpx':function(_0x39f103,_0x1d2e2b){return _0x39f103!==_0x1d2e2b;},'NXAmd':'hbADd','yDVym':function(_0x49d29d,_0x3b9356){return _0x49d29d<_0x3b9356;},'hvRXa':function(_0x4658bf,_0x651d10){return _0x4658bf+_0x651d10;},'zIokt':function(_0x2f4d19,_0x421fbe){return _0x2f4d19+_0x421fbe;},'KcYqy':function(_0x463f51,_0x2133ee){return _0x463f51|_0x2133ee;},'pWyKq':function(_0x3cef9c,_0x21a5f6){return _0x3cef9c|_0x21a5f6;},'RPpzH':function(_0x20b069,_0x271dc6){return _0x20b069<<_0x271dc6;},'aidRQ':function(_0x5f3ef2,_0x1b5fdd){return _0x5f3ef2<<_0x1b5fdd;},'nhOGD':function(_0x43d679,_0x15f192){return _0x43d679<<_0x15f192;},'zZtkS':function(_0x15d175,_0x100b12){return _0x15d175!==_0x100b12;},'RKhox':function(_0x1ae98d,_0x3ae051){return _0x1ae98d!==_0x3ae051;},'XjDDu':function(_0x4983af,_0x47eea9){return _0x4983af&_0x47eea9;}};while(_0x36b53e['xkJYL'](_0x24a2ac[_0x60b8(0x25)],0x4)){_0x36b53e[_0x60b8(0x64)]('hbADd',_0x36b53e[_0x60b8(0x65)])?_0x1207d0+='=':_0x24a2ac+='=';}const _0x409bc5=_0x60b8(0x66);let _0x21e9b1='';for(let _0x5a52cf=0x0;_0x36b53e[_0x60b8(0x67)](_0x5a52cf,_0x24a2ac[_0x60b8(0x25)]);_0x5a52cf+=0x4){const _0x3077d1=_0x409bc5[_0x60b8(0x26)](_0x24a2ac[_0x60b8(0x27)](_0x5a52cf)),_0x3f1698=_0x409bc5[_0x60b8(0x26)](_0x24a2ac[_0x60b8(0x27)](_0x36b53e[_0x60b8(0x68)](_0x5a52cf,0x1))),_0x3062f2=_0x409bc5['indexOf'](_0x24a2ac[_0x60b8(0x27)](_0x36b53e[_0x60b8(0x69)](_0x5a52cf,0x2))),_0x13e99f=_0x409bc5[_0x60b8(0x26)](_0x24a2ac['charAt'](_0x36b53e[_0x60b8(0x69)](_0x5a52cf,0x3))),_0x5360c9=_0x36b53e[_0x60b8(0x6a)](_0x36b53e[_0x60b8(0x6b)](_0x36b53e[_0x60b8(0x6b)](_0x36b53e['RPpzH'](_0x3077d1,0x12),_0x36b53e['aidRQ'](_0x3f1698,0xc)),_0x36b53e[_0x60b8(0x6c)](_0x3062f2,0x6)),_0x13e99f);_0x21e9b1+=String['fromCharCode'](_0x5360c9>>0x10&0xff);if(_0x36b53e[_0x60b8(0x6d)](_0x3062f2,0x40))_0x21e9b1+=String[_0x60b8(0x2a)](_0x5360c9>>0x8&0xff);if(_0x36b53e[_0x60b8(0x6e)](_0x13e99f,0x40))_0x21e9b1+=String[_0x60b8(0x2a)](_0x36b53e[_0x60b8(0x6f)](_0x5360c9,0xff));}return _0x21e9b1;},getJWTPayload=async()=>{const _0x55145a={'PQtdj':function(_0x280cdf){return _0x280cdf();},'qhPMM':function(_0x2fb958,_0x2aaffb){return _0x2fb958!==_0x2aaffb;},'TQdMv':function(_0x567239,_0x35cca6){return _0x567239(_0x35cca6);},'SmlOt':_0x60b8(0x16)};try{const _0x39c9e1=await _0x55145a[_0x60b8(0x70)](getJWT);if(!_0x39c9e1)return null;const _0x244979=_0x39c9e1[_0x60b8(0x71)]('.');if(_0x55145a[_0x60b8(0x72)](_0x244979[_0x60b8(0x25)],0x3))return null;const _0x56cbd3=_0x55145a[_0x60b8(0x73)](base64Decode,_0x244979[0x1]),_0x5a1441=JSON[_0x60b8(0x59)](_0x56cbd3);return _0x5a1441;}catch(_0xfd445e){return console[_0x60b8(0x13)](_0x55145a[_0x60b8(0x74)],_0xfd445e),null;}};exports[_0x60b8(0x7)]=getJWTPayload;function _0x12c4(){const _0x34b92c=['defineProperty','__esModule','verifyCredentials','updateCredentials','storeCredentials','isJWTExpired','hasCredentials','getJWTPayload','getJWT','getCredentials','generateDeviceUsername','deleteCredentials','clearJWT','onairos_jwt_token','warn','mock','ZXMNy','AmxGh','bLFWq','error','QwIwD','PLKFL','❌\x20Failed\x20to\x20decode\x20JWT\x20payload:','jiyIN','rcFvZ','default','Keychain\x20access\x20failed,\x20using\x20mock\x20storage','TbJAG','DZFvg','Error\x20verifying\x20credentials:','getGenericPassword','service','mmiro','uKWqy','UZCce','GAuLC','JUhSE','length','indexOf','charAt','MLGKQ','HIVpC','fromCharCode','CMbPc','NefAV','TQTNw','pahxy','woEVI','setGenericPassword','tuuaM','xauio','dkBTj','resetGenericPassword','CnXJt','ZTSrX','web','roXlk','DuuFa','wlJEG','createdAt','now','username','EnrYU','CHnkE','wPZEO','Username\x20is\x20required\x20for\x20storing\x20credentials','STORAGE_KEYS','credentials','Platform','vHIss','accessControl','BIOMETRY_ANY_OR_DEVICE_PASSCODE','accessible','WHEN_UNLOCKED','stringify','lrwnc','password','dPpMJ','adWiD','zLnCM','Error\x20deleting\x20credentials:','random','toString','dev_','Mzafe','eNEwe','rOxzJ','STiYV','yEMEq','parse','getItem','❌\x20Failed\x20to\x20check\x20JWT\x20token:','hasJWT','🗑️\x20JWT\x20token\x20cleared','sMEsb','❌\x20Failed\x20to\x20clear\x20JWT\x20token:','removeItem','log','qvDXC','ypzDi','uxkpx','NXAmd','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/','yDVym','hvRXa','zIokt','KcYqy','pWyKq','nhOGD','zZtkS','RKhox','XjDDu','PQtdj','split','qhPMM','TQdMv','SmlOt','rwdvi','WGurq','❌\x20Failed\x20to\x20check\x20JWT\x20expiration:','dgCMi','zeOqL','exp','floor','MqyKw','DiDIm','XRwxI'];_0x12c4=function(){return _0x34b92c;};return _0x12c4();}const isJWTExpired=async()=>{const _0x423399={'XRwxI':function(_0x3d622f,_0x2f3d19){return _0x3d622f(_0x2f3d19);},'zeOqL':_0x60b8(0x75),'MqyKw':function(_0x23ca8f,_0x250f3a){return _0x23ca8f<_0x250f3a;},'DiDIm':_0x60b8(0x76),'NxCPo':_0x60b8(0x77)};try{if(_0x60b8(0x78)!==_0x423399[_0x60b8(0x79)]){const _0x335ea6=await getJWTPayload();if(!_0x335ea6||!_0x335ea6[_0x60b8(0x7a)])return!![];const _0x76d795=Math[_0x60b8(0x7b)](Date['now']()/0x3e8);return _0x423399[_0x60b8(0x7c)](_0x335ea6[_0x60b8(0x7a)],_0x76d795);}else throw new _0x6e0a0c(_0x60b8(0x41));}catch(_0xb8a5d6){return _0x423399[_0x60b8(0x7d)]===_0x423399[_0x60b8(0x7d)]?(console[_0x60b8(0x13)](_0x423399['NxCPo'],_0xb8a5d6),!![]):_0x423399[_0x60b8(0x7e)](_0x5585b0,_0x4e835c);}};exports[_0x60b8(0x5)]=isJWTExpired;