@silasfmartins/testhub 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/copilot-instructions.md +520 -0
- package/biome.json +37 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.js +169 -0
- package/dist/scripts/consumer-postinstall.d.ts +15 -0
- package/dist/scripts/consumer-postinstall.js +785 -0
- package/dist/scripts/generate-docs.d.ts +16 -0
- package/dist/scripts/generate-docs.js +1363 -0
- package/dist/scripts/generate-index.d.ts +2 -0
- package/dist/scripts/generate-index.js +314 -0
- package/dist/scripts/init-api.d.ts +2 -0
- package/dist/scripts/init-api.js +525 -0
- package/dist/scripts/init-banco.d.ts +2 -0
- package/dist/scripts/init-banco.js +347 -0
- package/dist/scripts/init-frontend.d.ts +2 -0
- package/dist/scripts/init-frontend.js +627 -0
- package/dist/scripts/init-mobile.d.ts +2 -0
- package/dist/scripts/init-mobile.js +481 -0
- package/dist/scripts/init-scenarios.d.ts +2 -0
- package/dist/scripts/init-scenarios.js +846 -0
- package/dist/scripts/init-ssh.d.ts +2 -0
- package/dist/scripts/init-ssh.js +639 -0
- package/dist/scripts/package-versions.d.ts +57 -0
- package/dist/scripts/package-versions.js +768 -0
- package/dist/scripts/postinstall.d.ts +1 -0
- package/dist/scripts/postinstall.js +527 -0
- package/dist/scripts/robust-build.d.ts +7 -0
- package/dist/scripts/robust-build.js +88 -0
- package/dist/scripts/setup-local-packages.d.ts +31 -0
- package/dist/scripts/setup-local-packages.js +237 -0
- package/dist/scripts/smart-override.d.ts +2 -0
- package/dist/scripts/smart-override.js +1360 -0
- package/dist/scripts/sync-configs.d.ts +27 -0
- package/dist/scripts/sync-configs.js +248 -0
- package/dist/scripts/test-biome-parse.d.ts +5 -0
- package/dist/scripts/test-biome-parse.js +84 -0
- package/dist/scripts/ultracite-setup.d.ts +4 -0
- package/dist/scripts/ultracite-setup.js +310 -0
- package/dist/scripts/update-all-init-scripts.d.ts +2 -0
- package/dist/scripts/update-all-init-scripts.js +52 -0
- package/dist/scripts/update-biome-schema.d.ts +15 -0
- package/dist/scripts/update-biome-schema.js +124 -0
- package/dist/src/AutoCoreFacade.d.ts +145 -0
- package/dist/src/AutoCoreFacade.js +217 -0
- package/dist/src/api/ApiActions.d.ts +297 -0
- package/dist/src/api/ApiActions.js +1905 -0
- package/dist/src/api/Certificate.d.ts +60 -0
- package/dist/src/api/Certificate.js +79 -0
- package/dist/src/api/JsonResponse.d.ts +116 -0
- package/dist/src/api/JsonResponse.js +206 -0
- package/dist/src/appium/DeviceFarmViewer.d.ts +79 -0
- package/dist/src/appium/DeviceFarmViewer.js +1083 -0
- package/dist/src/appium/MobileActions.d.ts +347 -0
- package/dist/src/appium/MobileActions.js +1632 -0
- package/dist/src/appium/MobileConnection.d.ts +160 -0
- package/dist/src/appium/MobileConnection.js +772 -0
- package/dist/src/config/envLoader.d.ts +123 -0
- package/dist/src/config/envLoader.js +361 -0
- package/dist/src/config/jest-safe-setup.d.ts +19 -0
- package/dist/src/config/jest-safe-setup.js +369 -0
- package/dist/src/config/timeouts.d.ts +32 -0
- package/dist/src/config/timeouts.js +38 -0
- package/dist/src/desktop/DesktopActions.d.ts +46 -0
- package/dist/src/desktop/DesktopActions.js +398 -0
- package/dist/src/desktop/DesktopConnection.d.ts +32 -0
- package/dist/src/desktop/DesktopConnection.js +84 -0
- package/dist/src/domain/entities/TestExecution.d.ts +117 -0
- package/dist/src/domain/entities/TestExecution.js +150 -0
- package/dist/src/domain/entities/TestReport.d.ts +114 -0
- package/dist/src/domain/entities/TestReport.js +179 -0
- package/dist/src/domain/repositories/ITestRepository.d.ts +196 -0
- package/dist/src/domain/repositories/ITestRepository.js +14 -0
- package/dist/src/domain/schemas/ValidationSchemas.d.ts +159 -0
- package/dist/src/domain/schemas/ValidationSchemas.js +181 -0
- package/dist/src/functions/errors/BaseError.d.ts +78 -0
- package/dist/src/functions/errors/BaseError.js +245 -0
- package/dist/src/functions/errors/ConfigurationError.d.ts +16 -0
- package/dist/src/functions/errors/ConfigurationError.js +48 -0
- package/dist/src/functions/errors/ErrorCatalog.d.ts +148 -0
- package/dist/src/functions/errors/ErrorCatalog.js +157 -0
- package/dist/src/functions/errors/GlobalErrorHandler.d.ts +101 -0
- package/dist/src/functions/errors/GlobalErrorHandler.js +281 -0
- package/dist/src/functions/errors/IntegrationError.d.ts +17 -0
- package/dist/src/functions/errors/IntegrationError.js +51 -0
- package/dist/src/functions/errors/SecurityError.d.ts +14 -0
- package/dist/src/functions/errors/SecurityError.js +42 -0
- package/dist/src/functions/errors/SystemError.d.ts +12 -0
- package/dist/src/functions/errors/SystemError.js +36 -0
- package/dist/src/functions/errors/ValidationError.d.ts +14 -0
- package/dist/src/functions/errors/ValidationError.js +61 -0
- package/dist/src/functions/errors/index.d.ts +12 -0
- package/dist/src/functions/errors/index.js +13 -0
- package/dist/src/global-setup.d.ts +1 -0
- package/dist/src/global-setup.js +1037 -0
- package/dist/src/helpers/BancoActions.d.ts +188 -0
- package/dist/src/helpers/BancoActions.js +581 -0
- package/dist/src/helpers/EnviromentHelper.d.ts +17 -0
- package/dist/src/helpers/EnviromentHelper.js +66 -0
- package/dist/src/helpers/ParallelExecutionHelper.d.ts +183 -0
- package/dist/src/helpers/ParallelExecutionHelper.js +375 -0
- package/dist/src/helpers/SyncSignal.d.ts +15 -0
- package/dist/src/helpers/SyncSignal.js +44 -0
- package/dist/src/hubdocs/CategoryDetector.d.ts +83 -0
- package/dist/src/hubdocs/CategoryDetector.js +401 -0
- package/dist/src/hubdocs/DirectStatementInterceptor.d.ts +54 -0
- package/dist/src/hubdocs/DirectStatementInterceptor.js +243 -0
- package/dist/src/hubdocs/ExecutionTracker.d.ts +107 -0
- package/dist/src/hubdocs/ExecutionTracker.js +702 -0
- package/dist/src/hubdocs/HubDocs.d.ts +395 -0
- package/dist/src/hubdocs/HubDocs.js +3586 -0
- package/dist/src/hubdocs/StatementMethodFilter.d.ts +71 -0
- package/dist/src/hubdocs/StatementMethodFilter.js +618 -0
- package/dist/src/hubdocs/StatementTracker.d.ts +417 -0
- package/dist/src/hubdocs/StatementTracker.js +2419 -0
- package/dist/src/hubdocs/SwaggerGenerator.d.ts +59 -0
- package/dist/src/hubdocs/SwaggerGenerator.js +405 -0
- package/dist/src/hubdocs/index.d.ts +9 -0
- package/dist/src/hubdocs/index.js +9 -0
- package/dist/src/hubdocs/types.d.ts +114 -0
- package/dist/src/hubdocs/types.js +5 -0
- package/dist/src/infrastructure/DependencyContainer.d.ts +142 -0
- package/dist/src/infrastructure/DependencyContainer.js +250 -0
- package/dist/src/infrastructure/adapters/AppiumAdapter.d.ts +168 -0
- package/dist/src/infrastructure/adapters/AppiumAdapter.js +468 -0
- package/dist/src/infrastructure/adapters/OracleAdapter.d.ts +150 -0
- package/dist/src/infrastructure/adapters/OracleAdapter.js +388 -0
- package/dist/src/infrastructure/adapters/PlaywrightAdapter.d.ts +192 -0
- package/dist/src/infrastructure/adapters/PlaywrightAdapter.js +382 -0
- package/dist/src/infrastructure/adapters/SSHAdapter.d.ts +141 -0
- package/dist/src/infrastructure/adapters/SSHAdapter.js +428 -0
- package/dist/src/interfaces.d.ts +501 -0
- package/dist/src/interfaces.js +25 -0
- package/dist/src/internal/fakes/__fake-actions__.d.ts +17 -0
- package/dist/src/internal/fakes/__fake-actions__.js +21 -0
- package/dist/src/internal/fakes/__forbidden__.d.ts +10 -0
- package/dist/src/internal/fakes/__forbidden__.js +18 -0
- package/dist/src/internal/fakes/__honeypot__.d.ts +15 -0
- package/dist/src/internal/fakes/__honeypot__.js +24 -0
- package/dist/src/octane/OctaneReporter.d.ts +13 -0
- package/dist/src/octane/OctaneReporter.js +61 -0
- package/dist/src/playwright/CryptoActions.d.ts +20 -0
- package/dist/src/playwright/CryptoActions.js +75 -0
- package/dist/src/playwright/EnhancedWebActions.d.ts +7 -0
- package/dist/src/playwright/EnhancedWebActions.js +65 -0
- package/dist/src/playwright/WebActions.d.ts +1599 -0
- package/dist/src/playwright/WebActions.js +11788 -0
- package/dist/src/playwright/actions/ActionTimeline.d.ts +36 -0
- package/dist/src/playwright/actions/ActionTimeline.js +101 -0
- package/dist/src/playwright/actions/RecoveryQueue.d.ts +82 -0
- package/dist/src/playwright/actions/RecoveryQueue.js +130 -0
- package/dist/src/playwright/actions/SelectorCache.d.ts +53 -0
- package/dist/src/playwright/actions/SelectorCache.js +96 -0
- package/dist/src/playwright/actions/index.d.ts +13 -0
- package/dist/src/playwright/actions/index.js +14 -0
- package/dist/src/playwright/actions/types.d.ts +147 -0
- package/dist/src/playwright/actions/types.js +5 -0
- package/dist/src/playwright/fixtures.d.ts +112 -0
- package/dist/src/playwright/fixtures.js +718 -0
- package/dist/src/playwright/network-logs-reporter.d.ts +7 -0
- package/dist/src/playwright/network-logs-reporter.js +66 -0
- package/dist/src/playwright/registerRecoveryWrappers.d.ts +1 -0
- package/dist/src/playwright/registerRecoveryWrappers.js +54 -0
- package/dist/src/security/BuildSecurity.d.ts +12 -0
- package/dist/src/security/BuildSecurity.js +138 -0
- package/dist/src/security/EulaProtection.d.ts +70 -0
- package/dist/src/security/EulaProtection.js +155 -0
- package/dist/src/security/HoneypotManager.d.ts +46 -0
- package/dist/src/security/HoneypotManager.js +234 -0
- package/dist/src/security/KeysManager.d.ts +36 -0
- package/dist/src/security/KeysManager.js +158 -0
- package/dist/src/security/ProofOfWorkIntegration.d.ts +64 -0
- package/dist/src/security/ProofOfWorkIntegration.js +206 -0
- package/dist/src/security/SecurityValidation.d.ts +21 -0
- package/dist/src/security/SecurityValidation.js +163 -0
- package/dist/src/security/SourceMapProtection.d.ts +55 -0
- package/dist/src/security/SourceMapProtection.js +220 -0
- package/dist/src/security/protector.d.ts +1 -0
- package/dist/src/security/protector.js +97 -0
- package/dist/src/ssh/SSHActions.d.ts +262 -0
- package/dist/src/ssh/SSHActions.js +790 -0
- package/dist/src/ssh/SSHClient.d.ts +99 -0
- package/dist/src/ssh/SSHClient.js +409 -0
- package/dist/src/statements/BaseStatement.d.ts +38 -0
- package/dist/src/statements/BaseStatement.js +78 -0
- package/dist/src/testContext/AuthStateManager.d.ts +93 -0
- package/dist/src/testContext/AuthStateManager.js +256 -0
- package/dist/src/testContext/CoverageManager.d.ts +198 -0
- package/dist/src/testContext/CoverageManager.js +917 -0
- package/dist/src/testContext/TestAnnotations.d.ts +476 -0
- package/dist/src/testContext/TestAnnotations.js +2647 -0
- package/dist/src/testContext/TestContext.d.ts +138 -0
- package/dist/src/testContext/TestContext.js +369 -0
- package/dist/src/testContext/UnifiedHtmlGenerator.d.ts +7 -0
- package/dist/src/testContext/UnifiedHtmlGenerator.js +264 -0
- package/dist/src/testContext/UnifiedReportManager.d.ts +211 -0
- package/dist/src/testContext/UnifiedReportManager.js +1206 -0
- package/dist/src/testhub/DynamicConfigManager.d.ts +121 -0
- package/dist/src/testhub/DynamicConfigManager.js +320 -0
- package/dist/src/testhub/SystemsManager.d.ts +119 -0
- package/dist/src/testhub/SystemsManager.js +365 -0
- package/dist/src/testhub/TestHubClient.d.ts +335 -0
- package/dist/src/testhub/TestHubClient.js +1215 -0
- package/dist/src/testhub/TestHubReporter.d.ts +62 -0
- package/dist/src/testhub/TestHubReporter.js +576 -0
- package/dist/src/testhub/TestHubVars.d.ts +116 -0
- package/dist/src/testhub/TestHubVars.js +273 -0
- package/dist/src/utils/ActionInterceptor.d.ts +59 -0
- package/dist/src/utils/ActionInterceptor.js +741 -0
- package/dist/src/utils/ArtifactsCompressor.d.ts +43 -0
- package/dist/src/utils/ArtifactsCompressor.js +181 -0
- package/dist/src/utils/AutoLogsFinal.d.ts +47 -0
- package/dist/src/utils/AutoLogsFinal.js +148 -0
- package/dist/src/utils/CodeGenSession.d.ts +114 -0
- package/dist/src/utils/CodeGenSession.js +264 -0
- package/dist/src/utils/ConfigLogger.d.ts +133 -0
- package/dist/src/utils/ConfigLogger.js +611 -0
- package/dist/src/utils/CustomReporter.d.ts +22 -0
- package/dist/src/utils/CustomReporter.js +352 -0
- package/dist/src/utils/DataStore.d.ts +171 -0
- package/dist/src/utils/DataStore.js +484 -0
- package/dist/src/utils/DatabaseInterceptor.d.ts +19 -0
- package/dist/src/utils/DatabaseInterceptor.js +295 -0
- package/dist/src/utils/DateHelper.d.ts +16 -0
- package/dist/src/utils/DateHelper.js +120 -0
- package/dist/src/utils/DateValidator.d.ts +4 -0
- package/dist/src/utils/DateValidator.js +51 -0
- package/dist/src/utils/DocumentGenerator.d.ts +35 -0
- package/dist/src/utils/DocumentGenerator.js +129 -0
- package/dist/src/utils/EvidenceCapture.d.ts +90 -0
- package/dist/src/utils/EvidenceCapture.js +600 -0
- package/dist/src/utils/EvidenceReportGenerator.d.ts +70 -0
- package/dist/src/utils/EvidenceReportGenerator.js +799 -0
- package/dist/src/utils/FrameManagementUtil.d.ts +42 -0
- package/dist/src/utils/FrameManagementUtil.js +75 -0
- package/dist/src/utils/GlobalStatementsInterceptor.d.ts +1 -0
- package/dist/src/utils/GlobalStatementsInterceptor.js +1 -0
- package/dist/src/utils/HTMLTemplate.d.ts +1 -0
- package/dist/src/utils/HTMLTemplate.js +1034 -0
- package/dist/src/utils/InterceptacaoMagica.d.ts +23 -0
- package/dist/src/utils/InterceptacaoMagica.js +365 -0
- package/dist/src/utils/LogSanitizer.d.ts +35 -0
- package/dist/src/utils/LogSanitizer.js +110 -0
- package/dist/src/utils/Logger.d.ts +65 -0
- package/dist/src/utils/Logger.js +284 -0
- package/dist/src/utils/McpLocalClient.d.ts +141 -0
- package/dist/src/utils/McpLocalClient.js +871 -0
- package/dist/src/utils/PDFEvidenceGenerator.d.ts +20 -0
- package/dist/src/utils/PDFEvidenceGenerator.js +156 -0
- package/dist/src/utils/SpecFileAnalyzer.d.ts +35 -0
- package/dist/src/utils/SpecFileAnalyzer.js +209 -0
- package/dist/src/utils/StatementInterceptor.d.ts +18 -0
- package/dist/src/utils/StatementInterceptor.js +87 -0
- package/dist/src/utils/StatementLogger.d.ts +33 -0
- package/dist/src/utils/StatementLogger.js +113 -0
- package/dist/src/utils/StatementsInterceptor.d.ts +1 -0
- package/dist/src/utils/StatementsInterceptor.js +1 -0
- package/dist/src/utils/TeamsFlushHook.d.ts +17 -0
- package/dist/src/utils/TeamsFlushHook.js +168 -0
- package/dist/src/utils/TerminalLogCapture.d.ts +158 -0
- package/dist/src/utils/TerminalLogCapture.js +531 -0
- package/dist/src/utils/TestMethodLogger.d.ts +70 -0
- package/dist/src/utils/TestMethodLogger.js +95 -0
- package/dist/src/utils/UnifiedTeardown.d.ts +4 -0
- package/dist/src/utils/UnifiedTeardown.js +400 -0
- package/dist/src/utils/XPathCatalog.d.ts +152 -0
- package/dist/src/utils/XPathCatalog.js +350 -0
- package/dist/src/utils/generators.d.ts +90 -0
- package/dist/src/utils/generators.js +167 -0
- package/dist/src/utils/testRecovery/ResilientPlaywright.d.ts +152 -0
- package/dist/src/utils/testRecovery/ResilientPlaywright.js +715 -0
- package/dist/src/utils/testRecovery/TestRecoveryClient.d.ts +801 -0
- package/dist/src/utils/testRecovery/TestRecoveryClient.js +1415 -0
- package/dist/src/utils/testRecovery/autoFixCode.d.ts +65 -0
- package/dist/src/utils/testRecovery/autoFixCode.js +32 -0
- package/dist/vitest.config.d.ts +2 -0
- package/dist/vitest.config.js +59 -0
- package/dist/wdio.conf.d.ts +1 -0
- package/dist/wdio.conf.js +420 -0
- package/package.json +137 -0
- package/protect-loader.mjs +643 -0
- package/scripts/consumer-postinstall.ts +975 -0
- package/scripts/generate-index.ts +343 -0
- package/scripts/init-api.ts +613 -0
- package/scripts/init-banco.ts +437 -0
- package/scripts/init-frontend.ts +727 -0
- package/scripts/init-mobile.ts +558 -0
- package/scripts/init-scenarios.ts +925 -0
- package/scripts/init-ssh.ts +734 -0
- package/scripts/package-versions.ts +978 -0
- package/scripts/postinstall.ts +605 -0
- package/scripts/smart-override.ts +1675 -0
- package/scripts/sync-configs.ts +302 -0
- package/scripts/ultracite-setup.ts +370 -0
- package/src/types/globals.d.ts +48 -0
- package/tsconfig.json +29 -0
- package/types/autocore-sync-signal.d.ts +10 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🎯 SISTEMA DIRETO DE INTERCEPTAÇÃO V2
|
|
3
|
+
*
|
|
4
|
+
* Sistema simplificado que intercepta DIRETAMENTE as classes Statement do usuário
|
|
5
|
+
* Foca apenas no que funciona, sem complexidade desnecessária
|
|
6
|
+
*/
|
|
7
|
+
import { StatementTracker } from './StatementTracker.js';
|
|
8
|
+
class DirectStatementInterceptor {
|
|
9
|
+
static initialized = false;
|
|
10
|
+
static interceptedClasses = new Set();
|
|
11
|
+
/**
|
|
12
|
+
* 🚀 Inicializar interceptação direta
|
|
13
|
+
*/
|
|
14
|
+
static initialize() {
|
|
15
|
+
if (DirectStatementInterceptor.initialized)
|
|
16
|
+
return;
|
|
17
|
+
DirectStatementInterceptor.initialized = true;
|
|
18
|
+
console.log('🎯 [DirectInterceptor] Inicializando sistema direto...');
|
|
19
|
+
// 1. Interceptar imediatamente qualquer classe que contenha "Statement" no nome
|
|
20
|
+
DirectStatementInterceptor.interceptGlobalClasses();
|
|
21
|
+
// 2. 🆕 NOVA: Interceptar instanciações dinâmicas com 'new'
|
|
22
|
+
DirectStatementInterceptor.setupNewInterceptor();
|
|
23
|
+
// 3. Configurar interceptação via constructor hooks
|
|
24
|
+
DirectStatementInterceptor.setupConstructorHooks();
|
|
25
|
+
// 4. Configurar scanner contínuo para novas classes
|
|
26
|
+
DirectStatementInterceptor.setupContinuousScanner();
|
|
27
|
+
console.log('✅ [DirectInterceptor] Sistema direto ativo!');
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 🆕 INTERCEPTAR INSTANCIAÇÕES DINÂMICAS - VERSÃO SIMPLIFICADA
|
|
31
|
+
*/
|
|
32
|
+
static setupNewInterceptor() {
|
|
33
|
+
console.log('🎯 [DirectInterceptor] Configurando interceptação agressiva de instanciações...');
|
|
34
|
+
// Scanner mais agressivo para capturar classes que são carregadas dinamicamente
|
|
35
|
+
const aggressiveScanInterval = setInterval(() => {
|
|
36
|
+
DirectStatementInterceptor.aggressiveScanForStatements();
|
|
37
|
+
}, 500); // Scan a cada 500ms - muito mais frequente
|
|
38
|
+
// Scanner por módulos carregados
|
|
39
|
+
const moduleScanInterval = setInterval(() => {
|
|
40
|
+
DirectStatementInterceptor.scanLoadedModules();
|
|
41
|
+
}, 1000);
|
|
42
|
+
// Limpar scanners após 20 segundos
|
|
43
|
+
setTimeout(() => {
|
|
44
|
+
clearInterval(aggressiveScanInterval);
|
|
45
|
+
clearInterval(moduleScanInterval);
|
|
46
|
+
console.log('🎯 [DirectInterceptor] Scanners agressivos finalizados');
|
|
47
|
+
}, 20_000);
|
|
48
|
+
console.log('✅ [DirectInterceptor] Interceptação agressiva configurada');
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 🔍 Scan agressivo por classes Statement (mais frequente)
|
|
52
|
+
*/
|
|
53
|
+
static aggressiveScanForStatements() {
|
|
54
|
+
// Escanear propriedades globais
|
|
55
|
+
for (const name of Object.getOwnPropertyNames(globalThis)) {
|
|
56
|
+
if (name.startsWith('Statements') &&
|
|
57
|
+
!DirectStatementInterceptor.interceptedClasses.has(name)) {
|
|
58
|
+
try {
|
|
59
|
+
const obj = globalThis[name];
|
|
60
|
+
if (typeof obj === 'function') {
|
|
61
|
+
console.log(`🆕 [DirectInterceptor] CLASSE STATEMENT DETECTADA: ${name}`);
|
|
62
|
+
DirectStatementInterceptor.interceptClass(obj, name);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
// Ignorar erros
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Escanear também no global object
|
|
71
|
+
if (typeof global !== 'undefined') {
|
|
72
|
+
for (const name of Object.getOwnPropertyNames(global)) {
|
|
73
|
+
if (name.startsWith('Statements') &&
|
|
74
|
+
!DirectStatementInterceptor.interceptedClasses.has(name)) {
|
|
75
|
+
try {
|
|
76
|
+
const obj = global[name];
|
|
77
|
+
if (typeof obj === 'function') {
|
|
78
|
+
console.log(`🆕 [DirectInterceptor] CLASSE STATEMENT DETECTADA (global): ${name}`);
|
|
79
|
+
DirectStatementInterceptor.interceptClass(obj, name);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
// Ignorar erros
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* 🔍 Escanear módulos carregados
|
|
91
|
+
*/
|
|
92
|
+
static scanLoadedModules() {
|
|
93
|
+
// Tentar acessar require.cache se disponível (Node.js)
|
|
94
|
+
try {
|
|
95
|
+
if (typeof require !== 'undefined' && require.cache) {
|
|
96
|
+
for (const modulePath of Object.keys(require.cache)) {
|
|
97
|
+
if (modulePath.includes('Statement') && modulePath.includes('.js')) {
|
|
98
|
+
const moduleExports = require.cache[modulePath]?.exports;
|
|
99
|
+
if (moduleExports && typeof moduleExports === 'object') {
|
|
100
|
+
for (const [exportName, exportValue] of Object.entries(moduleExports)) {
|
|
101
|
+
if (exportName.startsWith('Statements') &&
|
|
102
|
+
typeof exportValue === 'function' &&
|
|
103
|
+
!DirectStatementInterceptor.interceptedClasses.has(exportName)) {
|
|
104
|
+
console.log(`🆕 [DirectInterceptor] CLASSE DO MÓDULO DETECTADA: ${exportName}`);
|
|
105
|
+
DirectStatementInterceptor.interceptClass(exportValue, exportName);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
// require.cache pode não estar disponível em todos os ambientes
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* 🔍 Interceptar classes globais existentes
|
|
119
|
+
*/
|
|
120
|
+
static interceptGlobalClasses() {
|
|
121
|
+
// Buscar em globalThis por qualquer classe que termine com Statement
|
|
122
|
+
Object.getOwnPropertyNames(globalThis).forEach((name) => {
|
|
123
|
+
try {
|
|
124
|
+
const obj = globalThis[name];
|
|
125
|
+
if (typeof obj === 'function' &&
|
|
126
|
+
name.includes('Statement') &&
|
|
127
|
+
!name.includes('Base')) {
|
|
128
|
+
console.log(`🎯 [DirectInterceptor] Classe encontrada: ${name}`);
|
|
129
|
+
DirectStatementInterceptor.interceptClass(obj, name);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
// Ignorar erros
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* 🏗️ Setup de hooks simplificado
|
|
139
|
+
*/
|
|
140
|
+
static setupConstructorHooks() {
|
|
141
|
+
// Sistema simplificado - apenas logging
|
|
142
|
+
console.log('🎯 [DirectInterceptor] Hooks configurados (modo simplificado)');
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* 🔄 Scanner contínuo para novas classes
|
|
146
|
+
*/
|
|
147
|
+
static setupContinuousScanner() {
|
|
148
|
+
const scanInterval = setInterval(() => {
|
|
149
|
+
DirectStatementInterceptor.scanForNewClasses();
|
|
150
|
+
}, 2000);
|
|
151
|
+
// Limpar após 30 segundos para não consumir recursos
|
|
152
|
+
setTimeout(() => {
|
|
153
|
+
clearInterval(scanInterval);
|
|
154
|
+
console.log('🎯 [DirectInterceptor] Scanner contínuo finalizado');
|
|
155
|
+
}, 30_000);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* 🔍 Escanear por novas classes
|
|
159
|
+
*/
|
|
160
|
+
static scanForNewClasses() {
|
|
161
|
+
Object.getOwnPropertyNames(globalThis).forEach((name) => {
|
|
162
|
+
if (name.includes('Statement') &&
|
|
163
|
+
!name.includes('Base') &&
|
|
164
|
+
!DirectStatementInterceptor.interceptedClasses.has(name)) {
|
|
165
|
+
try {
|
|
166
|
+
const obj = globalThis[name];
|
|
167
|
+
if (typeof obj === 'function') {
|
|
168
|
+
console.log(`🎯 [DirectInterceptor] Nova classe detectada no scan: ${name}`);
|
|
169
|
+
DirectStatementInterceptor.interceptClass(obj, name);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
// Ignorar erros
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* 🎯 Interceptar uma classe específica
|
|
180
|
+
*/
|
|
181
|
+
static interceptClass(StatementClass, className) {
|
|
182
|
+
if (DirectStatementInterceptor.interceptedClasses.has(className))
|
|
183
|
+
return;
|
|
184
|
+
DirectStatementInterceptor.interceptedClasses.add(className);
|
|
185
|
+
console.log(`🔥 [DirectInterceptor] Interceptando ${className}...`);
|
|
186
|
+
try {
|
|
187
|
+
// Interceptar todos os métodos do prototype
|
|
188
|
+
const prototype = StatementClass.prototype;
|
|
189
|
+
if (!prototype)
|
|
190
|
+
return;
|
|
191
|
+
const methodNames = Object.getOwnPropertyNames(prototype);
|
|
192
|
+
for (const methodName of methodNames) {
|
|
193
|
+
if (methodName === 'constructor' || methodName.startsWith('_'))
|
|
194
|
+
continue;
|
|
195
|
+
try {
|
|
196
|
+
const originalMethod = prototype[methodName];
|
|
197
|
+
if (typeof originalMethod !== 'function')
|
|
198
|
+
continue;
|
|
199
|
+
// Criar wrapper do método
|
|
200
|
+
prototype[methodName] = async function (...args) {
|
|
201
|
+
console.log(`🎯 [DirectInterceptor] Executando ${className}.${methodName}`);
|
|
202
|
+
// Registrar início do CT
|
|
203
|
+
const timestamp = StatementTracker.startStatement(className, methodName);
|
|
204
|
+
try {
|
|
205
|
+
// Executar método original
|
|
206
|
+
const result = await originalMethod.apply(this, args);
|
|
207
|
+
// Registrar sucesso
|
|
208
|
+
StatementTracker.finishStatement(timestamp, true);
|
|
209
|
+
console.log(`✅ [DirectInterceptor] ${className}.${methodName} concluído com sucesso`);
|
|
210
|
+
return result;
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
// Registrar falha
|
|
214
|
+
StatementTracker.finishStatement(timestamp, false, String(error));
|
|
215
|
+
console.log(`❌ [DirectInterceptor] ${className}.${methodName} falhou: ${error}`);
|
|
216
|
+
throw error;
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
console.log(`✅ [DirectInterceptor] Método ${className}.${methodName} interceptado`);
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
console.log(`⚠️ [DirectInterceptor] Erro ao interceptar ${className}.${methodName}:`, error);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
console.log(`🎯 [DirectInterceptor] Classe ${className} completamente interceptada!`);
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
console.log(`❌ [DirectInterceptor] Erro ao interceptar classe ${className}:`, error);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* 📊 Status do interceptor
|
|
233
|
+
*/
|
|
234
|
+
static getStatus() {
|
|
235
|
+
return {
|
|
236
|
+
initialized: DirectStatementInterceptor.initialized,
|
|
237
|
+
interceptedClasses: Array.from(DirectStatementInterceptor.interceptedClasses),
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
export { DirectStatementInterceptor };
|
|
242
|
+
// Auto-inicialização (uma única vez, guardada por flag interna)
|
|
243
|
+
DirectStatementInterceptor.initialize();
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🔍 ExecutionTracker - Interceptador Principal
|
|
3
|
+
* @silasfmartins/testhub - Auto Documentation System
|
|
4
|
+
*/
|
|
5
|
+
import type { APICall, DBQuery, DocsConfig, ExecutionData, MobileAction, SSHCommand, UIAction } from './types.js';
|
|
6
|
+
export declare class ExecutionTracker {
|
|
7
|
+
private static isExecutingInternal;
|
|
8
|
+
/**
|
|
9
|
+
* 🔗 HOOK: Notificar StatementTracker sobre ações executadas
|
|
10
|
+
*/
|
|
11
|
+
private static notifyStatementTracker;
|
|
12
|
+
/**
|
|
13
|
+
* ✅ NOVO: Obter versão atual do AutoCore (com proteção contra recursão)
|
|
14
|
+
*/
|
|
15
|
+
private static getAutoCoreVersion;
|
|
16
|
+
private static data;
|
|
17
|
+
private static config;
|
|
18
|
+
private static tempDir;
|
|
19
|
+
private static dataFile;
|
|
20
|
+
/**
|
|
21
|
+
* ✅ Inicializar o tracker
|
|
22
|
+
*/
|
|
23
|
+
static initialize(projectName?: string, projectType?: string): void;
|
|
24
|
+
/**
|
|
25
|
+
* ✅ NOVO: Detectar nome do projeto a partir do caminho
|
|
26
|
+
*/
|
|
27
|
+
private static detectProjectNameFromPath;
|
|
28
|
+
/**
|
|
29
|
+
* ✅ NOVO: Detectar tipo de projeto automaticamente
|
|
30
|
+
*/
|
|
31
|
+
private static detectProjectType;
|
|
32
|
+
/**
|
|
33
|
+
* 🌐 Rastrear chamada de API
|
|
34
|
+
*/
|
|
35
|
+
static trackAPI(call: APICall): void;
|
|
36
|
+
/**
|
|
37
|
+
* 🔄 Atualizar resultado de API específica
|
|
38
|
+
*/
|
|
39
|
+
static updateAPIResult(docId: string, response?: any, statusCode?: number, error?: any): void;
|
|
40
|
+
/**
|
|
41
|
+
* 🖥️ Rastrear comando SSH
|
|
42
|
+
*/
|
|
43
|
+
static trackSSH(command: SSHCommand): void;
|
|
44
|
+
/**
|
|
45
|
+
* 🔄 Atualizar resultado de comando SSH específico
|
|
46
|
+
*/
|
|
47
|
+
static updateSSHResult(command: string, timestamp: string, success: boolean, duration: number, exitCode?: number, error?: string): void;
|
|
48
|
+
/**
|
|
49
|
+
* 🗄️ Rastrear query de banco
|
|
50
|
+
*/
|
|
51
|
+
static trackDB(query: DBQuery): void;
|
|
52
|
+
/**
|
|
53
|
+
* 🔄 Atualizar resultado de query de banco específica
|
|
54
|
+
*/
|
|
55
|
+
static updateDBResult(query: string, timestamp: string, success: boolean, duration: number, error?: string, resultCount?: number): void;
|
|
56
|
+
/**
|
|
57
|
+
* 🎨 Rastrear ação de UI
|
|
58
|
+
*/
|
|
59
|
+
static trackUI(action: UIAction): void;
|
|
60
|
+
/**
|
|
61
|
+
* 📱 Rastrear ação mobile
|
|
62
|
+
*/
|
|
63
|
+
static trackMobile(action: MobileAction): void;
|
|
64
|
+
/**
|
|
65
|
+
* 📊 Atualizar estatísticas de testes
|
|
66
|
+
*/
|
|
67
|
+
static updateTestStats(total: number, passed: number, failed: number): void;
|
|
68
|
+
/**
|
|
69
|
+
* 💾 Salvar dados em arquivo temporário (COM PROTEÇÃO CONTRA PERDA)
|
|
70
|
+
*/
|
|
71
|
+
private static saveToFile;
|
|
72
|
+
/**
|
|
73
|
+
* 📖 Recuperar dados do arquivo
|
|
74
|
+
*/
|
|
75
|
+
static loadFromFile(): ExecutionData | null;
|
|
76
|
+
/**
|
|
77
|
+
* 📋 Obter dados atuais (COM PROTEÇÃO CONTRA PERDA)
|
|
78
|
+
*/
|
|
79
|
+
static getData(): ExecutionData;
|
|
80
|
+
/**
|
|
81
|
+
* 🏁 Finalizar execução (PRESERVA TODOS OS DADOS)
|
|
82
|
+
*/
|
|
83
|
+
static finalize(): void;
|
|
84
|
+
/**
|
|
85
|
+
* 🧹 Limpar dados (APENAS EM DESENVOLVIMENTO - NUNCA EM PRODUÇÃO)
|
|
86
|
+
*/
|
|
87
|
+
static reset(): void;
|
|
88
|
+
/**
|
|
89
|
+
* ⚙️ Configurar opções
|
|
90
|
+
*/
|
|
91
|
+
static configure(config: Partial<DocsConfig>): void;
|
|
92
|
+
/**
|
|
93
|
+
* 📊 Obter configuração atual
|
|
94
|
+
*/
|
|
95
|
+
static getConfig(): DocsConfig;
|
|
96
|
+
/**
|
|
97
|
+
* 📈 Obter estatísticas rápidas
|
|
98
|
+
*/
|
|
99
|
+
static getStats(): {
|
|
100
|
+
totalActions: number;
|
|
101
|
+
categories: {
|
|
102
|
+
name: string;
|
|
103
|
+
count: number;
|
|
104
|
+
}[];
|
|
105
|
+
duration: number;
|
|
106
|
+
};
|
|
107
|
+
}
|