@onairos/react-native 3.7.2 → 3.7.3

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 +116 -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 +109 -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,9 +1,222 @@
1
- 'use strict';
2
- // Onairos SDK - Asset Registry (auto-generated)
3
- var __ONAIROS_REQ_REGISTRY__ = [
4
- require("@react-native-async-storage/async-storage"),
5
- require("../config/api"),
6
- require("./jwtStorageService")
7
- ];
8
- function __ONAIROS_REQ_FUNC__(i) { return __ONAIROS_REQ_REGISTRY__[i]; }
9
- Object[_0x17b8(0x0)](exports,'__esModule',{'value':!![]}),exports[_0x17b8(0x1)]=exports[_0x17b8(0x2)]=exports[_0x17b8(0x3)]=exports[_0x17b8(0x4)]=exports[_0x17b8(0x5)]=exports['default']=exports[_0x17b8(0x6)]=void 0x0;var _asyncStorage=_interopRequireDefault(__ONAIROS_REQ_FUNC__(0x0)),_api=__ONAIROS_REQ_FUNC__(0x1),_jwtStorageService=__ONAIROS_REQ_FUNC__(0x2);function _0x8d85(){const _0x735d70=['defineProperty','useLinkedInProfileExtractor','storeLinkedInProfileToBackend','storeLinkedInProfileLocally','storeLinkedInProfile','getLinkedInProfileLocally','clearLinkedInProfileLocally','__esModule','@onairos_linkedin_profile_timestamp','❌\x20[LINKEDIN\x20PROFILE]\x20Failed\x20to\x20clear\x20local\x20profile:','muZsK','4|3|1|2|0','✅\x20[LINKEDIN\x20PROFILE]\x20Profile\x20stored\x20locally','💾\x20[LINKEDIN\x20PROFILE]\x20Storing\x20profile\x20data\x20locally...','jCgJk','ZcUxz','split','setItem','toISOString','log','htAfq','default','stringify','uNPBy','fKMcF','ZeWvE','error','rTweR','❌\x20[LINKEDIN\x20PROFILE]\x20Failed\x20to\x20get\x20local\x20profile:','getItem','Nkklk','IsRFJ','parse','PKTWo','YCmCT','removeItem','cyKho','Yddmn','QUHFG','PXoDc','❌\x20[LINKEDIN\x20PROFILE]\x20Store\x20profile\x20error:','Unknown\x20error','⚠️\x20[LINKEDIN\x20PROFILE]\x20Backend\x20storage\x20failed,\x20but\x20local\x20storage\x20succeeded','Profile\x20stored\x20locally\x20(backend\x20storage\x20pending)','📤\x20[LINKEDIN\x20PROFILE]\x20Profile\x20summary:','YmhIV','PcOKF','bwOiz','❌\x20[LINKEDIN\x20PROFILE]\x20Backend\x20storage\x20failed:','dmzPR','lncwH','❌\x20[LINKEDIN\x20PROFILE]\x20Storage\x20error:','📤\x20[LINKEDIN\x20PROFILE]\x20Storing\x20profile\x20data\x20to\x20backend...','📤\x20[LINKEDIN\x20PROFILE]\x20User\x20ID:','jCYXJ','fullName','iZMfn','substring','Sgftv','experience','length','education','dMGxd','skills','getUserIdFromToken','📤\x20[LINKEDIN\x20PROFILE]\x20Effective\x20userId:','cDUUu','emznX','xjlkR','getUserAuthHeaders','LQqrm','pnpRB','message','ovRyK','BQYfd','warn','⚠️\x20[LINKEDIN\x20PROFILE]\x20No\x20user\x20auth,\x20using\x20basic\x20headers','SfWjC','EEBqj','API_CONFIG','text','JOvhT','Backend\x20storage\x20failed:\x20','status','json','fZrgg','psbRA','Profile\x20stored\x20successfully','WAHCx','PcLvR','pddby','gpKAm','💼\x20[LINKEDIN\x20PROFILE]\x20Initiating\x20profile\x20storage...','FmGRX','ATRTn','QRXKH','aaQiv','QOtVr','PhTRY','VQUhS','qZlMK','wlBoR','ewauj','gDkvX'];_0x8d85=function(){return _0x735d70;};return _0x8d85();}function _interopRequireDefault(_0x55e903){return _0x55e903&&_0x55e903[_0x17b8(0x7)]?_0x55e903:{'default':_0x55e903};}const LINKEDIN_PROFILE_KEY='@onairos_linkedin_profile',LINKEDIN_PROFILE_TIMESTAMP_KEY=_0x17b8(0x8),storeLinkedInProfileLocally=async _0x12b0a8=>{const _0x46ee6e={'fKMcF':_0x17b8(0x9),'XMBet':'❌\x20[LINKEDIN\x20PROFILE]\x20Failed\x20to\x20store\x20locally:','ZOrAM':function(_0x1d594d,_0x43007e){return _0x1d594d===_0x43007e;},'YcWLv':_0x17b8(0xa),'ZcUxz':_0x17b8(0xb),'htAfq':_0x17b8(0xc),'uNPBy':_0x17b8(0xd),'BAKOg':function(_0x247368,_0x250aa2){return _0x247368!==_0x250aa2;},'ZeWvE':_0x17b8(0xe)};try{if(_0x46ee6e['ZOrAM'](_0x46ee6e['YcWLv'],_0x46ee6e['YcWLv'])){const _0x30c0f7=_0x46ee6e[_0x17b8(0xf)][_0x17b8(0x10)]('|');let _0x5ef557=0x0;while(!![]){switch(_0x30c0f7[_0x5ef557++]){case'0':return!![];case'1':await _asyncStorage['default'][_0x17b8(0x11)](LINKEDIN_PROFILE_TIMESTAMP_KEY,new Date()[_0x17b8(0x12)]());continue;case'2':console[_0x17b8(0x13)](_0x46ee6e[_0x17b8(0x14)]);continue;case'3':await _asyncStorage[_0x17b8(0x15)][_0x17b8(0x11)](LINKEDIN_PROFILE_KEY,JSON[_0x17b8(0x16)](_0x12b0a8));continue;case'4':console[_0x17b8(0x13)](_0x46ee6e[_0x17b8(0x17)]);continue;}break;}}else return _0x5898bc['error'](_0x46ee6e[_0x17b8(0x18)],_0x582037),![];}catch(_0x190058){return _0x46ee6e['BAKOg'](_0x46ee6e[_0x17b8(0x19)],_0x17b8(0xe))?(_0xa4cf42[_0x17b8(0x1a)](_0x46ee6e['XMBet'],_0x52a082),![]):(console[_0x17b8(0x1a)]('❌\x20[LINKEDIN\x20PROFILE]\x20Failed\x20to\x20store\x20locally:',_0x190058),![]);}};exports[_0x17b8(0x3)]=storeLinkedInProfileLocally;const getLinkedInProfileLocally=async()=>{const _0x142fbe={'Nkklk':function(_0x341e57,_0x10404e){return _0x341e57===_0x10404e;},'IsRFJ':_0x17b8(0x1b),'PKTWo':_0x17b8(0x1c)};try{const _0x35c400=await _asyncStorage['default'][_0x17b8(0x1d)](LINKEDIN_PROFILE_KEY);if(_0x35c400)return _0x142fbe[_0x17b8(0x1e)](_0x142fbe[_0x17b8(0x1f)],_0x17b8(0x1b))?JSON[_0x17b8(0x20)](_0x35c400):_0x55f49b[_0x17b8(0x20)](_0x4b4a7b);return null;}catch(_0x1a123a){return console['error'](_0x142fbe[_0x17b8(0x21)],_0x1a123a),null;}};exports[_0x17b8(0x5)]=getLinkedInProfileLocally;const clearLinkedInProfileLocally=async()=>{const _0x1be9df={'PXoDc':function(_0x32d51a,_0x1f5a4e,_0x313c0e){return _0x32d51a(_0x1f5a4e,_0x313c0e);},'cyKho':function(_0x2b643d,_0x26f2d4){return _0x2b643d===_0x26f2d4;},'Yddmn':_0x17b8(0x22)};try{return await _asyncStorage[_0x17b8(0x15)][_0x17b8(0x23)](LINKEDIN_PROFILE_KEY),await _asyncStorage[_0x17b8(0x15)][_0x17b8(0x23)](LINKEDIN_PROFILE_TIMESTAMP_KEY),!![];}catch(_0x317512){return _0x1be9df[_0x17b8(0x24)](_0x1be9df[_0x17b8(0x25)],_0x17b8(0x26))?_0x1be9df[_0x17b8(0x27)](_0x1815a7,_0x4b66a6,_0x2783db):(console[_0x17b8(0x1a)]('❌\x20[LINKEDIN\x20PROFILE]\x20Failed\x20to\x20clear\x20local\x20profile:',_0x317512),![]);}};exports[_0x17b8(0x6)]=clearLinkedInProfileLocally;const storeLinkedInProfileToBackend=async(_0x39b664,_0x6c4fc8)=>{const _0x10d1d2={'pnpRB':_0x17b8(0x28),'KVbnc':function(_0x34f1a5,_0xe407f0){return _0x34f1a5 instanceof _0xe407f0;},'ovRyK':_0x17b8(0x29),'SfWjC':'❌\x20[LINKEDIN\x20PROFILE]\x20Failed\x20to\x20get\x20local\x20profile:','PcLvR':_0x17b8(0x2a),'pddby':_0x17b8(0x2b),'jCYXJ':_0x17b8(0x2c),'iZMfn':function(_0x312a61,_0xe6b542){return _0x312a61===_0xe6b542;},'Sgftv':function(_0x53a521,_0x219ec9){return _0x53a521===_0x219ec9;},'dMGxd':function(_0x48b728,_0x3fc0dd){return _0x48b728===_0x3fc0dd;},'cDUUu':function(_0x1791eb,_0x5703d9){return _0x1791eb!==_0x5703d9;},'emznX':_0x17b8(0x2d),'xjlkR':_0x17b8(0x2e),'LQqrm':'🔑\x20[LINKEDIN\x20PROFILE]\x20Using\x20authenticated\x20headers','BQYfd':_0x17b8(0x2f),'EEBqj':function(_0x493352,_0x1d8dbf,_0x1d2564){return _0x493352(_0x1d8dbf,_0x1d2564);},'JOvhT':_0x17b8(0x30),'fZrgg':'✅\x20[LINKEDIN\x20PROFILE]\x20Backend\x20storage\x20successful:','psbRA':function(_0x15f8f6,_0x4802d4){return _0x15f8f6(_0x4802d4);},'WAHCx':_0x17b8(0x31),'KPVxe':_0x17b8(0x32),'gpKAm':_0x17b8(0x33),'cAzjt':function(_0x238cfd,_0x389b6a){return _0x238cfd instanceof _0x389b6a;}};try{var _0x1f236c,_0x3ccf59,_0x27151d,_0x4ae36b;console[_0x17b8(0x13)](_0x17b8(0x34)),console[_0x17b8(0x13)](_0x17b8(0x35),_0x39b664),console[_0x17b8(0x13)](_0x10d1d2[_0x17b8(0x36)],{'name':_0x6c4fc8[_0x17b8(0x37)],'headline':_0x10d1d2[_0x17b8(0x38)](_0x1f236c=_0x6c4fc8['headline'],null)||_0x10d1d2[_0x17b8(0x38)](_0x1f236c,void 0x0)?void 0x0:_0x1f236c[_0x17b8(0x39)](0x0,0x32),'experienceCount':(_0x10d1d2[_0x17b8(0x3a)](_0x3ccf59=_0x6c4fc8[_0x17b8(0x3b)],null)||_0x3ccf59===void 0x0?void 0x0:_0x3ccf59[_0x17b8(0x3c)])||0x0,'educationCount':(_0x10d1d2['iZMfn'](_0x27151d=_0x6c4fc8[_0x17b8(0x3d)],null)||_0x10d1d2[_0x17b8(0x38)](_0x27151d,void 0x0)?void 0x0:_0x27151d['length'])||0x0,'skillsCount':(_0x10d1d2[_0x17b8(0x3e)](_0x4ae36b=_0x6c4fc8[_0x17b8(0x3f)],null)||_0x4ae36b===void 0x0?void 0x0:_0x4ae36b['length'])||0x0});const _0x5eecf6=await(0x0,_jwtStorageService[_0x17b8(0x40)])(),_0x30458b=_0x5eecf6||_0x39b664;console['log'](_0x17b8(0x41),_0x30458b);let _0x428330;try{if(_0x10d1d2[_0x17b8(0x42)](_0x10d1d2[_0x17b8(0x43)],_0x10d1d2[_0x17b8(0x44)]))_0x428330=await(0x0,_api[_0x17b8(0x45)])(),console[_0x17b8(0x13)](_0x10d1d2[_0x17b8(0x46)]);else return _0x31de69[_0x17b8(0x1a)](_0x10d1d2[_0x17b8(0x47)],_0x12a95c),{'success':![],'error':_0x10d1d2['KVbnc'](_0x1c7678,_0x10ba82)?_0x2c2574[_0x17b8(0x48)]:_0x10d1d2[_0x17b8(0x49)]};}catch(_0x3b0247){if(_0x10d1d2['BQYfd']===_0x10d1d2[_0x17b8(0x4a)])console[_0x17b8(0x4b)](_0x17b8(0x4c)),_0x428330=(0x0,_api['getApiHeaders'])();else return _0x4c8f9b[_0x17b8(0x1a)](_0x10d1d2[_0x17b8(0x4d)],_0x1b73c4),null;}const _0x17f13b=await _0x10d1d2[_0x17b8(0x4e)](fetch,_api[_0x17b8(0x4f)]['BASE_URL']+'/enoch/linkedin/store-profile',{'method':'POST','headers':_0x428330,'body':JSON['stringify']({'userId':_0x30458b,'profileData':_0x6c4fc8})});if(!_0x17f13b['ok']){const _0x552679=await _0x17f13b[_0x17b8(0x50)]();return console['error'](_0x10d1d2[_0x17b8(0x51)],_0x17f13b['status'],_0x552679),await storeLinkedInProfileLocally(_0x6c4fc8),{'success':![],'error':_0x17b8(0x52)+_0x17f13b[_0x17b8(0x53)]};}const _0x2a7479=await _0x17f13b[_0x17b8(0x54)]();return console[_0x17b8(0x13)](_0x10d1d2[_0x17b8(0x55)],_0x2a7479),await _0x10d1d2[_0x17b8(0x56)](storeLinkedInProfileLocally,_0x6c4fc8),{'success':!![],'message':_0x17b8(0x57)};}catch(_0x217ac1){return _0x10d1d2['dMGxd'](_0x10d1d2[_0x17b8(0x58)],_0x10d1d2['KPVxe'])?(_0xf44ef6[_0x17b8(0x4b)](_0x10d1d2[_0x17b8(0x59)]),{'success':!![],'message':_0x10d1d2[_0x17b8(0x5a)]}):(console[_0x17b8(0x1a)](_0x10d1d2[_0x17b8(0x5b)],_0x217ac1),await _0x10d1d2[_0x17b8(0x56)](storeLinkedInProfileLocally,_0x6c4fc8),{'success':![],'error':_0x10d1d2['cAzjt'](_0x217ac1,Error)?_0x217ac1[_0x17b8(0x48)]:_0x10d1d2[_0x17b8(0x49)]});}};exports[_0x17b8(0x2)]=storeLinkedInProfileToBackend;function _0x17b8(_0x8d853,_0x17b845){_0x8d853=_0x8d853-0x0;const _0x14e7e2=_0x8d85();let _0x2d46d2=_0x14e7e2[_0x8d853];return _0x2d46d2;}const storeLinkedInProfile=async(_0x32556e,_0x1fe5b0)=>{const _0x1d15c4={'FmGRX':_0x17b8(0x5c),'ATRTn':function(_0x56ee44,_0x61d218){return _0x56ee44(_0x61d218);},'QRXKH':function(_0x199c9a,_0x44601f,_0x2b6a7b){return _0x199c9a(_0x44601f,_0x2b6a7b);},'aaQiv':_0x17b8(0x2a),'QOtVr':_0x17b8(0x2b),'PhTRY':'Profile\x20stored\x20successfully','VQUhS':function(_0x2de9cf,_0x36ea74){return _0x2de9cf instanceof _0x36ea74;},'rdbyt':_0x17b8(0x29)};try{console[_0x17b8(0x13)](_0x1d15c4[_0x17b8(0x5d)]),await _0x1d15c4[_0x17b8(0x5e)](storeLinkedInProfileLocally,_0x1fe5b0);const _0x481cc3=await _0x1d15c4[_0x17b8(0x5f)](storeLinkedInProfileToBackend,_0x32556e,_0x1fe5b0);if(!_0x481cc3['success'])return console['warn'](_0x1d15c4[_0x17b8(0x60)]),{'success':!![],'message':_0x1d15c4[_0x17b8(0x61)]};return{'success':!![],'message':_0x1d15c4[_0x17b8(0x62)]};}catch(_0xe36338){return console[_0x17b8(0x1a)](_0x17b8(0x28),_0xe36338),{'success':![],'error':_0x1d15c4[_0x17b8(0x63)](_0xe36338,Error)?_0xe36338[_0x17b8(0x48)]:_0x1d15c4['rdbyt']};}};exports[_0x17b8(0x4)]=storeLinkedInProfile;const useLinkedInProfileExtractor=()=>{const _0x375da3={'zSosH':function(_0x286568,_0x4e3c6d,_0x4df021){return _0x286568(_0x4e3c6d,_0x4df021);},'wlBoR':function(_0x3b0556){return _0x3b0556();},'ewauj':_0x17b8(0x64),'gDkvX':function(_0x15857c){return _0x15857c();}},_0x693dc3=async(_0x159dae,_0x3811ac)=>{return _0x375da3['zSosH'](storeLinkedInProfile,_0x159dae,_0x3811ac);},_0x4b3f28=async()=>{return _0x375da3[_0x17b8(0x65)](getLinkedInProfileLocally);},_0x4b77d7=async()=>{return _0x375da3[_0x17b8(0x66)]===_0x375da3[_0x17b8(0x66)]?_0x375da3[_0x17b8(0x67)](clearLinkedInProfileLocally):_0x375da3[_0x17b8(0x65)](_0x1c9718);};return{'storeProfile':_0x693dc3,'getStoredProfile':_0x4b3f28,'clearProfile':_0x4b77d7};};exports[_0x17b8(0x1)]=useLinkedInProfileExtractor;var _default=exports['default']={'storeLinkedInProfile':storeLinkedInProfile,'storeLinkedInProfileLocally':storeLinkedInProfileLocally,'getLinkedInProfileLocally':getLinkedInProfileLocally,'clearLinkedInProfileLocally':clearLinkedInProfileLocally,'storeLinkedInProfileToBackend':storeLinkedInProfileToBackend,'useLinkedInProfileExtractor':useLinkedInProfileExtractor};
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useLinkedInProfileExtractor = exports.storeLinkedInProfileToBackend = exports.storeLinkedInProfileLocally = exports.storeLinkedInProfile = exports.getLinkedInProfileLocally = exports.default = exports.clearLinkedInProfileLocally = void 0;
7
+ var _asyncStorage = _interopRequireDefault(require("@react-native-async-storage/async-storage"));
8
+ var _api = require("../config/api");
9
+ var _jwtStorageService = require("./jwtStorageService");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ /**
12
+ * LinkedIn Profile Service
13
+ * Handles storing and managing LinkedIn profile data extracted from DOM
14
+ * Similar to chatGPTConversationService pattern
15
+ */
16
+
17
+ /**
18
+ * LinkedIn Profile Data Types
19
+ */
20
+
21
+ // AsyncStorage keys
22
+ const LINKEDIN_PROFILE_KEY = '@onairos_linkedin_profile';
23
+ const LINKEDIN_PROFILE_TIMESTAMP_KEY = '@onairos_linkedin_profile_timestamp';
24
+
25
+ /**
26
+ * Store LinkedIn profile data locally
27
+ */
28
+ const storeLinkedInProfileLocally = async profileData => {
29
+ try {
30
+ console.log('💾 [LINKEDIN PROFILE] Storing profile data locally...');
31
+ await _asyncStorage.default.setItem(LINKEDIN_PROFILE_KEY, JSON.stringify(profileData));
32
+ await _asyncStorage.default.setItem(LINKEDIN_PROFILE_TIMESTAMP_KEY, new Date().toISOString());
33
+ console.log('✅ [LINKEDIN PROFILE] Profile stored locally');
34
+ return true;
35
+ } catch (error) {
36
+ console.error('❌ [LINKEDIN PROFILE] Failed to store locally:', error);
37
+ return false;
38
+ }
39
+ };
40
+
41
+ /**
42
+ * Get locally stored LinkedIn profile data
43
+ */
44
+ exports.storeLinkedInProfileLocally = storeLinkedInProfileLocally;
45
+ const getLinkedInProfileLocally = async () => {
46
+ try {
47
+ const data = await _asyncStorage.default.getItem(LINKEDIN_PROFILE_KEY);
48
+ if (data) {
49
+ return JSON.parse(data);
50
+ }
51
+ return null;
52
+ } catch (error) {
53
+ console.error('❌ [LINKEDIN PROFILE] Failed to get local profile:', error);
54
+ return null;
55
+ }
56
+ };
57
+
58
+ /**
59
+ * Clear locally stored LinkedIn profile data
60
+ */
61
+ exports.getLinkedInProfileLocally = getLinkedInProfileLocally;
62
+ const clearLinkedInProfileLocally = async () => {
63
+ try {
64
+ await _asyncStorage.default.removeItem(LINKEDIN_PROFILE_KEY);
65
+ await _asyncStorage.default.removeItem(LINKEDIN_PROFILE_TIMESTAMP_KEY);
66
+ return true;
67
+ } catch (error) {
68
+ console.error('❌ [LINKEDIN PROFILE] Failed to clear local profile:', error);
69
+ return false;
70
+ }
71
+ };
72
+
73
+ /**
74
+ * Store LinkedIn profile data to backend
75
+ * This sends the extracted profile data to the Onairos backend for processing
76
+ */
77
+ exports.clearLinkedInProfileLocally = clearLinkedInProfileLocally;
78
+ const storeLinkedInProfileToBackend = async (userId, profileData) => {
79
+ try {
80
+ var _profileData$headline, _profileData$experien, _profileData$educatio, _profileData$skills;
81
+ console.log('📤 [LINKEDIN PROFILE] Storing profile data to backend...');
82
+ console.log('📤 [LINKEDIN PROFILE] User ID:', userId);
83
+ console.log('📤 [LINKEDIN PROFILE] Profile summary:', {
84
+ name: profileData.fullName,
85
+ headline: (_profileData$headline = profileData.headline) === null || _profileData$headline === void 0 ? void 0 : _profileData$headline.substring(0, 50),
86
+ experienceCount: ((_profileData$experien = profileData.experience) === null || _profileData$experien === void 0 ? void 0 : _profileData$experien.length) || 0,
87
+ educationCount: ((_profileData$educatio = profileData.education) === null || _profileData$educatio === void 0 ? void 0 : _profileData$educatio.length) || 0,
88
+ skillsCount: ((_profileData$skills = profileData.skills) === null || _profileData$skills === void 0 ? void 0 : _profileData$skills.length) || 0
89
+ });
90
+
91
+ // Get the actual userId (UUID) from JWT token
92
+ const jwtUserId = await (0, _jwtStorageService.getUserIdFromToken)();
93
+ const effectiveUserId = jwtUserId || userId;
94
+ console.log('📤 [LINKEDIN PROFILE] Effective userId:', effectiveUserId);
95
+
96
+ // Get authenticated headers
97
+ let headers;
98
+ try {
99
+ headers = await (0, _api.getUserAuthHeaders)();
100
+ console.log('🔑 [LINKEDIN PROFILE] Using authenticated headers');
101
+ } catch (authError) {
102
+ console.warn('⚠️ [LINKEDIN PROFILE] No user auth, using basic headers');
103
+ headers = (0, _api.getApiHeaders)();
104
+ }
105
+
106
+ // Send to backend
107
+ const response = await fetch(`${_api.API_CONFIG.BASE_URL}/enoch/linkedin/store-profile`, {
108
+ method: 'POST',
109
+ headers,
110
+ body: JSON.stringify({
111
+ userId: effectiveUserId,
112
+ profileData: profileData
113
+ })
114
+ });
115
+ if (!response.ok) {
116
+ const errorText = await response.text();
117
+ console.error('❌ [LINKEDIN PROFILE] Backend storage failed:', response.status, errorText);
118
+
119
+ // Store locally as fallback
120
+ await storeLinkedInProfileLocally(profileData);
121
+ return {
122
+ success: false,
123
+ error: `Backend storage failed: ${response.status}`
124
+ };
125
+ }
126
+ const result = await response.json();
127
+ console.log('✅ [LINKEDIN PROFILE] Backend storage successful:', result);
128
+
129
+ // Also store locally
130
+ await storeLinkedInProfileLocally(profileData);
131
+ return {
132
+ success: true,
133
+ message: 'Profile stored successfully'
134
+ };
135
+ } catch (error) {
136
+ console.error('❌ [LINKEDIN PROFILE] Storage error:', error);
137
+
138
+ // Store locally as fallback
139
+ await storeLinkedInProfileLocally(profileData);
140
+ return {
141
+ success: false,
142
+ error: error instanceof Error ? error.message : 'Unknown error'
143
+ };
144
+ }
145
+ };
146
+
147
+ /**
148
+ * Combined function to store profile both locally and to backend
149
+ */
150
+ exports.storeLinkedInProfileToBackend = storeLinkedInProfileToBackend;
151
+ const storeLinkedInProfile = async (userId, profileData) => {
152
+ try {
153
+ console.log('💼 [LINKEDIN PROFILE] Initiating profile storage...');
154
+
155
+ // Store locally first (immediate)
156
+ await storeLinkedInProfileLocally(profileData);
157
+
158
+ // Then try to store to backend (may fail if endpoint doesn't exist yet)
159
+ const backendResult = await storeLinkedInProfileToBackend(userId, profileData);
160
+ if (!backendResult.success) {
161
+ console.warn('⚠️ [LINKEDIN PROFILE] Backend storage failed, but local storage succeeded');
162
+ // Return success since local storage worked
163
+ return {
164
+ success: true,
165
+ message: 'Profile stored locally (backend storage pending)'
166
+ };
167
+ }
168
+ return {
169
+ success: true,
170
+ message: 'Profile stored successfully'
171
+ };
172
+ } catch (error) {
173
+ console.error('❌ [LINKEDIN PROFILE] Store profile error:', error);
174
+ return {
175
+ success: false,
176
+ error: error instanceof Error ? error.message : 'Unknown error'
177
+ };
178
+ }
179
+ };
180
+
181
+ /**
182
+ * Hook for LinkedIn profile extraction
183
+ * Returns functions to handle profile extraction workflow
184
+ */
185
+ exports.storeLinkedInProfile = storeLinkedInProfile;
186
+ const useLinkedInProfileExtractor = () => {
187
+ /**
188
+ * Store extracted profile data
189
+ */
190
+ const storeProfile = async (userId, profileData) => {
191
+ return storeLinkedInProfile(userId, profileData);
192
+ };
193
+
194
+ /**
195
+ * Get stored profile data
196
+ */
197
+ const getStoredProfile = async () => {
198
+ return getLinkedInProfileLocally();
199
+ };
200
+
201
+ /**
202
+ * Clear stored profile data
203
+ */
204
+ const clearProfile = async () => {
205
+ return clearLinkedInProfileLocally();
206
+ };
207
+ return {
208
+ storeProfile,
209
+ getStoredProfile,
210
+ clearProfile
211
+ };
212
+ };
213
+ exports.useLinkedInProfileExtractor = useLinkedInProfileExtractor;
214
+ var _default = exports.default = {
215
+ storeLinkedInProfile,
216
+ storeLinkedInProfileLocally,
217
+ getLinkedInProfileLocally,
218
+ clearLinkedInProfileLocally,
219
+ storeLinkedInProfileToBackend,
220
+ useLinkedInProfileExtractor
221
+ };
222
+ //# sourceMappingURL=linkedinProfileService.js.map
@@ -1,8 +1,230 @@
1
- 'use strict';
2
- // Onairos SDK - Asset Registry (auto-generated)
3
- var __ONAIROS_REQ_REGISTRY__ = [
4
- require("../config/api"),
5
- require("./jwtStorageService")
6
- ];
7
- function __ONAIROS_REQ_FUNC__(i) { return __ONAIROS_REQ_REGISTRY__[i]; }
8
- Object[_0xdeba(0x0)](exports,_0xdeba(0x1),{'value':!![]}),exports['scrapeLinkedInProfile']=exports['isValidLinkedInUrl']=exports['getLinkedInConnectionStatus']=exports[_0xdeba(0x2)]=exports['extractLinkedInUsername']=exports[_0xdeba(0x3)]=void 0x0;var _api=__ONAIROS_REQ_FUNC__(0x0),_jwtStorageService=__ONAIROS_REQ_FUNC__(0x1);const scrapeLinkedInProfile=async(_0x1d365d,_0xb3ac76)=>{const _0x1abdf2={'WxdnK':_0xdeba(0x4),'lZrvh':'🔍\x20[LINKEDIN\x20SCRAPE]\x20Passed\x20User\x20ID:','aqptp':'🔍\x20[LINKEDIN\x20SCRAPE]\x20Profile\x20URL:','vBdMS':function(_0x188c4b,_0x370338){return _0x188c4b||_0x370338;},'NHpAh':_0xdeba(0x5),'gAwTk':_0xdeba(0x6),'KKCrW':function(_0x3dab19,_0x56e770){return _0x3dab19(_0x56e770);},'mwkrh':'❌\x20[LINKEDIN\x20SCRAPE]\x20Invalid\x20LinkedIn\x20URL','dwljC':_0xdeba(0x7),'mQfeF':_0xdeba(0x8),'zUBoc':'cLSRS','tuCcK':'🔑\x20[LINKEDIN\x20SCRAPE]\x20Using\x20authenticated\x20user\x20headers','HfWXN':function(_0x34fcc8,_0x5c173b){return _0x34fcc8!==_0x5c173b;},'FWeYi':_0xdeba(0x9),'LXTEn':_0xdeba(0xa),'bNbao':'⚠️\x20[LINKEDIN\x20SCRAPE]\x20No\x20user\x20auth\x20available,\x20using\x20basic\x20headers:','wkJtw':function(_0x59586f,_0x1282f4,_0x3b98da){return _0x59586f(_0x1282f4,_0x3b98da);},'XDeRi':'❌\x20[LINKEDIN\x20SCRAPE]\x20Failed:','fGCSb':'✅\x20[LINKEDIN\x20SCRAPE]\x20Profile\x20scraped\x20successfully','BOUWz':_0xdeba(0xb),'oTNnA':function(_0x18f104,_0x4ec762){return _0x18f104===_0x4ec762;},'hJHOu':function(_0xf1688b,_0x29cb32){return _0xf1688b===_0x29cb32;},'yedHh':function(_0x5f5ada,_0xac5766){return _0x5f5ada===_0xac5766;},'WaeQK':function(_0x2dbe49,_0x128b2b){return _0x2dbe49===_0x128b2b;},'sMpug':function(_0x2a88c1,_0x15e838){return _0x2a88c1===_0x15e838;},'zPRdo':function(_0x49d270,_0x1e74d9){return _0x49d270===_0x1e74d9;},'aHMKc':_0xdeba(0xc),'CdzLp':_0xdeba(0xd),'RTpSN':function(_0x39b46d,_0x1660ce){return _0x39b46d instanceof _0x1660ce;},'eBCAL':_0xdeba(0xe)};try{var _0x4c11c6,_0x4baefd,_0x16ef14,_0x3ac82b,_0x538fde;console[_0xdeba(0xf)]('🔍\x20[LINKEDIN\x20SCRAPE]\x20Starting\x20profile\x20scrape...'),console[_0xdeba(0xf)](_0x1abdf2[_0xdeba(0x10)],_0x1d365d),console['log'](_0x1abdf2['aqptp'],_0xb3ac76);const _0x156568=await(0x0,_jwtStorageService[_0xdeba(0x11)])(),_0x1662f7=_0x1abdf2['vBdMS'](_0x156568,_0x1d365d);console[_0xdeba(0xf)](_0x1abdf2[_0xdeba(0x12)],_0x156568),console[_0xdeba(0xf)](_0x1abdf2['gAwTk'],_0x1662f7);if(!_0x1abdf2['KKCrW'](isValidLinkedInUrl,_0xb3ac76))return console['error'](_0x1abdf2[_0xdeba(0x13)]),{'success':![],'error':_0x1abdf2['dwljC']};let _0x7b9af7;try{if(_0x1abdf2[_0xdeba(0x14)]===_0x1abdf2[_0xdeba(0x15)])return _0xdeba(0x16)+_0x15f897;else _0x7b9af7=await(0x0,_api['getUserAuthHeaders'])(),console[_0xdeba(0xf)](_0x1abdf2[_0xdeba(0x17)]);}catch(_0xb68cb4){if(_0x1abdf2[_0xdeba(0x18)](_0x1abdf2[_0xdeba(0x19)],_0x1abdf2[_0xdeba(0x1a)]))console[_0xdeba(0x1b)](_0x1abdf2['bNbao'],_0xb68cb4),_0x7b9af7=(0x0,_api[_0xdeba(0x1c)])();else{const _0x55ef4d=_0x24023f[_0xdeba(0x1d)](_0x52aa65);_0x5aa1aa=_0x55ef4d[_0xdeba(0x1e)]||_0x55ef4d['message']||_0x144114;}}const _0x4f6ad2=await _0x1abdf2[_0xdeba(0x1f)](fetch,_api[_0xdeba(0x20)][_0xdeba(0x21)]+'/enoch/linkedin-scrape/scrape-profile',{'method':'POST','headers':_0x7b9af7,'body':JSON['stringify']({'userId':_0x1662f7,'profileUrl':_0xb3ac76})});if(!_0x4f6ad2['ok']){const _0x36acd3=await _0x4f6ad2[_0xdeba(0x22)]();console['error'](_0x1abdf2[_0xdeba(0x23)],_0x4f6ad2[_0xdeba(0x24)],_0x36acd3);let _0x525fc3=_0xdeba(0x25)+_0x4f6ad2[_0xdeba(0x24)];try{const _0x1b329c=JSON[_0xdeba(0x1d)](_0x36acd3);_0x525fc3=_0x1b329c[_0xdeba(0x1e)]||_0x1b329c[_0xdeba(0x26)]||_0x525fc3;}catch{}return{'success':![],'error':_0x525fc3};}const _0x4b8fde=await _0x4f6ad2['json']();return console[_0xdeba(0xf)](_0x1abdf2['fGCSb']),console['log'](_0x1abdf2[_0xdeba(0x27)],{'name':_0x1abdf2[_0xdeba(0x28)](_0x4c11c6=_0x4b8fde[_0xdeba(0x29)],null)||_0x1abdf2[_0xdeba(0x28)](_0x4c11c6,void 0x0)?void 0x0:_0x4c11c6[_0xdeba(0x2a)],'headline':(_0x4baefd=_0x4b8fde[_0xdeba(0x29)])===null||_0x1abdf2[_0xdeba(0x28)](_0x4baefd,void 0x0)?void 0x0:_0x4baefd[_0xdeba(0x2b)],'experienceCount':(_0x1abdf2['oTNnA'](_0x16ef14=_0x4b8fde['profileData'],null)||_0x16ef14===void 0x0||_0x1abdf2['hJHOu'](_0x16ef14=_0x16ef14['experience'],null)||_0x1abdf2[_0xdeba(0x2c)](_0x16ef14,void 0x0)?void 0x0:_0x16ef14[_0xdeba(0x2d)])||0x0,'educationCount':((_0x3ac82b=_0x4b8fde['profileData'])===null||_0x1abdf2[_0xdeba(0x2c)](_0x3ac82b,void 0x0)||_0x1abdf2['WaeQK'](_0x3ac82b=_0x3ac82b[_0xdeba(0x2e)],null)||_0x1abdf2[_0xdeba(0x28)](_0x3ac82b,void 0x0)?void 0x0:_0x3ac82b[_0xdeba(0x2d)])||0x0,'skillsCount':(_0x1abdf2[_0xdeba(0x2f)](_0x538fde=_0x4b8fde['profileData'],null)||_0x538fde===void 0x0||_0x1abdf2[_0xdeba(0x2c)](_0x538fde=_0x538fde[_0xdeba(0x30)],null)||_0x1abdf2[_0xdeba(0x31)](_0x538fde,void 0x0)?void 0x0:_0x538fde['length'])||0x0}),{'success':!![],'data':_0x4b8fde[_0xdeba(0x29)],'message':_0x1abdf2['aHMKc']};}catch(_0xfd2449){if(_0x1abdf2['HfWXN'](_0x1abdf2['CdzLp'],_0x1abdf2[_0xdeba(0x32)]))try{const _0x505ce9=_0x231a49['match'](/linkedin\.com\/in\/([^\/\?#]+)/);return _0x505ce9?_0x505ce9[0x1]:null;}catch(_0x1b24b4){return _0x5ad00e[_0xdeba(0x1e)](_0x1abdf2['WxdnK'],_0x1b24b4),null;}else return console[_0xdeba(0x1e)]('❌\x20[LINKEDIN\x20SCRAPE]\x20Error:',_0xfd2449),{'success':![],'error':_0x1abdf2[_0xdeba(0x33)](_0xfd2449,Error)?_0xfd2449[_0xdeba(0x26)]:_0x1abdf2['eBCAL']};}};exports[_0xdeba(0x34)]=scrapeLinkedInProfile;function _0xdeba(_0x5d60bd,_0xdeba81){_0x5d60bd=_0x5d60bd-0x0;const _0x209a48=_0x5d60();let _0x555a79=_0x209a48[_0x5d60bd];return _0x555a79;}const extractLinkedInUsername=_0x7a8a57=>{const _0x12d884={'nPuSo':_0xdeba(0x35),'vIVIp':function(_0x5dccc7,_0x21b70c){return _0x5dccc7!==_0x21b70c;},'RlYTS':'srMvp','EDSHV':'❌\x20[LINKEDIN]\x20Error\x20extracting\x20username:'};try{const _0x3faf49=_0x7a8a57[_0xdeba(0x36)](/linkedin\.com\/in\/([^\/\?#]+)/);return _0x3faf49?_0x3faf49[0x1]:null;}catch(_0x16d154){return _0x12d884[_0xdeba(0x37)](_0x12d884[_0xdeba(0x38)],_0x12d884[_0xdeba(0x38)])?(_0x434126[_0xdeba(0x1e)](_0x12d884[_0xdeba(0x39)],_0x583d20),{'connected':![]}):(console[_0xdeba(0x1e)](_0x12d884[_0xdeba(0x3a)],_0x16d154),null);}};exports['extractLinkedInUsername']=extractLinkedInUsername;const isValidLinkedInUrl=_0xc72f82=>{const _0x67e417={'jKNUU':function(_0x591b5b,_0x51f83c){return _0x591b5b!==_0x51f83c;},'BNqBh':function(_0x4f0fe7,_0x11e2d3){return _0x4f0fe7!==_0x11e2d3;},'zsZUP':_0xdeba(0x3b),'mtPLR':function(_0x2d9935,_0x5bf381){return _0x2d9935!==_0x5bf381;}};if(!_0xc72f82||_0x67e417['jKNUU'](typeof _0xc72f82,_0xdeba(0x3c)))return![];const _0x5aea65=/linkedin\.com\/in\/[^\/\?#]+/[_0xdeba(0x3d)](_0xc72f82);if(!_0x5aea65){if(_0x67e417[_0xdeba(0x3e)](_0x67e417['zsZUP'],_0xdeba(0x3f)))return![];else{const _0x4465aa=_0xf49c6d['match'](/linkedin\.com\/in\/([^\/\?#]+)/);return _0x4465aa?_0x4465aa[0x1]:null;}}const _0x350cbd=extractLinkedInUsername(_0xc72f82);return _0x67e417[_0xdeba(0x40)](_0x350cbd,null)&&_0x350cbd[_0xdeba(0x2d)]>0x0;};exports[_0xdeba(0x41)]=isValidLinkedInUrl;const formatLinkedInUrl=_0x300258=>{const _0x5eeaf5={'hLbxS':_0xdeba(0x42),'gKVvJ':'https://','iNTUT':function(_0x52fdae,_0x5b942e){return _0x52fdae===_0x5b942e;},'qjaGj':_0xdeba(0x43),'cWwoz':_0xdeba(0x44)};if(_0x300258[_0xdeba(0x45)](_0x5eeaf5[_0xdeba(0x46)])||_0x300258['startsWith'](_0x5eeaf5[_0xdeba(0x47)]))return _0x300258;if(!_0x300258['includes']('/'))return _0xdeba(0x48)+_0x300258;if(_0x300258[_0xdeba(0x45)](_0xdeba(0x49)))return _0x5eeaf5[_0xdeba(0x4a)](_0xdeba(0x4b),_0x5eeaf5[_0xdeba(0x4c)])?(_0x254ea1[_0xdeba(0x1e)](_0xdeba(0x4d)),{'success':![],'error':_0xdeba(0x7)}):_0xdeba(0x4e)+_0x300258;if(_0x300258['startsWith'](_0x5eeaf5[_0xdeba(0x4f)]))return _0xdeba(0x16)+_0x300258;return _0xdeba(0x48)+_0x300258;};exports[_0xdeba(0x2)]=formatLinkedInUrl;const canScrapeProfile=async _0x34fb9d=>{const _0x21aadd={'rbDSu':_0xdeba(0x50),'XzsfO':function(_0x2be974,_0x1b4151){return _0x2be974 instanceof _0x1b4151;},'VqJOV':function(_0x1d5d2d,_0x28d1d0){return _0x1d5d2d!==_0x28d1d0;},'yPrrX':_0xdeba(0x51),'AWMty':function(_0x5dd5e9,_0xb1136d){return _0x5dd5e9!==_0xb1136d;},'QUAKv':_0xdeba(0x52),'YVTrC':_0xdeba(0x53),'AkAse':function(_0x40e2de,_0x17b68c,_0x2eb21b){return _0x40e2de(_0x17b68c,_0x2eb21b);},'JMhee':function(_0x5505dc,_0xf8655b){return _0x5505dc!==_0xf8655b;},'iDCgq':_0xdeba(0x54),'XGpxe':function(_0x1e594e,_0x11777b){return _0x1e594e===_0x11777b;},'QLpQH':_0xdeba(0x55),'Dvfqd':'❌\x20[LINKEDIN]\x20Error\x20checking\x20scrape\x20availability:'};try{let _0xbcc8b;try{if(_0x21aadd[_0xdeba(0x56)](_0x21aadd[_0xdeba(0x57)],_0x21aadd['yPrrX']))return _0x43cfdd[_0xdeba(0x1e)](_0x21aadd['rbDSu'],_0x571f15),{'success':![],'error':_0x21aadd[_0xdeba(0x58)](_0x32fbf0,_0x56c75d)?_0x11e42a['message']:'Unknown\x20error\x20occurred\x20during\x20scraping'};else _0xbcc8b=await(0x0,_api[_0xdeba(0x59)])();}catch{if(_0x21aadd['AWMty'](_0x21aadd[_0xdeba(0x5a)],_0x21aadd[_0xdeba(0x5b)]))_0xbcc8b=(0x0,_api[_0xdeba(0x1c)])();else return'https://linkedin.com/in/'+_0xd86a67;}const _0x35eb15=await _0x21aadd[_0xdeba(0x5c)](fetch,_api[_0xdeba(0x20)]['BASE_URL']+_0xdeba(0x5d)+_0x34fb9d+_0xdeba(0x5e),{'headers':_0xbcc8b});if(_0x35eb15['ok']){if(_0x21aadd['JMhee'](_0x21aadd[_0xdeba(0x5f)],_0x21aadd[_0xdeba(0x5f)]))return _0x4a555d;else{var _0x1a7fea;const _0xb5c04d=await _0x35eb15[_0xdeba(0x60)]();return(_0x21aadd[_0xdeba(0x61)](_0x1a7fea=_0xb5c04d[_0xdeba(0x62)],null)||_0x1a7fea===void 0x0?void 0x0:_0x1a7fea[_0xdeba(0x63)])!==undefined;}}return![];}catch(_0xa16b0f){if(_0x21aadd[_0xdeba(0x61)](_0xdeba(0x55),_0x21aadd[_0xdeba(0x64)]))return console['error'](_0x21aadd[_0xdeba(0x65)],_0xa16b0f),![];else _0x39e286=(0x0,_0x15cde0[_0xdeba(0x1c)])();}};exports[_0xdeba(0x3)]=canScrapeProfile;const getLinkedInConnectionStatus=async _0x59f90a=>{const _0x55c4bd={'mEqsm':_0xdeba(0x66),'MsnEQ':function(_0x29e559,_0xf8355d){return _0x29e559===_0xf8355d;},'vPone':_0xdeba(0x67),'gldox':function(_0x13ce29,_0x104a57,_0x4d58c4){return _0x13ce29(_0x104a57,_0x4d58c4);},'ULPCv':_0xdeba(0x68),'cyYSA':_0xdeba(0x35)};try{if(_0xdeba(0x69)!==_0xdeba(0x69))return![];else{let _0x3d56b1;try{_0x3d56b1=await(0x0,_api[_0xdeba(0x59)])();}catch{if(_0x55c4bd[_0xdeba(0x6a)](_0x55c4bd['vPone'],_0x55c4bd[_0xdeba(0x6b)]))_0x3d56b1=(0x0,_api[_0xdeba(0x1c)])();else return _0x30f93d[_0xdeba(0x1e)](_0x55c4bd[_0xdeba(0x6c)],_0x59f54e),![];}const _0x288343=await _0x55c4bd[_0xdeba(0x6d)](fetch,_api[_0xdeba(0x20)][_0xdeba(0x21)]+'/enoch/linkedin-scrape/scrape-profile/'+_0x59f90a,{'headers':_0x3d56b1});if(_0x288343['ok']){const _0x49c431=await _0x288343[_0xdeba(0x60)]();return _0x49c431;}return{'connected':![]};}}catch(_0x1c4d02){return _0x55c4bd['ULPCv']===_0x55c4bd['ULPCv']?(console['error'](_0x55c4bd[_0xdeba(0x6e)],_0x1c4d02),{'connected':![]}):![];}};exports[_0xdeba(0x6f)]=getLinkedInConnectionStatus;function _0x5d60(){const _0x3e8d8f=['defineProperty','__esModule','formatLinkedInUrl','canScrapeProfile','❌\x20[LINKEDIN]\x20Error\x20extracting\x20username:','🔍\x20[LINKEDIN\x20SCRAPE]\x20JWT\x20userId:','🔍\x20[LINKEDIN\x20SCRAPE]\x20Effective\x20userId\x20(will\x20use):','Invalid\x20LinkedIn\x20profile\x20URL.\x20Please\x20use\x20format:\x20https://linkedin.com/in/username','ybjDw','Wzfyr','JjfPy','📊\x20[LINKEDIN\x20SCRAPE]\x20Data\x20preview:','Profile\x20scraped\x20successfully','andqM','Unknown\x20error\x20occurred\x20during\x20scraping','log','lZrvh','getUserIdFromToken','NHpAh','mwkrh','mQfeF','zUBoc','https://linkedin.com','tuCcK','HfWXN','FWeYi','LXTEn','warn','getApiHeaders','parse','error','wkJtw','API_CONFIG','BASE_URL','text','XDeRi','status','Scraping\x20failed:\x20','message','BOUWz','oTNnA','profileData','fullName','headline','yedHh','length','education','sMpug','skills','zPRdo','CdzLp','RTpSN','scrapeLinkedInProfile','❌\x20[LINKEDIN]\x20Error\x20getting\x20connection\x20status:','match','vIVIp','RlYTS','nPuSo','EDSHV','rLPoY','string','test','BNqBh','ULGPI','mtPLR','isValidLinkedInUrl','http://','kLHMV','/in/','startsWith','hLbxS','gKVvJ','https://linkedin.com/in/','linkedin.com/in/','iNTUT','vwroo','qjaGj','❌\x20[LINKEDIN\x20SCRAPE]\x20Invalid\x20LinkedIn\x20URL','https://','cWwoz','❌\x20[LINKEDIN\x20SCRAPE]\x20Error:','PMCCK','PAqkH','picon','HICjD','kpnNi','VqJOV','yPrrX','XzsfO','getUserAuthHeaders','QUAKv','YVTrC','AkAse','/user/','/connections','iDCgq','json','XGpxe','connections','LinkedIn','QLpQH','Dvfqd','❌\x20[LINKEDIN]\x20Error\x20checking\x20scrape\x20availability:','dmJMc','JSYgx','yaCTx','MsnEQ','vPone','mEqsm','gldox','cyYSA','getLinkedInConnectionStatus'];_0x5d60=function(){return _0x3e8d8f;};return _0x5d60();}
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.scrapeLinkedInProfile = exports.isValidLinkedInUrl = exports.getLinkedInConnectionStatus = exports.formatLinkedInUrl = exports.extractLinkedInUsername = exports.canScrapeProfile = void 0;
7
+ var _api = require("../config/api");
8
+ var _jwtStorageService = require("./jwtStorageService");
9
+ /**
10
+ * LinkedIn Profile Scraping Service
11
+ * Handles profile scraping after OAuth connection using Apify
12
+ */
13
+
14
+ /**
15
+ * Scrape LinkedIn profile after OAuth connection
16
+ * @param userId - User ID (username or email) - will be overridden by JWT userId if available
17
+ * @param profileUrl - LinkedIn profile URL (e.g., https://linkedin.com/in/username)
18
+ */
19
+ const scrapeLinkedInProfile = async (userId, profileUrl) => {
20
+ try {
21
+ var _data$profileData, _data$profileData2, _data$profileData3, _data$profileData4, _data$profileData5;
22
+ console.log('🔍 [LINKEDIN SCRAPE] Starting profile scrape...');
23
+ console.log('🔍 [LINKEDIN SCRAPE] Passed User ID:', userId);
24
+ console.log('🔍 [LINKEDIN SCRAPE] Profile URL:', profileUrl);
25
+
26
+ // Get the actual userId (UUID) from JWT token - this is critical for correct user lookup
27
+ const jwtUserId = await (0, _jwtStorageService.getUserIdFromToken)();
28
+ const effectiveUserId = jwtUserId || userId;
29
+ console.log('🔍 [LINKEDIN SCRAPE] JWT userId:', jwtUserId);
30
+ console.log('🔍 [LINKEDIN SCRAPE] Effective userId (will use):', effectiveUserId);
31
+
32
+ // Validate profile URL
33
+ if (!isValidLinkedInUrl(profileUrl)) {
34
+ console.error('❌ [LINKEDIN SCRAPE] Invalid LinkedIn URL');
35
+ return {
36
+ success: false,
37
+ error: 'Invalid LinkedIn profile URL. Please use format: https://linkedin.com/in/username'
38
+ };
39
+ }
40
+
41
+ // Get user-authenticated headers (includes JWT token)
42
+ let headers;
43
+ try {
44
+ headers = await (0, _api.getUserAuthHeaders)();
45
+ console.log('🔑 [LINKEDIN SCRAPE] Using authenticated user headers');
46
+ } catch (authError) {
47
+ console.warn('⚠️ [LINKEDIN SCRAPE] No user auth available, using basic headers:', authError);
48
+ headers = (0, _api.getApiHeaders)();
49
+ }
50
+ const response = await fetch(`${_api.API_CONFIG.BASE_URL}/enoch/linkedin-scrape/scrape-profile`, {
51
+ method: 'POST',
52
+ headers,
53
+ body: JSON.stringify({
54
+ userId: effectiveUserId,
55
+ profileUrl: profileUrl
56
+ })
57
+ });
58
+ if (!response.ok) {
59
+ const errorText = await response.text();
60
+ console.error('❌ [LINKEDIN SCRAPE] Failed:', response.status, errorText);
61
+
62
+ // Parse error message if available
63
+ let errorMessage = `Scraping failed: ${response.status}`;
64
+ try {
65
+ const errorData = JSON.parse(errorText);
66
+ errorMessage = errorData.error || errorData.message || errorMessage;
67
+ } catch {
68
+ // Use default error message
69
+ }
70
+ return {
71
+ success: false,
72
+ error: errorMessage
73
+ };
74
+ }
75
+ const data = await response.json();
76
+ console.log('✅ [LINKEDIN SCRAPE] Profile scraped successfully');
77
+ console.log('📊 [LINKEDIN SCRAPE] Data preview:', {
78
+ name: (_data$profileData = data.profileData) === null || _data$profileData === void 0 ? void 0 : _data$profileData.fullName,
79
+ headline: (_data$profileData2 = data.profileData) === null || _data$profileData2 === void 0 ? void 0 : _data$profileData2.headline,
80
+ experienceCount: ((_data$profileData3 = data.profileData) === null || _data$profileData3 === void 0 || (_data$profileData3 = _data$profileData3.experience) === null || _data$profileData3 === void 0 ? void 0 : _data$profileData3.length) || 0,
81
+ educationCount: ((_data$profileData4 = data.profileData) === null || _data$profileData4 === void 0 || (_data$profileData4 = _data$profileData4.education) === null || _data$profileData4 === void 0 ? void 0 : _data$profileData4.length) || 0,
82
+ skillsCount: ((_data$profileData5 = data.profileData) === null || _data$profileData5 === void 0 || (_data$profileData5 = _data$profileData5.skills) === null || _data$profileData5 === void 0 ? void 0 : _data$profileData5.length) || 0
83
+ });
84
+ return {
85
+ success: true,
86
+ data: data.profileData,
87
+ message: 'Profile scraped successfully'
88
+ };
89
+ } catch (error) {
90
+ console.error('❌ [LINKEDIN SCRAPE] Error:', error);
91
+ return {
92
+ success: false,
93
+ error: error instanceof Error ? error.message : 'Unknown error occurred during scraping'
94
+ };
95
+ }
96
+ };
97
+
98
+ /**
99
+ * Extract LinkedIn username from profile URL
100
+ * @param url - LinkedIn profile URL
101
+ * @returns username or null if invalid
102
+ */
103
+ exports.scrapeLinkedInProfile = scrapeLinkedInProfile;
104
+ const extractLinkedInUsername = url => {
105
+ try {
106
+ // Match various LinkedIn URL formats:
107
+ // - https://linkedin.com/in/username
108
+ // - https://www.linkedin.com/in/username/
109
+ // - linkedin.com/in/username
110
+ const match = url.match(/linkedin\.com\/in\/([^\/\?#]+)/);
111
+ return match ? match[1] : null;
112
+ } catch (error) {
113
+ console.error('❌ [LINKEDIN] Error extracting username:', error);
114
+ return null;
115
+ }
116
+ };
117
+
118
+ /**
119
+ * Validate LinkedIn profile URL
120
+ * @param url - URL to validate
121
+ * @returns true if valid LinkedIn profile URL
122
+ */
123
+ exports.extractLinkedInUsername = extractLinkedInUsername;
124
+ const isValidLinkedInUrl = url => {
125
+ if (!url || typeof url !== 'string') {
126
+ return false;
127
+ }
128
+
129
+ // Check if URL contains linkedin.com/in/
130
+ const hasLinkedInPattern = /linkedin\.com\/in\/[^\/\?#]+/.test(url);
131
+ if (!hasLinkedInPattern) {
132
+ return false;
133
+ }
134
+
135
+ // Try to extract username
136
+ const username = extractLinkedInUsername(url);
137
+ return username !== null && username.length > 0;
138
+ };
139
+
140
+ /**
141
+ * Format LinkedIn URL (ensure proper format)
142
+ * @param url - URL or username
143
+ * @returns properly formatted LinkedIn URL
144
+ */
145
+ exports.isValidLinkedInUrl = isValidLinkedInUrl;
146
+ const formatLinkedInUrl = url => {
147
+ // If it's already a full URL, return as is
148
+ if (url.startsWith('http://') || url.startsWith('https://')) {
149
+ return url;
150
+ }
151
+
152
+ // If it's just a username, construct URL
153
+ if (!url.includes('/')) {
154
+ return `https://linkedin.com/in/${url}`;
155
+ }
156
+
157
+ // If it's a partial path
158
+ if (url.startsWith('linkedin.com/in/')) {
159
+ return `https://${url}`;
160
+ }
161
+ if (url.startsWith('/in/')) {
162
+ return `https://linkedin.com${url}`;
163
+ }
164
+
165
+ // Default: assume it's a username
166
+ return `https://linkedin.com/in/${url}`;
167
+ };
168
+
169
+ /**
170
+ * Check if profile scraping is available for a user
171
+ * @param userId - User ID
172
+ */
173
+ exports.formatLinkedInUrl = formatLinkedInUrl;
174
+ const canScrapeProfile = async userId => {
175
+ try {
176
+ // Check if user has LinkedIn connected
177
+ // This would typically query your backend
178
+ let headers;
179
+ try {
180
+ headers = await (0, _api.getUserAuthHeaders)();
181
+ } catch {
182
+ headers = (0, _api.getApiHeaders)();
183
+ }
184
+ const response = await fetch(`${_api.API_CONFIG.BASE_URL}/user/${userId}/connections`, {
185
+ headers
186
+ });
187
+ if (response.ok) {
188
+ var _data$connections;
189
+ const data = await response.json();
190
+ return ((_data$connections = data.connections) === null || _data$connections === void 0 ? void 0 : _data$connections.LinkedIn) !== undefined;
191
+ }
192
+ return false;
193
+ } catch (error) {
194
+ console.error('❌ [LINKEDIN] Error checking scrape availability:', error);
195
+ return false;
196
+ }
197
+ };
198
+
199
+ /**
200
+ * Get LinkedIn connection status for a user
201
+ * @param userId - User ID
202
+ */
203
+ exports.canScrapeProfile = canScrapeProfile;
204
+ const getLinkedInConnectionStatus = async userId => {
205
+ try {
206
+ let headers;
207
+ try {
208
+ headers = await (0, _api.getUserAuthHeaders)();
209
+ } catch {
210
+ headers = (0, _api.getApiHeaders)();
211
+ }
212
+ const response = await fetch(`${_api.API_CONFIG.BASE_URL}/enoch/linkedin-scrape/scrape-profile/${userId}`, {
213
+ headers
214
+ });
215
+ if (response.ok) {
216
+ const data = await response.json();
217
+ return data;
218
+ }
219
+ return {
220
+ connected: false
221
+ };
222
+ } catch (error) {
223
+ console.error('❌ [LINKEDIN] Error getting connection status:', error);
224
+ return {
225
+ connected: false
226
+ };
227
+ }
228
+ };
229
+ exports.getLinkedInConnectionStatus = getLinkedInConnectionStatus;
230
+ //# sourceMappingURL=linkedinScrapingService.js.map