@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.
Files changed (296) hide show
  1. package/.github/copilot-instructions.md +520 -0
  2. package/biome.json +37 -0
  3. package/dist/index.d.ts +45 -0
  4. package/dist/index.js +169 -0
  5. package/dist/scripts/consumer-postinstall.d.ts +15 -0
  6. package/dist/scripts/consumer-postinstall.js +785 -0
  7. package/dist/scripts/generate-docs.d.ts +16 -0
  8. package/dist/scripts/generate-docs.js +1363 -0
  9. package/dist/scripts/generate-index.d.ts +2 -0
  10. package/dist/scripts/generate-index.js +314 -0
  11. package/dist/scripts/init-api.d.ts +2 -0
  12. package/dist/scripts/init-api.js +525 -0
  13. package/dist/scripts/init-banco.d.ts +2 -0
  14. package/dist/scripts/init-banco.js +347 -0
  15. package/dist/scripts/init-frontend.d.ts +2 -0
  16. package/dist/scripts/init-frontend.js +627 -0
  17. package/dist/scripts/init-mobile.d.ts +2 -0
  18. package/dist/scripts/init-mobile.js +481 -0
  19. package/dist/scripts/init-scenarios.d.ts +2 -0
  20. package/dist/scripts/init-scenarios.js +846 -0
  21. package/dist/scripts/init-ssh.d.ts +2 -0
  22. package/dist/scripts/init-ssh.js +639 -0
  23. package/dist/scripts/package-versions.d.ts +57 -0
  24. package/dist/scripts/package-versions.js +768 -0
  25. package/dist/scripts/postinstall.d.ts +1 -0
  26. package/dist/scripts/postinstall.js +527 -0
  27. package/dist/scripts/robust-build.d.ts +7 -0
  28. package/dist/scripts/robust-build.js +88 -0
  29. package/dist/scripts/setup-local-packages.d.ts +31 -0
  30. package/dist/scripts/setup-local-packages.js +237 -0
  31. package/dist/scripts/smart-override.d.ts +2 -0
  32. package/dist/scripts/smart-override.js +1360 -0
  33. package/dist/scripts/sync-configs.d.ts +27 -0
  34. package/dist/scripts/sync-configs.js +248 -0
  35. package/dist/scripts/test-biome-parse.d.ts +5 -0
  36. package/dist/scripts/test-biome-parse.js +84 -0
  37. package/dist/scripts/ultracite-setup.d.ts +4 -0
  38. package/dist/scripts/ultracite-setup.js +310 -0
  39. package/dist/scripts/update-all-init-scripts.d.ts +2 -0
  40. package/dist/scripts/update-all-init-scripts.js +52 -0
  41. package/dist/scripts/update-biome-schema.d.ts +15 -0
  42. package/dist/scripts/update-biome-schema.js +124 -0
  43. package/dist/src/AutoCoreFacade.d.ts +145 -0
  44. package/dist/src/AutoCoreFacade.js +217 -0
  45. package/dist/src/api/ApiActions.d.ts +297 -0
  46. package/dist/src/api/ApiActions.js +1905 -0
  47. package/dist/src/api/Certificate.d.ts +60 -0
  48. package/dist/src/api/Certificate.js +79 -0
  49. package/dist/src/api/JsonResponse.d.ts +116 -0
  50. package/dist/src/api/JsonResponse.js +206 -0
  51. package/dist/src/appium/DeviceFarmViewer.d.ts +79 -0
  52. package/dist/src/appium/DeviceFarmViewer.js +1083 -0
  53. package/dist/src/appium/MobileActions.d.ts +347 -0
  54. package/dist/src/appium/MobileActions.js +1632 -0
  55. package/dist/src/appium/MobileConnection.d.ts +160 -0
  56. package/dist/src/appium/MobileConnection.js +772 -0
  57. package/dist/src/config/envLoader.d.ts +123 -0
  58. package/dist/src/config/envLoader.js +361 -0
  59. package/dist/src/config/jest-safe-setup.d.ts +19 -0
  60. package/dist/src/config/jest-safe-setup.js +369 -0
  61. package/dist/src/config/timeouts.d.ts +32 -0
  62. package/dist/src/config/timeouts.js +38 -0
  63. package/dist/src/desktop/DesktopActions.d.ts +46 -0
  64. package/dist/src/desktop/DesktopActions.js +398 -0
  65. package/dist/src/desktop/DesktopConnection.d.ts +32 -0
  66. package/dist/src/desktop/DesktopConnection.js +84 -0
  67. package/dist/src/domain/entities/TestExecution.d.ts +117 -0
  68. package/dist/src/domain/entities/TestExecution.js +150 -0
  69. package/dist/src/domain/entities/TestReport.d.ts +114 -0
  70. package/dist/src/domain/entities/TestReport.js +179 -0
  71. package/dist/src/domain/repositories/ITestRepository.d.ts +196 -0
  72. package/dist/src/domain/repositories/ITestRepository.js +14 -0
  73. package/dist/src/domain/schemas/ValidationSchemas.d.ts +159 -0
  74. package/dist/src/domain/schemas/ValidationSchemas.js +181 -0
  75. package/dist/src/functions/errors/BaseError.d.ts +78 -0
  76. package/dist/src/functions/errors/BaseError.js +245 -0
  77. package/dist/src/functions/errors/ConfigurationError.d.ts +16 -0
  78. package/dist/src/functions/errors/ConfigurationError.js +48 -0
  79. package/dist/src/functions/errors/ErrorCatalog.d.ts +148 -0
  80. package/dist/src/functions/errors/ErrorCatalog.js +157 -0
  81. package/dist/src/functions/errors/GlobalErrorHandler.d.ts +101 -0
  82. package/dist/src/functions/errors/GlobalErrorHandler.js +281 -0
  83. package/dist/src/functions/errors/IntegrationError.d.ts +17 -0
  84. package/dist/src/functions/errors/IntegrationError.js +51 -0
  85. package/dist/src/functions/errors/SecurityError.d.ts +14 -0
  86. package/dist/src/functions/errors/SecurityError.js +42 -0
  87. package/dist/src/functions/errors/SystemError.d.ts +12 -0
  88. package/dist/src/functions/errors/SystemError.js +36 -0
  89. package/dist/src/functions/errors/ValidationError.d.ts +14 -0
  90. package/dist/src/functions/errors/ValidationError.js +61 -0
  91. package/dist/src/functions/errors/index.d.ts +12 -0
  92. package/dist/src/functions/errors/index.js +13 -0
  93. package/dist/src/global-setup.d.ts +1 -0
  94. package/dist/src/global-setup.js +1037 -0
  95. package/dist/src/helpers/BancoActions.d.ts +188 -0
  96. package/dist/src/helpers/BancoActions.js +581 -0
  97. package/dist/src/helpers/EnviromentHelper.d.ts +17 -0
  98. package/dist/src/helpers/EnviromentHelper.js +66 -0
  99. package/dist/src/helpers/ParallelExecutionHelper.d.ts +183 -0
  100. package/dist/src/helpers/ParallelExecutionHelper.js +375 -0
  101. package/dist/src/helpers/SyncSignal.d.ts +15 -0
  102. package/dist/src/helpers/SyncSignal.js +44 -0
  103. package/dist/src/hubdocs/CategoryDetector.d.ts +83 -0
  104. package/dist/src/hubdocs/CategoryDetector.js +401 -0
  105. package/dist/src/hubdocs/DirectStatementInterceptor.d.ts +54 -0
  106. package/dist/src/hubdocs/DirectStatementInterceptor.js +243 -0
  107. package/dist/src/hubdocs/ExecutionTracker.d.ts +107 -0
  108. package/dist/src/hubdocs/ExecutionTracker.js +702 -0
  109. package/dist/src/hubdocs/HubDocs.d.ts +395 -0
  110. package/dist/src/hubdocs/HubDocs.js +3586 -0
  111. package/dist/src/hubdocs/StatementMethodFilter.d.ts +71 -0
  112. package/dist/src/hubdocs/StatementMethodFilter.js +618 -0
  113. package/dist/src/hubdocs/StatementTracker.d.ts +417 -0
  114. package/dist/src/hubdocs/StatementTracker.js +2419 -0
  115. package/dist/src/hubdocs/SwaggerGenerator.d.ts +59 -0
  116. package/dist/src/hubdocs/SwaggerGenerator.js +405 -0
  117. package/dist/src/hubdocs/index.d.ts +9 -0
  118. package/dist/src/hubdocs/index.js +9 -0
  119. package/dist/src/hubdocs/types.d.ts +114 -0
  120. package/dist/src/hubdocs/types.js +5 -0
  121. package/dist/src/infrastructure/DependencyContainer.d.ts +142 -0
  122. package/dist/src/infrastructure/DependencyContainer.js +250 -0
  123. package/dist/src/infrastructure/adapters/AppiumAdapter.d.ts +168 -0
  124. package/dist/src/infrastructure/adapters/AppiumAdapter.js +468 -0
  125. package/dist/src/infrastructure/adapters/OracleAdapter.d.ts +150 -0
  126. package/dist/src/infrastructure/adapters/OracleAdapter.js +388 -0
  127. package/dist/src/infrastructure/adapters/PlaywrightAdapter.d.ts +192 -0
  128. package/dist/src/infrastructure/adapters/PlaywrightAdapter.js +382 -0
  129. package/dist/src/infrastructure/adapters/SSHAdapter.d.ts +141 -0
  130. package/dist/src/infrastructure/adapters/SSHAdapter.js +428 -0
  131. package/dist/src/interfaces.d.ts +501 -0
  132. package/dist/src/interfaces.js +25 -0
  133. package/dist/src/internal/fakes/__fake-actions__.d.ts +17 -0
  134. package/dist/src/internal/fakes/__fake-actions__.js +21 -0
  135. package/dist/src/internal/fakes/__forbidden__.d.ts +10 -0
  136. package/dist/src/internal/fakes/__forbidden__.js +18 -0
  137. package/dist/src/internal/fakes/__honeypot__.d.ts +15 -0
  138. package/dist/src/internal/fakes/__honeypot__.js +24 -0
  139. package/dist/src/octane/OctaneReporter.d.ts +13 -0
  140. package/dist/src/octane/OctaneReporter.js +61 -0
  141. package/dist/src/playwright/CryptoActions.d.ts +20 -0
  142. package/dist/src/playwright/CryptoActions.js +75 -0
  143. package/dist/src/playwright/EnhancedWebActions.d.ts +7 -0
  144. package/dist/src/playwright/EnhancedWebActions.js +65 -0
  145. package/dist/src/playwright/WebActions.d.ts +1599 -0
  146. package/dist/src/playwright/WebActions.js +11788 -0
  147. package/dist/src/playwright/actions/ActionTimeline.d.ts +36 -0
  148. package/dist/src/playwright/actions/ActionTimeline.js +101 -0
  149. package/dist/src/playwright/actions/RecoveryQueue.d.ts +82 -0
  150. package/dist/src/playwright/actions/RecoveryQueue.js +130 -0
  151. package/dist/src/playwright/actions/SelectorCache.d.ts +53 -0
  152. package/dist/src/playwright/actions/SelectorCache.js +96 -0
  153. package/dist/src/playwright/actions/index.d.ts +13 -0
  154. package/dist/src/playwright/actions/index.js +14 -0
  155. package/dist/src/playwright/actions/types.d.ts +147 -0
  156. package/dist/src/playwright/actions/types.js +5 -0
  157. package/dist/src/playwright/fixtures.d.ts +112 -0
  158. package/dist/src/playwright/fixtures.js +718 -0
  159. package/dist/src/playwright/network-logs-reporter.d.ts +7 -0
  160. package/dist/src/playwright/network-logs-reporter.js +66 -0
  161. package/dist/src/playwright/registerRecoveryWrappers.d.ts +1 -0
  162. package/dist/src/playwright/registerRecoveryWrappers.js +54 -0
  163. package/dist/src/security/BuildSecurity.d.ts +12 -0
  164. package/dist/src/security/BuildSecurity.js +138 -0
  165. package/dist/src/security/EulaProtection.d.ts +70 -0
  166. package/dist/src/security/EulaProtection.js +155 -0
  167. package/dist/src/security/HoneypotManager.d.ts +46 -0
  168. package/dist/src/security/HoneypotManager.js +234 -0
  169. package/dist/src/security/KeysManager.d.ts +36 -0
  170. package/dist/src/security/KeysManager.js +158 -0
  171. package/dist/src/security/ProofOfWorkIntegration.d.ts +64 -0
  172. package/dist/src/security/ProofOfWorkIntegration.js +206 -0
  173. package/dist/src/security/SecurityValidation.d.ts +21 -0
  174. package/dist/src/security/SecurityValidation.js +163 -0
  175. package/dist/src/security/SourceMapProtection.d.ts +55 -0
  176. package/dist/src/security/SourceMapProtection.js +220 -0
  177. package/dist/src/security/protector.d.ts +1 -0
  178. package/dist/src/security/protector.js +97 -0
  179. package/dist/src/ssh/SSHActions.d.ts +262 -0
  180. package/dist/src/ssh/SSHActions.js +790 -0
  181. package/dist/src/ssh/SSHClient.d.ts +99 -0
  182. package/dist/src/ssh/SSHClient.js +409 -0
  183. package/dist/src/statements/BaseStatement.d.ts +38 -0
  184. package/dist/src/statements/BaseStatement.js +78 -0
  185. package/dist/src/testContext/AuthStateManager.d.ts +93 -0
  186. package/dist/src/testContext/AuthStateManager.js +256 -0
  187. package/dist/src/testContext/CoverageManager.d.ts +198 -0
  188. package/dist/src/testContext/CoverageManager.js +917 -0
  189. package/dist/src/testContext/TestAnnotations.d.ts +476 -0
  190. package/dist/src/testContext/TestAnnotations.js +2647 -0
  191. package/dist/src/testContext/TestContext.d.ts +138 -0
  192. package/dist/src/testContext/TestContext.js +369 -0
  193. package/dist/src/testContext/UnifiedHtmlGenerator.d.ts +7 -0
  194. package/dist/src/testContext/UnifiedHtmlGenerator.js +264 -0
  195. package/dist/src/testContext/UnifiedReportManager.d.ts +211 -0
  196. package/dist/src/testContext/UnifiedReportManager.js +1206 -0
  197. package/dist/src/testhub/DynamicConfigManager.d.ts +121 -0
  198. package/dist/src/testhub/DynamicConfigManager.js +320 -0
  199. package/dist/src/testhub/SystemsManager.d.ts +119 -0
  200. package/dist/src/testhub/SystemsManager.js +365 -0
  201. package/dist/src/testhub/TestHubClient.d.ts +335 -0
  202. package/dist/src/testhub/TestHubClient.js +1215 -0
  203. package/dist/src/testhub/TestHubReporter.d.ts +62 -0
  204. package/dist/src/testhub/TestHubReporter.js +576 -0
  205. package/dist/src/testhub/TestHubVars.d.ts +116 -0
  206. package/dist/src/testhub/TestHubVars.js +273 -0
  207. package/dist/src/utils/ActionInterceptor.d.ts +59 -0
  208. package/dist/src/utils/ActionInterceptor.js +741 -0
  209. package/dist/src/utils/ArtifactsCompressor.d.ts +43 -0
  210. package/dist/src/utils/ArtifactsCompressor.js +181 -0
  211. package/dist/src/utils/AutoLogsFinal.d.ts +47 -0
  212. package/dist/src/utils/AutoLogsFinal.js +148 -0
  213. package/dist/src/utils/CodeGenSession.d.ts +114 -0
  214. package/dist/src/utils/CodeGenSession.js +264 -0
  215. package/dist/src/utils/ConfigLogger.d.ts +133 -0
  216. package/dist/src/utils/ConfigLogger.js +611 -0
  217. package/dist/src/utils/CustomReporter.d.ts +22 -0
  218. package/dist/src/utils/CustomReporter.js +352 -0
  219. package/dist/src/utils/DataStore.d.ts +171 -0
  220. package/dist/src/utils/DataStore.js +484 -0
  221. package/dist/src/utils/DatabaseInterceptor.d.ts +19 -0
  222. package/dist/src/utils/DatabaseInterceptor.js +295 -0
  223. package/dist/src/utils/DateHelper.d.ts +16 -0
  224. package/dist/src/utils/DateHelper.js +120 -0
  225. package/dist/src/utils/DateValidator.d.ts +4 -0
  226. package/dist/src/utils/DateValidator.js +51 -0
  227. package/dist/src/utils/DocumentGenerator.d.ts +35 -0
  228. package/dist/src/utils/DocumentGenerator.js +129 -0
  229. package/dist/src/utils/EvidenceCapture.d.ts +90 -0
  230. package/dist/src/utils/EvidenceCapture.js +600 -0
  231. package/dist/src/utils/EvidenceReportGenerator.d.ts +70 -0
  232. package/dist/src/utils/EvidenceReportGenerator.js +799 -0
  233. package/dist/src/utils/FrameManagementUtil.d.ts +42 -0
  234. package/dist/src/utils/FrameManagementUtil.js +75 -0
  235. package/dist/src/utils/GlobalStatementsInterceptor.d.ts +1 -0
  236. package/dist/src/utils/GlobalStatementsInterceptor.js +1 -0
  237. package/dist/src/utils/HTMLTemplate.d.ts +1 -0
  238. package/dist/src/utils/HTMLTemplate.js +1034 -0
  239. package/dist/src/utils/InterceptacaoMagica.d.ts +23 -0
  240. package/dist/src/utils/InterceptacaoMagica.js +365 -0
  241. package/dist/src/utils/LogSanitizer.d.ts +35 -0
  242. package/dist/src/utils/LogSanitizer.js +110 -0
  243. package/dist/src/utils/Logger.d.ts +65 -0
  244. package/dist/src/utils/Logger.js +284 -0
  245. package/dist/src/utils/McpLocalClient.d.ts +141 -0
  246. package/dist/src/utils/McpLocalClient.js +871 -0
  247. package/dist/src/utils/PDFEvidenceGenerator.d.ts +20 -0
  248. package/dist/src/utils/PDFEvidenceGenerator.js +156 -0
  249. package/dist/src/utils/SpecFileAnalyzer.d.ts +35 -0
  250. package/dist/src/utils/SpecFileAnalyzer.js +209 -0
  251. package/dist/src/utils/StatementInterceptor.d.ts +18 -0
  252. package/dist/src/utils/StatementInterceptor.js +87 -0
  253. package/dist/src/utils/StatementLogger.d.ts +33 -0
  254. package/dist/src/utils/StatementLogger.js +113 -0
  255. package/dist/src/utils/StatementsInterceptor.d.ts +1 -0
  256. package/dist/src/utils/StatementsInterceptor.js +1 -0
  257. package/dist/src/utils/TeamsFlushHook.d.ts +17 -0
  258. package/dist/src/utils/TeamsFlushHook.js +168 -0
  259. package/dist/src/utils/TerminalLogCapture.d.ts +158 -0
  260. package/dist/src/utils/TerminalLogCapture.js +531 -0
  261. package/dist/src/utils/TestMethodLogger.d.ts +70 -0
  262. package/dist/src/utils/TestMethodLogger.js +95 -0
  263. package/dist/src/utils/UnifiedTeardown.d.ts +4 -0
  264. package/dist/src/utils/UnifiedTeardown.js +400 -0
  265. package/dist/src/utils/XPathCatalog.d.ts +152 -0
  266. package/dist/src/utils/XPathCatalog.js +350 -0
  267. package/dist/src/utils/generators.d.ts +90 -0
  268. package/dist/src/utils/generators.js +167 -0
  269. package/dist/src/utils/testRecovery/ResilientPlaywright.d.ts +152 -0
  270. package/dist/src/utils/testRecovery/ResilientPlaywright.js +715 -0
  271. package/dist/src/utils/testRecovery/TestRecoveryClient.d.ts +801 -0
  272. package/dist/src/utils/testRecovery/TestRecoveryClient.js +1415 -0
  273. package/dist/src/utils/testRecovery/autoFixCode.d.ts +65 -0
  274. package/dist/src/utils/testRecovery/autoFixCode.js +32 -0
  275. package/dist/vitest.config.d.ts +2 -0
  276. package/dist/vitest.config.js +59 -0
  277. package/dist/wdio.conf.d.ts +1 -0
  278. package/dist/wdio.conf.js +420 -0
  279. package/package.json +137 -0
  280. package/protect-loader.mjs +643 -0
  281. package/scripts/consumer-postinstall.ts +975 -0
  282. package/scripts/generate-index.ts +343 -0
  283. package/scripts/init-api.ts +613 -0
  284. package/scripts/init-banco.ts +437 -0
  285. package/scripts/init-frontend.ts +727 -0
  286. package/scripts/init-mobile.ts +558 -0
  287. package/scripts/init-scenarios.ts +925 -0
  288. package/scripts/init-ssh.ts +734 -0
  289. package/scripts/package-versions.ts +978 -0
  290. package/scripts/postinstall.ts +605 -0
  291. package/scripts/smart-override.ts +1675 -0
  292. package/scripts/sync-configs.ts +302 -0
  293. package/scripts/ultracite-setup.ts +370 -0
  294. package/src/types/globals.d.ts +48 -0
  295. package/tsconfig.json +29 -0
  296. 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
+ }