@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 +1,234 @@
1
- import{scrapeLinkedInProfile}from'./linkedinScrapingService';function _0x1e6a(_0x360a2c,_0x1e6a0f){_0x360a2c=_0x360a2c-0x0;const _0x5814aa=_0x360a();let _0x4b9c83=_0x5814aa[_0x360a2c];return _0x4b9c83;}function _0x360a(){const _0x7d080e=['Unknown\x20scraping\x20error','❌\x20Scraping\x20failed','📨\x20[LINKEDIN\x20EXTRACTOR]\x20Parsing\x20WebView\x20message:','object','Invalid\x20message\x20format','string','error','OEpip','Unknown\x20message\x20status:\x20','Failed\x20to\x20parse\x20extraction\x20result','log','parse','status','uMPbM','iKLOC','Profile\x20URL\x20extracted\x20successfully','EUXkj','PXpaz','QVAlU','ESlJi','Unknown\x20extraction\x20error','warn','HDJhK','fMUal','aBLSL','OuFDp','YDMgd','Ltipr','❌\x20[LINKEDIN\x20EXTRACTOR]\x20Failed\x20to\x20parse\x20message:','MKTHb','Unknown\x20error\x20occurred','❌\x20[LINKEDIN\x20EXTRACTOR]\x20Exception\x20during\x20scraping:','✅\x20[LINKEDIN\x20EXTRACTOR]\x20Profile\x20scraping\x20successful','✅\x20Profile\x20scraping\x20complete!','No\x20profile\x20URL\x20in\x20success\x20message','✅\x20[LINKEDIN\x20EXTRACTOR]\x20Profile\x20URL\x20extracted:','hCfGU','🚀\x20[LINKEDIN\x20EXTRACTOR]\x20Starting\x20profile\x20scraping...','🚀\x20[LINKEDIN\x20EXTRACTOR]\x20User\x20ID:','ABHog','dZtCI','tdoxn','tQVWv','tqFcI','VTXjU','EJJUz','uBKxw','PYsmu','tcOur','cFZRj','🚀\x20[LINKEDIN\x20EXTRACTOR]\x20Profile\x20URL:','YNWQi','xFByS','fnait','tMTGU','zIJKF','isxrX','phNzf','KkwXA','data','VBBHi','jjMMV','PxStE','jIkgs','Xsooq','PjoNs','profileUrl','BPWAp','kbErc','mPLRp','yYMXf','message','vLAev','XOowY','GIGzq','kuRUL','CKvfH','❌\x20[LINKEDIN\x20EXTRACTOR]\x20Invalid\x20URL:','Invalid\x20profile\x20URL','⚠️\x20[LINKEDIN\x20EXTRACTOR]\x20Extraction\x20error:','🔍\x20[LINKEDIN\x20EXTRACTOR]\x20Checking\x20scraping\x20status\x20for:','LacNt','❌\x20[LINKEDIN\x20EXTRACTOR]\x20Failed\x20to\x20check\x20status:','Unknown\x20error','oDELe','RbthG','JdiDI','UFrEQ','XDiOZ','nGwCV','YVEfE','/in/','XHRSp','OFZjv','URL\x20is\x20not\x20a\x20LinkedIn\x20domain','WdBEO','Could\x20not\x20extract\x20username\x20from\x20URL','zbjeC','includes','linkedin.com','ovGcl','UPECC','EYBJn','Sending\x20profile\x20URL\x20to\x20backend...','kvyuC','VMFmx','URL\x20does\x20not\x20contain\x20/in/\x20pattern','❌\x20[LINKEDIN\x20EXTRACTOR]\x20Extraction\x20failed:','WrKPA','Tpvtf','❌\x20[LINKEDIN\x20EXTRACTOR]\x20Complete\x20flow\x20error:','edgzr','Processing\x20extracted\x20data...','ihwrS','BnVlA','vwhVr','vnnOf','aHVVX','valid','UnMNW','HKIkV','WEIlZ','TXBtJ','jIoNz','CFvpF','gARzd','ZsjRq','tyXoI','hqhrH','oMtSl','aWuos'];_0x360a=function(){return _0x7d080e;};return _0x360a();}export const parseExtractionMessage=_0x1f4a0d=>{const _0x153f4a={'HDJhK':_0x1e6a(0x0),'fMUal':'❌\x20[LINKEDIN\x20EXTRACTOR]\x20Profile\x20scraping\x20failed:','aBLSL':function(_0x2de438,_0x3be5bf){return _0x2de438(_0x3be5bf);},'OuFDp':_0x1e6a(0x1),'LMiod':_0x1e6a(0x2),'rRooU':_0x1e6a(0x3),'fZppq':_0x1e6a(0x4),'YROTs':function(_0x442f8e,_0x36eb29){return _0x442f8e===_0x36eb29;},'KbJTH':'success','ZURXc':function(_0xa06a9d,_0x5822ab){return _0xa06a9d!==_0x5822ab;},'uMPbM':_0x1e6a(0x5),'iKLOC':'No\x20profile\x20URL\x20in\x20success\x20message','dyaqV':'✅\x20[LINKEDIN\x20EXTRACTOR]\x20Profile\x20URL\x20extracted:','EUXkj':_0x1e6a(0x6),'PXpaz':function(_0x2b1aee,_0x31b762){return _0x2b1aee!==_0x31b762;},'QVAlU':'bExZR','ESlJi':_0x1e6a(0x7),'QXazv':'⚠️\x20[LINKEDIN\x20EXTRACTOR]\x20Extraction\x20error:','YDMgd':function(_0x2216ed,_0x525b31){return _0x2216ed+_0x525b31;},'Ltipr':_0x1e6a(0x8),'MKTHb':_0x1e6a(0x9)};try{console[_0x1e6a(0xa)](_0x153f4a['LMiod'],_0x1f4a0d);const _0x1e87a8=JSON[_0x1e6a(0xb)](_0x1f4a0d);if(!_0x1e87a8||typeof _0x1e87a8!==_0x153f4a['rRooU'])return{'success':![],'error':_0x153f4a['fZppq']};const _0x51561b=_0x1e87a8[_0x1e6a(0xc)];if(_0x153f4a['YROTs'](_0x51561b,_0x153f4a['KbJTH'])){const _0x1e74fa=_0x1e87a8['profileUrl'];if(!_0x1e74fa||_0x153f4a['ZURXc'](typeof _0x1e74fa,_0x153f4a[_0x1e6a(0xd)]))return{'success':![],'error':_0x153f4a[_0x1e6a(0xe)]};return console[_0x1e6a(0xa)](_0x153f4a['dyaqV'],_0x1e74fa),{'success':!![],'profileUrl':_0x1e74fa,'message':_0x1e6a(0xf)};}else{if(_0x153f4a['YROTs'](_0x51561b,_0x153f4a[_0x1e6a(0x10)])){if(_0x153f4a[_0x1e6a(0x11)](_0x153f4a[_0x1e6a(0x12)],_0x153f4a[_0x1e6a(0x13)])){const _0x353a3a=_0x1e87a8['message']||_0x1e6a(0x14);return console[_0x1e6a(0x15)](_0x153f4a['QXazv'],_0x353a3a),{'success':![],'error':_0x353a3a};}else{const _0x27233b=_0x543d43[_0x1e6a(0x6)]||_0x153f4a[_0x1e6a(0x16)];_0x155ea8[_0x1e6a(0x6)](_0x153f4a[_0x1e6a(0x17)],_0x27233b),_0x9d7d64&&_0x153f4a[_0x1e6a(0x18)](_0x486574,_0x153f4a[_0x1e6a(0x19)]),_0x2fe042&&_0x153f4a[_0x1e6a(0x18)](_0x258760,_0x27233b);}}else return{'success':![],'error':_0x153f4a[_0x1e6a(0x1a)](_0x153f4a[_0x1e6a(0x1b)],_0x51561b)};}}catch(_0x466b6c){return console[_0x1e6a(0x6)](_0x1e6a(0x1c),_0x466b6c),{'success':![],'error':_0x153f4a[_0x1e6a(0x1d)]};}};export const initiateProfileScraping=async _0x180f15=>{const _0x8aa036={'EJJUz':function(_0x38b6d5,_0x39bf99){return _0x38b6d5 instanceof _0x39bf99;},'vLAev':_0x1e6a(0x1e),'uBKxw':_0x1e6a(0x1f),'PYsmu':function(_0x16c1f7,_0x8c21e3){return _0x16c1f7(_0x8c21e3);},'kuRUL':'❌\x20Error\x20occurred','xFByS':function(_0x5b1e7c,_0x1f307f){return _0x5b1e7c(_0x1f307f);},'isxrX':_0x1e6a(0x20),'phNzf':_0x1e6a(0x21),'KkwXA':function(_0x58deca,_0x1b390a){return _0x58deca(_0x1b390a);},'FKssy':_0x1e6a(0x22),'KqJkN':_0x1e6a(0x23),'BPWAp':_0x1e6a(0xf),'CKvfH':_0x1e6a(0x9),'VTXjU':_0x1e6a(0x24),'tcOur':_0x1e6a(0x25),'cFZRj':_0x1e6a(0x26),'YNWQi':_0x1e6a(0x27),'fnait':'Sending\x20profile\x20URL\x20to\x20backend...','zIJKF':_0x1e6a(0x28),'VBBHi':function(_0x3fee54,_0x41feb5){return _0x3fee54(_0x41feb5);},'jjMMV':function(_0x16efcb,_0x246f7c){return _0x16efcb===_0x246f7c;},'PxStE':'jdhNC','lYxYJ':_0x1e6a(0x0),'jIkgs':'❌\x20[LINKEDIN\x20EXTRACTOR]\x20Profile\x20scraping\x20failed:','Xsooq':_0x1e6a(0x1),'PjoNs':_0x1e6a(0x29),'kbErc':function(_0x360126,_0x5591a7){return _0x360126(_0x5591a7);},'mPLRp':function(_0xff5036,_0x4a5b3e){return _0xff5036===_0x4a5b3e;},'yYMXf':_0x1e6a(0x2a),'urBEg':function(_0x1e2aa5,_0x44e122){return _0x1e2aa5 instanceof _0x44e122;},'XOowY':_0x1e6a(0x2b),'GIGzq':function(_0xeaa989,_0x1f3b4a){return _0xeaa989(_0x1f3b4a);}},{userId:_0x23e9b9,profileUrl:_0x2d36c0,onProgress:_0x6e0845,onSuccess:_0x17d3a7,onError:_0x4501ca}=_0x180f15;try{if(_0x8aa036[_0x1e6a(0x2c)]!==_0x8aa036[_0x1e6a(0x2c)]){const _0x5e88a6=_0x8aa036[_0x1e6a(0x2d)](_0x1b7a67,_0x412745)?_0x539e58['message']:_0x8aa036['vLAev'];_0x1819a2[_0x1e6a(0x6)](_0x8aa036[_0x1e6a(0x2e)],_0x2afbc1),_0x50c91b&&_0x8aa036[_0x1e6a(0x2f)](_0xb915ad,_0x8aa036['kuRUL']),_0x2837b8&&_0x8aa036[_0x1e6a(0x2f)](_0x21be5d,_0x5e88a6);}else{console['log'](_0x8aa036[_0x1e6a(0x30)]),console[_0x1e6a(0xa)](_0x8aa036[_0x1e6a(0x31)],_0x23e9b9),console['log'](_0x1e6a(0x32),_0x2d36c0);_0x6e0845&&(_0x8aa036[_0x1e6a(0x33)]===_0x8aa036[_0x1e6a(0x33)]?_0x8aa036[_0x1e6a(0x34)](_0x6e0845,_0x8aa036[_0x1e6a(0x35)]):_0x8aa036[_0x1e6a(0x34)](_0x318582,_0x101a26));const _0x40b0c9=await scrapeLinkedInProfile(_0x23e9b9,_0x2d36c0);if(_0x40b0c9['success'])_0x1e6a(0x36)===_0x8aa036[_0x1e6a(0x37)]?(_0x142067[_0x1e6a(0xa)](_0x8aa036[_0x1e6a(0x38)]),_0x2fea6a&&_0x3f9827(_0x8aa036[_0x1e6a(0x39)]),_0x5bb911&&_0x8aa036[_0x1e6a(0x3a)](_0x274f56,_0x4ec55c[_0x1e6a(0x3b)])):(console[_0x1e6a(0xa)](_0x8aa036[_0x1e6a(0x38)]),_0x6e0845&&_0x8aa036[_0x1e6a(0x34)](_0x6e0845,_0x8aa036[_0x1e6a(0x39)]),_0x17d3a7&&_0x8aa036[_0x1e6a(0x3c)](_0x17d3a7,_0x40b0c9['data']));else{if(_0x8aa036[_0x1e6a(0x3d)](_0x8aa036['PxStE'],_0x8aa036[_0x1e6a(0x3e)])){const _0x79e1a1=_0x40b0c9[_0x1e6a(0x6)]||_0x8aa036['lYxYJ'];console[_0x1e6a(0x6)](_0x8aa036[_0x1e6a(0x3f)],_0x79e1a1);_0x6e0845&&_0x8aa036[_0x1e6a(0x3c)](_0x6e0845,_0x8aa036[_0x1e6a(0x40)]);if(_0x4501ca){if(_0x8aa036[_0x1e6a(0x3d)]('YMsMo',_0x8aa036[_0x1e6a(0x41)])){const _0x32e630=_0xaf7716[_0x1e6a(0x42)];if(!_0x32e630||typeof _0x32e630!==_0x1e6a(0x5))return{'success':![],'error':_0x8aa036['FKssy']};return _0x5918bd[_0x1e6a(0xa)](_0x8aa036['KqJkN'],_0x32e630),{'success':!![],'profileUrl':_0x32e630,'message':_0x8aa036[_0x1e6a(0x43)]};}else _0x8aa036[_0x1e6a(0x44)](_0x4501ca,_0x79e1a1);}}else _0x8aa036['KkwXA'](_0x1c403c,_0x305ec8);}}}catch(_0x3891e0){if(_0x8aa036[_0x1e6a(0x45)](_0x8aa036[_0x1e6a(0x46)],_0x8aa036[_0x1e6a(0x46)])){const _0x29d0b3=_0x8aa036['urBEg'](_0x3891e0,Error)?_0x3891e0[_0x1e6a(0x47)]:_0x8aa036[_0x1e6a(0x48)];console[_0x1e6a(0x6)](_0x1e6a(0x1f),_0x3891e0);if(_0x6e0845){if(_0x8aa036[_0x1e6a(0x3d)](_0x8aa036[_0x1e6a(0x49)],'tqFcI'))_0x8aa036[_0x1e6a(0x4a)](_0x6e0845,_0x8aa036[_0x1e6a(0x4b)]);else return _0x5ae30a[_0x1e6a(0x6)]('❌\x20[LINKEDIN\x20EXTRACTOR]\x20Failed\x20to\x20parse\x20message:',_0x6bf6f9),{'success':![],'error':_0x8aa036[_0x1e6a(0x4c)]};}_0x4501ca&&_0x8aa036[_0x1e6a(0x2f)](_0x4501ca,_0x29d0b3);}else return _0x5d835c[_0x1e6a(0x6)](_0x1e6a(0x4d),_0x20d56d['error']),_0x10eeb5&&_0x8aa036[_0x1e6a(0x2f)](_0x5e6cd0,_0x12a8c0[_0x1e6a(0x6)]||_0x1e6a(0x4e)),![];}};export const checkScrapingStatus=async _0x565eaf=>{const _0x3bffc9={'JdiDI':_0x1e6a(0x14),'nbiVj':_0x1e6a(0x4f),'oDELe':_0x1e6a(0x50),'OEhES':function(_0x161078,_0x2b005c){return _0x161078===_0x2b005c;},'RbthG':'jzUii','uCcQf':_0x1e6a(0x51),'UFrEQ':_0x1e6a(0x52),'XDiOZ':function(_0x488c13,_0x2cad6e){return _0x488c13 instanceof _0x2cad6e;},'nGwCV':_0x1e6a(0x53)};try{return console[_0x1e6a(0xa)](_0x3bffc9[_0x1e6a(0x54)],_0x565eaf),{'inProgress':![],'completed':![]};}catch(_0x1e8bb8){if(_0x3bffc9['OEhES'](_0x3bffc9[_0x1e6a(0x55)],_0x3bffc9['uCcQf'])){const _0x5c8899=_0x3eeb99['message']||_0x3bffc9[_0x1e6a(0x56)];return _0x590e9b[_0x1e6a(0x15)](_0x3bffc9['nbiVj'],_0x5c8899),{'success':![],'error':_0x5c8899};}else return console[_0x1e6a(0x6)](_0x3bffc9[_0x1e6a(0x57)],_0x1e8bb8),{'inProgress':![],'completed':![],'error':_0x3bffc9[_0x1e6a(0x58)](_0x1e8bb8,Error)?_0x1e8bb8[_0x1e6a(0x47)]:_0x3bffc9[_0x1e6a(0x59)]};}};export const validateExtractedUrl=_0x40e088=>{const _0x33553c={'EYBJn':function(_0x150766,_0x3caee8){return _0x150766(_0x3caee8);},'aKDxU':function(_0x2890de,_0x3902eb){return _0x2890de!==_0x3902eb;},'rKDsy':function(_0x50a1c1,_0x124814){return _0x50a1c1===_0x124814;},'WdBEO':_0x1e6a(0x5a),'zbjeC':_0x1e6a(0x5b),'ovGcl':function(_0x295c35,_0x443cee){return _0x295c35===_0x443cee;},'UPECC':_0x1e6a(0x5c),'DmZdp':_0x1e6a(0x5d),'kvyuC':_0x1e6a(0x5e),'VMFmx':'Could\x20not\x20extract\x20username\x20from\x20URL'};if(!_0x40e088||_0x33553c['aKDxU'](typeof _0x40e088,_0x1e6a(0x5)))return _0x33553c['rKDsy'](_0x33553c['WdBEO'],_0x33553c[_0x1e6a(0x5f)])?{'valid':![],'error':'URL\x20is\x20empty\x20or\x20invalid'}:{'valid':![],'error':_0x1e6a(0x60)};if(!_0x40e088['includes'](_0x33553c[_0x1e6a(0x61)]))return{'valid':![],'error':'URL\x20does\x20not\x20contain\x20/in/\x20pattern'};if(!_0x40e088[_0x1e6a(0x62)](_0x1e6a(0x63))){if(_0x33553c[_0x1e6a(0x64)](_0x33553c[_0x1e6a(0x65)],_0x33553c['DmZdp']))_0x33553c[_0x1e6a(0x66)](_0x2e416f,_0x1e6a(0x67));else return{'valid':![],'error':_0x33553c[_0x1e6a(0x68)]};}const _0x59c527=_0x40e088['match'](/linkedin\.com\/in\/([^\/\?#]+)/);if(!_0x59c527||!_0x59c527[0x1])return{'valid':![],'error':_0x33553c[_0x1e6a(0x69)]};return{'valid':!![]};};export const completeLinkedInExtraction=async(_0x5cb899,_0x5c8e83,_0x85564a)=>{const _0x2898ff={'vnnOf':function(_0x2b6d14,_0x22c9fe){return _0x2b6d14 instanceof _0x22c9fe;},'aHVVX':_0x1e6a(0x53),'WEIlZ':function(_0x22efb,_0x5683e2){return _0x22efb+_0x5683e2;},'oMtSl':_0x1e6a(0x6a),'ihwrS':_0x1e6a(0x6b),'BnVlA':_0x1e6a(0x6c),'vwhVr':function(_0xef3046,_0x186b14){return _0xef3046(_0x186b14);},'HKIkV':_0x1e6a(0x6d),'TXBtJ':_0x1e6a(0x4d),'jIoNz':_0x1e6a(0x4e),'CFvpF':function(_0x2940dd,_0x55d1fb){return _0x2940dd===_0x55d1fb;},'gARzd':'eOAkt','vouPx':_0x1e6a(0x6e),'tyXoI':function(_0x1501e2,_0x2c04e8){return _0x1501e2!==_0x2c04e8;},'hqhrH':_0x1e6a(0x6f),'aWuos':function(_0x502e95,_0x2ea7b3){return _0x502e95(_0x2ea7b3);}},{onProgress:_0x417833,onSuccess:_0x112def,onError:_0x53f00f}=_0x85564a;try{_0x417833&&_0x417833(_0x1e6a(0x70));const _0x171330=parseExtractionMessage(_0x5cb899);if(!_0x171330['success']||!_0x171330[_0x1e6a(0x42)]){const _0x4cc4c3=_0x171330[_0x1e6a(0x6)]||'Failed\x20to\x20extract\x20profile\x20URL';console[_0x1e6a(0x6)](_0x2898ff[_0x1e6a(0x71)],_0x4cc4c3);if(_0x53f00f){if(_0x2898ff[_0x1e6a(0x72)]!=='HONHr')_0x2898ff[_0x1e6a(0x73)](_0x53f00f,_0x4cc4c3);else return _0x38c5f9[_0x1e6a(0x6)](_0x1e6a(0x52),_0x827276),{'inProgress':![],'completed':![],'error':_0x2898ff[_0x1e6a(0x74)](_0x1081ec,_0xd17821)?_0x3afc80['message']:_0x2898ff[_0x1e6a(0x75)]};}return![];}const _0x8609c1=_0x171330[_0x1e6a(0x42)],_0x268103=_0x2898ff[_0x1e6a(0x73)](validateExtractedUrl,_0x8609c1);if(!_0x268103[_0x1e6a(0x76)])return _0x1e6a(0x77)===_0x2898ff[_0x1e6a(0x78)]?{'success':![],'error':_0x2898ff[_0x1e6a(0x79)]('Unknown\x20message\x20status:\x20',_0x4f67bc)}:(console[_0x1e6a(0x6)](_0x2898ff[_0x1e6a(0x7a)],_0x268103[_0x1e6a(0x6)]),_0x53f00f&&_0x2898ff[_0x1e6a(0x73)](_0x53f00f,_0x268103[_0x1e6a(0x6)]||_0x2898ff[_0x1e6a(0x7b)]),![]);return await _0x2898ff[_0x1e6a(0x73)](initiateProfileScraping,{'userId':_0x5c8e83,'profileUrl':_0x8609c1,'onProgress':_0x417833,'onSuccess':_0x112def,'onError':_0x53f00f}),!![];}catch(_0x5b516e){if(_0x2898ff[_0x1e6a(0x7c)](_0x2898ff[_0x1e6a(0x7d)],_0x1e6a(0x7e)))_0x237a8f(_0x4b1831);else{const _0x477835=_0x2898ff[_0x1e6a(0x74)](_0x5b516e,Error)?_0x5b516e['message']:_0x2898ff['aHVVX'];console[_0x1e6a(0x6)](_0x2898ff['vouPx'],_0x5b516e);if(_0x53f00f){if(_0x2898ff[_0x1e6a(0x7f)](_0x2898ff[_0x1e6a(0x80)],_0x2898ff['hqhrH']))return{'valid':![],'error':_0x2898ff[_0x1e6a(0x81)]};else _0x2898ff[_0x1e6a(0x82)](_0x53f00f,_0x477835);}return![];}}};
1
+ /**
2
+ * LinkedIn DOM Extractor Service
3
+ * Handles profile URL extraction from WebView and orchestrates backend scraping
4
+ * Works with existing linkedinScrapingService for backend integration
5
+ */
6
+
7
+ import { scrapeLinkedInProfile } from './linkedinScrapingService';
8
+ /**
9
+ * Parse WebView message from profile extraction script
10
+ * Handles JSON parsing and validation
11
+ */
12
+ export const parseExtractionMessage = data => {
13
+ try {
14
+ console.log('📨 [LINKEDIN EXTRACTOR] Parsing WebView message:', data);
15
+ const parsed = JSON.parse(data);
16
+
17
+ // Validate message structure
18
+ if (!parsed || typeof parsed !== 'object') {
19
+ return {
20
+ success: false,
21
+ error: 'Invalid message format'
22
+ };
23
+ }
24
+ const status = parsed.status;
25
+ if (status === 'success') {
26
+ const profileUrl = parsed.profileUrl;
27
+ if (!profileUrl || typeof profileUrl !== 'string') {
28
+ return {
29
+ success: false,
30
+ error: 'No profile URL in success message'
31
+ };
32
+ }
33
+ console.log('✅ [LINKEDIN EXTRACTOR] Profile URL extracted:', profileUrl);
34
+ return {
35
+ success: true,
36
+ profileUrl: profileUrl,
37
+ message: 'Profile URL extracted successfully'
38
+ };
39
+ } else if (status === 'error') {
40
+ const errorMessage = parsed.message || 'Unknown extraction error';
41
+ console.warn('⚠️ [LINKEDIN EXTRACTOR] Extraction error:', errorMessage);
42
+ return {
43
+ success: false,
44
+ error: errorMessage
45
+ };
46
+ } else {
47
+ return {
48
+ success: false,
49
+ error: 'Unknown message status: ' + status
50
+ };
51
+ }
52
+ } catch (error) {
53
+ console.error('❌ [LINKEDIN EXTRACTOR] Failed to parse message:', error);
54
+ return {
55
+ success: false,
56
+ error: 'Failed to parse extraction result'
57
+ };
58
+ }
59
+ };
60
+
61
+ /**
62
+ * Initiate profile scraping using extracted URL
63
+ * Reuses existing scrapeLinkedInProfile from linkedinScrapingService
64
+ */
65
+ export const initiateProfileScraping = async options => {
66
+ const {
67
+ userId,
68
+ profileUrl,
69
+ onProgress,
70
+ onSuccess,
71
+ onError
72
+ } = options;
73
+ try {
74
+ console.log('🚀 [LINKEDIN EXTRACTOR] Starting profile scraping...');
75
+ console.log('🚀 [LINKEDIN EXTRACTOR] User ID:', userId);
76
+ console.log('🚀 [LINKEDIN EXTRACTOR] Profile URL:', profileUrl);
77
+
78
+ // Update progress
79
+ if (onProgress) {
80
+ onProgress('Sending profile URL to backend...');
81
+ }
82
+
83
+ // Call existing scraping service (reuses linkedinScrapingService.ts)
84
+ const result = await scrapeLinkedInProfile(userId, profileUrl);
85
+ if (result.success) {
86
+ console.log('✅ [LINKEDIN EXTRACTOR] Profile scraping successful');
87
+ if (onProgress) {
88
+ onProgress('✅ Profile scraping complete!');
89
+ }
90
+ if (onSuccess) {
91
+ onSuccess(result.data);
92
+ }
93
+ } else {
94
+ const errorMsg = result.error || 'Unknown scraping error';
95
+ console.error('❌ [LINKEDIN EXTRACTOR] Profile scraping failed:', errorMsg);
96
+ if (onProgress) {
97
+ onProgress('❌ Scraping failed');
98
+ }
99
+ if (onError) {
100
+ onError(errorMsg);
101
+ }
102
+ }
103
+ } catch (error) {
104
+ const errorMsg = error instanceof Error ? error.message : 'Unknown error occurred';
105
+ console.error('❌ [LINKEDIN EXTRACTOR] Exception during scraping:', error);
106
+ if (onProgress) {
107
+ onProgress('❌ Error occurred');
108
+ }
109
+ if (onError) {
110
+ onError(errorMsg);
111
+ }
112
+ }
113
+ };
114
+
115
+ /**
116
+ * Check scraping status for a user (optional - for future use)
117
+ * This can be used to poll backend for scraping completion
118
+ */
119
+ export const checkScrapingStatus = async userId => {
120
+ try {
121
+ console.log('🔍 [LINKEDIN EXTRACTOR] Checking scraping status for:', userId);
122
+
123
+ // This endpoint may not exist yet - implement when needed
124
+ // For now, return a basic status
125
+ return {
126
+ inProgress: false,
127
+ completed: false
128
+ };
129
+ } catch (error) {
130
+ console.error('❌ [LINKEDIN EXTRACTOR] Failed to check status:', error);
131
+ return {
132
+ inProgress: false,
133
+ completed: false,
134
+ error: error instanceof Error ? error.message : 'Unknown error'
135
+ };
136
+ }
137
+ };
138
+
139
+ /**
140
+ * Validate extracted LinkedIn URL
141
+ * Additional validation layer before sending to backend
142
+ */
143
+ export const validateExtractedUrl = url => {
144
+ if (!url || typeof url !== 'string') {
145
+ return {
146
+ valid: false,
147
+ error: 'URL is empty or invalid'
148
+ };
149
+ }
150
+
151
+ // Check for /in/ pattern
152
+ if (!url.includes('/in/')) {
153
+ return {
154
+ valid: false,
155
+ error: 'URL does not contain /in/ pattern'
156
+ };
157
+ }
158
+
159
+ // Check for linkedin.com domain
160
+ if (!url.includes('linkedin.com')) {
161
+ return {
162
+ valid: false,
163
+ error: 'URL is not a LinkedIn domain'
164
+ };
165
+ }
166
+
167
+ // Extract username
168
+ const match = url.match(/linkedin\.com\/in\/([^\/\?#]+)/);
169
+ if (!match || !match[1]) {
170
+ return {
171
+ valid: false,
172
+ error: 'Could not extract username from URL'
173
+ };
174
+ }
175
+ return {
176
+ valid: true
177
+ };
178
+ };
179
+
180
+ /**
181
+ * Complete LinkedIn extraction and scraping flow
182
+ * High-level function that handles the entire process
183
+ */
184
+ export const completeLinkedInExtraction = async (webViewMessage, userId, callbacks) => {
185
+ const {
186
+ onProgress,
187
+ onSuccess,
188
+ onError
189
+ } = callbacks;
190
+ try {
191
+ // Step 1: Parse extraction result
192
+ if (onProgress) {
193
+ onProgress('Processing extracted data...');
194
+ }
195
+ const extractionResult = parseExtractionMessage(webViewMessage);
196
+ if (!extractionResult.success || !extractionResult.profileUrl) {
197
+ const errorMsg = extractionResult.error || 'Failed to extract profile URL';
198
+ console.error('❌ [LINKEDIN EXTRACTOR] Extraction failed:', errorMsg);
199
+ if (onError) {
200
+ onError(errorMsg);
201
+ }
202
+ return false;
203
+ }
204
+ const profileUrl = extractionResult.profileUrl;
205
+
206
+ // Step 2: Validate URL
207
+ const validation = validateExtractedUrl(profileUrl);
208
+ if (!validation.valid) {
209
+ console.error('❌ [LINKEDIN EXTRACTOR] Invalid URL:', validation.error);
210
+ if (onError) {
211
+ onError(validation.error || 'Invalid profile URL');
212
+ }
213
+ return false;
214
+ }
215
+
216
+ // Step 3: Initiate scraping
217
+ await initiateProfileScraping({
218
+ userId,
219
+ profileUrl,
220
+ onProgress,
221
+ onSuccess,
222
+ onError
223
+ });
224
+ return true;
225
+ } catch (error) {
226
+ const errorMsg = error instanceof Error ? error.message : 'Unknown error';
227
+ console.error('❌ [LINKEDIN EXTRACTOR] Complete flow error:', error);
228
+ if (onError) {
229
+ onError(errorMsg);
230
+ }
231
+ return false;
232
+ }
233
+ };
234
+ //# sourceMappingURL=linkedinDOMExtractor.js.map
@@ -1 +1,210 @@
1
- import AsyncStorage from'@react-native-async-storage/async-storage';import{getUserAuthHeaders,getApiHeaders,API_CONFIG}from'../config/api';function _0x2017(_0x5d5d97,_0x201755){_0x5d5d97=_0x5d5d97-0x0;const _0x3d3999=_0x5d5d();let _0x58e7ec=_0x3d3999[_0x5d5d97];return _0x58e7ec;}function _0x5d5d(){const _0x1dd7b6=['@onairos_linkedin_profile','❌\x20[LINKEDIN\x20PROFILE]\x20Failed\x20to\x20store\x20locally:','DfroD','TbmIz','subRm','gcZgn','split','💾\x20[LINKEDIN\x20PROFILE]\x20Storing\x20profile\x20data\x20locally...','✅\x20[LINKEDIN\x20PROFILE]\x20Profile\x20stored\x20locally','setItem','stringify','error','Profile\x20stored\x20locally\x20(backend\x20storage\x20pending)','uSFCE','hpUPG','DEouJ','wwaTs','BtXTP','AOmOH','CrwGa','oxnvf','getItem','PcoQN','RhqwC','JqtUK','parse','sgrRs','UPiMs','UqkCk','NMsaH','removeItem','❌\x20[LINKEDIN\x20PROFILE]\x20Failed\x20to\x20clear\x20local\x20profile:','BQJqV','📤\x20[LINKEDIN\x20PROFILE]\x20Storing\x20profile\x20data\x20to\x20backend...','⚠️\x20[LINKEDIN\x20PROFILE]\x20No\x20user\x20auth,\x20using\x20basic\x20headers','❌\x20[LINKEDIN\x20PROFILE]\x20Backend\x20storage\x20failed:','Profile\x20stored\x20successfully','zGXZU','vCfmJ','xNDSp','KJqDj','log','KsfXB','yfWTE','📤\x20[LINKEDIN\x20PROFILE]\x20Profile\x20summary:','fullName','lUVsJ','headline','substring','experience','cgAZN','education','length','skills','tmRnn','FMVoj','XUtlu','OyyfQ','warn','EjCvU','xewMC','BASE_URL','/enoch/linkedin/store-profile','text','OkfpD','kIIEv','Backend\x20storage\x20failed:\x20','status','json','Hgmkv','XJiIV','TlLIv','❌\x20[LINKEDIN\x20PROFILE]\x20Storage\x20error:','LGoAU','SaJbc','message','Unknown\x20error','DSXsk','❌\x20[LINKEDIN\x20PROFILE]\x20Store\x20profile\x20error:','💼\x20[LINKEDIN\x20PROFILE]\x20Initiating\x20profile\x20storage...','VRgXq','⚠️\x20[LINKEDIN\x20PROFILE]\x20Backend\x20storage\x20failed,\x20but\x20local\x20storage\x20succeeded','uOUqH','CUVNu','bpfBq','oTHVR','success','AkvBo','kzBDk','LSySt','GONAF','qKgFy','xjNvz','TUnnJ','NexUV','ACeRM','HZziq','HJFpk','TLpFU'];_0x5d5d=function(){return _0x1dd7b6;};return _0x5d5d();}import{getUserIdFromToken}from'./jwtStorageService';const LINKEDIN_PROFILE_KEY=_0x2017(0x0),LINKEDIN_PROFILE_TIMESTAMP_KEY='@onairos_linkedin_profile_timestamp';export const storeLinkedInProfileLocally=async _0x46c8db=>{const _0x33e881={'gcZgn':function(_0x4aa622){return _0x4aa622();},'DfroD':function(_0xffd51c,_0x248934){return _0xffd51c===_0x248934;},'subRm':'jAZGP','sKEJq':'0|4|2|1|3','cXFIY':_0x2017(0x1)};try{if(_0x33e881[_0x2017(0x2)](_0x2017(0x3),_0x33e881[_0x2017(0x4)]))return _0x33e881[_0x2017(0x5)](_0x152572);else{const _0x565336=_0x33e881['sKEJq'][_0x2017(0x6)]('|');let _0x45e4c2=0x0;while(!![]){switch(_0x565336[_0x45e4c2++]){case'0':console['log'](_0x2017(0x7));continue;case'1':console['log'](_0x2017(0x8));continue;case'2':await AsyncStorage[_0x2017(0x9)](LINKEDIN_PROFILE_TIMESTAMP_KEY,new Date()['toISOString']());continue;case'3':return!![];case'4':await AsyncStorage[_0x2017(0x9)](LINKEDIN_PROFILE_KEY,JSON[_0x2017(0xa)](_0x46c8db));continue;}break;}}}catch(_0xfd95a9){return console[_0x2017(0xb)](_0x33e881['cXFIY'],_0xfd95a9),![];}};export const getLinkedInProfileLocally=async()=>{const _0x1c65b7={'Szyod':function(_0x543de3,_0x1cbaca,_0x5eb155){return _0x543de3(_0x1cbaca,_0x5eb155);},'CrwGa':function(_0x2925df){return _0x2925df();},'JqtUK':_0x2017(0x1),'UPiMs':'⚠️\x20[LINKEDIN\x20PROFILE]\x20Backend\x20storage\x20failed,\x20but\x20local\x20storage\x20succeeded','UqkCk':_0x2017(0xc),'BtXTP':function(_0x4b5603,_0x324c66){return _0x4b5603!==_0x324c66;},'AOmOH':_0x2017(0xd),'PcoQN':function(_0x2ba92e,_0x3c1e93){return _0x2ba92e===_0x3c1e93;},'RhqwC':_0x2017(0xe),'ihPOS':_0x2017(0xf),'sgrRs':_0x2017(0x10),'NMsaH':'❌\x20[LINKEDIN\x20PROFILE]\x20Failed\x20to\x20get\x20local\x20profile:'};try{if(_0x1c65b7[_0x2017(0x11)](_0x2017(0xd),_0x1c65b7[_0x2017(0x12)])){const _0x2a8e28={'oxnvf':function(_0xf5a940){return _0x1c65b7[_0x2017(0x13)](_0xf5a940);}},_0x29c93a=async(_0x5577dd,_0x29344f)=>{return _0x1c65b7['Szyod'](_0x55e655,_0x5577dd,_0x29344f);},_0x240987=async()=>{return _0x2a8e28[_0x2017(0x14)](_0x41dc0d);},_0x1a5faf=async()=>{return _0x1c65b7[_0x2017(0x13)](_0x24ef90);};return{'storeProfile':_0x29c93a,'getStoredProfile':_0x240987,'clearProfile':_0x1a5faf};}else{const _0x42d237=await AsyncStorage[_0x2017(0x15)](LINKEDIN_PROFILE_KEY);if(_0x42d237)return _0x1c65b7[_0x2017(0x16)](_0x1c65b7[_0x2017(0x17)],_0x1c65b7['ihPOS'])?(_0x120ede[_0x2017(0xb)](_0x1c65b7[_0x2017(0x18)],_0x41aa59),![]):JSON[_0x2017(0x19)](_0x42d237);return null;}}catch(_0x413e56){return _0x1c65b7['BtXTP'](_0x1c65b7[_0x2017(0x1a)],_0x1c65b7[_0x2017(0x1a)])?(_0x951d8c['warn'](_0x1c65b7[_0x2017(0x1b)]),{'success':!![],'message':_0x1c65b7[_0x2017(0x1c)]}):(console[_0x2017(0xb)](_0x1c65b7[_0x2017(0x1d)],_0x413e56),null);}};export const clearLinkedInProfileLocally=async()=>{try{return await AsyncStorage[_0x2017(0x1e)](LINKEDIN_PROFILE_KEY),await AsyncStorage[_0x2017(0x1e)](LINKEDIN_PROFILE_TIMESTAMP_KEY),!![];}catch(_0x3882c6){return console[_0x2017(0xb)](_0x2017(0x1f),_0x3882c6),![];}};export const storeLinkedInProfileToBackend=async(_0x1ac58a,_0xf3f326)=>{const _0x2b28cb={'xewMC':function(_0x3ce8d2){return _0x3ce8d2();},'DSXsk':function(_0x585c3d){return _0x585c3d();},'xNDSp':function(_0x3ece3b,_0x244991){return _0x3ece3b===_0x244991;},'KJqDj':_0x2017(0x20),'KsfXB':_0x2017(0x21),'yfWTE':'📤\x20[LINKEDIN\x20PROFILE]\x20User\x20ID:','lUVsJ':function(_0x2df1ad,_0x4d4ddd){return _0x2df1ad===_0x4d4ddd;},'cgAZN':function(_0x2e2ef6,_0x4882cb){return _0x2e2ef6===_0x4882cb;},'tmRnn':function(_0x440fa7){return _0x440fa7();},'FMVoj':function(_0x122869,_0x3ab3bb){return _0x122869||_0x3ab3bb;},'XUtlu':'📤\x20[LINKEDIN\x20PROFILE]\x20Effective\x20userId:','OyyfQ':function(_0x27875b){return _0x27875b();},'dNuSi':'🔑\x20[LINKEDIN\x20PROFILE]\x20Using\x20authenticated\x20headers','EjCvU':_0x2017(0x22),'SLjZW':function(_0x317540,_0x3aca35,_0xe76e98){return _0x317540(_0x3aca35,_0xe76e98);},'OkfpD':_0x2017(0x23),'kIIEv':function(_0x46e379,_0x12b885){return _0x46e379(_0x12b885);},'Hgmkv':'✅\x20[LINKEDIN\x20PROFILE]\x20Backend\x20storage\x20successful:','LGoAU':function(_0x3ddefd,_0x5422f6){return _0x3ddefd(_0x5422f6);},'XJiIV':_0x2017(0x24),'IBmnp':function(_0x8cf5ec,_0x12db4b){return _0x8cf5ec!==_0x12db4b;},'cxmsg':_0x2017(0x25),'TlLIv':_0x2017(0x26),'SaJbc':function(_0x2f8310,_0xa947e6){return _0x2f8310 instanceof _0xa947e6;}};try{if(_0x2b28cb[_0x2017(0x27)](_0x2b28cb['KJqDj'],_0x2b28cb[_0x2017(0x28)])){var _0x35cccc,_0x30929d,_0x31134c,_0x30e93c;console[_0x2017(0x29)](_0x2b28cb[_0x2017(0x2a)]),console[_0x2017(0x29)](_0x2b28cb[_0x2017(0x2b)],_0x1ac58a),console[_0x2017(0x29)](_0x2017(0x2c),{'name':_0xf3f326[_0x2017(0x2d)],'headline':_0x2b28cb[_0x2017(0x2e)](_0x35cccc=_0xf3f326[_0x2017(0x2f)],null)||_0x2b28cb[_0x2017(0x2e)](_0x35cccc,void 0x0)?void 0x0:_0x35cccc[_0x2017(0x30)](0x0,0x32),'experienceCount':((_0x30929d=_0xf3f326[_0x2017(0x31)])===null||_0x2b28cb[_0x2017(0x32)](_0x30929d,void 0x0)?void 0x0:_0x30929d['length'])||0x0,'educationCount':(_0x2b28cb[_0x2017(0x27)](_0x31134c=_0xf3f326[_0x2017(0x33)],null)||_0x31134c===void 0x0?void 0x0:_0x31134c[_0x2017(0x34)])||0x0,'skillsCount':((_0x30e93c=_0xf3f326[_0x2017(0x35)])===null||_0x30e93c===void 0x0?void 0x0:_0x30e93c[_0x2017(0x34)])||0x0});const _0x35ca1a=await _0x2b28cb[_0x2017(0x36)](getUserIdFromToken),_0x26f840=_0x2b28cb[_0x2017(0x37)](_0x35ca1a,_0x1ac58a);console['log'](_0x2b28cb[_0x2017(0x38)],_0x26f840);let _0x385b34;try{_0x385b34=await _0x2b28cb[_0x2017(0x39)](getUserAuthHeaders),console[_0x2017(0x29)](_0x2b28cb['dNuSi']);}catch(_0xf7772c){console[_0x2017(0x3a)](_0x2b28cb[_0x2017(0x3b)]),_0x385b34=_0x2b28cb[_0x2017(0x3c)](getApiHeaders);}const _0xa49ffd=await _0x2b28cb['SLjZW'](fetch,API_CONFIG[_0x2017(0x3d)]+_0x2017(0x3e),{'method':'POST','headers':_0x385b34,'body':JSON['stringify']({'userId':_0x26f840,'profileData':_0xf3f326})});if(!_0xa49ffd['ok']){const _0x1b31b9=await _0xa49ffd[_0x2017(0x3f)]();return console[_0x2017(0xb)](_0x2b28cb[_0x2017(0x40)],_0xa49ffd['status'],_0x1b31b9),await _0x2b28cb[_0x2017(0x41)](storeLinkedInProfileLocally,_0xf3f326),{'success':![],'error':_0x2017(0x42)+_0xa49ffd[_0x2017(0x43)]};}const _0x391ea4=await _0xa49ffd[_0x2017(0x44)]();return console[_0x2017(0x29)](_0x2b28cb[_0x2017(0x45)],_0x391ea4),await _0x2b28cb['LGoAU'](storeLinkedInProfileLocally,_0xf3f326),{'success':!![],'message':_0x2b28cb[_0x2017(0x46)]};}else return _0x2b28cb[_0x2017(0x3c)](_0x2f094d);}catch(_0x3ddef5){if(_0x2b28cb['IBmnp'](_0x2b28cb['cxmsg'],_0x2b28cb[_0x2017(0x47)]))return console[_0x2017(0xb)](_0x2017(0x48),_0x3ddef5),await _0x2b28cb[_0x2017(0x49)](storeLinkedInProfileLocally,_0xf3f326),{'success':![],'error':_0x2b28cb[_0x2017(0x4a)](_0x3ddef5,Error)?_0x3ddef5[_0x2017(0x4b)]:_0x2017(0x4c)};else _0x1775c9[_0x2017(0x3a)]('⚠️\x20[LINKEDIN\x20PROFILE]\x20No\x20user\x20auth,\x20using\x20basic\x20headers'),_0x32e56c=_0x2b28cb[_0x2017(0x4d)](_0x1e01c9);}};export const storeLinkedInProfile=async(_0x207688,_0x5ac8ee)=>{const _0x33d17e={'bpfBq':_0x2017(0x1f),'xjNvz':_0x2017(0x4e),'qKgFy':function(_0x1a7023,_0x4e2e96){return _0x1a7023 instanceof _0x4e2e96;},'amuof':_0x2017(0x4f),'oTHVR':function(_0x5d78f3,_0x3b49e0){return _0x5d78f3(_0x3b49e0);},'fVZYL':function(_0x565235,_0x8b807b,_0x170e6e){return _0x565235(_0x8b807b,_0x170e6e);},'EsBQo':function(_0x1bcc6d,_0x2ec2e7){return _0x1bcc6d!==_0x2ec2e7;},'WjxId':_0x2017(0x50),'AkvBo':'wONwR','Nitme':_0x2017(0x51),'kzBDk':_0x2017(0xc),'LSySt':_0x2017(0x24),'GONAF':_0x2017(0x52),'TUnnJ':'Unknown\x20error'};try{if('CUVNu'!==_0x2017(0x53))return _0x4b52bd[_0x2017(0xb)](_0x33d17e[_0x2017(0x54)],_0x3babe1),![];else{console[_0x2017(0x29)](_0x33d17e['amuof']),await _0x33d17e[_0x2017(0x55)](storeLinkedInProfileLocally,_0x5ac8ee);const _0x2a19ee=await _0x33d17e['fVZYL'](storeLinkedInProfileToBackend,_0x207688,_0x5ac8ee);if(!_0x2a19ee[_0x2017(0x56)])return _0x33d17e['EsBQo'](_0x33d17e['WjxId'],_0x33d17e[_0x2017(0x57)])?(console[_0x2017(0x3a)](_0x33d17e['Nitme']),{'success':!![],'message':_0x33d17e[_0x2017(0x58)]}):_0x3765a4['parse'](_0x4c6a5c);return{'success':!![],'message':_0x33d17e[_0x2017(0x59)]};}}catch(_0x38d51b){return _0x33d17e[_0x2017(0x5a)]!==_0x33d17e[_0x2017(0x5a)]?(_0x427ebd[_0x2017(0xb)](_0x33d17e['xjNvz'],_0x16e5aa),{'success':![],'error':_0x33d17e[_0x2017(0x5b)](_0x41feb4,_0x48c88f)?_0x571ffc[_0x2017(0x4b)]:_0x2017(0x4c)}):(console[_0x2017(0xb)](_0x33d17e[_0x2017(0x5c)],_0x38d51b),{'success':![],'error':_0x38d51b instanceof Error?_0x38d51b[_0x2017(0x4b)]:_0x33d17e[_0x2017(0x5d)]});}};export const useLinkedInProfileExtractor=()=>{const _0x1b0af0={'HZziq':function(_0x45dc52,_0x127179,_0x2ed9e4){return _0x45dc52(_0x127179,_0x2ed9e4);},'HJFpk':function(_0x4c39bc,_0x10aba4){return _0x4c39bc===_0x10aba4;},'mXbca':_0x2017(0x5e),'TLpFU':_0x2017(0x5f),'lfxvY':function(_0x5c7161){return _0x5c7161();}},_0x15ad5e=async(_0x592345,_0x1cff5c)=>{return _0x1b0af0[_0x2017(0x60)](storeLinkedInProfile,_0x592345,_0x1cff5c);},_0x1f940b=async()=>{return _0x1b0af0[_0x2017(0x61)](_0x1b0af0['mXbca'],_0x1b0af0[_0x2017(0x62)])?_0x2b414b(_0x516a55,_0x2dddc6):_0x1b0af0['lfxvY'](getLinkedInProfileLocally);},_0x40cb2d=async()=>{return clearLinkedInProfileLocally();};return{'storeProfile':_0x15ad5e,'getStoredProfile':_0x1f940b,'clearProfile':_0x40cb2d};};export default{'storeLinkedInProfile':storeLinkedInProfile,'storeLinkedInProfileLocally':storeLinkedInProfileLocally,'getLinkedInProfileLocally':getLinkedInProfileLocally,'clearLinkedInProfileLocally':clearLinkedInProfileLocally,'storeLinkedInProfileToBackend':storeLinkedInProfileToBackend,'useLinkedInProfileExtractor':useLinkedInProfileExtractor};
1
+ /**
2
+ * LinkedIn Profile Service
3
+ * Handles storing and managing LinkedIn profile data extracted from DOM
4
+ * Similar to chatGPTConversationService pattern
5
+ */
6
+
7
+ import AsyncStorage from '@react-native-async-storage/async-storage';
8
+ import { getUserAuthHeaders, getApiHeaders, API_CONFIG } from '../config/api';
9
+ import { getUserIdFromToken } from './jwtStorageService';
10
+
11
+ /**
12
+ * LinkedIn Profile Data Types
13
+ */
14
+
15
+ // AsyncStorage keys
16
+ const LINKEDIN_PROFILE_KEY = '@onairos_linkedin_profile';
17
+ const LINKEDIN_PROFILE_TIMESTAMP_KEY = '@onairos_linkedin_profile_timestamp';
18
+
19
+ /**
20
+ * Store LinkedIn profile data locally
21
+ */
22
+ export const storeLinkedInProfileLocally = async profileData => {
23
+ try {
24
+ console.log('💾 [LINKEDIN PROFILE] Storing profile data locally...');
25
+ await AsyncStorage.setItem(LINKEDIN_PROFILE_KEY, JSON.stringify(profileData));
26
+ await AsyncStorage.setItem(LINKEDIN_PROFILE_TIMESTAMP_KEY, new Date().toISOString());
27
+ console.log('✅ [LINKEDIN PROFILE] Profile stored locally');
28
+ return true;
29
+ } catch (error) {
30
+ console.error('❌ [LINKEDIN PROFILE] Failed to store locally:', error);
31
+ return false;
32
+ }
33
+ };
34
+
35
+ /**
36
+ * Get locally stored LinkedIn profile data
37
+ */
38
+ export const getLinkedInProfileLocally = async () => {
39
+ try {
40
+ const data = await AsyncStorage.getItem(LINKEDIN_PROFILE_KEY);
41
+ if (data) {
42
+ return JSON.parse(data);
43
+ }
44
+ return null;
45
+ } catch (error) {
46
+ console.error('❌ [LINKEDIN PROFILE] Failed to get local profile:', error);
47
+ return null;
48
+ }
49
+ };
50
+
51
+ /**
52
+ * Clear locally stored LinkedIn profile data
53
+ */
54
+ export const clearLinkedInProfileLocally = async () => {
55
+ try {
56
+ await AsyncStorage.removeItem(LINKEDIN_PROFILE_KEY);
57
+ await AsyncStorage.removeItem(LINKEDIN_PROFILE_TIMESTAMP_KEY);
58
+ return true;
59
+ } catch (error) {
60
+ console.error('❌ [LINKEDIN PROFILE] Failed to clear local profile:', error);
61
+ return false;
62
+ }
63
+ };
64
+
65
+ /**
66
+ * Store LinkedIn profile data to backend
67
+ * This sends the extracted profile data to the Onairos backend for processing
68
+ */
69
+ export const storeLinkedInProfileToBackend = async (userId, profileData) => {
70
+ try {
71
+ var _profileData$headline, _profileData$experien, _profileData$educatio, _profileData$skills;
72
+ console.log('📤 [LINKEDIN PROFILE] Storing profile data to backend...');
73
+ console.log('📤 [LINKEDIN PROFILE] User ID:', userId);
74
+ console.log('📤 [LINKEDIN PROFILE] Profile summary:', {
75
+ name: profileData.fullName,
76
+ headline: (_profileData$headline = profileData.headline) === null || _profileData$headline === void 0 ? void 0 : _profileData$headline.substring(0, 50),
77
+ experienceCount: ((_profileData$experien = profileData.experience) === null || _profileData$experien === void 0 ? void 0 : _profileData$experien.length) || 0,
78
+ educationCount: ((_profileData$educatio = profileData.education) === null || _profileData$educatio === void 0 ? void 0 : _profileData$educatio.length) || 0,
79
+ skillsCount: ((_profileData$skills = profileData.skills) === null || _profileData$skills === void 0 ? void 0 : _profileData$skills.length) || 0
80
+ });
81
+
82
+ // Get the actual userId (UUID) from JWT token
83
+ const jwtUserId = await getUserIdFromToken();
84
+ const effectiveUserId = jwtUserId || userId;
85
+ console.log('📤 [LINKEDIN PROFILE] Effective userId:', effectiveUserId);
86
+
87
+ // Get authenticated headers
88
+ let headers;
89
+ try {
90
+ headers = await getUserAuthHeaders();
91
+ console.log('🔑 [LINKEDIN PROFILE] Using authenticated headers');
92
+ } catch (authError) {
93
+ console.warn('⚠️ [LINKEDIN PROFILE] No user auth, using basic headers');
94
+ headers = getApiHeaders();
95
+ }
96
+
97
+ // Send to backend
98
+ const response = await fetch(`${API_CONFIG.BASE_URL}/enoch/linkedin/store-profile`, {
99
+ method: 'POST',
100
+ headers,
101
+ body: JSON.stringify({
102
+ userId: effectiveUserId,
103
+ profileData: profileData
104
+ })
105
+ });
106
+ if (!response.ok) {
107
+ const errorText = await response.text();
108
+ console.error('❌ [LINKEDIN PROFILE] Backend storage failed:', response.status, errorText);
109
+
110
+ // Store locally as fallback
111
+ await storeLinkedInProfileLocally(profileData);
112
+ return {
113
+ success: false,
114
+ error: `Backend storage failed: ${response.status}`
115
+ };
116
+ }
117
+ const result = await response.json();
118
+ console.log('✅ [LINKEDIN PROFILE] Backend storage successful:', result);
119
+
120
+ // Also store locally
121
+ await storeLinkedInProfileLocally(profileData);
122
+ return {
123
+ success: true,
124
+ message: 'Profile stored successfully'
125
+ };
126
+ } catch (error) {
127
+ console.error('❌ [LINKEDIN PROFILE] Storage error:', error);
128
+
129
+ // Store locally as fallback
130
+ await storeLinkedInProfileLocally(profileData);
131
+ return {
132
+ success: false,
133
+ error: error instanceof Error ? error.message : 'Unknown error'
134
+ };
135
+ }
136
+ };
137
+
138
+ /**
139
+ * Combined function to store profile both locally and to backend
140
+ */
141
+ export const storeLinkedInProfile = async (userId, profileData) => {
142
+ try {
143
+ console.log('💼 [LINKEDIN PROFILE] Initiating profile storage...');
144
+
145
+ // Store locally first (immediate)
146
+ await storeLinkedInProfileLocally(profileData);
147
+
148
+ // Then try to store to backend (may fail if endpoint doesn't exist yet)
149
+ const backendResult = await storeLinkedInProfileToBackend(userId, profileData);
150
+ if (!backendResult.success) {
151
+ console.warn('⚠️ [LINKEDIN PROFILE] Backend storage failed, but local storage succeeded');
152
+ // Return success since local storage worked
153
+ return {
154
+ success: true,
155
+ message: 'Profile stored locally (backend storage pending)'
156
+ };
157
+ }
158
+ return {
159
+ success: true,
160
+ message: 'Profile stored successfully'
161
+ };
162
+ } catch (error) {
163
+ console.error('❌ [LINKEDIN PROFILE] Store profile error:', error);
164
+ return {
165
+ success: false,
166
+ error: error instanceof Error ? error.message : 'Unknown error'
167
+ };
168
+ }
169
+ };
170
+
171
+ /**
172
+ * Hook for LinkedIn profile extraction
173
+ * Returns functions to handle profile extraction workflow
174
+ */
175
+ export const useLinkedInProfileExtractor = () => {
176
+ /**
177
+ * Store extracted profile data
178
+ */
179
+ const storeProfile = async (userId, profileData) => {
180
+ return storeLinkedInProfile(userId, profileData);
181
+ };
182
+
183
+ /**
184
+ * Get stored profile data
185
+ */
186
+ const getStoredProfile = async () => {
187
+ return getLinkedInProfileLocally();
188
+ };
189
+
190
+ /**
191
+ * Clear stored profile data
192
+ */
193
+ const clearProfile = async () => {
194
+ return clearLinkedInProfileLocally();
195
+ };
196
+ return {
197
+ storeProfile,
198
+ getStoredProfile,
199
+ clearProfile
200
+ };
201
+ };
202
+ export default {
203
+ storeLinkedInProfile,
204
+ storeLinkedInProfileLocally,
205
+ getLinkedInProfileLocally,
206
+ clearLinkedInProfileLocally,
207
+ storeLinkedInProfileToBackend,
208
+ useLinkedInProfileExtractor
209
+ };
210
+ //# sourceMappingURL=linkedinProfileService.js.map