@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.
- package/lib/commonjs/api/index.js +219 -9
- package/lib/commonjs/components/BodyText.js +27 -9
- package/lib/commonjs/components/BrandMark.js +111 -10
- package/lib/commonjs/components/CodeInput.js +116 -9
- package/lib/commonjs/components/EmailInput.js +30 -8
- package/lib/commonjs/components/GoogleButton.js +56 -9
- package/lib/commonjs/components/HeadingGroup.js +43 -9
- package/lib/commonjs/components/LLMDataInputModal.js +664 -14
- package/lib/commonjs/components/ModalHeader.js +99 -9
- package/lib/commonjs/components/ModalSheet.js +47 -9
- package/lib/commonjs/components/Onairos.js +380 -14
- package/lib/commonjs/components/OnairosButton.js +313 -13
- package/lib/commonjs/components/OnairosSignInButton.js +130 -12
- package/lib/commonjs/components/Overlay.js +465 -13
- package/lib/commonjs/components/PersonaImage.js +137 -10
- package/lib/commonjs/components/PersonaLoadingScreen.js +318 -12
- package/lib/commonjs/components/PersonalizationConsentScreen.js +467 -13
- package/lib/commonjs/components/PinCreationScreen.js +403 -12
- package/lib/commonjs/components/PinInput.js +464 -9
- package/lib/commonjs/components/PlatformConnectorsStep.js +1311 -23
- package/lib/commonjs/components/PlatformList.js +137 -10
- package/lib/commonjs/components/PlatformToggle.js +180 -9
- package/lib/commonjs/components/PrimaryButton.js +180 -10
- package/lib/commonjs/components/SignInMatchAnimation.js +197 -9
- package/lib/commonjs/components/SignInStep.js +345 -12
- package/lib/commonjs/components/UniversalOnboarding.js +2780 -30
- package/lib/commonjs/components/VerificationStep.js +176 -11
- package/lib/commonjs/components/WelcomeScreen.js +461 -22
- package/lib/commonjs/components/icons/Basicproficon.js +37 -8
- package/lib/commonjs/components/icons/Basicprofile.js +21 -8
- package/lib/commonjs/components/icons/Checkbox.js +21 -8
- package/lib/commonjs/components/icons/Checkmark.js +27 -8
- package/lib/commonjs/components/icons/Contentanalysis.js +21 -8
- package/lib/commonjs/components/icons/Contenticon.js +39 -8
- package/lib/commonjs/components/icons/EnochE.js +41 -8
- package/lib/commonjs/components/icons/Personalityicon.js +30 -8
- package/lib/commonjs/components/icons/Personalityprofile.js +21 -8
- package/lib/commonjs/components/icons/Personalitytraits.js +21 -8
- package/lib/commonjs/components/icons/Userpreferences.js +21 -8
- package/lib/commonjs/components/icons/index.js +84 -17
- package/lib/commonjs/components/onboarding/OAuthWebView.js +1754 -18
- package/lib/commonjs/components/onboarding/OnboardingHeader.js +74 -10
- package/lib/commonjs/components/onboarding/PinInput.js +283 -10
- package/lib/commonjs/components/onboarding/PlatformConnector.js +249 -11
- package/lib/commonjs/config/PLATFORM_APIS.md +849 -0
- package/lib/commonjs/config/api.js +56 -7
- package/lib/commonjs/constants/index.js +120 -7
- package/lib/commonjs/context/AuthContext.js +345 -10
- package/lib/commonjs/hooks/useConnectedAccounts.js +111 -9
- package/lib/commonjs/hooks/useConnections.js +102 -8
- package/lib/commonjs/hooks/useCredentials.js +178 -10
- package/lib/commonjs/hooks/useUserConnections.js +148 -10
- package/lib/commonjs/index.js +439 -34
- package/lib/commonjs/services/apiClient.js +298 -8
- package/lib/commonjs/services/biometricPinService.js +180 -8
- package/lib/commonjs/services/chatGPTConversationExtractor.js +155 -8
- package/lib/commonjs/services/chatGPTConversationService.js +275 -9
- package/lib/commonjs/services/claudeConversationExtractor.js +103 -8
- package/lib/commonjs/services/claudeConversationService.js +158 -9
- package/lib/commonjs/services/connectedAccountsService.js +310 -10
- package/lib/commonjs/services/googleAuthService.js +252 -11
- package/lib/commonjs/services/hingeDataExtractor.js +105 -8
- package/lib/commonjs/services/hingeDataService.js +150 -9
- package/lib/commonjs/services/imageCompressionService.js +260 -7
- package/lib/commonjs/services/instagramDataExtractor.js +126 -8
- package/lib/commonjs/services/instagramDataService.js +163 -9
- package/lib/commonjs/services/jwtStorageService.js +276 -7
- package/lib/commonjs/services/linkedinDOMExtractor.js +245 -7
- package/lib/commonjs/services/linkedinProfileService.js +222 -9
- package/lib/commonjs/services/linkedinScrapingService.js +230 -8
- package/lib/commonjs/services/llmDataStorage.js +294 -8
- package/lib/commonjs/services/mobileTrainingService.js +186 -8
- package/lib/commonjs/services/netflixDataExtractor.js +120 -8
- package/lib/commonjs/services/netflixDataService.js +198 -9
- package/lib/commonjs/services/pinEncryptionService.js +84 -8
- package/lib/commonjs/services/pinStorageUtils.js +105 -7
- package/lib/commonjs/services/platformAuthService.js +1484 -12
- package/lib/commonjs/services/sephoraDataExtractor.js +140 -8
- package/lib/commonjs/services/sephoraDataService.js +200 -9
- package/lib/commonjs/services/spotifyDataExtractor.js +148 -8
- package/lib/commonjs/services/spotifyDataService.js +241 -9
- package/lib/commonjs/services/storageService.js +404 -8
- package/lib/commonjs/services/telegramDataExtractor.js +115 -8
- package/lib/commonjs/services/telegramDataService.js +499 -9
- package/lib/commonjs/services/trainingApiHelpers.js +73 -7
- package/lib/commonjs/services/userConnectionsService.js +340 -10
- package/lib/commonjs/services/youtubeMigrationService.js +416 -10
- package/lib/commonjs/theme/index.js +250 -7
- package/lib/commonjs/types/ambient.d.js +2 -1
- package/lib/commonjs/types/declarations.d.js +2 -1
- package/lib/commonjs/types/index.js +6 -1
- package/lib/commonjs/types/node-fix.d.js +2 -1
- package/lib/commonjs/types/node-override.d.js +2 -1
- package/lib/commonjs/types/opacity.d.js +2 -1
- package/lib/commonjs/types.js +14 -1
- package/lib/commonjs/utils/Portal.js +98 -8
- package/lib/commonjs/utils/api.js +130 -9
- package/lib/commonjs/utils/assetRegistry.js +210 -35
- package/lib/commonjs/utils/auth.js +112 -9
- package/lib/commonjs/utils/connectorTests.js +613 -29
- package/lib/commonjs/utils/crypto.js +62 -8
- package/lib/commonjs/utils/debugHelper.js +64 -1
- package/lib/commonjs/utils/encryption.js +76 -7
- package/lib/commonjs/utils/eventUtils.js +288 -1
- package/lib/commonjs/utils/haptics.js +66 -9
- package/lib/commonjs/utils/imagePreloader.js +6 -1
- package/lib/commonjs/utils/networkDiagnostics.js +226 -8
- package/lib/commonjs/utils/onairosApi.js +350 -9
- package/lib/commonjs/utils/programmaticFlow.js +117 -9
- package/lib/commonjs/utils/retryHelper.js +220 -1
- package/lib/commonjs/utils/secureStorage.js +349 -10
- package/lib/commonjs/utils/webviewScripts/chatgpt.js +551 -1
- package/lib/commonjs/utils/webviewScripts/claude.js +376 -1
- package/lib/commonjs/utils/webviewScripts/hinge.js +411 -1
- package/lib/commonjs/utils/webviewScripts/index.js +698 -15
- package/lib/commonjs/utils/webviewScripts/instagram.js +454 -1
- package/lib/commonjs/utils/webviewScripts/linkedin.js +880 -1
- package/lib/commonjs/utils/webviewScripts/netflix.js +382 -1
- package/lib/commonjs/utils/webviewScripts/sephora.js +516 -1
- package/lib/commonjs/utils/webviewScripts/spotify.js +419 -1
- package/lib/commonjs/utils/webviewScripts/telegram.js +678 -1
- package/lib/module/api/index.js +211 -1
- package/lib/module/components/BodyText.js +20 -1
- package/lib/module/components/BrandMark.js +104 -1
- package/lib/module/components/CodeInput.js +109 -1
- package/lib/module/components/EmailInput.js +23 -1
- package/lib/module/components/GoogleButton.js +49 -1
- package/lib/module/components/HeadingGroup.js +36 -1
- package/lib/module/components/LLMDataInputModal.js +656 -7
- package/lib/module/components/ModalHeader.js +92 -1
- package/lib/module/components/ModalSheet.js +39 -1
- package/lib/module/components/Onairos.js +373 -1
- package/lib/module/components/OnairosButton.js +305 -1
- package/lib/module/components/OnairosSignInButton.js +121 -1
- package/lib/module/components/Overlay.js +456 -1
- package/lib/module/components/PersonaImage.js +129 -1
- package/lib/module/components/PersonaLoadingScreen.js +310 -1
- package/lib/module/components/PersonalizationConsentScreen.js +460 -1
- package/lib/module/components/PinCreationScreen.js +396 -1
- package/lib/module/components/PinInput.js +456 -1
- package/lib/module/components/PlatformConnectorsStep.js +1302 -6
- package/lib/module/components/PlatformList.js +129 -1
- package/lib/module/components/PlatformToggle.js +173 -1
- package/lib/module/components/PrimaryButton.js +172 -1
- package/lib/module/components/SignInMatchAnimation.js +189 -1
- package/lib/module/components/SignInStep.js +338 -1
- package/lib/module/components/UniversalOnboarding.js +2770 -1
- package/lib/module/components/VerificationStep.js +168 -1
- package/lib/module/components/WelcomeScreen.js +453 -1
- package/lib/module/components/icons/Basicproficon.js +30 -1
- package/lib/module/components/icons/Basicprofile.js +14 -1
- package/lib/module/components/icons/Checkbox.js +14 -1
- package/lib/module/components/icons/Checkmark.js +20 -1
- package/lib/module/components/icons/Contentanalysis.js +14 -1
- package/lib/module/components/icons/Contenticon.js +32 -1
- package/lib/module/components/icons/EnochE.js +34 -1
- package/lib/module/components/icons/Personalityicon.js +23 -1
- package/lib/module/components/icons/Personalityprofile.js +14 -1
- package/lib/module/components/icons/Personalitytraits.js +14 -1
- package/lib/module/components/icons/Userpreferences.js +14 -1
- package/lib/module/components/icons/index.js +13 -1
- package/lib/module/components/onboarding/OAuthWebView.js +1746 -1
- package/lib/module/components/onboarding/OnboardingHeader.js +66 -1
- package/lib/module/components/onboarding/PinInput.js +274 -1
- package/lib/module/components/onboarding/PlatformConnector.js +240 -1
- package/lib/module/config/PLATFORM_APIS.md +849 -0
- package/lib/module/config/api.js +47 -1
- package/lib/module/constants/index.js +114 -1
- package/lib/module/context/AuthContext.js +335 -1
- package/lib/module/hooks/useConnectedAccounts.js +106 -1
- package/lib/module/hooks/useConnections.js +95 -1
- package/lib/module/hooks/useCredentials.js +171 -6
- package/lib/module/hooks/useUserConnections.js +140 -1
- package/lib/module/index.js +172 -1
- package/lib/module/services/apiClient.js +295 -1
- package/lib/module/services/biometricPinService.js +169 -1
- package/lib/module/services/chatGPTConversationExtractor.js +149 -1
- package/lib/module/services/chatGPTConversationService.js +268 -1
- package/lib/module/services/claudeConversationExtractor.js +97 -1
- package/lib/module/services/claudeConversationService.js +151 -1
- package/lib/module/services/connectedAccountsService.js +293 -1
- package/lib/module/services/googleAuthService.js +241 -1
- package/lib/module/services/hingeDataExtractor.js +99 -1
- package/lib/module/services/hingeDataService.js +143 -1
- package/lib/module/services/imageCompressionService.js +250 -1
- package/lib/module/services/instagramDataExtractor.js +120 -1
- package/lib/module/services/instagramDataService.js +156 -1
- package/lib/module/services/jwtStorageService.js +257 -1
- package/lib/module/services/linkedinDOMExtractor.js +234 -1
- package/lib/module/services/linkedinProfileService.js +210 -1
- package/lib/module/services/linkedinScrapingService.js +219 -1
- package/lib/module/services/llmDataStorage.js +277 -1
- package/lib/module/services/mobileTrainingService.js +173 -1
- package/lib/module/services/netflixDataExtractor.js +114 -1
- package/lib/module/services/netflixDataService.js +191 -1
- package/lib/module/services/pinEncryptionService.js +74 -6
- package/lib/module/services/pinStorageUtils.js +93 -1
- package/lib/module/services/platformAuthService.js +1461 -1
- package/lib/module/services/sephoraDataExtractor.js +134 -1
- package/lib/module/services/sephoraDataService.js +193 -1
- package/lib/module/services/spotifyDataExtractor.js +142 -1
- package/lib/module/services/spotifyDataService.js +234 -1
- package/lib/module/services/storageService.js +383 -1
- package/lib/module/services/telegramDataExtractor.js +109 -1
- package/lib/module/services/telegramDataService.js +493 -1
- package/lib/module/services/trainingApiHelpers.js +67 -1
- package/lib/module/services/userConnectionsService.js +329 -1
- package/lib/module/services/youtubeMigrationService.js +405 -1
- package/lib/module/theme/index.js +245 -1
- package/lib/module/types.js +10 -1
- package/lib/module/utils/Portal.js +90 -1
- package/lib/module/utils/api.js +118 -1
- package/lib/module/utils/assetRegistry.js +200 -34
- package/lib/module/utils/auth.js +100 -1
- package/lib/module/utils/connectorTests.js +600 -27
- package/lib/module/utils/crypto.js +54 -1
- package/lib/module/utils/debugHelper.js +54 -1
- package/lib/module/utils/encryption.js +67 -1
- package/lib/module/utils/eventUtils.js +270 -1
- package/lib/module/utils/haptics.js +59 -8
- package/lib/module/utils/imagePreloader.js +3 -1
- package/lib/module/utils/networkDiagnostics.js +217 -1
- package/lib/module/utils/onairosApi.js +333 -1
- package/lib/module/utils/programmaticFlow.js +111 -1
- package/lib/module/utils/retryHelper.js +211 -1
- package/lib/module/utils/secureStorage.js +330 -6
- package/lib/module/utils/webviewScripts/chatgpt.js +545 -1
- package/lib/module/utils/webviewScripts/claude.js +370 -1
- package/lib/module/utils/webviewScripts/hinge.js +405 -1
- package/lib/module/utils/webviewScripts/index.js +434 -1
- package/lib/module/utils/webviewScripts/instagram.js +448 -1
- package/lib/module/utils/webviewScripts/linkedin.js +874 -1
- package/lib/module/utils/webviewScripts/netflix.js +376 -1
- package/lib/module/utils/webviewScripts/sephora.js +510 -1
- package/lib/module/utils/webviewScripts/spotify.js +413 -1
- package/lib/module/utils/webviewScripts/telegram.js +672 -1
- package/package.json +2 -2
|
@@ -1,28 +1,601 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connector API Tests / Sanity Checks
|
|
3
|
+
*
|
|
4
|
+
* This module provides test utilities to verify all platform connectors
|
|
5
|
+
* are properly configured and their services are working correctly.
|
|
6
|
+
*
|
|
7
|
+
* Run these tests to ensure:
|
|
8
|
+
* 1. All WebView scripts are properly exported
|
|
9
|
+
* 2. All extractor hooks are available
|
|
10
|
+
* 3. All services can be instantiated
|
|
11
|
+
* 4. Backend endpoints are reachable
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
* import { runConnectorSanityTests } from './utils/connectorTests';
|
|
15
|
+
* await runConnectorSanityTests();
|
|
16
|
+
*/
|
|
1
17
|
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
require('
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
import{API_CONFIG}from'../config/api';export const testWebViewScriptExports=()=>{const _0x1fee5d={'IrPuQ':_0x1e01(0x0),'APTtw':_0x1e01(0x1),'leqIS':_0x1e01(0x2),'jPCzR':_0x1e01(0x3),'LjZEo':_0x1e01(0x4),'EYIeP':_0x1e01(0x5),'nvLua':_0x1e01(0x6),'VqOBW':function(_0x4ff10a,_0x585add){return _0x4ff10a===_0x585add;},'LtNqn':'nrlHd','IAAZv':function(_0xf3317f,_0x2f734b){return _0xf3317f(_0x2f734b);},'KxCjT':_0x1e01(0x7),'QWFiV':'webview_scripts','PrHVW':function(_0x1c645b,_0x1efd34){return _0x1c645b(_0x1efd34);},'HIIst':_0x1e01(0x8),'ofAcb':_0x1e01(0x9),'LBdpD':function(_0x39e01d,_0x3acb8b){return _0x39e01d(_0x3acb8b);},'xcWet':_0x1e01(0xa),'TrqyB':_0x1e01(0xb),'NiBma':_0x1e01(0xc),'PnaJX':_0x1e01(0xd),'GJsib':'utilities','yarVI':function(_0x15c088,_0x4ceb4a){return _0x15c088&&_0x4ceb4a;},'riznc':'Platform\x20detection\x20functions\x20available','wfuJn':_0x1e01(0xe),'TcgZd':_0x1e01(0xf)},_0x37c970=[];try{if(_0x1fee5d['VqOBW'](_0x1e01(0x10),_0x1fee5d[_0x1e01(0x11)]))_0x3112bb['log'](_0x1fee5d['IrPuQ']);else{const {CHATGPT_CONSENT_POPUP_SCRIPT:_0x32f841,CHATGPT_EXPORT_SCRIPT:_0x32dac6}=_0x1fee5d['IAAZv'](__ONAIROS_REQ_FUNC__,0x13);_0x37c970[_0x1e01(0x12)]({'platform':_0x1e01(0x13),'component':_0x1e01(0x14),'status':_0x32dac6?_0x1fee5d['LjZEo']:_0x1e01(0x5),'message':_0x32dac6?_0x1e01(0x15):_0x1fee5d[_0x1e01(0x16)]});const {CLAUDE_CONSENT_POPUP_SCRIPT:_0x183b40,CLAUDE_EXPORT_SCRIPT:_0x1edcb2}=_0x1fee5d[_0x1e01(0x17)](__ONAIROS_REQ_FUNC__,0x12);_0x37c970[_0x1e01(0x12)]({'platform':_0x1e01(0x18),'component':_0x1fee5d[_0x1e01(0x19)],'status':_0x1edcb2?_0x1fee5d[_0x1e01(0x1a)]:_0x1fee5d[_0x1e01(0x1b)],'message':_0x1edcb2?'Claude\x20scripts\x20exported\x20correctly':'Claude\x20scripts\x20missing'});const {HINGE_CONSENT_POPUP_SCRIPT:_0x2a4e70,HINGE_EXPORT_SCRIPT:_0x26e74f}=_0x1fee5d[_0x1e01(0x1c)](__ONAIROS_REQ_FUNC__,0x11);_0x37c970['push']({'platform':_0x1fee5d[_0x1e01(0x1d)],'component':_0x1fee5d[_0x1e01(0x19)],'status':_0x26e74f?'pass':_0x1fee5d[_0x1e01(0x1b)],'message':_0x26e74f?_0x1e01(0x1e):_0x1fee5d[_0x1e01(0x1f)]});const {INSTAGRAM_CONSENT_POPUP_SCRIPT:_0x440762,INSTAGRAM_EXPORT_SCRIPT:_0x2cb820}=__ONAIROS_REQ_FUNC__(0x6);_0x37c970[_0x1e01(0x12)]({'platform':'instagram','component':_0x1fee5d[_0x1e01(0x19)],'status':_0x2cb820?_0x1e01(0x4):_0x1fee5d[_0x1e01(0x1b)],'message':_0x2cb820?_0x1e01(0x20):_0x1e01(0x21)});const {SEPHORA_CONSENT_POPUP_SCRIPT:_0x2390d7,SEPHORA_EXPORT_SCRIPT:_0x4c7259}=_0x1fee5d[_0x1e01(0x22)](__ONAIROS_REQ_FUNC__,0x5);_0x37c970['push']({'platform':_0x1e01(0x23),'component':_0x1e01(0x14),'status':_0x4c7259?_0x1fee5d[_0x1e01(0x1a)]:_0x1fee5d[_0x1e01(0x1b)],'message':_0x4c7259?_0x1fee5d[_0x1e01(0x24)]:_0x1fee5d[_0x1e01(0x25)]});const {TELEGRAM_CONSENT_POPUP_SCRIPT:_0x3cd7f7,TELEGRAM_EXPORT_SCRIPT:_0x210034}=_0x1fee5d['LBdpD'](__ONAIROS_REQ_FUNC__,0x4);_0x37c970[_0x1e01(0x12)]({'platform':_0x1fee5d['APTtw'],'component':_0x1fee5d[_0x1e01(0x19)],'status':_0x210034?_0x1e01(0x4):_0x1fee5d[_0x1e01(0x1b)],'message':_0x210034?_0x1fee5d[_0x1e01(0x26)]:_0x1fee5d['PnaJX']});const {isWebViewExtractionPlatform:_0x56ec72,isHingePlatform:_0x276973,isInstagramPlatform:_0x51a7d0,isSephoraPlatform:_0x387206,isTelegramPlatform:_0x54fd90}=_0x1fee5d[_0x1e01(0x1c)](__ONAIROS_REQ_FUNC__,0x3);_0x37c970[_0x1e01(0x12)]({'platform':_0x1fee5d['GJsib'],'component':_0x1e01(0x27),'status':_0x1fee5d[_0x1e01(0x28)](_0x56ec72,_0x276973)&&_0x51a7d0&&_0x387206&&_0x54fd90?_0x1e01(0x4):_0x1fee5d[_0x1e01(0x1b)],'message':_0x1fee5d['riznc']});}}catch(_0x5d2723){if(_0x1fee5d[_0x1e01(0x29)](_0x1e01(0xe),_0x1fee5d[_0x1e01(0x2a)]))_0x37c970[_0x1e01(0x12)]({'platform':_0x1fee5d['TcgZd'],'component':_0x1fee5d[_0x1e01(0x19)],'status':'fail','message':_0x1e01(0x2b)+_0x5d2723[_0x1e01(0x2c)]});else{const {storeTelegramData:_0x422c0d}=_0x58608f(0xc);_0x3cd9e8[_0x1e01(0x12)]({'platform':_0x1fee5d['APTtw'],'component':_0x1fee5d['leqIS'],'status':typeof _0x422c0d===_0x1fee5d[_0x1e01(0x2d)]?_0x1fee5d[_0x1e01(0x1a)]:_0x1fee5d[_0x1e01(0x1b)],'message':_0x1fee5d[_0x1e01(0x2e)]});}}return _0x37c970;};export const testServiceImports=()=>{const _0x473450={'ASfDd':_0x1e01(0x2f),'ftqUi':'claude','SNlxw':'service','AHbcI':_0x1e01(0x5),'EuTxC':function(_0x5cd653,_0x4406c9){return _0x5cd653(_0x4406c9);},'YTYoz':function(_0x61c1ae,_0x2c17a2){return _0x61c1ae(_0x2c17a2);},'IqmNx':_0x1e01(0x8),'fCFlP':_0x1e01(0x4),'tNWZu':_0x1e01(0x30),'XIDRt':_0x1e01(0x31),'ECvMP':'Instagram\x20detection\x20correct','ZosDu':_0x1e01(0x32),'rCcha':function(_0x280ffe,_0x34982e){return _0x280ffe(_0x34982e);},'euEMs':_0x1e01(0x23),'PVipI':_0x1e01(0x33),'DByCx':_0x1e01(0x1),'ZHykq':function(_0xb9f434,_0x510ba4){return _0xb9f434(_0x510ba4);},'BNXJy':_0x1e01(0x34),'lLGFk':_0x1e01(0x35),'Ablsw':function(_0x22628f,_0x42f63c){return _0x22628f(_0x42f63c);},'OtEaS':'chatgpt','RCoUw':function(_0x35e652,_0x22c1bb){return _0x35e652===_0x22c1bb;},'QiIpV':'function','ZEkzO':function(_0xf293b4,_0x2e53b3){return _0xf293b4===_0x2e53b3;},'DJvIq':_0x1e01(0x36),'aGIDd':'EvXCd','RYqlc':function(_0x252f0b,_0x3c121e){return _0x252f0b===_0x3c121e;},'TDCRd':_0x1e01(0x37),'MKwAe':function(_0x4f2c8e,_0x38d576){return _0x4f2c8e===_0x38d576;},'NeknJ':'Hinge\x20service\x20function\x20available','myhBA':_0x1e01(0x38),'UdpUT':function(_0x468edc,_0x118153){return _0x468edc===_0x118153;},'sJRXl':_0x1e01(0x39),'eHfNb':function(_0x31106f,_0x28ae71){return _0x31106f===_0x28ae71;},'nnugE':_0x1e01(0x3a),'UKrZP':_0x1e01(0x3b),'TBNGS':_0x1e01(0x6)},_0x27daf5=[];try{const {storeChatGPTConversations:_0xa7e58a}=_0x473450[_0x1e01(0x3c)](__ONAIROS_REQ_FUNC__,0x7);_0x27daf5['push']({'platform':_0x473450[_0x1e01(0x3d)],'component':_0x1e01(0x2),'status':_0x473450[_0x1e01(0x3e)](typeof _0xa7e58a,_0x473450[_0x1e01(0x3f)])?_0x473450[_0x1e01(0x40)]:_0x473450['AHbcI'],'message':'ChatGPT\x20service\x20function\x20available'});}catch(_0x1bc9b5){_0x27daf5[_0x1e01(0x12)]({'platform':_0x473450[_0x1e01(0x3d)],'component':_0x473450[_0x1e01(0x41)],'status':_0x473450['AHbcI'],'message':'Import\x20error:\x20'+_0x1bc9b5[_0x1e01(0x2c)]});}try{if(_0x473450[_0x1e01(0x42)](_0x473450[_0x1e01(0x43)],_0x473450[_0x1e01(0x44)]))_0x209992[_0x1e01(0x12)]({'platform':_0x31a375,'component':_0x473450[_0x1e01(0x45)],'status':_0x1e01(0x5),'message':_0x1e01(0x46)+_0xa0d733[_0x1e01(0x2c)]});else{const {storeClaudeConversations:_0x2339b8}=_0x473450[_0x1e01(0x47)](__ONAIROS_REQ_FUNC__,0x8);_0x27daf5[_0x1e01(0x12)]({'platform':_0x473450['ftqUi'],'component':_0x473450['SNlxw'],'status':_0x473450[_0x1e01(0x48)](typeof _0x2339b8,_0x1e01(0x3))?_0x473450[_0x1e01(0x40)]:_0x473450[_0x1e01(0x49)],'message':_0x473450[_0x1e01(0x4a)]});}}catch(_0x558980){_0x27daf5['push']({'platform':_0x473450['ftqUi'],'component':'service','status':_0x473450[_0x1e01(0x49)],'message':_0x1e01(0x2b)+_0x558980['message']});}try{const {storeHingeData:_0x4d7f43}=_0x473450[_0x1e01(0x3c)](__ONAIROS_REQ_FUNC__,0x9);_0x27daf5[_0x1e01(0x12)]({'platform':_0x473450[_0x1e01(0x4b)],'component':_0x473450['SNlxw'],'status':_0x473450['MKwAe'](typeof _0x4d7f43,_0x473450[_0x1e01(0x3f)])?_0x473450['fCFlP']:_0x473450[_0x1e01(0x49)],'message':_0x473450[_0x1e01(0x4c)]});}catch(_0x10372d){_0x27daf5['push']({'platform':_0x473450[_0x1e01(0x4b)],'component':_0x473450['SNlxw'],'status':_0x473450[_0x1e01(0x49)],'message':_0x1e01(0x2b)+_0x10372d[_0x1e01(0x2c)]});}try{const {storeInstagramData:_0x258bab}=__ONAIROS_REQ_FUNC__(0xa);_0x27daf5[_0x1e01(0x12)]({'platform':_0x473450[_0x1e01(0x4d)],'component':_0x473450['SNlxw'],'status':typeof _0x258bab===_0x473450[_0x1e01(0x3f)]?_0x1e01(0x4):_0x473450[_0x1e01(0x49)],'message':_0x473450[_0x1e01(0x4e)]});}catch(_0x53dc7a){_0x473450[_0x1e01(0x4f)](_0x1e01(0x39),_0x473450[_0x1e01(0x50)])?_0x27daf5[_0x1e01(0x12)]({'platform':_0x473450[_0x1e01(0x4d)],'component':_0x473450[_0x1e01(0x41)],'status':_0x473450['AHbcI'],'message':_0x1e01(0x2b)+_0x53dc7a['message']}):_0x10a8fa[_0x1e01(0x12)]({'platform':_0x473450['ftqUi'],'component':_0x473450[_0x1e01(0x41)],'status':_0x473450['AHbcI'],'message':_0x1e01(0x2b)+_0x120080[_0x1e01(0x2c)]});}try{if(_0x473450[_0x1e01(0x51)](_0x473450[_0x1e01(0x52)],_0x473450[_0x1e01(0x53)])){const {isWebViewExtractionPlatform:_0x2cf60b,isHingePlatform:_0xb416e3,isInstagramPlatform:_0x27036d,isSephoraPlatform:_0x370ddb,isLLMPlatform:_0x25f00f}=_0x473450[_0x1e01(0x54)](_0x4385ec,0x2),_0x5d8d77=_0x473450['YTYoz'](_0xb416e3,_0x473450[_0x1e01(0x4b)])&&_0x473450[_0x1e01(0x54)](_0x2cf60b,_0x473450['IqmNx'])&&!_0x473450[_0x1e01(0x54)](_0x25f00f,_0x473450[_0x1e01(0x4b)]);_0x2e167d[_0x1e01(0x12)]({'platform':_0x473450['IqmNx'],'component':'detection','status':_0x5d8d77?_0x473450['fCFlP']:_0x1e01(0x5),'message':_0x5d8d77?'Hinge\x20detection\x20correct':_0x1e01(0x55)});const _0x46b673=_0x473450['EuTxC'](_0x27036d,'instagram')&&_0x2cf60b(_0x473450[_0x1e01(0x4d)])&&!_0x473450[_0x1e01(0x54)](_0x25f00f,_0x473450[_0x1e01(0x4d)]);_0x178121[_0x1e01(0x12)]({'platform':_0x473450[_0x1e01(0x4d)],'component':_0x473450['XIDRt'],'status':_0x46b673?_0x473450[_0x1e01(0x40)]:_0x1e01(0x5),'message':_0x46b673?_0x473450[_0x1e01(0x56)]:_0x473450[_0x1e01(0x57)]});const _0xfb53ba=_0x473450['rCcha'](_0x370ddb,_0x473450[_0x1e01(0x58)])&&_0x2cf60b(_0x473450[_0x1e01(0x58)])&&!_0x25f00f(_0x1e01(0x23));_0x59d34d['push']({'platform':_0x473450['euEMs'],'component':_0x473450[_0x1e01(0x59)],'status':_0xfb53ba?_0x473450[_0x1e01(0x40)]:_0x473450['AHbcI'],'message':_0xfb53ba?_0x473450[_0x1e01(0x5a)]:_0x1e01(0x5b)});const {isTelegramPlatform:_0x2bb45a}=_0x473450[_0x1e01(0x54)](_0x3547be,0x1),_0xdcfef9=_0x473450['EuTxC'](_0x2bb45a,_0x473450[_0x1e01(0x5c)])&&_0x473450[_0x1e01(0x47)](_0x2cf60b,_0x473450[_0x1e01(0x5c)])&&!_0x473450['ZHykq'](_0x25f00f,_0x473450[_0x1e01(0x5c)]);_0x420566['push']({'platform':_0x473450[_0x1e01(0x5c)],'component':_0x473450[_0x1e01(0x59)],'status':_0xdcfef9?_0x473450[_0x1e01(0x40)]:_0x473450[_0x1e01(0x49)],'message':_0xdcfef9?_0x473450[_0x1e01(0x5d)]:_0x473450[_0x1e01(0x5e)]});}else{const {storeSephoraData:_0x31b777}=__ONAIROS_REQ_FUNC__(0xb);_0x27daf5[_0x1e01(0x12)]({'platform':_0x473450[_0x1e01(0x58)],'component':_0x473450[_0x1e01(0x41)],'status':_0x473450[_0x1e01(0x4f)](typeof _0x31b777,_0x473450[_0x1e01(0x3f)])?_0x1e01(0x4):_0x473450['AHbcI'],'message':'Sephora\x20service\x20function\x20available'});}}catch(_0x4f6b84){_0x27daf5[_0x1e01(0x12)]({'platform':'sephora','component':_0x473450[_0x1e01(0x41)],'status':_0x473450['AHbcI'],'message':_0x1e01(0x2b)+_0x4f6b84[_0x1e01(0x2c)]});}try{const {storeTelegramData:_0x1dbbc2}=_0x473450[_0x1e01(0x54)](__ONAIROS_REQ_FUNC__,0xc);_0x27daf5[_0x1e01(0x12)]({'platform':_0x1e01(0x1),'component':_0x473450[_0x1e01(0x41)],'status':typeof _0x1dbbc2===_0x473450[_0x1e01(0x3f)]?'pass':_0x473450[_0x1e01(0x49)],'message':_0x473450[_0x1e01(0x5f)]});}catch(_0x1b36ed){_0x27daf5[_0x1e01(0x12)]({'platform':_0x473450['DByCx'],'component':_0x473450[_0x1e01(0x41)],'status':_0x473450['AHbcI'],'message':_0x1e01(0x2b)+_0x1b36ed['message']});}return _0x27daf5;};export const testExtractorImports=()=>{const _0x1b3703={'OfRWh':_0x1e01(0x60),'eWwpz':_0x1e01(0x5),'FROXj':_0x1e01(0x30),'iKYEk':function(_0x19826a,_0x834ed0){return _0x19826a===_0x834ed0;},'JmpnG':_0x1e01(0x61),'ttSxp':_0x1e01(0x62),'BayPj':function(_0x540865,_0x2cce7b){return _0x540865(_0x2cce7b);},'CTPSS':_0x1e01(0x2f),'mzLyG':function(_0x2f526a,_0x3ec6fb){return _0x2f526a===_0x3ec6fb;},'VvlWM':_0x1e01(0x3),'GMsFV':_0x1e01(0x4),'HbVBa':_0x1e01(0x63),'KLpjg':_0x1e01(0x64),'YYLBo':_0x1e01(0x23),'pttmr':function(_0x82546f,_0x231022){return _0x82546f===_0x231022;},'UwJQh':_0x1e01(0x65),'cmpXH':function(_0x5eb076,_0x30e90d){return _0x5eb076(_0x30e90d);},'HBMdt':'telegram','POMis':_0x1e01(0x66)},_0x3a9a19=[];try{if(_0x1b3703[_0x1e01(0x67)](_0x1b3703[_0x1e01(0x68)],_0x1b3703['ttSxp']))_0x1072e7[_0x1e01(0x12)]({'platform':_0x1afafb,'component':_0x1b3703[_0x1e01(0x69)],'status':_0x1b3703['eWwpz'],'message':_0x1e01(0x6a)+_0x43a89f[_0x1e01(0x2c)]});else{const {useHingeDataExtractor:useHingeDataExtractor}=_0x1b3703['BayPj'](__ONAIROS_REQ_FUNC__,0xd);_0x3a9a19['push']({'platform':_0x1e01(0x8),'component':_0x1b3703[_0x1e01(0x6b)],'status':_0x1b3703['mzLyG'](typeof useHingeDataExtractor,_0x1b3703['VvlWM'])?_0x1b3703[_0x1e01(0x6c)]:_0x1b3703['eWwpz'],'message':_0x1b3703[_0x1e01(0x6d)]});}}catch(_0x51c0a5){_0x3a9a19[_0x1e01(0x12)]({'platform':_0x1e01(0x8),'component':_0x1b3703['CTPSS'],'status':_0x1b3703['eWwpz'],'message':_0x1e01(0x2b)+_0x51c0a5[_0x1e01(0x2c)]});}try{const {useInstagramDataExtractor:useInstagramDataExtractor}=_0x1b3703[_0x1e01(0x6e)](__ONAIROS_REQ_FUNC__,0xe);_0x3a9a19[_0x1e01(0x12)]({'platform':_0x1b3703[_0x1e01(0x6f)],'component':_0x1b3703[_0x1e01(0x6b)],'status':_0x1b3703[_0x1e01(0x67)](typeof useInstagramDataExtractor,_0x1b3703[_0x1e01(0x70)])?_0x1b3703[_0x1e01(0x6c)]:_0x1b3703[_0x1e01(0x71)],'message':_0x1b3703['KLpjg']});}catch(_0x3649cb){_0x3a9a19[_0x1e01(0x12)]({'platform':_0x1b3703[_0x1e01(0x6f)],'component':_0x1b3703[_0x1e01(0x6b)],'status':_0x1b3703['eWwpz'],'message':'Import\x20error:\x20'+_0x3649cb[_0x1e01(0x2c)]});}try{const {useSephoraDataExtractor:useSephoraDataExtractor}=_0x1b3703[_0x1e01(0x6e)](__ONAIROS_REQ_FUNC__,0xf);_0x3a9a19[_0x1e01(0x12)]({'platform':_0x1b3703['YYLBo'],'component':_0x1b3703[_0x1e01(0x6b)],'status':_0x1b3703[_0x1e01(0x67)](typeof useSephoraDataExtractor,_0x1e01(0x3))?_0x1b3703[_0x1e01(0x6c)]:_0x1b3703[_0x1e01(0x71)],'message':_0x1e01(0x72)});}catch(_0x3fb8f7){_0x3a9a19[_0x1e01(0x12)]({'platform':_0x1e01(0x23),'component':_0x1b3703['CTPSS'],'status':_0x1e01(0x5),'message':'Import\x20error:\x20'+_0x3fb8f7['message']});}try{if(_0x1b3703[_0x1e01(0x73)](_0x1b3703['UwJQh'],_0x1b3703[_0x1e01(0x74)])){const {useTelegramDataExtractor:useTelegramDataExtractor}=_0x1b3703[_0x1e01(0x75)](__ONAIROS_REQ_FUNC__,0x10);_0x3a9a19[_0x1e01(0x12)]({'platform':_0x1b3703['HBMdt'],'component':_0x1b3703[_0x1e01(0x6b)],'status':_0x1b3703['pttmr'](typeof useTelegramDataExtractor,_0x1b3703[_0x1e01(0x70)])?_0x1e01(0x4):_0x1b3703[_0x1e01(0x71)],'message':_0x1b3703[_0x1e01(0x76)]});}else _0x4a925f[_0x1e01(0x12)]({'platform':_0x1b3703[_0x1e01(0x6f)],'component':_0x1e01(0x2),'status':_0x1b3703[_0x1e01(0x71)],'message':_0x1e01(0x2b)+_0x40ec4f[_0x1e01(0x2c)]});}catch(_0x43791e){_0x3a9a19[_0x1e01(0x12)]({'platform':_0x1b3703[_0x1e01(0x77)],'component':_0x1b3703['CTPSS'],'status':_0x1e01(0x5),'message':_0x1e01(0x2b)+_0x43791e[_0x1e01(0x2c)]});}return _0x3a9a19;};export const testBackendConnectivity=async()=>{const _0x103abc={'hkRFS':function(_0x2e0b07,_0xe8f848){return _0x2e0b07(_0xe8f848);},'ZQsEF':_0x1e01(0x4),'FqPME':_0x1e01(0x5),'UcQoW':_0x1e01(0x78),'iyCiZ':_0x1e01(0x79),'oihfg':function(_0xc4474f,_0x42eb29,_0x5e6535){return _0xc4474f(_0x42eb29,_0x5e6535);},'NxSpb':_0x1e01(0x7a),'goTer':_0x1e01(0x7b),'CeWQX':_0x1e01(0x7c),'qvOTL':_0x1e01(0x7d),'DiICr':function(_0x149953,_0x17c825){return _0x149953===_0x17c825;},'zONDS':_0x1e01(0x7e),'DvSRH':function(_0x14cc1c,_0x3f8c5a,_0x3c6003){return _0x14cc1c(_0x3f8c5a,_0x3c6003);},'fuiAO':_0x1e01(0x7f),'lrAgl':_0x1e01(0x80),'fiyER':function(_0x40415a,_0x4e2d47){return _0x40415a<_0x4e2d47;}},_0x5b6782=[];try{const _0x34d60f=new AbortController(),_0x276ac5=_0x103abc[_0x1e01(0x81)](setTimeout,()=>_0x34d60f[_0x1e01(0x82)](),0x2710),_0x1ba47a=await fetch(API_CONFIG['BASE_URL']+_0x1e01(0x83),{'method':'GET','signal':_0x34d60f[_0x1e01(0x84)]});_0x103abc['hkRFS'](clearTimeout,_0x276ac5),_0x5b6782[_0x1e01(0x12)]({'platform':_0x103abc[_0x1e01(0x85)],'component':_0x103abc[_0x1e01(0x86)],'status':_0x1ba47a['ok']?_0x1e01(0x4):_0x103abc[_0x1e01(0x87)],'message':_0x1ba47a['ok']?_0x103abc['qvOTL']:_0x1e01(0x88)+_0x1ba47a[_0x1e01(0x89)],'details':{'status':_0x1ba47a[_0x1e01(0x89)]}});}catch(_0x199e52){if(_0x103abc[_0x1e01(0x8a)](_0x103abc[_0x1e01(0x8b)],_0x1e01(0x8c))){const _0x2ba021=_0x103abc[_0x1e01(0x8d)](_0x50bca2,0x0),_0xf8086=_0x28b49c['toUpperCase']()+_0x1e01(0x8e),_0x192ce4=!!_0x2ba021[_0xf8086];_0x370d4f[_0x1e01(0x12)]({'platform':_0x3f3616,'component':'webview_script','status':_0x192ce4?_0x103abc[_0x1e01(0x8f)]:_0x103abc[_0x1e01(0x90)],'message':_0x192ce4?_0x103abc[_0x1e01(0x91)]:_0x103abc['iyCiZ']});}else _0x5b6782[_0x1e01(0x12)]({'platform':_0x103abc[_0x1e01(0x85)],'component':_0x103abc[_0x1e01(0x86)],'status':_0x103abc[_0x1e01(0x90)],'message':'Backend\x20unreachable:\x20'+_0x199e52['message']});}try{const _0x15c317=new AbortController(),_0x70a8b3=_0x103abc['DvSRH'](setTimeout,()=>_0x15c317[_0x1e01(0x82)](),0x2710),_0x577529=await _0x103abc[_0x1e01(0x92)](fetch,API_CONFIG[_0x1e01(0x93)]+_0x1e01(0x94),{'method':_0x103abc['fuiAO'],'signal':_0x15c317[_0x1e01(0x84)]});clearTimeout(_0x70a8b3),_0x5b6782[_0x1e01(0x12)]({'platform':'backend','component':_0x103abc[_0x1e01(0x95)],'status':_0x103abc['fiyER'](_0x577529[_0x1e01(0x89)],0x1f4)?_0x103abc['ZQsEF']:_0x103abc[_0x1e01(0x87)],'message':_0x1e01(0x96)+_0x577529[_0x1e01(0x89)],'details':{'status':_0x577529[_0x1e01(0x89)]}});}catch(_0x5dc260){_0x5b6782[_0x1e01(0x12)]({'platform':_0x1e01(0x7a),'component':'platform_data_endpoint','status':'warning','message':_0x1e01(0x97)+_0x5dc260[_0x1e01(0x2c)]});}return _0x5b6782;};function _0x1e01(_0x316713,_0x1e0114){_0x316713=_0x316713-0x0;const _0x5e7540=_0x3167();let _0x412a09=_0x5e7540[_0x316713];return _0x412a09;}export const testPlatformDetection=()=>{const _0x4e19b9={'QGXzW':function(_0x4f2939,_0x31a889){return _0x4f2939(_0x31a889);},'sNKgl':'hinge','czBbv':function(_0x4067a2,_0x3040fe){return _0x4067a2(_0x3040fe);},'WNcFg':'detection','tkjbC':'pass','YYApu':_0x1e01(0x5),'vgKRP':_0x1e01(0x55),'DvOJC':function(_0x128da0,_0x24a692){return _0x128da0(_0x24a692);},'wUUNH':'instagram','TJGwu':function(_0x3d1f16,_0x5e8d38){return _0x3d1f16(_0x5e8d38);},'zWUUy':_0x1e01(0x98),'KSKle':'Instagram\x20detection\x20failed','uZqDb':'sephora','NgMXw':function(_0x16711c,_0x3ff826){return _0x16711c(_0x3ff826);},'FwhHZ':_0x1e01(0x1),'LoEVg':_0x1e01(0x34),'ppknc':_0x1e01(0x35),'SEygE':_0x1e01(0xf)},_0x3397f7=[];try{const {isWebViewExtractionPlatform:_0x47efc3,isHingePlatform:_0x3c6c9e,isInstagramPlatform:_0xf0834d,isSephoraPlatform:_0x3fc0a6,isLLMPlatform:_0x1e4ce9}=__ONAIROS_REQ_FUNC__(0x2),_0x28a8d7=_0x4e19b9['QGXzW'](_0x3c6c9e,_0x4e19b9[_0x1e01(0x99)])&&_0x4e19b9[_0x1e01(0x9a)](_0x47efc3,_0x4e19b9['sNKgl'])&&!_0x4e19b9[_0x1e01(0x9a)](_0x1e4ce9,_0x4e19b9['sNKgl']);_0x3397f7['push']({'platform':_0x4e19b9[_0x1e01(0x99)],'component':_0x4e19b9['WNcFg'],'status':_0x28a8d7?_0x4e19b9[_0x1e01(0x9b)]:_0x4e19b9[_0x1e01(0x9c)],'message':_0x28a8d7?_0x1e01(0x9d):_0x4e19b9[_0x1e01(0x9e)]});const _0x1aba4a=_0x4e19b9[_0x1e01(0x9f)](_0xf0834d,_0x1e01(0x30))&&_0x47efc3(_0x4e19b9[_0x1e01(0xa0)])&&!_0x4e19b9[_0x1e01(0xa1)](_0x1e4ce9,_0x1e01(0x30));_0x3397f7[_0x1e01(0x12)]({'platform':_0x4e19b9[_0x1e01(0xa0)],'component':_0x4e19b9[_0x1e01(0xa2)],'status':_0x1aba4a?_0x4e19b9[_0x1e01(0x9b)]:_0x4e19b9[_0x1e01(0x9c)],'message':_0x1aba4a?_0x4e19b9[_0x1e01(0xa3)]:_0x4e19b9[_0x1e01(0xa4)]});const _0x52589f=_0x4e19b9[_0x1e01(0xa5)](_0x3fc0a6,_0x1e01(0x23))&&_0x4e19b9['czBbv'](_0x47efc3,_0x4e19b9[_0x1e01(0xa6)])&&!_0x4e19b9[_0x1e01(0xa1)](_0x1e4ce9,_0x4e19b9[_0x1e01(0xa6)]);_0x3397f7['push']({'platform':_0x4e19b9[_0x1e01(0xa6)],'component':_0x1e01(0x31),'status':_0x52589f?_0x4e19b9[_0x1e01(0x9b)]:_0x4e19b9[_0x1e01(0x9c)],'message':_0x52589f?_0x1e01(0x33):'Sephora\x20detection\x20failed'});const {isTelegramPlatform:_0x1f8705}=_0x4e19b9[_0x1e01(0xa7)](__ONAIROS_REQ_FUNC__,0x1),_0x53b793=_0x1f8705(_0x4e19b9[_0x1e01(0xa8)])&&_0x4e19b9[_0x1e01(0xa5)](_0x47efc3,_0x4e19b9['FwhHZ'])&&!_0x1e4ce9(_0x1e01(0x1));_0x3397f7[_0x1e01(0x12)]({'platform':_0x4e19b9['FwhHZ'],'component':_0x4e19b9[_0x1e01(0xa2)],'status':_0x53b793?_0x1e01(0x4):_0x4e19b9[_0x1e01(0x9c)],'message':_0x53b793?_0x4e19b9['LoEVg']:_0x4e19b9[_0x1e01(0xa9)]});}catch(_0x33345c){_0x3397f7[_0x1e01(0x12)]({'platform':_0x4e19b9['SEygE'],'component':_0x4e19b9[_0x1e01(0xa2)],'status':'fail','message':_0x1e01(0xaa)+_0x33345c[_0x1e01(0x2c)]});}return _0x3397f7;};export const runConnectorSanityTests=async()=>{const _0x59d6a8={'OUDDx':_0x1e01(0xf),'jbmMX':_0x1e01(0x14),'tExGj':_0x1e01(0x5),'fcIyc':_0x1e01(0x1),'WbYEX':_0x1e01(0x2f),'LIsXl':_0x1e01(0xab),'MNbJJ':_0x1e01(0xac),'LadLY':_0x1e01(0xad),'cqRBk':function(_0x5a1864){return _0x5a1864();},'vvGyJ':function(_0x482a8f){return _0x482a8f();},'nhGYi':'๐\x20Testing\x20platform\x20detection...','aZUYX':function(_0x239790){return _0x239790();},'ipsVS':_0x1e01(0xae),'HvZKt':_0x1e01(0xaf),'kSeJj':function(_0x53c1ee,_0x54ee37){return _0x53c1ee===_0x54ee37;},'UaFwg':_0x1e01(0xb0),'HmSQm':_0x1e01(0xb1),'yNDVc':function(_0x52a309,_0x10bd52){return _0x52a309===_0x10bd52;},'HlGld':_0x1e01(0x4),'IMgcl':function(_0x59d329,_0x44fbde){return _0x59d329===_0x44fbde;},'BMTXm':_0x1e01(0xb2),'OPpmN':function(_0x411789,_0x27c796){return _0x411789!==_0x27c796;},'Tcqkg':_0x1e01(0xb3),'YmWNa':_0x1e01(0xb4),'JfmZd':_0x1e01(0xb5)};console['log'](_0x59d6a8[_0x1e01(0xb6)]);const _0x1b02b7=[];console[_0x1e01(0xb7)](_0x59d6a8[_0x1e01(0xb8)]),_0x1b02b7[_0x1e01(0x12)](...testWebViewScriptExports()),console[_0x1e01(0xb7)](_0x59d6a8['LadLY']),_0x1b02b7[_0x1e01(0x12)](..._0x59d6a8[_0x1e01(0xb9)](testServiceImports)),console[_0x1e01(0xb7)]('๐\x20Testing\x20extractor\x20imports...'),_0x1b02b7[_0x1e01(0x12)](..._0x59d6a8[_0x1e01(0xba)](testExtractorImports)),console[_0x1e01(0xb7)](_0x59d6a8[_0x1e01(0xbb)]),_0x1b02b7[_0x1e01(0x12)](..._0x59d6a8[_0x1e01(0xbc)](testPlatformDetection)),console[_0x1e01(0xb7)](_0x1e01(0xbd)),_0x1b02b7[_0x1e01(0x12)](...await _0x59d6a8[_0x1e01(0xb9)](testBackendConnectivity));const _0x5b35ac=_0x1b02b7[_0x1e01(0xbe)](_0x10f3f7=>_0x10f3f7[_0x1e01(0x89)]==='pass')[_0x1e01(0xbf)],_0x37929a=_0x1b02b7[_0x1e01(0xbe)](_0x22a703=>_0x22a703[_0x1e01(0x89)]===_0x1e01(0x5))[_0x1e01(0xbf)],_0x7f08a7=_0x1b02b7[_0x1e01(0xbe)](_0x15913a=>_0x15913a[_0x1e01(0x89)]===_0x1e01(0x7c))['length'];console[_0x1e01(0xb7)](_0x59d6a8[_0x1e01(0xc0)]),console[_0x1e01(0xb7)](_0x1e01(0xc1)),console[_0x1e01(0xb7)](_0x59d6a8[_0x1e01(0xc2)]);for(const _0x55317d of _0x1b02b7){if(_0x59d6a8[_0x1e01(0xc3)](_0x59d6a8[_0x1e01(0xc4)],_0x59d6a8[_0x1e01(0xc5)]))_0x1db8b2['push']({'platform':_0x59d6a8[_0x1e01(0xc6)],'component':_0x59d6a8[_0x1e01(0xc7)],'status':_0x59d6a8['tExGj'],'message':_0x1e01(0x2b)+_0x4fdfd5['message']});else{const _0x3ef254=_0x59d6a8['yNDVc'](_0x55317d[_0x1e01(0x89)],_0x59d6a8[_0x1e01(0xc8)])?'โ
':_0x59d6a8[_0x1e01(0xc9)](_0x55317d[_0x1e01(0x89)],_0x59d6a8[_0x1e01(0xca)])?'โ':'โ ๏ธ';console[_0x1e01(0xb7)](_0x3ef254+'\x20['+_0x55317d[_0x1e01(0xcb)]['toUpperCase']()+']\x20'+_0x55317d[_0x1e01(0xcc)]+':\x20'+_0x55317d[_0x1e01(0x2c)]);}}console['log'](_0x59d6a8[_0x1e01(0xc0)]),console[_0x1e01(0xb7)](_0x1e01(0xcd)+_0x5b35ac+_0x1e01(0xce)+_0x37929a+'\x20failed,\x20'+_0x7f08a7+_0x1e01(0xcf)),console[_0x1e01(0xb7)](_0x59d6a8[_0x1e01(0xc2)]);if(_0x37929a>0x0)console[_0x1e01(0xb7)](_0x59d6a8[_0x1e01(0xd0)]);else _0x7f08a7>0x0?console['log'](_0x1e01(0x0)):_0x59d6a8[_0x1e01(0xd1)](_0x59d6a8['Tcqkg'],_0x59d6a8[_0x1e01(0xd2)])?console[_0x1e01(0xb7)](_0x59d6a8[_0x1e01(0xd3)]):_0x27ede0[_0x1e01(0x12)]({'platform':_0x59d6a8[_0x1e01(0xd4)],'component':_0x59d6a8[_0x1e01(0xd5)],'status':_0x1e01(0x5),'message':_0x1e01(0x2b)+_0x2dc679[_0x1e01(0x2c)]});return{'passed':_0x5b35ac,'failed':_0x37929a,'warnings':_0x7f08a7,'results':_0x1b02b7};};export const testPlatformConnector=async _0x458a4c=>{const _0x2eb519={'VaRsV':function(_0x109caa,_0x240537){return _0x109caa(_0x240537);},'fvRzM':_0x1e01(0x8),'OIFTQ':function(_0x45db8d,_0x20f7fb){return _0x45db8d(_0x20f7fb);},'EKwLI':_0x1e01(0x31),'bALUR':_0x1e01(0x5),'tqTmE':'Hinge\x20detection\x20failed','abNey':function(_0x1763eb,_0xf0f94b){return _0x1763eb(_0xf0f94b);},'uYCfX':_0x1e01(0x30),'TabMR':function(_0x66f327,_0x2e2713){return _0x66f327(_0x2e2713);},'XJXEz':'sephora','SBqHz':_0x1e01(0x33),'PdSJk':_0x1e01(0x5b),'zKxPk':function(_0x51ef54,_0xdc0020){return _0x51ef54(_0xdc0020);},'LyuUQ':_0x1e01(0x1),'IDGOm':_0x1e01(0x4),'INGZv':'Telegram\x20detection\x20failed','eSpnR':_0x1e01(0xf),'ppDUu':function(_0x2de99e,_0x5391fe){return _0x2de99e(_0x5391fe);},'Xrbkx':function(_0x2fb9b7,_0x21cb8d){return _0x2fb9b7+_0x21cb8d;},'PyBQH':_0x1e01(0x2f),'rFsqC':_0x1e01(0x3),'NlIPz':function(_0x290f5c,_0x5f33fe){return _0x290f5c===_0x5f33fe;},'bnBJK':function(_0x1a2b5f,_0x35118b){return _0x1a2b5f===_0x35118b;},'RDbEP':_0x1e01(0x79),'qYOaH':_0x1e01(0x60),'xaddu':_0x1e01(0xd6),'TAnSu':function(_0x4c3aff,_0x3aeb82){return _0x4c3aff(_0x3aeb82);},'fUQMW':'storeInstagramData','NbtGf':'storeTelegramData','mygjd':_0x1e01(0x2),'ZbEbf':function(_0x16f5db,_0x1385dc){return _0x16f5db===_0x1385dc;},'mUQQQ':function(_0x56da01,_0x37d76e){return _0x56da01(_0x37d76e);},'RSpEA':function(_0x229500,_0x1ecc65){return _0x229500+_0x1ecc65;},'wZIQW':function(_0x1e3fc9,_0x1945e2){return _0x1e3fc9===_0x1945e2;},'zMTFF':_0x1e01(0xd7),'ebcQh':function(_0xd4cb2e,_0x18bf93){return _0xd4cb2e!==_0x18bf93;},'knSzW':_0x1e01(0xd8),'aIsyU':_0x1e01(0xd9),'MFSas':_0x1e01(0x7c),'OnPBH':function(_0x28a127,_0x48331d){return _0x28a127===_0x48331d;},'NJvzj':_0x1e01(0xda),'VmXKo':function(_0x18a4b0,_0x497f46){return _0x18a4b0===_0x497f46;},'ilypi':function(_0x16e24d,_0x843f89){return _0x16e24d===_0x843f89;}};console[_0x1e01(0xb7)](_0x1e01(0xdb)+_0x458a4c+_0x1e01(0xdc));const _0x3afa2c=[],_0xba0bce=_0x458a4c[_0x1e01(0xdd)]();if([_0x2eb519[_0x1e01(0xde)],_0x2eb519['uYCfX'],'sephora',_0x2eb519[_0x1e01(0xdf)]][_0x1e01(0xe0)](_0xba0bce)){try{const _0x35c539=_0x2eb519[_0x1e01(0xe1)](__ONAIROS_REQ_FUNC__,0x0),_0x598f04=_0xba0bce['toUpperCase']()+_0x1e01(0x8e),_0x3939a7=!!_0x35c539[_0x598f04];_0x3afa2c[_0x1e01(0x12)]({'platform':_0xba0bce,'component':_0x1e01(0x60),'status':_0x3939a7?_0x2eb519['IDGOm']:_0x2eb519['bALUR'],'message':_0x3939a7?_0x1e01(0x78):_0x2eb519[_0x1e01(0xe2)]});}catch(_0x57b6aa){_0x3afa2c[_0x1e01(0x12)]({'platform':_0xba0bce,'component':_0x2eb519[_0x1e01(0xe3)],'status':_0x2eb519['bALUR'],'message':_0x1e01(0x6a)+_0x57b6aa[_0x1e01(0x2c)]});}try{if(_0x2eb519[_0x1e01(0xe4)](_0x1e01(0xd6),_0x2eb519['xaddu'])){const _0x205b4a=_0x2eb519[_0x1e01(0xe5)](__ONAIROS_REQ_FUNC__,0x14),_0xc92d19=_0x2eb519[_0x1e01(0xe6)](_0xba0bce,_0x1e01(0x8))?_0x1e01(0xe7):_0xba0bce===_0x1e01(0x30)?_0x2eb519['fUQMW']:_0x2eb519[_0x1e01(0xe4)](_0xba0bce,_0x2eb519['LyuUQ'])?_0x2eb519[_0x1e01(0xe8)]:_0x1e01(0xe9);_0x3afa2c[_0x1e01(0x12)]({'platform':_0xba0bce,'component':_0x2eb519[_0x1e01(0xea)],'status':_0x2eb519[_0x1e01(0xeb)](typeof _0x205b4a[_0xc92d19],_0x2eb519[_0x1e01(0xec)])?_0x2eb519[_0x1e01(0xed)]:_0x2eb519['bALUR'],'message':_0x1e01(0xee)+_0xc92d19+_0x1e01(0xef)});}else{const _0x123032=[];try{const {isWebViewExtractionPlatform:_0x4fcd86,isHingePlatform:_0x5bc692,isInstagramPlatform:_0x7e7270,isSephoraPlatform:_0x4d6cfc,isLLMPlatform:_0x17f8bb}=_0x2eb519[_0x1e01(0xf0)](_0xdf9432,0x2),_0x236eeb=_0x5bc692(_0x2eb519[_0x1e01(0xde)])&&_0x2eb519[_0x1e01(0xe1)](_0x4fcd86,_0x2eb519[_0x1e01(0xde)])&&!_0x2eb519['OIFTQ'](_0x17f8bb,_0x2eb519['fvRzM']);_0x123032[_0x1e01(0x12)]({'platform':_0x2eb519[_0x1e01(0xde)],'component':_0x2eb519['EKwLI'],'status':_0x236eeb?_0x1e01(0x4):_0x2eb519['bALUR'],'message':_0x236eeb?'Hinge\x20detection\x20correct':_0x2eb519[_0x1e01(0xf1)]});const _0x135257=_0x2eb519['abNey'](_0x7e7270,_0x2eb519[_0x1e01(0xf2)])&&_0x4fcd86(_0x2eb519[_0x1e01(0xf2)])&&!_0x17f8bb(_0x2eb519[_0x1e01(0xf2)]);_0x123032[_0x1e01(0x12)]({'platform':_0x2eb519['uYCfX'],'component':_0x2eb519[_0x1e01(0xf3)],'status':_0x135257?'pass':_0x2eb519[_0x1e01(0xf4)],'message':_0x135257?_0x1e01(0x98):'Instagram\x20detection\x20failed'});const _0x1abbfd=_0x2eb519['TabMR'](_0x4d6cfc,_0x2eb519[_0x1e01(0xf5)])&&_0x4fcd86(_0x1e01(0x23))&&!_0x17f8bb(_0x2eb519[_0x1e01(0xf5)]);_0x123032['push']({'platform':_0x2eb519[_0x1e01(0xf5)],'component':_0x2eb519[_0x1e01(0xf3)],'status':_0x1abbfd?_0x1e01(0x4):_0x2eb519[_0x1e01(0xf4)],'message':_0x1abbfd?_0x2eb519[_0x1e01(0xf6)]:_0x2eb519[_0x1e01(0xf7)]});const {isTelegramPlatform:_0x494927}=_0x2eb519[_0x1e01(0xf8)](_0x1a431a,0x1),_0x5719b3=_0x494927(_0x2eb519['LyuUQ'])&&_0x2eb519[_0x1e01(0xf8)](_0x4fcd86,_0x2eb519[_0x1e01(0xdf)])&&!_0x2eb519['zKxPk'](_0x17f8bb,_0x2eb519[_0x1e01(0xdf)]);_0x123032[_0x1e01(0x12)]({'platform':_0x2eb519['LyuUQ'],'component':_0x2eb519['EKwLI'],'status':_0x5719b3?_0x2eb519[_0x1e01(0xed)]:_0x2eb519['bALUR'],'message':_0x5719b3?'Telegram\x20detection\x20correct':_0x2eb519['INGZv']});}catch(_0x22c822){_0x123032[_0x1e01(0x12)]({'platform':_0x2eb519[_0x1e01(0xf9)],'component':_0x2eb519[_0x1e01(0xf3)],'status':_0x2eb519[_0x1e01(0xf4)],'message':_0x1e01(0xaa)+_0x22c822[_0x1e01(0x2c)]});}return _0x123032;}}catch(_0x2dc368){_0x3afa2c[_0x1e01(0x12)]({'platform':_0xba0bce,'component':_0x1e01(0x2),'status':_0x2eb519[_0x1e01(0xf4)],'message':_0x1e01(0xfa)+_0x2dc368['message']});}try{const _0x528792=_0x2eb519['mUQQQ'](__ONAIROS_REQ_FUNC__,0x15),_0x163bed=_0x1e01(0xfb)+_0x2eb519[_0x1e01(0xfc)](_0xba0bce[_0x1e01(0xfd)](0x0)[_0x1e01(0xfe)](),_0xba0bce[_0x1e01(0xff)](0x1))+'DataExtractor';_0x3afa2c['push']({'platform':_0xba0bce,'component':_0x2eb519['PyBQH'],'status':_0x2eb519[_0x1e01(0x100)](typeof _0x528792[_0x163bed],_0x2eb519[_0x1e01(0xec)])?_0x2eb519['IDGOm']:_0x1e01(0x5),'message':'Extractor\x20hook\x20'+_0x163bed+_0x1e01(0xef)});}catch(_0x1c22bf){if(_0x2eb519[_0x1e01(0xe4)](_0x2eb519[_0x1e01(0x101)],_0x1e01(0xd7)))_0x3afa2c['push']({'platform':_0xba0bce,'component':_0x2eb519[_0x1e01(0x102)],'status':_0x1e01(0x5),'message':_0x1e01(0x46)+_0x1c22bf['message']});else{const _0x31a227=_0x2eb519['ppDUu'](_0x3864b4,0x15),_0x3fd22d=_0x1e01(0xfb)+_0x2eb519['Xrbkx'](_0x1c01c7[_0x1e01(0xfd)](0x0)['toUpperCase'](),_0x51a07a['slice'](0x1))+_0x1e01(0x103);_0x5937dc['push']({'platform':_0x55f1f9,'component':_0x2eb519[_0x1e01(0x102)],'status':typeof _0x31a227[_0x3fd22d]===_0x2eb519[_0x1e01(0xec)]?_0x2eb519[_0x1e01(0xed)]:_0x2eb519[_0x1e01(0xf4)],'message':'Extractor\x20hook\x20'+_0x3fd22d+_0x1e01(0xef)});}}}else{if(_0x2eb519[_0x1e01(0x104)](_0x2eb519[_0x1e01(0x105)],_0x2eb519[_0x1e01(0x106)]))_0x3afa2c[_0x1e01(0x12)]({'platform':_0xba0bce,'component':_0x1e01(0x107),'status':_0x2eb519[_0x1e01(0x108)],'message':'Unknown\x20platform:\x20'+_0x458a4c+'.\x20Use\x20\x27hinge\x27,\x20\x27instagram\x27,\x20\x27sephora\x27,\x20or\x20\x27telegram\x27.'});else{const _0xc17223=_0x2eb519[_0x1e01(0xe6)](_0x413f11[_0x1e01(0x89)],_0x2eb519['IDGOm'])?'โ
':_0x2eb519['bnBJK'](_0x2d8874[_0x1e01(0x89)],_0x2eb519[_0x1e01(0xf4)])?'โ':'โ ๏ธ';_0x44d4ab[_0x1e01(0xb7)](_0xc17223+'\x20'+_0x538d18[_0x1e01(0xcc)]+':\x20'+_0x4b95e7['message']);}}for(const _0x4484ac of _0x3afa2c){if(_0x2eb519[_0x1e01(0x109)](_0x2eb519[_0x1e01(0x10a)],_0x2eb519[_0x1e01(0x10a)])){const _0x47c795=_0x2eb519[_0x1e01(0x10b)](_0x4484ac['status'],_0x2eb519[_0x1e01(0xed)])?'โ
':_0x2eb519['ilypi'](_0x4484ac['status'],_0x2eb519[_0x1e01(0xf4)])?'โ':'โ ๏ธ';console[_0x1e01(0xb7)](_0x47c795+'\x20'+_0x4484ac[_0x1e01(0xcc)]+':\x20'+_0x4484ac[_0x1e01(0x2c)]);}else _0x172e59[_0x1e01(0x12)]({'platform':_0x2eb519[_0x1e01(0xf9)],'component':_0x1e01(0x31),'status':_0x1e01(0x5),'message':'Detection\x20test\x20error:\x20'+_0x4d2e6e[_0x1e01(0x2c)]});}return _0x3afa2c;};function _0x3167(){const _0x3b20ae=['โ ๏ธ\x20All\x20critical\x20tests\x20passed,\x20but\x20there\x20are\x20warnings.','telegram','service','function','pass','fail','Telegram\x20service\x20function\x20available','ChatGPT\x20scripts\x20missing','hinge','Hinge\x20scripts\x20missing','Sephora\x20scripts\x20exported\x20correctly','Sephora\x20scripts\x20missing','Telegram\x20scripts\x20exported\x20correctly','Telegram\x20scripts\x20missing','xBAKW','all','KpFJu','LtNqn','push','chatgpt','webview_scripts','ChatGPT\x20scripts\x20exported\x20correctly','KxCjT','IAAZv','claude','QWFiV','LjZEo','EYIeP','PrHVW','HIIst','Hinge\x20scripts\x20exported\x20correctly','ofAcb','Instagram\x20scripts\x20exported\x20correctly','Instagram\x20scripts\x20missing','LBdpD','sephora','xcWet','TrqyB','NiBma','platform_detection','yarVI','VqOBW','wfuJn','Import\x20error:\x20','message','jPCzR','nvLua','extractor','instagram','detection','Instagram\x20detection\x20failed','Sephora\x20detection\x20correct','Telegram\x20detection\x20correct','Telegram\x20detection\x20failed','ssoSd','Claude\x20service\x20function\x20available','Instagram\x20service\x20function\x20available','sNXav','XdxoM','oAiko','Ablsw','OtEaS','RCoUw','QiIpV','fCFlP','SNlxw','ZEkzO','DJvIq','aGIDd','ASfDd','Extractor\x20import\x20failed:\x20','YTYoz','RYqlc','AHbcI','TDCRd','IqmNx','NeknJ','tNWZu','myhBA','UdpUT','sJRXl','eHfNb','nnugE','UKrZP','EuTxC','Hinge\x20detection\x20failed','ECvMP','ZosDu','euEMs','XIDRt','PVipI','Sephora\x20detection\x20failed','DByCx','BNXJy','lLGFk','TBNGS','webview_script','xDQgp','YZBmd','Hinge\x20extractor\x20hook\x20available','Instagram\x20extractor\x20hook\x20available','PCUKY','Telegram\x20extractor\x20hook\x20available','iKYEk','JmpnG','OfRWh','Script\x20import\x20failed:\x20','CTPSS','GMsFV','HbVBa','BayPj','FROXj','VvlWM','eWwpz','Sephora\x20extractor\x20hook\x20available','pttmr','UwJQh','cmpXH','POMis','HBMdt','Export\x20script\x20available','Export\x20script\x20missing','backend','health','warning','Backend\x20health\x20check\x20passed','DdjFD','OPTIONS','platform_data_endpoint','oihfg','abort','/health','signal','NxSpb','goTer','CeWQX','Backend\x20returned\x20status\x20','status','DiICr','zONDS','HStoE','hkRFS','_EXPORT_SCRIPT','ZQsEF','FqPME','UcQoW','DvSRH','BASE_URL','/platform-data/store','lrAgl','Platform\x20data\x20endpoint\x20check:\x20','Endpoint\x20check\x20failed\x20(may\x20require\x20auth):\x20','Instagram\x20detection\x20correct','sNKgl','czBbv','tkjbC','YYApu','Hinge\x20detection\x20correct','vgKRP','DvOJC','wUUNH','TJGwu','WNcFg','zWUUy','KSKle','QGXzW','uZqDb','NgMXw','FwhHZ','ppknc','Detection\x20test\x20error:\x20','๐งช\x20[CONNECTOR_TESTS]\x20Starting\x20connector\x20sanity\x20tests...\x0a','๐\x20Testing\x20WebView\x20script\x20exports...','๐\x20Testing\x20service\x20imports...','\x0a========================================','========================================\x0a','xCKkn','IxjnQ','โ\x20Some\x20tests\x20failed!\x20Please\x20check\x20the\x20errors\x20above.','MSDsd','GqcJB','โ
\x20All\x20tests\x20passed!\x20Connectors\x20are\x20ready.','LIsXl','log','MNbJJ','cqRBk','vvGyJ','nhGYi','aZUYX','๐\x20Testing\x20backend\x20connectivity...','filter','length','ipsVS','๐งช\x20CONNECTOR\x20SANITY\x20TEST\x20RESULTS','HvZKt','kSeJj','UaFwg','HmSQm','OUDDx','jbmMX','HlGld','IMgcl','tExGj','platform','component','๐\x20Summary:\x20','\x20passed,\x20','\x20warnings','BMTXm','OPpmN','YmWNa','JfmZd','fcIyc','WbYEX','FWUqM','CYDJn','eVXQH','QKEvy','Jxkcs','๐งช\x20Testing\x20','\x20connector...\x0a','toLowerCase','fvRzM','LyuUQ','includes','OIFTQ','RDbEP','qYOaH','bnBJK','TAnSu','NlIPz','storeHingeData','NbtGf','storeSephoraData','mygjd','ZbEbf','rFsqC','IDGOm','Service\x20function\x20','\x20available','VaRsV','tqTmE','uYCfX','EKwLI','bALUR','XJXEz','SBqHz','PdSJk','zKxPk','eSpnR','Service\x20import\x20failed:\x20','use','RSpEA','charAt','toUpperCase','slice','wZIQW','zMTFF','PyBQH','DataExtractor','ebcQh','knSzW','aIsyU','validation','MFSas','OnPBH','NJvzj','VmXKo'];_0x3167=function(){return _0x3b20ae;};return _0x3167();}
|
|
18
|
+
import { API_CONFIG } from '../config/api';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Test result interface
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Test all WebView script exports
|
|
26
|
+
*/
|
|
27
|
+
export const testWebViewScriptExports = () => {
|
|
28
|
+
const results = [];
|
|
29
|
+
try {
|
|
30
|
+
// Test ChatGPT scripts
|
|
31
|
+
const {
|
|
32
|
+
CHATGPT_CONSENT_POPUP_SCRIPT,
|
|
33
|
+
CHATGPT_EXPORT_SCRIPT
|
|
34
|
+
} = require('./webviewScripts');
|
|
35
|
+
results.push({
|
|
36
|
+
platform: 'chatgpt',
|
|
37
|
+
component: 'webview_scripts',
|
|
38
|
+
status: CHATGPT_EXPORT_SCRIPT ? 'pass' : 'fail',
|
|
39
|
+
message: CHATGPT_EXPORT_SCRIPT ? 'ChatGPT scripts exported correctly' : 'ChatGPT scripts missing'
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// Test Claude scripts
|
|
43
|
+
const {
|
|
44
|
+
CLAUDE_CONSENT_POPUP_SCRIPT,
|
|
45
|
+
CLAUDE_EXPORT_SCRIPT
|
|
46
|
+
} = require('./webviewScripts');
|
|
47
|
+
results.push({
|
|
48
|
+
platform: 'claude',
|
|
49
|
+
component: 'webview_scripts',
|
|
50
|
+
status: CLAUDE_EXPORT_SCRIPT ? 'pass' : 'fail',
|
|
51
|
+
message: CLAUDE_EXPORT_SCRIPT ? 'Claude scripts exported correctly' : 'Claude scripts missing'
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
// Test Hinge scripts
|
|
55
|
+
const {
|
|
56
|
+
HINGE_CONSENT_POPUP_SCRIPT,
|
|
57
|
+
HINGE_EXPORT_SCRIPT
|
|
58
|
+
} = require('./webviewScripts');
|
|
59
|
+
results.push({
|
|
60
|
+
platform: 'hinge',
|
|
61
|
+
component: 'webview_scripts',
|
|
62
|
+
status: HINGE_EXPORT_SCRIPT ? 'pass' : 'fail',
|
|
63
|
+
message: HINGE_EXPORT_SCRIPT ? 'Hinge scripts exported correctly' : 'Hinge scripts missing'
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
// Test Instagram scripts
|
|
67
|
+
const {
|
|
68
|
+
INSTAGRAM_CONSENT_POPUP_SCRIPT,
|
|
69
|
+
INSTAGRAM_EXPORT_SCRIPT
|
|
70
|
+
} = require('./webviewScripts');
|
|
71
|
+
results.push({
|
|
72
|
+
platform: 'instagram',
|
|
73
|
+
component: 'webview_scripts',
|
|
74
|
+
status: INSTAGRAM_EXPORT_SCRIPT ? 'pass' : 'fail',
|
|
75
|
+
message: INSTAGRAM_EXPORT_SCRIPT ? 'Instagram scripts exported correctly' : 'Instagram scripts missing'
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// Test Sephora scripts
|
|
79
|
+
const {
|
|
80
|
+
SEPHORA_CONSENT_POPUP_SCRIPT,
|
|
81
|
+
SEPHORA_EXPORT_SCRIPT
|
|
82
|
+
} = require('./webviewScripts');
|
|
83
|
+
results.push({
|
|
84
|
+
platform: 'sephora',
|
|
85
|
+
component: 'webview_scripts',
|
|
86
|
+
status: SEPHORA_EXPORT_SCRIPT ? 'pass' : 'fail',
|
|
87
|
+
message: SEPHORA_EXPORT_SCRIPT ? 'Sephora scripts exported correctly' : 'Sephora scripts missing'
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
// Test Telegram scripts
|
|
91
|
+
const {
|
|
92
|
+
TELEGRAM_CONSENT_POPUP_SCRIPT,
|
|
93
|
+
TELEGRAM_EXPORT_SCRIPT
|
|
94
|
+
} = require('./webviewScripts');
|
|
95
|
+
results.push({
|
|
96
|
+
platform: 'telegram',
|
|
97
|
+
component: 'webview_scripts',
|
|
98
|
+
status: TELEGRAM_EXPORT_SCRIPT ? 'pass' : 'fail',
|
|
99
|
+
message: TELEGRAM_EXPORT_SCRIPT ? 'Telegram scripts exported correctly' : 'Telegram scripts missing'
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
// Test utility functions
|
|
103
|
+
const {
|
|
104
|
+
isWebViewExtractionPlatform,
|
|
105
|
+
isHingePlatform,
|
|
106
|
+
isInstagramPlatform,
|
|
107
|
+
isSephoraPlatform,
|
|
108
|
+
isTelegramPlatform
|
|
109
|
+
} = require('./webviewScripts');
|
|
110
|
+
results.push({
|
|
111
|
+
platform: 'utilities',
|
|
112
|
+
component: 'platform_detection',
|
|
113
|
+
status: isWebViewExtractionPlatform && isHingePlatform && isInstagramPlatform && isSephoraPlatform && isTelegramPlatform ? 'pass' : 'fail',
|
|
114
|
+
message: 'Platform detection functions available'
|
|
115
|
+
});
|
|
116
|
+
} catch (error) {
|
|
117
|
+
results.push({
|
|
118
|
+
platform: 'all',
|
|
119
|
+
component: 'webview_scripts',
|
|
120
|
+
status: 'fail',
|
|
121
|
+
message: `Import error: ${error.message}`
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return results;
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Test all service imports
|
|
129
|
+
*/
|
|
130
|
+
export const testServiceImports = () => {
|
|
131
|
+
const results = [];
|
|
132
|
+
|
|
133
|
+
// Test ChatGPT service
|
|
134
|
+
try {
|
|
135
|
+
const {
|
|
136
|
+
storeChatGPTConversations
|
|
137
|
+
} = require('../services/chatGPTConversationService');
|
|
138
|
+
results.push({
|
|
139
|
+
platform: 'chatgpt',
|
|
140
|
+
component: 'service',
|
|
141
|
+
status: typeof storeChatGPTConversations === 'function' ? 'pass' : 'fail',
|
|
142
|
+
message: 'ChatGPT service function available'
|
|
143
|
+
});
|
|
144
|
+
} catch (error) {
|
|
145
|
+
results.push({
|
|
146
|
+
platform: 'chatgpt',
|
|
147
|
+
component: 'service',
|
|
148
|
+
status: 'fail',
|
|
149
|
+
message: `Import error: ${error.message}`
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Test Claude service
|
|
154
|
+
try {
|
|
155
|
+
const {
|
|
156
|
+
storeClaudeConversations
|
|
157
|
+
} = require('../services/claudeConversationService');
|
|
158
|
+
results.push({
|
|
159
|
+
platform: 'claude',
|
|
160
|
+
component: 'service',
|
|
161
|
+
status: typeof storeClaudeConversations === 'function' ? 'pass' : 'fail',
|
|
162
|
+
message: 'Claude service function available'
|
|
163
|
+
});
|
|
164
|
+
} catch (error) {
|
|
165
|
+
results.push({
|
|
166
|
+
platform: 'claude',
|
|
167
|
+
component: 'service',
|
|
168
|
+
status: 'fail',
|
|
169
|
+
message: `Import error: ${error.message}`
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// Test Hinge service
|
|
174
|
+
try {
|
|
175
|
+
const {
|
|
176
|
+
storeHingeData
|
|
177
|
+
} = require('../services/hingeDataService');
|
|
178
|
+
results.push({
|
|
179
|
+
platform: 'hinge',
|
|
180
|
+
component: 'service',
|
|
181
|
+
status: typeof storeHingeData === 'function' ? 'pass' : 'fail',
|
|
182
|
+
message: 'Hinge service function available'
|
|
183
|
+
});
|
|
184
|
+
} catch (error) {
|
|
185
|
+
results.push({
|
|
186
|
+
platform: 'hinge',
|
|
187
|
+
component: 'service',
|
|
188
|
+
status: 'fail',
|
|
189
|
+
message: `Import error: ${error.message}`
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// Test Instagram service
|
|
194
|
+
try {
|
|
195
|
+
const {
|
|
196
|
+
storeInstagramData
|
|
197
|
+
} = require('../services/instagramDataService');
|
|
198
|
+
results.push({
|
|
199
|
+
platform: 'instagram',
|
|
200
|
+
component: 'service',
|
|
201
|
+
status: typeof storeInstagramData === 'function' ? 'pass' : 'fail',
|
|
202
|
+
message: 'Instagram service function available'
|
|
203
|
+
});
|
|
204
|
+
} catch (error) {
|
|
205
|
+
results.push({
|
|
206
|
+
platform: 'instagram',
|
|
207
|
+
component: 'service',
|
|
208
|
+
status: 'fail',
|
|
209
|
+
message: `Import error: ${error.message}`
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// Test Sephora service
|
|
214
|
+
try {
|
|
215
|
+
const {
|
|
216
|
+
storeSephoraData
|
|
217
|
+
} = require('../services/sephoraDataService');
|
|
218
|
+
results.push({
|
|
219
|
+
platform: 'sephora',
|
|
220
|
+
component: 'service',
|
|
221
|
+
status: typeof storeSephoraData === 'function' ? 'pass' : 'fail',
|
|
222
|
+
message: 'Sephora service function available'
|
|
223
|
+
});
|
|
224
|
+
} catch (error) {
|
|
225
|
+
results.push({
|
|
226
|
+
platform: 'sephora',
|
|
227
|
+
component: 'service',
|
|
228
|
+
status: 'fail',
|
|
229
|
+
message: `Import error: ${error.message}`
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
// Test Telegram service
|
|
234
|
+
try {
|
|
235
|
+
const {
|
|
236
|
+
storeTelegramData
|
|
237
|
+
} = require('../services/telegramDataService');
|
|
238
|
+
results.push({
|
|
239
|
+
platform: 'telegram',
|
|
240
|
+
component: 'service',
|
|
241
|
+
status: typeof storeTelegramData === 'function' ? 'pass' : 'fail',
|
|
242
|
+
message: 'Telegram service function available'
|
|
243
|
+
});
|
|
244
|
+
} catch (error) {
|
|
245
|
+
results.push({
|
|
246
|
+
platform: 'telegram',
|
|
247
|
+
component: 'service',
|
|
248
|
+
status: 'fail',
|
|
249
|
+
message: `Import error: ${error.message}`
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
return results;
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Test all extractor hook imports
|
|
257
|
+
*/
|
|
258
|
+
export const testExtractorImports = () => {
|
|
259
|
+
const results = [];
|
|
260
|
+
|
|
261
|
+
// Test Hinge extractor
|
|
262
|
+
try {
|
|
263
|
+
const {
|
|
264
|
+
useHingeDataExtractor
|
|
265
|
+
} = require('../services/hingeDataExtractor');
|
|
266
|
+
results.push({
|
|
267
|
+
platform: 'hinge',
|
|
268
|
+
component: 'extractor',
|
|
269
|
+
status: typeof useHingeDataExtractor === 'function' ? 'pass' : 'fail',
|
|
270
|
+
message: 'Hinge extractor hook available'
|
|
271
|
+
});
|
|
272
|
+
} catch (error) {
|
|
273
|
+
results.push({
|
|
274
|
+
platform: 'hinge',
|
|
275
|
+
component: 'extractor',
|
|
276
|
+
status: 'fail',
|
|
277
|
+
message: `Import error: ${error.message}`
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// Test Instagram extractor
|
|
282
|
+
try {
|
|
283
|
+
const {
|
|
284
|
+
useInstagramDataExtractor
|
|
285
|
+
} = require('../services/instagramDataExtractor');
|
|
286
|
+
results.push({
|
|
287
|
+
platform: 'instagram',
|
|
288
|
+
component: 'extractor',
|
|
289
|
+
status: typeof useInstagramDataExtractor === 'function' ? 'pass' : 'fail',
|
|
290
|
+
message: 'Instagram extractor hook available'
|
|
291
|
+
});
|
|
292
|
+
} catch (error) {
|
|
293
|
+
results.push({
|
|
294
|
+
platform: 'instagram',
|
|
295
|
+
component: 'extractor',
|
|
296
|
+
status: 'fail',
|
|
297
|
+
message: `Import error: ${error.message}`
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// Test Sephora extractor
|
|
302
|
+
try {
|
|
303
|
+
const {
|
|
304
|
+
useSephoraDataExtractor
|
|
305
|
+
} = require('../services/sephoraDataExtractor');
|
|
306
|
+
results.push({
|
|
307
|
+
platform: 'sephora',
|
|
308
|
+
component: 'extractor',
|
|
309
|
+
status: typeof useSephoraDataExtractor === 'function' ? 'pass' : 'fail',
|
|
310
|
+
message: 'Sephora extractor hook available'
|
|
311
|
+
});
|
|
312
|
+
} catch (error) {
|
|
313
|
+
results.push({
|
|
314
|
+
platform: 'sephora',
|
|
315
|
+
component: 'extractor',
|
|
316
|
+
status: 'fail',
|
|
317
|
+
message: `Import error: ${error.message}`
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
// Test Telegram extractor
|
|
322
|
+
try {
|
|
323
|
+
const {
|
|
324
|
+
useTelegramDataExtractor
|
|
325
|
+
} = require('../services/telegramDataExtractor');
|
|
326
|
+
results.push({
|
|
327
|
+
platform: 'telegram',
|
|
328
|
+
component: 'extractor',
|
|
329
|
+
status: typeof useTelegramDataExtractor === 'function' ? 'pass' : 'fail',
|
|
330
|
+
message: 'Telegram extractor hook available'
|
|
331
|
+
});
|
|
332
|
+
} catch (error) {
|
|
333
|
+
results.push({
|
|
334
|
+
platform: 'telegram',
|
|
335
|
+
component: 'extractor',
|
|
336
|
+
status: 'fail',
|
|
337
|
+
message: `Import error: ${error.message}`
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
return results;
|
|
341
|
+
};
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* Test backend API connectivity
|
|
345
|
+
*/
|
|
346
|
+
export const testBackendConnectivity = async () => {
|
|
347
|
+
const results = [];
|
|
348
|
+
|
|
349
|
+
// Test health endpoint
|
|
350
|
+
try {
|
|
351
|
+
const controller = new AbortController();
|
|
352
|
+
const timeoutId = setTimeout(() => controller.abort(), 10000);
|
|
353
|
+
const response = await fetch(`${API_CONFIG.BASE_URL}/health`, {
|
|
354
|
+
method: 'GET',
|
|
355
|
+
signal: controller.signal
|
|
356
|
+
});
|
|
357
|
+
clearTimeout(timeoutId);
|
|
358
|
+
results.push({
|
|
359
|
+
platform: 'backend',
|
|
360
|
+
component: 'health',
|
|
361
|
+
status: response.ok ? 'pass' : 'warning',
|
|
362
|
+
message: response.ok ? 'Backend health check passed' : `Backend returned status ${response.status}`,
|
|
363
|
+
details: {
|
|
364
|
+
status: response.status
|
|
365
|
+
}
|
|
366
|
+
});
|
|
367
|
+
} catch (error) {
|
|
368
|
+
results.push({
|
|
369
|
+
platform: 'backend',
|
|
370
|
+
component: 'health',
|
|
371
|
+
status: 'fail',
|
|
372
|
+
message: `Backend unreachable: ${error.message}`
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
// Test platform-data endpoint exists (OPTIONS request)
|
|
377
|
+
try {
|
|
378
|
+
const controller = new AbortController();
|
|
379
|
+
const timeoutId = setTimeout(() => controller.abort(), 10000);
|
|
380
|
+
const response = await fetch(`${API_CONFIG.BASE_URL}/platform-data/store`, {
|
|
381
|
+
method: 'OPTIONS',
|
|
382
|
+
signal: controller.signal
|
|
383
|
+
});
|
|
384
|
+
clearTimeout(timeoutId);
|
|
385
|
+
results.push({
|
|
386
|
+
platform: 'backend',
|
|
387
|
+
component: 'platform_data_endpoint',
|
|
388
|
+
status: response.status < 500 ? 'pass' : 'warning',
|
|
389
|
+
message: `Platform data endpoint check: ${response.status}`,
|
|
390
|
+
details: {
|
|
391
|
+
status: response.status
|
|
392
|
+
}
|
|
393
|
+
});
|
|
394
|
+
} catch (error) {
|
|
395
|
+
results.push({
|
|
396
|
+
platform: 'backend',
|
|
397
|
+
component: 'platform_data_endpoint',
|
|
398
|
+
status: 'warning',
|
|
399
|
+
message: `Endpoint check failed (may require auth): ${error.message}`
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
return results;
|
|
403
|
+
};
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* Test platform detection utility functions
|
|
407
|
+
*/
|
|
408
|
+
export const testPlatformDetection = () => {
|
|
409
|
+
const results = [];
|
|
410
|
+
try {
|
|
411
|
+
const {
|
|
412
|
+
isWebViewExtractionPlatform,
|
|
413
|
+
isHingePlatform,
|
|
414
|
+
isInstagramPlatform,
|
|
415
|
+
isSephoraPlatform,
|
|
416
|
+
isLLMPlatform
|
|
417
|
+
} = require('./webviewScripts');
|
|
418
|
+
|
|
419
|
+
// Test Hinge detection
|
|
420
|
+
const hingeTest = isHingePlatform('hinge') && isWebViewExtractionPlatform('hinge') && !isLLMPlatform('hinge');
|
|
421
|
+
results.push({
|
|
422
|
+
platform: 'hinge',
|
|
423
|
+
component: 'detection',
|
|
424
|
+
status: hingeTest ? 'pass' : 'fail',
|
|
425
|
+
message: hingeTest ? 'Hinge detection correct' : 'Hinge detection failed'
|
|
426
|
+
});
|
|
427
|
+
|
|
428
|
+
// Test Instagram detection
|
|
429
|
+
const instagramTest = isInstagramPlatform('instagram') && isWebViewExtractionPlatform('instagram') && !isLLMPlatform('instagram');
|
|
430
|
+
results.push({
|
|
431
|
+
platform: 'instagram',
|
|
432
|
+
component: 'detection',
|
|
433
|
+
status: instagramTest ? 'pass' : 'fail',
|
|
434
|
+
message: instagramTest ? 'Instagram detection correct' : 'Instagram detection failed'
|
|
435
|
+
});
|
|
436
|
+
|
|
437
|
+
// Test Sephora detection
|
|
438
|
+
const sephoraTest = isSephoraPlatform('sephora') && isWebViewExtractionPlatform('sephora') && !isLLMPlatform('sephora');
|
|
439
|
+
results.push({
|
|
440
|
+
platform: 'sephora',
|
|
441
|
+
component: 'detection',
|
|
442
|
+
status: sephoraTest ? 'pass' : 'fail',
|
|
443
|
+
message: sephoraTest ? 'Sephora detection correct' : 'Sephora detection failed'
|
|
444
|
+
});
|
|
445
|
+
|
|
446
|
+
// Test Telegram detection
|
|
447
|
+
const {
|
|
448
|
+
isTelegramPlatform
|
|
449
|
+
} = require('./webviewScripts');
|
|
450
|
+
const telegramTest = isTelegramPlatform('telegram') && isWebViewExtractionPlatform('telegram') && !isLLMPlatform('telegram');
|
|
451
|
+
results.push({
|
|
452
|
+
platform: 'telegram',
|
|
453
|
+
component: 'detection',
|
|
454
|
+
status: telegramTest ? 'pass' : 'fail',
|
|
455
|
+
message: telegramTest ? 'Telegram detection correct' : 'Telegram detection failed'
|
|
456
|
+
});
|
|
457
|
+
} catch (error) {
|
|
458
|
+
results.push({
|
|
459
|
+
platform: 'all',
|
|
460
|
+
component: 'detection',
|
|
461
|
+
status: 'fail',
|
|
462
|
+
message: `Detection test error: ${error.message}`
|
|
463
|
+
});
|
|
464
|
+
}
|
|
465
|
+
return results;
|
|
466
|
+
};
|
|
467
|
+
|
|
468
|
+
/**
|
|
469
|
+
* Run all connector sanity tests
|
|
470
|
+
*/
|
|
471
|
+
export const runConnectorSanityTests = async () => {
|
|
472
|
+
console.log('๐งช [CONNECTOR_TESTS] Starting connector sanity tests...\n');
|
|
473
|
+
const allResults = [];
|
|
474
|
+
|
|
475
|
+
// Run all test suites
|
|
476
|
+
console.log('๐ Testing WebView script exports...');
|
|
477
|
+
allResults.push(...testWebViewScriptExports());
|
|
478
|
+
console.log('๐ Testing service imports...');
|
|
479
|
+
allResults.push(...testServiceImports());
|
|
480
|
+
console.log('๐ Testing extractor imports...');
|
|
481
|
+
allResults.push(...testExtractorImports());
|
|
482
|
+
console.log('๐ Testing platform detection...');
|
|
483
|
+
allResults.push(...testPlatformDetection());
|
|
484
|
+
console.log('๐ Testing backend connectivity...');
|
|
485
|
+
allResults.push(...(await testBackendConnectivity()));
|
|
486
|
+
|
|
487
|
+
// Calculate summary
|
|
488
|
+
const passed = allResults.filter(r => r.status === 'pass').length;
|
|
489
|
+
const failed = allResults.filter(r => r.status === 'fail').length;
|
|
490
|
+
const warnings = allResults.filter(r => r.status === 'warning').length;
|
|
491
|
+
|
|
492
|
+
// Log results
|
|
493
|
+
console.log('\n========================================');
|
|
494
|
+
console.log('๐งช CONNECTOR SANITY TEST RESULTS');
|
|
495
|
+
console.log('========================================\n');
|
|
496
|
+
for (const result of allResults) {
|
|
497
|
+
const icon = result.status === 'pass' ? 'โ
' : result.status === 'fail' ? 'โ' : 'โ ๏ธ';
|
|
498
|
+
console.log(`${icon} [${result.platform.toUpperCase()}] ${result.component}: ${result.message}`);
|
|
499
|
+
}
|
|
500
|
+
console.log('\n========================================');
|
|
501
|
+
console.log(`๐ Summary: ${passed} passed, ${failed} failed, ${warnings} warnings`);
|
|
502
|
+
console.log('========================================\n');
|
|
503
|
+
if (failed > 0) {
|
|
504
|
+
console.log('โ Some tests failed! Please check the errors above.');
|
|
505
|
+
} else if (warnings > 0) {
|
|
506
|
+
console.log('โ ๏ธ All critical tests passed, but there are warnings.');
|
|
507
|
+
} else {
|
|
508
|
+
console.log('โ
All tests passed! Connectors are ready.');
|
|
509
|
+
}
|
|
510
|
+
return {
|
|
511
|
+
passed,
|
|
512
|
+
failed,
|
|
513
|
+
warnings,
|
|
514
|
+
results: allResults
|
|
515
|
+
};
|
|
516
|
+
};
|
|
517
|
+
|
|
518
|
+
/**
|
|
519
|
+
* Quick test to validate a specific platform's connector
|
|
520
|
+
*/
|
|
521
|
+
export const testPlatformConnector = async platformName => {
|
|
522
|
+
console.log(`๐งช Testing ${platformName} connector...\n`);
|
|
523
|
+
const results = [];
|
|
524
|
+
const platform = platformName.toLowerCase();
|
|
525
|
+
|
|
526
|
+
// Test based on platform
|
|
527
|
+
if (['hinge', 'instagram', 'sephora', 'telegram'].includes(platform)) {
|
|
528
|
+
// Test script export
|
|
529
|
+
try {
|
|
530
|
+
const scripts = require('./webviewScripts');
|
|
531
|
+
const scriptKey = `${platform.toUpperCase()}_EXPORT_SCRIPT`;
|
|
532
|
+
const hasScript = !!scripts[scriptKey];
|
|
533
|
+
results.push({
|
|
534
|
+
platform,
|
|
535
|
+
component: 'webview_script',
|
|
536
|
+
status: hasScript ? 'pass' : 'fail',
|
|
537
|
+
message: hasScript ? 'Export script available' : 'Export script missing'
|
|
538
|
+
});
|
|
539
|
+
} catch (e) {
|
|
540
|
+
results.push({
|
|
541
|
+
platform,
|
|
542
|
+
component: 'webview_script',
|
|
543
|
+
status: 'fail',
|
|
544
|
+
message: `Script import failed: ${e.message}`
|
|
545
|
+
});
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
// Test service
|
|
549
|
+
try {
|
|
550
|
+
const service = require(`../services/${platform}DataService`);
|
|
551
|
+
const functionName = platform === 'hinge' ? 'storeHingeData' : platform === 'instagram' ? 'storeInstagramData' : platform === 'telegram' ? 'storeTelegramData' : 'storeSephoraData';
|
|
552
|
+
results.push({
|
|
553
|
+
platform,
|
|
554
|
+
component: 'service',
|
|
555
|
+
status: typeof service[functionName] === 'function' ? 'pass' : 'fail',
|
|
556
|
+
message: `Service function ${functionName} available`
|
|
557
|
+
});
|
|
558
|
+
} catch (e) {
|
|
559
|
+
results.push({
|
|
560
|
+
platform,
|
|
561
|
+
component: 'service',
|
|
562
|
+
status: 'fail',
|
|
563
|
+
message: `Service import failed: ${e.message}`
|
|
564
|
+
});
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
// Test extractor
|
|
568
|
+
try {
|
|
569
|
+
const extractor = require(`../services/${platform}DataExtractor`);
|
|
570
|
+
const hookName = `use${platform.charAt(0).toUpperCase() + platform.slice(1)}DataExtractor`;
|
|
571
|
+
results.push({
|
|
572
|
+
platform,
|
|
573
|
+
component: 'extractor',
|
|
574
|
+
status: typeof extractor[hookName] === 'function' ? 'pass' : 'fail',
|
|
575
|
+
message: `Extractor hook ${hookName} available`
|
|
576
|
+
});
|
|
577
|
+
} catch (e) {
|
|
578
|
+
results.push({
|
|
579
|
+
platform,
|
|
580
|
+
component: 'extractor',
|
|
581
|
+
status: 'fail',
|
|
582
|
+
message: `Extractor import failed: ${e.message}`
|
|
583
|
+
});
|
|
584
|
+
}
|
|
585
|
+
} else {
|
|
586
|
+
results.push({
|
|
587
|
+
platform,
|
|
588
|
+
component: 'validation',
|
|
589
|
+
status: 'warning',
|
|
590
|
+
message: `Unknown platform: ${platformName}. Use 'hinge', 'instagram', 'sephora', or 'telegram'.`
|
|
591
|
+
});
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
// Log results
|
|
595
|
+
for (const result of results) {
|
|
596
|
+
const icon = result.status === 'pass' ? 'โ
' : result.status === 'fail' ? 'โ' : 'โ ๏ธ';
|
|
597
|
+
console.log(`${icon} ${result.component}: ${result.message}`);
|
|
598
|
+
}
|
|
599
|
+
return results;
|
|
600
|
+
};
|
|
601
|
+
//# sourceMappingURL=connectorTests.js.map
|