@onairos/react-native 3.7.2 → 3.7.4

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 (237) hide show
  1. package/lib/commonjs/api/index.js +219 -9
  2. package/lib/commonjs/components/BodyText.js +27 -9
  3. package/lib/commonjs/components/BrandMark.js +111 -10
  4. package/lib/commonjs/components/CodeInput.js +120 -9
  5. package/lib/commonjs/components/EmailInput.js +30 -8
  6. package/lib/commonjs/components/GoogleButton.js +56 -9
  7. package/lib/commonjs/components/HeadingGroup.js +43 -9
  8. package/lib/commonjs/components/LLMDataInputModal.js +664 -14
  9. package/lib/commonjs/components/ModalHeader.js +99 -9
  10. package/lib/commonjs/components/ModalSheet.js +47 -9
  11. package/lib/commonjs/components/Onairos.js +380 -14
  12. package/lib/commonjs/components/OnairosButton.js +313 -13
  13. package/lib/commonjs/components/OnairosSignInButton.js +130 -12
  14. package/lib/commonjs/components/Overlay.js +465 -13
  15. package/lib/commonjs/components/PersonaImage.js +137 -10
  16. package/lib/commonjs/components/PersonaLoadingScreen.js +318 -12
  17. package/lib/commonjs/components/PersonalizationConsentScreen.js +467 -13
  18. package/lib/commonjs/components/PinCreationScreen.js +403 -12
  19. package/lib/commonjs/components/PinInput.js +464 -9
  20. package/lib/commonjs/components/PlatformConnectorsStep.js +1311 -23
  21. package/lib/commonjs/components/PlatformList.js +137 -10
  22. package/lib/commonjs/components/PlatformToggle.js +180 -9
  23. package/lib/commonjs/components/PrimaryButton.js +180 -10
  24. package/lib/commonjs/components/SignInMatchAnimation.js +197 -9
  25. package/lib/commonjs/components/SignInStep.js +345 -12
  26. package/lib/commonjs/components/UniversalOnboarding.js +2780 -30
  27. package/lib/commonjs/components/VerificationStep.js +176 -11
  28. package/lib/commonjs/components/WelcomeScreen.js +461 -22
  29. package/lib/commonjs/components/icons/Basicproficon.js +37 -8
  30. package/lib/commonjs/components/icons/Basicprofile.js +21 -8
  31. package/lib/commonjs/components/icons/Checkbox.js +21 -8
  32. package/lib/commonjs/components/icons/Checkmark.js +27 -8
  33. package/lib/commonjs/components/icons/Contentanalysis.js +21 -8
  34. package/lib/commonjs/components/icons/Contenticon.js +39 -8
  35. package/lib/commonjs/components/icons/EnochE.js +41 -8
  36. package/lib/commonjs/components/icons/Personalityicon.js +30 -8
  37. package/lib/commonjs/components/icons/Personalityprofile.js +21 -8
  38. package/lib/commonjs/components/icons/Personalitytraits.js +21 -8
  39. package/lib/commonjs/components/icons/Userpreferences.js +21 -8
  40. package/lib/commonjs/components/icons/index.js +84 -17
  41. package/lib/commonjs/components/onboarding/OAuthWebView.js +1754 -18
  42. package/lib/commonjs/components/onboarding/OnboardingHeader.js +74 -10
  43. package/lib/commonjs/components/onboarding/PinInput.js +283 -10
  44. package/lib/commonjs/components/onboarding/PlatformConnector.js +249 -11
  45. package/lib/commonjs/config/PLATFORM_APIS.md +849 -0
  46. package/lib/commonjs/config/api.js +56 -7
  47. package/lib/commonjs/constants/index.js +120 -7
  48. package/lib/commonjs/context/AuthContext.js +345 -10
  49. package/lib/commonjs/hooks/useConnectedAccounts.js +111 -9
  50. package/lib/commonjs/hooks/useConnections.js +102 -8
  51. package/lib/commonjs/hooks/useCredentials.js +178 -10
  52. package/lib/commonjs/hooks/useUserConnections.js +148 -10
  53. package/lib/commonjs/index.js +439 -34
  54. package/lib/commonjs/services/apiClient.js +298 -8
  55. package/lib/commonjs/services/biometricPinService.js +180 -8
  56. package/lib/commonjs/services/chatGPTConversationExtractor.js +155 -8
  57. package/lib/commonjs/services/chatGPTConversationService.js +275 -9
  58. package/lib/commonjs/services/claudeConversationExtractor.js +103 -8
  59. package/lib/commonjs/services/claudeConversationService.js +158 -9
  60. package/lib/commonjs/services/connectedAccountsService.js +310 -10
  61. package/lib/commonjs/services/googleAuthService.js +252 -11
  62. package/lib/commonjs/services/hingeDataExtractor.js +105 -8
  63. package/lib/commonjs/services/hingeDataService.js +150 -9
  64. package/lib/commonjs/services/imageCompressionService.js +260 -7
  65. package/lib/commonjs/services/instagramDataExtractor.js +126 -8
  66. package/lib/commonjs/services/instagramDataService.js +163 -9
  67. package/lib/commonjs/services/jwtStorageService.js +276 -7
  68. package/lib/commonjs/services/linkedinDOMExtractor.js +245 -7
  69. package/lib/commonjs/services/linkedinProfileService.js +222 -9
  70. package/lib/commonjs/services/linkedinScrapingService.js +230 -8
  71. package/lib/commonjs/services/llmDataStorage.js +294 -8
  72. package/lib/commonjs/services/mobileTrainingService.js +186 -8
  73. package/lib/commonjs/services/netflixDataExtractor.js +120 -8
  74. package/lib/commonjs/services/netflixDataService.js +198 -9
  75. package/lib/commonjs/services/pinEncryptionService.js +84 -8
  76. package/lib/commonjs/services/pinStorageUtils.js +105 -7
  77. package/lib/commonjs/services/platformAuthService.js +1484 -12
  78. package/lib/commonjs/services/sephoraDataExtractor.js +140 -8
  79. package/lib/commonjs/services/sephoraDataService.js +200 -9
  80. package/lib/commonjs/services/spotifyDataExtractor.js +148 -8
  81. package/lib/commonjs/services/spotifyDataService.js +241 -9
  82. package/lib/commonjs/services/storageService.js +404 -8
  83. package/lib/commonjs/services/telegramDataExtractor.js +115 -8
  84. package/lib/commonjs/services/telegramDataService.js +499 -9
  85. package/lib/commonjs/services/trainingApiHelpers.js +73 -7
  86. package/lib/commonjs/services/userConnectionsService.js +340 -10
  87. package/lib/commonjs/services/youtubeMigrationService.js +416 -10
  88. package/lib/commonjs/theme/index.js +250 -7
  89. package/lib/commonjs/types/ambient.d.js +2 -1
  90. package/lib/commonjs/types/declarations.d.js +2 -1
  91. package/lib/commonjs/types/index.js +6 -1
  92. package/lib/commonjs/types/node-fix.d.js +2 -1
  93. package/lib/commonjs/types/node-override.d.js +2 -1
  94. package/lib/commonjs/types/opacity.d.js +2 -1
  95. package/lib/commonjs/types.js +14 -1
  96. package/lib/commonjs/utils/Portal.js +98 -8
  97. package/lib/commonjs/utils/api.js +130 -9
  98. package/lib/commonjs/utils/assetRegistry.js +210 -35
  99. package/lib/commonjs/utils/auth.js +112 -9
  100. package/lib/commonjs/utils/connectorTests.js +613 -29
  101. package/lib/commonjs/utils/crypto.js +62 -8
  102. package/lib/commonjs/utils/debugHelper.js +64 -1
  103. package/lib/commonjs/utils/encryption.js +76 -7
  104. package/lib/commonjs/utils/eventUtils.js +288 -1
  105. package/lib/commonjs/utils/haptics.js +66 -9
  106. package/lib/commonjs/utils/imagePreloader.js +6 -1
  107. package/lib/commonjs/utils/networkDiagnostics.js +226 -8
  108. package/lib/commonjs/utils/onairosApi.js +350 -9
  109. package/lib/commonjs/utils/programmaticFlow.js +117 -9
  110. package/lib/commonjs/utils/retryHelper.js +220 -1
  111. package/lib/commonjs/utils/secureStorage.js +349 -10
  112. package/lib/commonjs/utils/webviewScripts/chatgpt.js +551 -1
  113. package/lib/commonjs/utils/webviewScripts/claude.js +376 -1
  114. package/lib/commonjs/utils/webviewScripts/hinge.js +411 -1
  115. package/lib/commonjs/utils/webviewScripts/index.js +698 -15
  116. package/lib/commonjs/utils/webviewScripts/instagram.js +454 -1
  117. package/lib/commonjs/utils/webviewScripts/linkedin.js +880 -1
  118. package/lib/commonjs/utils/webviewScripts/netflix.js +382 -1
  119. package/lib/commonjs/utils/webviewScripts/sephora.js +516 -1
  120. package/lib/commonjs/utils/webviewScripts/spotify.js +419 -1
  121. package/lib/commonjs/utils/webviewScripts/telegram.js +678 -1
  122. package/lib/module/api/index.js +211 -1
  123. package/lib/module/components/BodyText.js +20 -1
  124. package/lib/module/components/BrandMark.js +104 -1
  125. package/lib/module/components/CodeInput.js +113 -1
  126. package/lib/module/components/EmailInput.js +23 -1
  127. package/lib/module/components/GoogleButton.js +49 -1
  128. package/lib/module/components/HeadingGroup.js +36 -1
  129. package/lib/module/components/LLMDataInputModal.js +656 -7
  130. package/lib/module/components/ModalHeader.js +92 -1
  131. package/lib/module/components/ModalSheet.js +39 -1
  132. package/lib/module/components/Onairos.js +373 -1
  133. package/lib/module/components/OnairosButton.js +305 -1
  134. package/lib/module/components/OnairosSignInButton.js +121 -1
  135. package/lib/module/components/Overlay.js +456 -1
  136. package/lib/module/components/PersonaImage.js +129 -1
  137. package/lib/module/components/PersonaLoadingScreen.js +310 -1
  138. package/lib/module/components/PersonalizationConsentScreen.js +460 -1
  139. package/lib/module/components/PinCreationScreen.js +396 -1
  140. package/lib/module/components/PinInput.js +456 -1
  141. package/lib/module/components/PlatformConnectorsStep.js +1302 -6
  142. package/lib/module/components/PlatformList.js +129 -1
  143. package/lib/module/components/PlatformToggle.js +173 -1
  144. package/lib/module/components/PrimaryButton.js +172 -1
  145. package/lib/module/components/SignInMatchAnimation.js +189 -1
  146. package/lib/module/components/SignInStep.js +338 -1
  147. package/lib/module/components/UniversalOnboarding.js +2770 -1
  148. package/lib/module/components/VerificationStep.js +168 -1
  149. package/lib/module/components/WelcomeScreen.js +453 -1
  150. package/lib/module/components/icons/Basicproficon.js +30 -1
  151. package/lib/module/components/icons/Basicprofile.js +14 -1
  152. package/lib/module/components/icons/Checkbox.js +14 -1
  153. package/lib/module/components/icons/Checkmark.js +20 -1
  154. package/lib/module/components/icons/Contentanalysis.js +14 -1
  155. package/lib/module/components/icons/Contenticon.js +32 -1
  156. package/lib/module/components/icons/EnochE.js +34 -1
  157. package/lib/module/components/icons/Personalityicon.js +23 -1
  158. package/lib/module/components/icons/Personalityprofile.js +14 -1
  159. package/lib/module/components/icons/Personalitytraits.js +14 -1
  160. package/lib/module/components/icons/Userpreferences.js +14 -1
  161. package/lib/module/components/icons/index.js +13 -1
  162. package/lib/module/components/onboarding/OAuthWebView.js +1746 -1
  163. package/lib/module/components/onboarding/OnboardingHeader.js +66 -1
  164. package/lib/module/components/onboarding/PinInput.js +274 -1
  165. package/lib/module/components/onboarding/PlatformConnector.js +240 -1
  166. package/lib/module/config/PLATFORM_APIS.md +849 -0
  167. package/lib/module/config/api.js +47 -1
  168. package/lib/module/constants/index.js +114 -1
  169. package/lib/module/context/AuthContext.js +335 -1
  170. package/lib/module/hooks/useConnectedAccounts.js +106 -1
  171. package/lib/module/hooks/useConnections.js +95 -1
  172. package/lib/module/hooks/useCredentials.js +171 -6
  173. package/lib/module/hooks/useUserConnections.js +140 -1
  174. package/lib/module/index.js +172 -1
  175. package/lib/module/services/apiClient.js +295 -1
  176. package/lib/module/services/biometricPinService.js +169 -1
  177. package/lib/module/services/chatGPTConversationExtractor.js +149 -1
  178. package/lib/module/services/chatGPTConversationService.js +268 -1
  179. package/lib/module/services/claudeConversationExtractor.js +97 -1
  180. package/lib/module/services/claudeConversationService.js +151 -1
  181. package/lib/module/services/connectedAccountsService.js +293 -1
  182. package/lib/module/services/googleAuthService.js +241 -1
  183. package/lib/module/services/hingeDataExtractor.js +99 -1
  184. package/lib/module/services/hingeDataService.js +143 -1
  185. package/lib/module/services/imageCompressionService.js +250 -1
  186. package/lib/module/services/instagramDataExtractor.js +120 -1
  187. package/lib/module/services/instagramDataService.js +156 -1
  188. package/lib/module/services/jwtStorageService.js +257 -1
  189. package/lib/module/services/linkedinDOMExtractor.js +234 -1
  190. package/lib/module/services/linkedinProfileService.js +210 -1
  191. package/lib/module/services/linkedinScrapingService.js +219 -1
  192. package/lib/module/services/llmDataStorage.js +277 -1
  193. package/lib/module/services/mobileTrainingService.js +173 -1
  194. package/lib/module/services/netflixDataExtractor.js +114 -1
  195. package/lib/module/services/netflixDataService.js +191 -1
  196. package/lib/module/services/pinEncryptionService.js +74 -6
  197. package/lib/module/services/pinStorageUtils.js +93 -1
  198. package/lib/module/services/platformAuthService.js +1461 -1
  199. package/lib/module/services/sephoraDataExtractor.js +134 -1
  200. package/lib/module/services/sephoraDataService.js +193 -1
  201. package/lib/module/services/spotifyDataExtractor.js +142 -1
  202. package/lib/module/services/spotifyDataService.js +234 -1
  203. package/lib/module/services/storageService.js +383 -1
  204. package/lib/module/services/telegramDataExtractor.js +109 -1
  205. package/lib/module/services/telegramDataService.js +493 -1
  206. package/lib/module/services/trainingApiHelpers.js +67 -1
  207. package/lib/module/services/userConnectionsService.js +329 -1
  208. package/lib/module/services/youtubeMigrationService.js +405 -1
  209. package/lib/module/theme/index.js +245 -1
  210. package/lib/module/types.js +10 -1
  211. package/lib/module/utils/Portal.js +90 -1
  212. package/lib/module/utils/api.js +118 -1
  213. package/lib/module/utils/assetRegistry.js +200 -34
  214. package/lib/module/utils/auth.js +100 -1
  215. package/lib/module/utils/connectorTests.js +600 -27
  216. package/lib/module/utils/crypto.js +54 -1
  217. package/lib/module/utils/debugHelper.js +54 -1
  218. package/lib/module/utils/encryption.js +67 -1
  219. package/lib/module/utils/eventUtils.js +270 -1
  220. package/lib/module/utils/haptics.js +59 -8
  221. package/lib/module/utils/imagePreloader.js +3 -1
  222. package/lib/module/utils/networkDiagnostics.js +217 -1
  223. package/lib/module/utils/onairosApi.js +333 -1
  224. package/lib/module/utils/programmaticFlow.js +111 -1
  225. package/lib/module/utils/retryHelper.js +211 -1
  226. package/lib/module/utils/secureStorage.js +330 -6
  227. package/lib/module/utils/webviewScripts/chatgpt.js +545 -1
  228. package/lib/module/utils/webviewScripts/claude.js +370 -1
  229. package/lib/module/utils/webviewScripts/hinge.js +405 -1
  230. package/lib/module/utils/webviewScripts/index.js +434 -1
  231. package/lib/module/utils/webviewScripts/instagram.js +448 -1
  232. package/lib/module/utils/webviewScripts/linkedin.js +874 -1
  233. package/lib/module/utils/webviewScripts/netflix.js +376 -1
  234. package/lib/module/utils/webviewScripts/sephora.js +510 -1
  235. package/lib/module/utils/webviewScripts/spotify.js +413 -1
  236. package/lib/module/utils/webviewScripts/telegram.js +672 -1
  237. package/package.json +2 -2
@@ -1,7 +1,276 @@
1
- 'use strict';
2
- // Onairos SDK - Asset Registry (auto-generated)
3
- var __ONAIROS_REQ_REGISTRY__ = [
4
- require("@react-native-async-storage/async-storage")
5
- ];
6
- function __ONAIROS_REQ_FUNC__(i) { return __ONAIROS_REQ_REGISTRY__[i]; }
7
- Object[_0x48f4(0x0)](exports,'__esModule',{'value':!![]}),exports[_0x48f4(0x1)]=exports[_0x48f4(0x2)]=exports[_0x48f4(0x3)]=exports[_0x48f4(0x4)]=exports[_0x48f4(0x5)]=exports[_0x48f4(0x6)]=exports[_0x48f4(0x7)]=exports[_0x48f4(0x8)]=exports['getTokenTypeForRoute']=exports[_0x48f4(0x9)]=exports[_0x48f4(0xa)]=exports[_0x48f4(0xb)]=exports[_0x48f4(0xc)]=exports[_0x48f4(0xd)]=exports[_0x48f4(0xe)]=void 0x0;var _asyncStorage=_interopRequireDefault(__ONAIROS_REQ_FUNC__(0x0));function _interopRequireDefault(_0x4180e8){return _0x4180e8&&_0x4180e8[_0x48f4(0xf)]?_0x4180e8:{'default':_0x4180e8};}const SDK_TOKEN_KEY=_0x48f4(0x10),isValidJWTFormat=_0x23149a=>{const _0x595463={'XdMet':function(_0xa89666,_0xee907c){return _0xa89666<_0xee907c;},'swKRF':function(_0x513435,_0x186dda){return _0x513435!==_0x186dda;},'TJEXl':function(_0x157d80,_0x4d598d){return _0x157d80<_0x4d598d;}};if(!_0x23149a||_0x595463['XdMet'](_0x23149a[_0x48f4(0x11)],0x14))return![];if(_0x23149a[_0x48f4(0x12)]('@')&&_0x23149a['includes']('.')&&!_0x23149a[_0x48f4(0x12)]('Bearer')&&_0x595463[_0x48f4(0x13)](_0x23149a[_0x48f4(0x11)],0x64))return![];const _0x4d7e1c=_0x23149a[_0x48f4(0x14)]('.');if(_0x595463[_0x48f4(0x15)](_0x4d7e1c[_0x48f4(0x11)],0x3))return![];if(_0x595463['TJEXl'](_0x23149a[_0x48f4(0x11)],0x32))return![];return!![];},storeJWT=async _0x32e84e=>{const _0x1b4ab4={'klSQs':'📭\x20[JWT\x20Storage]\x20No\x20token\x20found\x20for\x20userId\x20extraction','DWkDa':_0x48f4(0x16),'zkejy':'enoch_token','JQasq':_0x48f4(0x17),'dQqKM':_0x48f4(0x18),'tiVEf':_0x48f4(0x19),'uiIDu':function(_0x5b649c,_0x2053c4){return _0x5b649c===_0x2053c4;},'qpVPF':_0x48f4(0x1a),'CwEeN':'mcitB','KDkdM':_0x48f4(0x1b),'lVGTY':function(_0x2ac481,_0xab6324){return _0x2ac481(_0xab6324);},'uolkL':_0x48f4(0x1c),'rCZBZ':'✅\x20[JWT\x20Storage]\x20Token\x20stored\x20successfully','loOhy':_0x48f4(0x1d),'RCaaZ':'oDnMu'};try{if(!_0x32e84e||_0x1b4ab4[_0x48f4(0x1e)](_0x32e84e['trim'](),''))return _0x1b4ab4[_0x48f4(0x1e)](_0x1b4ab4[_0x48f4(0x1f)],_0x1b4ab4['CwEeN'])?(_0x293d35[_0x48f4(0x20)](_0x1b4ab4['klSQs']),null):(console[_0x48f4(0x21)](_0x1b4ab4['KDkdM']),![]);if(!_0x1b4ab4['lVGTY'](isValidJWTFormat,_0x32e84e))return _0x1b4ab4[_0x48f4(0x22)]!==_0x48f4(0x23)?(console[_0x48f4(0x21)](_0x48f4(0x16)),![]):(_0x36c350[_0x48f4(0x21)](_0x1b4ab4[_0x48f4(0x24)]),![]);return await _asyncStorage[_0x48f4(0x25)][_0x48f4(0x26)](SDK_TOKEN_KEY,_0x32e84e),console[_0x48f4(0x20)](_0x1b4ab4[_0x48f4(0x27)]),!![];}catch(_0x48f260){return _0x1b4ab4[_0x48f4(0x1e)](_0x1b4ab4[_0x48f4(0x28)],_0x1b4ab4[_0x48f4(0x29)])?(_0x3e0f6b[_0x48f4(0x2a)]=_0x1b4ab4['zkejy'],_0x40800b[_0x48f4(0x2b)]=_0x1b4ab4[_0x48f4(0x2c)],_0x1812d9[_0x1b4ab4[_0x48f4(0x2d)]]=_0x1b4ab4['tiVEf'],_0xab63d2):(console[_0x48f4(0x2e)](_0x48f4(0x2f),_0x48f260),![]);}};exports[_0x48f4(0x2)]=storeJWT;const getJWT=async()=>{const _0x6c136={'PkZDA':_0x48f4(0x30),'GSQii':function(_0xc04917,_0x43559c){return _0xc04917===_0x43559c;},'RboFk':_0x48f4(0x31),'CCioQ':_0x48f4(0x32),'KCdFo':_0x48f4(0x33),'EiVaf':_0x48f4(0x34),'AHmGx':_0x48f4(0x35)};try{const _0x3e79e6=await _asyncStorage['default']['getItem'](SDK_TOKEN_KEY);if(!_0x3e79e6)return _0x6c136[_0x48f4(0x36)](_0x48f4(0x37),_0x48f4(0x38))?_0xd8c413&&_0x58b4eb['__esModule']?_0x48cea7:{'default':_0x44a08d}:(console[_0x48f4(0x20)](_0x48f4(0x39)),null);if(!isValidJWTFormat(_0x3e79e6))return console[_0x48f4(0x21)](_0x6c136[_0x48f4(0x3a)]),await clearJWT(),null;return console[_0x48f4(0x20)](_0x6c136[_0x48f4(0x3b)]),_0x3e79e6;}catch(_0x334527){return _0x6c136[_0x48f4(0x36)](_0x6c136[_0x48f4(0x3c)],_0x6c136[_0x48f4(0x3d)])?(_0x3bb675[_0x48f4(0x21)](_0x6c136['PkZDA']),_0x309490()):(console[_0x48f4(0x2e)](_0x6c136['AHmGx'],_0x334527),null);}};exports[_0x48f4(0xa)]=getJWT;const clearJWT=async()=>{const _0x12184d={'aPdcc':_0x48f4(0x3e),'WgxCU':_0x48f4(0x3f)};try{return await _asyncStorage[_0x48f4(0x25)][_0x48f4(0x40)](SDK_TOKEN_KEY),console[_0x48f4(0x20)](_0x12184d[_0x48f4(0x41)]),!![];}catch(_0x30cb0b){return console[_0x48f4(0x2e)](_0x12184d[_0x48f4(0x42)],_0x30cb0b),![];}};exports['clearJWT']=clearJWT;const hasValidJWT=async()=>{const _0x3dd57a={'tLVlR':function(_0x479901){return _0x479901();},'LzlPy':function(_0x27e361,_0x4c1291){return _0x27e361!==_0x4c1291;}},_0x3d23ed=await _0x3dd57a[_0x48f4(0x43)](getJWT);return _0x3dd57a[_0x48f4(0x44)](_0x3d23ed,null);};exports[_0x48f4(0x7)]=hasValidJWT;const base64Decode=_0x2874a7=>{const _0x319c4c={'EZDZM':_0x48f4(0x45),'YhpAK':function(_0x2d690f,_0x57068e){return _0x2d690f<_0x57068e;},'ksyfj':function(_0x78931d,_0x8f709a){return _0x78931d===_0x8f709a;},'AIcuY':_0x48f4(0x46),'rzTsc':'sFlVE','QFHia':function(_0x1dd551,_0x8253a9){return _0x1dd551|_0x8253a9;},'Qwjxg':function(_0x419c6a,_0x6e0f11){return _0x419c6a<<_0x6e0f11;},'CEmZK':function(_0x26c1bc,_0x1bca2d){return _0x26c1bc&_0x1bca2d;},'CdiXf':function(_0x11b42c,_0x27528c){return _0x11b42c>>_0x27528c;},'ktVaX':function(_0x507ae9,_0x9099a2){return _0x507ae9&_0x9099a2;},'bLJaa':function(_0x14a815,_0x383669){return _0x14a815!==_0x383669;},'OqzBd':function(_0x4b8db7,_0x1b8566){return _0x4b8db7(_0x1b8566);},'iBahY':function(_0x59f3f7,_0xfe96ab){return _0x59f3f7(_0xfe96ab);}},_0x2d15f3=_0x319c4c[_0x48f4(0x47)];let _0x419519='';_0x2874a7=_0x2874a7[_0x48f4(0x48)](/=+$/,'');for(let _0x4c9668=0x0;_0x319c4c[_0x48f4(0x49)](_0x4c9668,_0x2874a7[_0x48f4(0x11)]);_0x4c9668+=0x4){if(_0x319c4c['ksyfj'](_0x319c4c['AIcuY'],_0x319c4c[_0x48f4(0x4a)]))_0x6fcef8['log'](_0x48f4(0x4b));else{const _0x5a170d=_0x2d15f3['indexOf'](_0x2874a7[_0x48f4(0x4c)](_0x4c9668)),_0x4631e5=_0x2d15f3[_0x48f4(0x4d)](_0x2874a7[_0x48f4(0x4c)](_0x4c9668+0x1)),_0x4640a8=_0x2d15f3[_0x48f4(0x4d)](_0x2874a7[_0x48f4(0x4c)](_0x4c9668+0x2)),_0x59181a=_0x2d15f3[_0x48f4(0x4d)](_0x2874a7['charAt'](_0x4c9668+0x3)),_0x52c4ec=_0x319c4c[_0x48f4(0x4e)](_0x319c4c[_0x48f4(0x4f)](_0x5a170d,0x2),_0x4631e5>>0x4),_0x25689a=_0x319c4c[_0x48f4(0x4e)](_0x319c4c[_0x48f4(0x4f)](_0x319c4c['CEmZK'](_0x4631e5,0xf),0x4),_0x319c4c[_0x48f4(0x50)](_0x4640a8,0x2)),_0x280673=_0x319c4c[_0x48f4(0x4e)](_0x319c4c['ktVaX'](_0x4640a8,0x3)<<0x6,_0x59181a);_0x419519+=String[_0x48f4(0x51)](_0x52c4ec);if(_0x319c4c['bLJaa'](_0x4640a8,0x40))_0x419519+=String[_0x48f4(0x51)](_0x25689a);if(_0x319c4c[_0x48f4(0x52)](_0x59181a,0x40))_0x419519+=String[_0x48f4(0x51)](_0x280673);}}return _0x319c4c[_0x48f4(0x53)](decodeURIComponent,_0x319c4c[_0x48f4(0x54)](escape,_0x419519));},getUserIdFromToken=async()=>{const _0x1963e2={'jUChR':function(_0x36e1f0){return _0x36e1f0();},'hEKbu':function(_0x2b1429,_0x284377){return _0x2b1429!==_0x284377;},'xZaTK':_0x48f4(0x55),'RzCBp':function(_0x32ce52,_0x20b950){return _0x32ce52(_0x20b950);},'wKZbo':_0x48f4(0x56),'EFzCI':_0x48f4(0x57),'ZIotG':_0x48f4(0x58)};try{const _0x2434a6=await _0x1963e2[_0x48f4(0x59)](getJWT);if(!_0x2434a6)return console[_0x48f4(0x20)](_0x48f4(0x5a)),null;const _0x56c513=_0x2434a6[_0x48f4(0x14)]('.');if(_0x1963e2[_0x48f4(0x5b)](_0x56c513['length'],0x3))return console[_0x48f4(0x21)](_0x1963e2[_0x48f4(0x5c)]),null;const _0xf95f0f=JSON['parse'](_0x1963e2[_0x48f4(0x5d)](base64Decode,_0x56c513[0x1]));if(_0xf95f0f['userId'])return console[_0x48f4(0x20)](_0x1963e2['wKZbo'],_0xf95f0f['userId']),_0xf95f0f[_0x48f4(0x5e)];return console['warn'](_0x1963e2['EFzCI']),null;}catch(_0x4c5898){return console[_0x48f4(0x2e)](_0x1963e2[_0x48f4(0x5f)],_0x4c5898),null;}};exports[_0x48f4(0x8)]=getUserIdFromToken;const replaceJWT=async _0x11385e=>{const _0x2417a6={'KhTYO':_0x48f4(0x56),'pOZjB':function(_0xcfb9af,_0x5af74b){return _0xcfb9af(_0x5af74b);},'dhZJf':function(_0x10afd4,_0x269fb6){return _0x10afd4!==_0x269fb6;},'PzLUB':_0x48f4(0x60),'WSqWR':_0x48f4(0x61),'yrzls':_0x48f4(0x62)};try{if(!_0x11385e||!_0x2417a6[_0x48f4(0x63)](isValidJWTFormat,_0x11385e))return _0x2417a6[_0x48f4(0x64)](_0x2417a6['PzLUB'],_0x2417a6[_0x48f4(0x65)])?(_0x35d65e['log'](_0x2417a6[_0x48f4(0x66)],_0x47d42d[_0x48f4(0x5e)]),_0x150a01[_0x48f4(0x5e)]):(console['error'](_0x2417a6[_0x48f4(0x67)]),![]);await clearJWT();const _0x16aa17=await storeJWT(_0x11385e);return _0x16aa17&&console[_0x48f4(0x20)](_0x48f4(0x4b)),_0x16aa17;}catch(_0x11fd09){return console['error'](_0x2417a6[_0x48f4(0x68)],_0x11fd09),![];}};exports[_0x48f4(0x6)]=replaceJWT;let TokenType=exports[_0x48f4(0xe)]=function(_0x14e080){const _0x208b61={'Wjqiq':_0x48f4(0x2a),'xCodB':'enoch_token','jsClJ':_0x48f4(0x2b),'XlTQN':_0x48f4(0x17),'VaXVm':'AUTH'};return _0x14e080[_0x208b61[_0x48f4(0x69)]]=_0x208b61['xCodB'],_0x14e080[_0x208b61[_0x48f4(0x6a)]]=_0x208b61['XlTQN'],_0x14e080[_0x208b61['VaXVm']]=_0x48f4(0x19),_0x14e080;}({});const getTokenTypeForRoute=_0x390675=>{const _0x4015bd={'EjJOt':_0x48f4(0x6b)};return console[_0x48f4(0x21)](_0x4015bd[_0x48f4(0x6c)]),TokenType[_0x48f4(0x18)];};function _0x48f4(_0x443fa9,_0x48f417){_0x443fa9=_0x443fa9-0x0;const _0x257905=_0x443f();let _0x518107=_0x257905[_0x443fa9];return _0x518107;}exports[_0x48f4(0x6d)]=getTokenTypeForRoute;const getJWTForRoute=async _0x158b52=>{const _0x59ca83={'tdYkN':function(_0x4d01f8){return _0x4d01f8();}};return console[_0x48f4(0x21)](_0x48f4(0x30)),_0x59ca83[_0x48f4(0x6e)](getJWT);};exports[_0x48f4(0x9)]=getJWTForRoute;function _0x443f(){const _0x2831c1=['defineProperty','storeOnairosJWT','storeJWT','storeEnochJWT','storeAuthToken','replaceJWTAfterVerification','replaceJWT','hasValidJWT','getUserIdFromToken','getJWTForRoute','getJWT','getAllTokens','clearJWT','clearAllJWT','TokenType','__esModule','sdk_jwt_token','length','includes','XdMet','split','swKRF','⚠️\x20[JWT\x20Storage]\x20Invalid\x20JWT\x20format\x20-\x20token\x20should\x20have\x203\x20parts','onairos_jwt_token','AUTH','auth_token','tbSgz','⚠️\x20[JWT\x20Storage]\x20Attempted\x20to\x20store\x20empty/null\x20token','VtKIp','WWkbl','uiIDu','qpVPF','log','warn','uolkL','LedUk','DWkDa','default','setItem','rCZBZ','loOhy','RCaaZ','ENOCH','ONAIROS','JQasq','dQqKM','error','❌\x20[JWT\x20Storage]\x20Failed\x20to\x20store\x20token:','⚠️\x20[JWT\x20Storage]\x20getJWTForRoute\x20is\x20deprecated\x20-\x20use\x20getJWT()\x20instead','⚠️\x20[JWT\x20Storage]\x20Invalid\x20JWT\x20format\x20found,\x20removing','🔐\x20[JWT\x20Storage]\x20Token\x20retrieved\x20successfully','rFQLm','HjSSo','❌\x20[JWT\x20Storage]\x20Failed\x20to\x20retrieve\x20token:','GSQii','NWoZD','KIXsV','📭\x20[JWT\x20Storage]\x20No\x20token\x20found\x20in\x20storage','RboFk','CCioQ','KCdFo','EiVaf','✅\x20[JWT\x20Storage]\x20Token\x20cleared\x20successfully','❌\x20[JWT\x20Storage]\x20Failed\x20to\x20clear\x20token:','removeItem','aPdcc','WgxCU','tLVlR','LzlPy','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=','raCGs','EZDZM','replace','YhpAK','rzTsc','✅\x20[JWT\x20Storage]\x20Token\x20successfully\x20replaced','charAt','indexOf','QFHia','Qwjxg','CdiXf','fromCharCode','bLJaa','OqzBd','iBahY','⚠️\x20[JWT\x20Storage]\x20Invalid\x20JWT\x20format\x20for\x20userId\x20extraction','✅\x20[JWT\x20Storage]\x20Extracted\x20userId\x20from\x20JWT:','⚠️\x20[JWT\x20Storage]\x20No\x20userId\x20field\x20found\x20in\x20JWT\x20payload','❌\x20[JWT\x20Storage]\x20Failed\x20to\x20extract\x20userId\x20from\x20token:','jUChR','📭\x20[JWT\x20Storage]\x20No\x20token\x20found\x20for\x20userId\x20extraction','hEKbu','xZaTK','RzCBp','userId','ZIotG','UsnxH','❌\x20[JWT\x20Storage]\x20Invalid\x20token\x20provided\x20for\x20replacement','❌\x20[JWT\x20Storage]\x20Failed\x20to\x20replace\x20token:','pOZjB','dhZJf','PzLUB','KhTYO','WSqWR','yrzls','Wjqiq','jsClJ','⚠️\x20[JWT\x20Storage]\x20getTokenTypeForRoute\x20is\x20deprecated\x20-\x20SDK\x20uses\x20single\x20token','EjJOt','getTokenTypeForRoute','tdYkN','⚠️\x20[JWT\x20Storage]\x20clearAllJWT\x20is\x20deprecated\x20-\x20use\x20clearJWT()\x20instead','QWLOD','⚠️\x20[JWT\x20Storage]\x20storeEnochJWT\x20is\x20deprecated\x20-\x20use\x20storeJWT()\x20instead','⚠️\x20[JWT\x20Storage]\x20storeOnairosJWT\x20is\x20deprecated\x20-\x20use\x20storeJWT()\x20instead','⚠️\x20[JWT\x20Storage]\x20storeAuthToken\x20is\x20deprecated\x20-\x20use\x20storeJWT()\x20instead','HXhJf','niiJY','⚠️\x20[JWT\x20Storage]\x20replaceJWTAfterVerification\x20is\x20deprecated\x20-\x20use\x20replaceJWT()\x20instead','QVaWo'];_0x443f=function(){return _0x2831c1;};return _0x443f();}const clearAllJWT=async()=>{const _0x4398a6={'QWLOD':_0x48f4(0x6f)};return console[_0x48f4(0x21)](_0x4398a6[_0x48f4(0x70)]),clearJWT();};exports[_0x48f4(0xd)]=clearAllJWT;const storeEnochJWT=async _0xdec27d=>{const _0x8f6348={'EcKNu':function(_0xae0336,_0x3c84e5){return _0xae0336(_0x3c84e5);}};return console['warn'](_0x48f4(0x71)),_0x8f6348['EcKNu'](storeJWT,_0xdec27d);};exports[_0x48f4(0x3)]=storeEnochJWT;const storeOnairosJWT=async _0x2df13b=>{const _0x2b0bd2={'bvuAy':function(_0x19ebf3,_0xf4acde){return _0x19ebf3(_0xf4acde);}};return console[_0x48f4(0x21)](_0x48f4(0x72)),_0x2b0bd2['bvuAy'](storeJWT,_0x2df13b);};exports[_0x48f4(0x1)]=storeOnairosJWT;const storeAuthToken=async _0x2bc02e=>{const _0x43152d={'HXhJf':_0x48f4(0x73),'niiJY':function(_0x349f45,_0x26362c){return _0x349f45(_0x26362c);}};return console[_0x48f4(0x21)](_0x43152d[_0x48f4(0x74)]),_0x43152d[_0x48f4(0x75)](storeJWT,_0x2bc02e);};exports['storeAuthToken']=storeAuthToken;const replaceJWTAfterVerification=async(_0x34c22f,_0x8dadb4)=>{const _0x54c14c={'QVaWo':function(_0x2b060e,_0x5730cf){return _0x2b060e(_0x5730cf);}};return console['warn'](_0x48f4(0x76)),_0x54c14c[_0x48f4(0x77)](replaceJWT,_0x8dadb4);};exports['replaceJWTAfterVerification']=replaceJWTAfterVerification;const getAllTokens=async()=>{const _0x200f42=await getJWT();return{'sdk_token':_0x200f42,[TokenType[_0x48f4(0x2a)]]:null,[TokenType['ONAIROS']]:null,[TokenType[_0x48f4(0x18)]]:null};};exports[_0x48f4(0xb)]=getAllTokens;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.storeOnairosJWT = exports.storeJWT = exports.storeEnochJWT = exports.storeAuthToken = exports.replaceJWTAfterVerification = exports.replaceJWT = exports.hasValidJWT = exports.getUserIdFromToken = exports.getTokenTypeForRoute = exports.getJWTForRoute = exports.getJWT = exports.getAllTokens = exports.clearJWT = exports.clearAllJWT = exports.TokenType = void 0;
7
+ var _asyncStorage = _interopRequireDefault(require("@react-native-async-storage/async-storage"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ /**
10
+ * JWT Token Storage Service - SIMPLIFIED
11
+ * SDK uses a single JWT token for all authentication
12
+ *
13
+ * NOTE: This is the generic SDK JWT storage.
14
+ * Consuming apps that need multiple token types (like Enoch/Onairos separation)
15
+ * should implement their own token management.
16
+ */
17
+
18
+ const SDK_TOKEN_KEY = 'sdk_jwt_token';
19
+
20
+ /**
21
+ * Validate JWT format
22
+ * @param token - Token to validate
23
+ * @returns boolean - True if valid JWT format
24
+ */
25
+ const isValidJWTFormat = token => {
26
+ if (!token || token.length < 20) return false;
27
+
28
+ // Check if it's an email address (invalid JWT)
29
+ if (token.includes('@') && token.includes('.') && !token.includes('Bearer') && token.length < 100) {
30
+ return false;
31
+ }
32
+
33
+ // Check if it has JWT structure (3 parts separated by dots)
34
+ const tokenParts = token.split('.');
35
+ if (tokenParts.length !== 3) return false;
36
+
37
+ // Additional validation - JWT should be longer than 50 characters typically
38
+ if (token.length < 50) return false;
39
+ return true;
40
+ };
41
+
42
+ /**
43
+ * Store JWT token
44
+ * @param token - JWT token to store
45
+ * @returns Promise<boolean> - Success status
46
+ */
47
+ const storeJWT = async token => {
48
+ try {
49
+ if (!token || token.trim() === '') {
50
+ console.warn('⚠️ [JWT Storage] Attempted to store empty/null token');
51
+ return false;
52
+ }
53
+
54
+ // Validate JWT format
55
+ if (!isValidJWTFormat(token)) {
56
+ console.warn('⚠️ [JWT Storage] Invalid JWT format - token should have 3 parts');
57
+ return false;
58
+ }
59
+ await _asyncStorage.default.setItem(SDK_TOKEN_KEY, token);
60
+ console.log('✅ [JWT Storage] Token stored successfully');
61
+ return true;
62
+ } catch (error) {
63
+ console.error('❌ [JWT Storage] Failed to store token:', error);
64
+ return false;
65
+ }
66
+ };
67
+
68
+ /**
69
+ * Retrieve JWT token
70
+ * @returns Promise<string | null> - JWT token or null if not found
71
+ */
72
+ exports.storeJWT = storeJWT;
73
+ const getJWT = async () => {
74
+ try {
75
+ const token = await _asyncStorage.default.getItem(SDK_TOKEN_KEY);
76
+ if (!token) {
77
+ console.log('📭 [JWT Storage] No token found in storage');
78
+ return null;
79
+ }
80
+
81
+ // Validate JWT format
82
+ if (!isValidJWTFormat(token)) {
83
+ console.warn('⚠️ [JWT Storage] Invalid JWT format found, removing');
84
+ await clearJWT();
85
+ return null;
86
+ }
87
+ console.log('🔐 [JWT Storage] Token retrieved successfully');
88
+ return token;
89
+ } catch (error) {
90
+ console.error('❌ [JWT Storage] Failed to retrieve token:', error);
91
+ return null;
92
+ }
93
+ };
94
+
95
+ /**
96
+ * Clear JWT token
97
+ * @returns Promise<boolean> - Success status
98
+ */
99
+ exports.getJWT = getJWT;
100
+ const clearJWT = async () => {
101
+ try {
102
+ await _asyncStorage.default.removeItem(SDK_TOKEN_KEY);
103
+ console.log('✅ [JWT Storage] Token cleared successfully');
104
+ return true;
105
+ } catch (error) {
106
+ console.error('❌ [JWT Storage] Failed to clear token:', error);
107
+ return false;
108
+ }
109
+ };
110
+
111
+ /**
112
+ * Check if valid JWT token exists
113
+ * @returns Promise<boolean> - True if valid token exists
114
+ */
115
+ exports.clearJWT = clearJWT;
116
+ const hasValidJWT = async () => {
117
+ const token = await getJWT();
118
+ return token !== null;
119
+ };
120
+
121
+ /**
122
+ * Base64 decode helper for React Native (atob not available)
123
+ */
124
+ exports.hasValidJWT = hasValidJWT;
125
+ const base64Decode = str => {
126
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
127
+ let output = '';
128
+ str = str.replace(/=+$/, '');
129
+ for (let i = 0; i < str.length; i += 4) {
130
+ const enc1 = chars.indexOf(str.charAt(i));
131
+ const enc2 = chars.indexOf(str.charAt(i + 1));
132
+ const enc3 = chars.indexOf(str.charAt(i + 2));
133
+ const enc4 = chars.indexOf(str.charAt(i + 3));
134
+ const chr1 = enc1 << 2 | enc2 >> 4;
135
+ const chr2 = (enc2 & 15) << 4 | enc3 >> 2;
136
+ const chr3 = (enc3 & 3) << 6 | enc4;
137
+ output += String.fromCharCode(chr1);
138
+ if (enc3 !== 64) output += String.fromCharCode(chr2);
139
+ if (enc4 !== 64) output += String.fromCharCode(chr3);
140
+ }
141
+ return decodeURIComponent(escape(output));
142
+ };
143
+
144
+ /**
145
+ * Decode JWT payload and extract userId (UUID)
146
+ * Used specifically for LinkedIn scraping which needs the main DB userId
147
+ * @returns Promise<string | null> - User ID (UUID) or null if not found
148
+ */
149
+ const getUserIdFromToken = async () => {
150
+ try {
151
+ const token = await getJWT();
152
+ if (!token) {
153
+ console.log('📭 [JWT Storage] No token found for userId extraction');
154
+ return null;
155
+ }
156
+ const parts = token.split('.');
157
+ if (parts.length !== 3) {
158
+ console.warn('⚠️ [JWT Storage] Invalid JWT format for userId extraction');
159
+ return null;
160
+ }
161
+
162
+ // Decode the payload (middle part) - use custom base64 decode for React Native
163
+ const payload = JSON.parse(base64Decode(parts[1]));
164
+
165
+ // Look for userId field (this is the UUID from the backend)
166
+ if (payload.userId) {
167
+ console.log('✅ [JWT Storage] Extracted userId from JWT:', payload.userId);
168
+ return payload.userId;
169
+ }
170
+ console.warn('⚠️ [JWT Storage] No userId field found in JWT payload');
171
+ return null;
172
+ } catch (error) {
173
+ console.error('❌ [JWT Storage] Failed to extract userId from token:', error);
174
+ return null;
175
+ }
176
+ };
177
+
178
+ /**
179
+ * Replace JWT token (for token refresh scenarios)
180
+ * @param newToken - New JWT token
181
+ * @returns Promise<boolean> - Success status
182
+ */
183
+ exports.getUserIdFromToken = getUserIdFromToken;
184
+ const replaceJWT = async newToken => {
185
+ try {
186
+ if (!newToken || !isValidJWTFormat(newToken)) {
187
+ console.error('❌ [JWT Storage] Invalid token provided for replacement');
188
+ return false;
189
+ }
190
+ await clearJWT();
191
+ const stored = await storeJWT(newToken);
192
+ if (stored) {
193
+ console.log('✅ [JWT Storage] Token successfully replaced');
194
+ }
195
+ return stored;
196
+ } catch (error) {
197
+ console.error('❌ [JWT Storage] Failed to replace token:', error);
198
+ return false;
199
+ }
200
+ };
201
+
202
+ // ============================================
203
+ // DEPRECATED: Legacy token type support
204
+ // These are kept for backward compatibility but should not be used
205
+ // ============================================
206
+
207
+ /** @deprecated Use storeJWT instead */
208
+ exports.replaceJWT = replaceJWT;
209
+ let TokenType = exports.TokenType = /*#__PURE__*/function (TokenType) {
210
+ TokenType["ENOCH"] = "enoch_token";
211
+ TokenType["ONAIROS"] = "onairos_jwt_token";
212
+ TokenType["AUTH"] = "auth_token";
213
+ return TokenType;
214
+ }({});
215
+ /** @deprecated Route-based token selection removed - SDK uses single token */
216
+ const getTokenTypeForRoute = _route => {
217
+ console.warn('⚠️ [JWT Storage] getTokenTypeForRoute is deprecated - SDK uses single token');
218
+ return TokenType.AUTH;
219
+ };
220
+
221
+ /** @deprecated Use getJWT() instead */
222
+ exports.getTokenTypeForRoute = getTokenTypeForRoute;
223
+ const getJWTForRoute = async _route => {
224
+ console.warn('⚠️ [JWT Storage] getJWTForRoute is deprecated - use getJWT() instead');
225
+ return getJWT();
226
+ };
227
+
228
+ /** @deprecated Use clearJWT() instead */
229
+ exports.getJWTForRoute = getJWTForRoute;
230
+ const clearAllJWT = async () => {
231
+ console.warn('⚠️ [JWT Storage] clearAllJWT is deprecated - use clearJWT() instead');
232
+ return clearJWT();
233
+ };
234
+
235
+ /** @deprecated Use storeJWT() instead */
236
+ exports.clearAllJWT = clearAllJWT;
237
+ const storeEnochJWT = async token => {
238
+ console.warn('⚠️ [JWT Storage] storeEnochJWT is deprecated - use storeJWT() instead');
239
+ return storeJWT(token);
240
+ };
241
+
242
+ /** @deprecated Use storeJWT() instead */
243
+ exports.storeEnochJWT = storeEnochJWT;
244
+ const storeOnairosJWT = async token => {
245
+ console.warn('⚠️ [JWT Storage] storeOnairosJWT is deprecated - use storeJWT() instead');
246
+ return storeJWT(token);
247
+ };
248
+
249
+ /** @deprecated Use storeJWT() instead */
250
+ exports.storeOnairosJWT = storeOnairosJWT;
251
+ const storeAuthToken = async token => {
252
+ console.warn('⚠️ [JWT Storage] storeAuthToken is deprecated - use storeJWT() instead');
253
+ return storeJWT(token);
254
+ };
255
+
256
+ /** @deprecated Use replaceJWT() instead */
257
+ exports.storeAuthToken = storeAuthToken;
258
+ const replaceJWTAfterVerification = async (_tokenType, newToken) => {
259
+ console.warn('⚠️ [JWT Storage] replaceJWTAfterVerification is deprecated - use replaceJWT() instead');
260
+ return replaceJWT(newToken);
261
+ };
262
+
263
+ /** @deprecated For debugging only */
264
+ exports.replaceJWTAfterVerification = replaceJWTAfterVerification;
265
+ const getAllTokens = async () => {
266
+ const token = await getJWT();
267
+ return {
268
+ sdk_token: token,
269
+ // Legacy keys for debugging
270
+ [TokenType.ENOCH]: null,
271
+ [TokenType.ONAIROS]: null,
272
+ [TokenType.AUTH]: null
273
+ };
274
+ };
275
+ exports.getAllTokens = getAllTokens;
276
+ //# sourceMappingURL=jwtStorageService.js.map
@@ -1,7 +1,245 @@
1
- 'use strict';
2
- // Onairos SDK - Asset Registry (auto-generated)
3
- var __ONAIROS_REQ_REGISTRY__ = [
4
- require("./linkedinScrapingService")
5
- ];
6
- function __ONAIROS_REQ_FUNC__(i) { return __ONAIROS_REQ_REGISTRY__[i]; }
7
- Object[_0x1c15(0x0)](exports,_0x1c15(0x1),{'value':!![]}),exports[_0x1c15(0x2)]=exports[_0x1c15(0x3)]=exports[_0x1c15(0x4)]=exports[_0x1c15(0x5)]=exports[_0x1c15(0x6)]=void 0x0;var _linkedinScrapingService=__ONAIROS_REQ_FUNC__(0x0);const parseExtractionMessage=_0x4bb85d=>{const _0x50e144={'Aozes':function(_0x471b82,_0x39b290){return _0x471b82(_0x39b290);},'eyKTy':_0x1c15(0x7),'GctrO':_0x1c15(0x8),'gDEAN':_0x1c15(0x9),'WbHbd':_0x1c15(0xa),'lbsim':function(_0x56ba0b,_0x1067a0){return _0x56ba0b===_0x1067a0;},'Hfouh':_0x1c15(0xb),'TBPkd':function(_0x5405ac,_0x301d89){return _0x5405ac!==_0x301d89;},'iaNcP':_0x1c15(0xc),'wGMRl':_0x1c15(0xd),'NISdz':_0x1c15(0xe),'OKdVV':function(_0x35efd1,_0x2124fc){return _0x35efd1!==_0x2124fc;},'xRsnp':_0x1c15(0xf),'bqFnE':_0x1c15(0x10),'dnNlo':'✅\x20[LINKEDIN\x20EXTRACTOR]\x20Profile\x20URL\x20extracted:','LHfJq':_0x1c15(0x11),'NrZPM':'IQNyA','MbwOu':_0x1c15(0x12),'UjgJp':_0x1c15(0x13),'ErvrC':_0x1c15(0x14),'otCGr':function(_0x1b192f,_0x3c1fc8){return _0x1b192f+_0x3c1fc8;},'oeuNT':_0x1c15(0x15),'FFoMS':_0x1c15(0x16),'oLBTx':'Failed\x20to\x20parse\x20extraction\x20result'};try{if(_0x50e144['lbsim'](_0x50e144[_0x1c15(0x17)],_0x50e144[_0x1c15(0x17)])){console['log'](_0x1c15(0x18),_0x4bb85d);const _0x588432=JSON[_0x1c15(0x19)](_0x4bb85d);if(!_0x588432||_0x50e144[_0x1c15(0x1a)](typeof _0x588432,_0x50e144[_0x1c15(0x1b)]))return{'success':![],'error':_0x50e144[_0x1c15(0x1c)]};const _0x43cd8d=_0x588432['status'];if(_0x50e144['lbsim'](_0x43cd8d,_0x50e144['NISdz'])){const _0x19df99=_0x588432[_0x1c15(0x1d)];if(!_0x19df99||_0x50e144[_0x1c15(0x1e)](typeof _0x19df99,_0x1c15(0x1f))){if(_0x1c15(0x20)===_0x50e144['xRsnp'])_0x50e144['Aozes'](_0x532c9e,_0x1c15(0x21));else return{'success':![],'error':_0x50e144['bqFnE']};}return console[_0x1c15(0x22)](_0x50e144[_0x1c15(0x23)],_0x19df99),{'success':!![],'profileUrl':_0x19df99,'message':_0x50e144[_0x1c15(0x24)]};}else{if(_0x43cd8d===_0x1c15(0x25)){if(_0x50e144[_0x1c15(0x1e)](_0x50e144['NrZPM'],_0x50e144[_0x1c15(0x26)])){const _0x37d3a3=_0x588432[_0x1c15(0x27)]||_0x50e144[_0x1c15(0x28)];return console[_0x1c15(0x29)](_0x50e144['ErvrC'],_0x37d3a3),{'success':![],'error':_0x37d3a3};}else _0x50e144[_0x1c15(0x2a)](_0x2a37a2,_0x50e144[_0x1c15(0x2b)]);}else return{'success':![],'error':_0x50e144[_0x1c15(0x2c)](_0x50e144['oeuNT'],_0x43cd8d)};}}else try{return _0x39c871[_0x1c15(0x22)](_0x50e144['GctrO'],_0x17e066),{'inProgress':![],'completed':![]};}catch(_0x1940f1){return _0x1c0286['error'](_0x50e144[_0x1c15(0x2d)],_0x1940f1),{'inProgress':![],'completed':![],'error':_0x1940f1 instanceof _0x48e86a?_0x1940f1['message']:_0x50e144['WbHbd']};}}catch(_0x5588c3){return console[_0x1c15(0x25)](_0x50e144[_0x1c15(0x2e)],_0x5588c3),{'success':![],'error':_0x50e144['oLBTx']};}};exports[_0x1c15(0x3)]=parseExtractionMessage;const initiateProfileScraping=async _0x2c4588=>{const _0x1a8408={'YfHIM':_0x1c15(0x2f),'ICMIk':function(_0x527537,_0x1b9e75){return _0x527537(_0x1b9e75);},'FuwrP':_0x1c15(0x30),'UTSHm':_0x1c15(0x1f),'eDzdZ':_0x1c15(0x10),'vNzAZ':'✅\x20[LINKEDIN\x20EXTRACTOR]\x20Profile\x20URL\x20extracted:','FjOqg':_0x1c15(0x11),'dcAnh':function(_0x105b90,_0x4db165){return _0x105b90 instanceof _0x4db165;},'zbFXP':_0x1c15(0x31),'GraHa':_0x1c15(0x32),'Czzne':function(_0xe92341,_0x29d407){return _0xe92341(_0x29d407);},'fxuml':_0x1c15(0x21),'wOpIE':function(_0x15770e,_0x2eefb6){return _0x15770e(_0x2eefb6);},'wesbz':_0x1c15(0x33),'WMtQn':_0x1c15(0x16),'vpOnP':_0x1c15(0x34),'UtPRf':function(_0x206287,_0x152dbc){return _0x206287!==_0x152dbc;},'PSyqK':'VWVMM','wXdAO':_0x1c15(0x35),'KPXSm':function(_0x11a8ad,_0x1d2f0c){return _0x11a8ad!==_0x1d2f0c;},'AsfWg':_0x1c15(0x36),'sSmPO':function(_0x54d0f1,_0x460331){return _0x54d0f1(_0x460331);},'vsXQL':'✅\x20Profile\x20scraping\x20complete!','DZYRV':_0x1c15(0x37),'THVVF':_0x1c15(0x38),'DXzvE':_0x1c15(0x39),'nEJgs':_0x1c15(0x3a),'UhcAB':function(_0x22f781,_0xb740a){return _0x22f781(_0xb740a);},'cUdxd':_0x1c15(0x3b),'zUdNK':function(_0x5b5c68,_0x31e2f7){return _0x5b5c68(_0x31e2f7);},'aJmpa':function(_0x22eaf8,_0x265943){return _0x22eaf8!==_0x265943;},'QsOol':_0x1c15(0x3c),'Bgubd':_0x1c15(0x3d)},{userId:_0x128bc2,profileUrl:_0x3b58e9,onProgress:_0x324613,onSuccess:_0x4af616,onError:_0x5c88e4}=_0x2c4588;try{if(_0x1a8408[_0x1c15(0x3e)](_0x1c15(0x3f),_0x1a8408[_0x1c15(0x40)]))_0xd5e1b3(_0x3fa5a3[_0x1c15(0x41)]);else{console[_0x1c15(0x22)](_0x1a8408['wXdAO']),console[_0x1c15(0x22)]('🚀\x20[LINKEDIN\x20EXTRACTOR]\x20User\x20ID:',_0x128bc2),console['log'](_0x1c15(0x42),_0x3b58e9);if(_0x324613){if(_0x1a8408[_0x1c15(0x43)](_0x1a8408[_0x1c15(0x44)],_0x1a8408['AsfWg'])){const _0x51d9d7=_0x3db8c8[_0x1c15(0x25)]||_0x1a8408[_0x1c15(0x45)];_0x3cd8f5[_0x1c15(0x25)](_0x1c15(0x46),_0x51d9d7),_0x2f456c&&_0x1a8408[_0x1c15(0x47)](_0x294bf4,_0x1a8408['FuwrP']),_0x180c5a&&_0x1a8408[_0x1c15(0x47)](_0x9470b6,_0x51d9d7);}else _0x1a8408['wOpIE'](_0x324613,_0x1a8408['wesbz']);}const _0x1e35ea=await(0x0,_linkedinScrapingService['scrapeLinkedInProfile'])(_0x128bc2,_0x3b58e9);if(_0x1e35ea[_0x1c15(0xe)])console[_0x1c15(0x22)](_0x1c15(0x48)),_0x324613&&_0x1a8408[_0x1c15(0x49)](_0x324613,_0x1a8408[_0x1c15(0x4a)]),_0x4af616&&_0x1a8408[_0x1c15(0x4b)](_0x4af616,_0x1e35ea[_0x1c15(0x41)]);else{if(_0x1a8408[_0x1c15(0x4c)]!==_0x1a8408[_0x1c15(0x4d)]){const _0x16bfb=_0x1e35ea[_0x1c15(0x25)]||_0x1a8408[_0x1c15(0x45)];console[_0x1c15(0x25)](_0x1c15(0x46),_0x16bfb);if(_0x324613){if(_0x1a8408[_0x1c15(0x3e)](_0x1a8408[_0x1c15(0x4e)],_0x1a8408['nEJgs']))_0x1a8408[_0x1c15(0x4f)](_0x324613,_0x1a8408['FuwrP']);else{const _0x22f98f=_0x113e38[_0x1c15(0x1d)];if(!_0x22f98f||typeof _0x22f98f!==_0x1a8408[_0x1c15(0x50)])return{'success':![],'error':_0x1a8408[_0x1c15(0x51)]};return _0x57937e[_0x1c15(0x22)](_0x1a8408[_0x1c15(0x52)],_0x22f98f),{'success':!![],'profileUrl':_0x22f98f,'message':_0x1a8408[_0x1c15(0x53)]};}}if(_0x5c88e4){if(_0x1c15(0x54)!==_0x1a8408[_0x1c15(0x55)])_0x1a8408['zUdNK'](_0x5c88e4,_0x16bfb);else{const _0x6fc29e=_0x1a8408['dcAnh'](_0x3a62e4,_0x2d64b7)?_0x2dcbbc[_0x1c15(0x27)]:_0x1a8408[_0x1c15(0x56)];_0x5e8e6d['error'](_0x1a8408['GraHa'],_0x66144c),_0x44c7ef&&_0x1a8408['Czzne'](_0x3621cb,_0x1a8408[_0x1c15(0x57)]),_0x29815d&&_0x1a8408[_0x1c15(0x58)](_0x2ace17,_0x6fc29e);}}}else _0x1a8408[_0x1c15(0x4b)](_0xa8fde2,_0x1a8408['wesbz']);}}}catch(_0x48ca12){if(_0x1a8408[_0x1c15(0x59)](_0x1a8408[_0x1c15(0x5a)],_0x1a8408[_0x1c15(0x5b)])){const _0x415f24=_0x1a8408[_0x1c15(0x5c)](_0x48ca12,Error)?_0x48ca12['message']:_0x1a8408[_0x1c15(0x56)];console['error'](_0x1c15(0x32),_0x48ca12),_0x324613&&_0x1a8408[_0x1c15(0x49)](_0x324613,_0x1a8408[_0x1c15(0x57)]),_0x5c88e4&&_0x1a8408[_0x1c15(0x4b)](_0x5c88e4,_0x415f24);}else return _0x432813['error'](_0x1a8408[_0x1c15(0x5d)],_0x12328a),{'success':![],'error':_0x1a8408['vpOnP']};}};function _0x38ad(){const _0x53caab=['defineProperty','__esModule','validateExtractedUrl','parseExtractionMessage','initiateProfileScraping','completeLinkedInExtraction','checkScrapingStatus','✅\x20Profile\x20scraping\x20complete!','🔍\x20[LINKEDIN\x20EXTRACTOR]\x20Checking\x20scraping\x20status\x20for:','❌\x20[LINKEDIN\x20EXTRACTOR]\x20Failed\x20to\x20check\x20status:','Unknown\x20error','spzvI','object','Invalid\x20message\x20format','success','JGYnt','No\x20profile\x20URL\x20in\x20success\x20message','Profile\x20URL\x20extracted\x20successfully','Babnz','Unknown\x20extraction\x20error','⚠️\x20[LINKEDIN\x20EXTRACTOR]\x20Extraction\x20error:','Unknown\x20message\x20status:\x20','❌\x20[LINKEDIN\x20EXTRACTOR]\x20Failed\x20to\x20parse\x20message:','Hfouh','📨\x20[LINKEDIN\x20EXTRACTOR]\x20Parsing\x20WebView\x20message:','parse','TBPkd','iaNcP','wGMRl','profileUrl','OKdVV','string','ftUBv','❌\x20Error\x20occurred','log','dnNlo','LHfJq','error','MbwOu','message','UjgJp','warn','Aozes','eyKTy','otCGr','gDEAN','FFoMS','Unknown\x20scraping\x20error','❌\x20Scraping\x20failed','Unknown\x20error\x20occurred','❌\x20[LINKEDIN\x20EXTRACTOR]\x20Exception\x20during\x20scraping:','Sending\x20profile\x20URL\x20to\x20backend...','Failed\x20to\x20parse\x20extraction\x20result','🚀\x20[LINKEDIN\x20EXTRACTOR]\x20Starting\x20profile\x20scraping...','tJyfL','WRaoy','kfnkG','nUdDm','RYChC','MopYg','JVzhU','Xbikr','UtPRf','VWVMM','PSyqK','data','🚀\x20[LINKEDIN\x20EXTRACTOR]\x20Profile\x20URL:','KPXSm','AsfWg','YfHIM','❌\x20[LINKEDIN\x20EXTRACTOR]\x20Profile\x20scraping\x20failed:','ICMIk','✅\x20[LINKEDIN\x20EXTRACTOR]\x20Profile\x20scraping\x20successful','sSmPO','vsXQL','wOpIE','DZYRV','THVVF','DXzvE','UhcAB','UTSHm','eDzdZ','vNzAZ','FjOqg','ODEac','cUdxd','zbFXP','fxuml','Czzne','aJmpa','QsOol','Bgubd','dcAnh','WMtQn','IyNZI','dgynW','qZaQP','GGaPq','URL\x20is\x20empty\x20or\x20invalid','/in/','URL\x20does\x20not\x20contain\x20/in/\x20pattern','Could\x20not\x20extract\x20username\x20from\x20URL','MbMVI','includes','WBYeo','vSJOJ','linkedin.com','YKFFO','Processing\x20extracted\x20data...','Failed\x20to\x20extract\x20profile\x20URL','❌\x20[LINKEDIN\x20EXTRACTOR]\x20Extraction\x20failed:','ZQREu','❌\x20[LINKEDIN\x20EXTRACTOR]\x20Invalid\x20URL:','Invalid\x20profile\x20URL','OgHLJ','oPylD','bPsLu','cFaFX','osYLm','qtpNJ','mOKrG','valid','eVHGB','WHtZq','bIIuk','DpVpP','nUaGv','zaEwh','IAwgC','NNnBf'];_0x38ad=function(){return _0x53caab;};return _0x38ad();}exports[_0x1c15(0x4)]=initiateProfileScraping;const checkScrapingStatus=async _0x2e15c8=>{const _0x176042={'qZaQP':_0x1c15(0x8),'IyNZI':function(_0x264cdf,_0x34039e){return _0x264cdf!==_0x34039e;},'dgynW':'RHRbT','GGaPq':function(_0x81b578,_0x466564){return _0x81b578 instanceof _0x466564;}};try{return _0x176042[_0x1c15(0x5e)](_0x176042['dgynW'],_0x176042[_0x1c15(0x5f)])?(_0x4f42f1[_0x1c15(0x22)](_0x176042['qZaQP'],_0x3bdc56),{'inProgress':![],'completed':![]}):(console[_0x1c15(0x22)](_0x176042[_0x1c15(0x60)],_0x2e15c8),{'inProgress':![],'completed':![]});}catch(_0x1f7cfe){return console[_0x1c15(0x25)]('❌\x20[LINKEDIN\x20EXTRACTOR]\x20Failed\x20to\x20check\x20status:',_0x1f7cfe),{'inProgress':![],'completed':![],'error':_0x176042[_0x1c15(0x61)](_0x1f7cfe,Error)?_0x1f7cfe[_0x1c15(0x27)]:_0x1c15(0xa)};}};function _0x1c15(_0x38ad1d,_0x1c15d1){_0x38ad1d=_0x38ad1d-0x0;const _0x197546=_0x38ad();let _0xfc47f9=_0x197546[_0x38ad1d];return _0xfc47f9;}exports[_0x1c15(0x6)]=checkScrapingStatus;const validateExtractedUrl=_0x50b623=>{const _0x4b94cc={'MbMVI':function(_0x43dcf7,_0x6a685c){return _0x43dcf7!==_0x6a685c;},'uLJsg':_0x1c15(0x1f),'XCtzs':_0x1c15(0x62),'WBYeo':_0x1c15(0x63),'vSJOJ':_0x1c15(0x64),'YKFFO':'URL\x20is\x20not\x20a\x20LinkedIn\x20domain','NjyWt':_0x1c15(0x65)};if(!_0x50b623||_0x4b94cc[_0x1c15(0x66)](typeof _0x50b623,_0x4b94cc['uLJsg']))return{'valid':![],'error':_0x4b94cc['XCtzs']};if(!_0x50b623[_0x1c15(0x67)](_0x4b94cc[_0x1c15(0x68)]))return{'valid':![],'error':_0x4b94cc[_0x1c15(0x69)]};if(!_0x50b623[_0x1c15(0x67)](_0x1c15(0x6a)))return{'valid':![],'error':_0x4b94cc[_0x1c15(0x6b)]};const _0x144a45=_0x50b623['match'](/linkedin\.com\/in\/([^\/\?#]+)/);if(!_0x144a45||!_0x144a45[0x1])return{'valid':![],'error':_0x4b94cc['NjyWt']};return{'valid':!![]};};exports['validateExtractedUrl']=validateExtractedUrl;const completeLinkedInExtraction=async(_0x22ba98,_0x585fbd,_0x1acf0e)=>{const _0x2d95f6={'mOKrG':function(_0x4ae2db,_0x445c9d){return _0x4ae2db(_0x445c9d);},'bPsLu':_0x1c15(0x6c),'cFaFX':function(_0x45468b,_0x5689f3){return _0x45468b(_0x5689f3);},'pdRiW':_0x1c15(0x6d),'osYLm':_0x1c15(0x6e),'qtpNJ':_0x1c15(0x6f),'eVHGB':_0x1c15(0x70),'cXISf':function(_0x485f64,_0x533c51){return _0x485f64(_0x533c51);},'WHtZq':_0x1c15(0x71),'bIIuk':function(_0x458756,_0x18ebc9){return _0x458756!==_0x18ebc9;},'DpVpP':_0x1c15(0x72),'nUaGv':function(_0x3a67bb,_0x2a9cb5){return _0x3a67bb instanceof _0x2a9cb5;},'SlRQZ':'Unknown\x20error','zaEwh':'❌\x20[LINKEDIN\x20EXTRACTOR]\x20Complete\x20flow\x20error:','IAwgC':function(_0x200c95,_0x2e03c3){return _0x200c95===_0x2e03c3;},'NNnBf':_0x1c15(0x73)},{onProgress:_0x420572,onSuccess:_0x5b4207,onError:_0x3e8e05}=_0x1acf0e;try{_0x420572&&_0x420572(_0x2d95f6[_0x1c15(0x74)]);const _0x18279f=_0x2d95f6[_0x1c15(0x75)](parseExtractionMessage,_0x22ba98);if(!_0x18279f['success']||!_0x18279f[_0x1c15(0x1d)]){const _0x2db7cc=_0x18279f[_0x1c15(0x25)]||_0x2d95f6['pdRiW'];console[_0x1c15(0x25)](_0x2d95f6[_0x1c15(0x76)],_0x2db7cc);if(_0x3e8e05){if(_0x2d95f6[_0x1c15(0x77)]===_0x2d95f6['qtpNJ'])_0x2d95f6[_0x1c15(0x78)](_0x3e8e05,_0x2db7cc);else return{'valid':![],'error':_0x1c15(0x62)};}return![];}const _0x5a271a=_0x18279f[_0x1c15(0x1d)],_0x2c2c01=_0x2d95f6['mOKrG'](validateExtractedUrl,_0x5a271a);if(!_0x2c2c01[_0x1c15(0x79)])return console[_0x1c15(0x25)](_0x2d95f6[_0x1c15(0x7a)],_0x2c2c01['error']),_0x3e8e05&&_0x2d95f6['cXISf'](_0x3e8e05,_0x2c2c01[_0x1c15(0x25)]||_0x2d95f6[_0x1c15(0x7b)]),![];return await _0x2d95f6[_0x1c15(0x78)](initiateProfileScraping,{'userId':_0x585fbd,'profileUrl':_0x5a271a,'onProgress':_0x420572,'onSuccess':_0x5b4207,'onError':_0x3e8e05}),!![];}catch(_0xca2d8d){if(_0x2d95f6[_0x1c15(0x7c)](_0x2d95f6[_0x1c15(0x7d)],_0x2d95f6[_0x1c15(0x7d)]))_0x2d95f6[_0x1c15(0x78)](_0x144e4a,_0x4960db);else{const _0x18995f=_0x2d95f6[_0x1c15(0x7e)](_0xca2d8d,Error)?_0xca2d8d[_0x1c15(0x27)]:_0x2d95f6['SlRQZ'];console[_0x1c15(0x25)](_0x2d95f6[_0x1c15(0x7f)],_0xca2d8d);if(_0x3e8e05){if(_0x2d95f6[_0x1c15(0x80)](_0x2d95f6[_0x1c15(0x81)],_0x1c15(0x73)))_0x3e8e05(_0x18995f);else return{'valid':![],'error':'URL\x20is\x20not\x20a\x20LinkedIn\x20domain'};}return![];}}};exports[_0x1c15(0x5)]=completeLinkedInExtraction;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.validateExtractedUrl = exports.parseExtractionMessage = exports.initiateProfileScraping = exports.completeLinkedInExtraction = exports.checkScrapingStatus = void 0;
7
+ var _linkedinScrapingService = require("./linkedinScrapingService");
8
+ /**
9
+ * LinkedIn DOM Extractor Service
10
+ * Handles profile URL extraction from WebView and orchestrates backend scraping
11
+ * Works with existing linkedinScrapingService for backend integration
12
+ */
13
+
14
+ /**
15
+ * Parse WebView message from profile extraction script
16
+ * Handles JSON parsing and validation
17
+ */
18
+ const parseExtractionMessage = data => {
19
+ try {
20
+ console.log('📨 [LINKEDIN EXTRACTOR] Parsing WebView message:', data);
21
+ const parsed = JSON.parse(data);
22
+
23
+ // Validate message structure
24
+ if (!parsed || typeof parsed !== 'object') {
25
+ return {
26
+ success: false,
27
+ error: 'Invalid message format'
28
+ };
29
+ }
30
+ const status = parsed.status;
31
+ if (status === 'success') {
32
+ const profileUrl = parsed.profileUrl;
33
+ if (!profileUrl || typeof profileUrl !== 'string') {
34
+ return {
35
+ success: false,
36
+ error: 'No profile URL in success message'
37
+ };
38
+ }
39
+ console.log('✅ [LINKEDIN EXTRACTOR] Profile URL extracted:', profileUrl);
40
+ return {
41
+ success: true,
42
+ profileUrl: profileUrl,
43
+ message: 'Profile URL extracted successfully'
44
+ };
45
+ } else if (status === 'error') {
46
+ const errorMessage = parsed.message || 'Unknown extraction error';
47
+ console.warn('⚠️ [LINKEDIN EXTRACTOR] Extraction error:', errorMessage);
48
+ return {
49
+ success: false,
50
+ error: errorMessage
51
+ };
52
+ } else {
53
+ return {
54
+ success: false,
55
+ error: 'Unknown message status: ' + status
56
+ };
57
+ }
58
+ } catch (error) {
59
+ console.error('❌ [LINKEDIN EXTRACTOR] Failed to parse message:', error);
60
+ return {
61
+ success: false,
62
+ error: 'Failed to parse extraction result'
63
+ };
64
+ }
65
+ };
66
+
67
+ /**
68
+ * Initiate profile scraping using extracted URL
69
+ * Reuses existing scrapeLinkedInProfile from linkedinScrapingService
70
+ */
71
+ exports.parseExtractionMessage = parseExtractionMessage;
72
+ const initiateProfileScraping = async options => {
73
+ const {
74
+ userId,
75
+ profileUrl,
76
+ onProgress,
77
+ onSuccess,
78
+ onError
79
+ } = options;
80
+ try {
81
+ console.log('🚀 [LINKEDIN EXTRACTOR] Starting profile scraping...');
82
+ console.log('🚀 [LINKEDIN EXTRACTOR] User ID:', userId);
83
+ console.log('🚀 [LINKEDIN EXTRACTOR] Profile URL:', profileUrl);
84
+
85
+ // Update progress
86
+ if (onProgress) {
87
+ onProgress('Sending profile URL to backend...');
88
+ }
89
+
90
+ // Call existing scraping service (reuses linkedinScrapingService.ts)
91
+ const result = await (0, _linkedinScrapingService.scrapeLinkedInProfile)(userId, profileUrl);
92
+ if (result.success) {
93
+ console.log('✅ [LINKEDIN EXTRACTOR] Profile scraping successful');
94
+ if (onProgress) {
95
+ onProgress('✅ Profile scraping complete!');
96
+ }
97
+ if (onSuccess) {
98
+ onSuccess(result.data);
99
+ }
100
+ } else {
101
+ const errorMsg = result.error || 'Unknown scraping error';
102
+ console.error('❌ [LINKEDIN EXTRACTOR] Profile scraping failed:', errorMsg);
103
+ if (onProgress) {
104
+ onProgress('❌ Scraping failed');
105
+ }
106
+ if (onError) {
107
+ onError(errorMsg);
108
+ }
109
+ }
110
+ } catch (error) {
111
+ const errorMsg = error instanceof Error ? error.message : 'Unknown error occurred';
112
+ console.error('❌ [LINKEDIN EXTRACTOR] Exception during scraping:', error);
113
+ if (onProgress) {
114
+ onProgress('❌ Error occurred');
115
+ }
116
+ if (onError) {
117
+ onError(errorMsg);
118
+ }
119
+ }
120
+ };
121
+
122
+ /**
123
+ * Check scraping status for a user (optional - for future use)
124
+ * This can be used to poll backend for scraping completion
125
+ */
126
+ exports.initiateProfileScraping = initiateProfileScraping;
127
+ const checkScrapingStatus = async userId => {
128
+ try {
129
+ console.log('🔍 [LINKEDIN EXTRACTOR] Checking scraping status for:', userId);
130
+
131
+ // This endpoint may not exist yet - implement when needed
132
+ // For now, return a basic status
133
+ return {
134
+ inProgress: false,
135
+ completed: false
136
+ };
137
+ } catch (error) {
138
+ console.error('❌ [LINKEDIN EXTRACTOR] Failed to check status:', error);
139
+ return {
140
+ inProgress: false,
141
+ completed: false,
142
+ error: error instanceof Error ? error.message : 'Unknown error'
143
+ };
144
+ }
145
+ };
146
+
147
+ /**
148
+ * Validate extracted LinkedIn URL
149
+ * Additional validation layer before sending to backend
150
+ */
151
+ exports.checkScrapingStatus = checkScrapingStatus;
152
+ const validateExtractedUrl = url => {
153
+ if (!url || typeof url !== 'string') {
154
+ return {
155
+ valid: false,
156
+ error: 'URL is empty or invalid'
157
+ };
158
+ }
159
+
160
+ // Check for /in/ pattern
161
+ if (!url.includes('/in/')) {
162
+ return {
163
+ valid: false,
164
+ error: 'URL does not contain /in/ pattern'
165
+ };
166
+ }
167
+
168
+ // Check for linkedin.com domain
169
+ if (!url.includes('linkedin.com')) {
170
+ return {
171
+ valid: false,
172
+ error: 'URL is not a LinkedIn domain'
173
+ };
174
+ }
175
+
176
+ // Extract username
177
+ const match = url.match(/linkedin\.com\/in\/([^\/\?#]+)/);
178
+ if (!match || !match[1]) {
179
+ return {
180
+ valid: false,
181
+ error: 'Could not extract username from URL'
182
+ };
183
+ }
184
+ return {
185
+ valid: true
186
+ };
187
+ };
188
+
189
+ /**
190
+ * Complete LinkedIn extraction and scraping flow
191
+ * High-level function that handles the entire process
192
+ */
193
+ exports.validateExtractedUrl = validateExtractedUrl;
194
+ const completeLinkedInExtraction = async (webViewMessage, userId, callbacks) => {
195
+ const {
196
+ onProgress,
197
+ onSuccess,
198
+ onError
199
+ } = callbacks;
200
+ try {
201
+ // Step 1: Parse extraction result
202
+ if (onProgress) {
203
+ onProgress('Processing extracted data...');
204
+ }
205
+ const extractionResult = parseExtractionMessage(webViewMessage);
206
+ if (!extractionResult.success || !extractionResult.profileUrl) {
207
+ const errorMsg = extractionResult.error || 'Failed to extract profile URL';
208
+ console.error('❌ [LINKEDIN EXTRACTOR] Extraction failed:', errorMsg);
209
+ if (onError) {
210
+ onError(errorMsg);
211
+ }
212
+ return false;
213
+ }
214
+ const profileUrl = extractionResult.profileUrl;
215
+
216
+ // Step 2: Validate URL
217
+ const validation = validateExtractedUrl(profileUrl);
218
+ if (!validation.valid) {
219
+ console.error('❌ [LINKEDIN EXTRACTOR] Invalid URL:', validation.error);
220
+ if (onError) {
221
+ onError(validation.error || 'Invalid profile URL');
222
+ }
223
+ return false;
224
+ }
225
+
226
+ // Step 3: Initiate scraping
227
+ await initiateProfileScraping({
228
+ userId,
229
+ profileUrl,
230
+ onProgress,
231
+ onSuccess,
232
+ onError
233
+ });
234
+ return true;
235
+ } catch (error) {
236
+ const errorMsg = error instanceof Error ? error.message : 'Unknown error';
237
+ console.error('❌ [LINKEDIN EXTRACTOR] Complete flow error:', error);
238
+ if (onError) {
239
+ onError(errorMsg);
240
+ }
241
+ return false;
242
+ }
243
+ };
244
+ exports.completeLinkedInExtraction = completeLinkedInExtraction;
245
+ //# sourceMappingURL=linkedinDOMExtractor.js.map