@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,71 @@
1
+ /**
2
+ * 🎯 StatementMethodFilter - Sistema Inteligente de Detecção de Métodos Statement
3
+ *
4
+ * Sistema mais permissivo que detecta métodos CT mesmo com padrões complexos:
5
+ * - Métodos com nomes diversos (executeAction, performTask, runOperation, etc.)
6
+ * - Métodos aninhados em classes complexas
7
+ * - Métodos gerados dinamicamente
8
+ * - Padrões de naming variados
9
+ */
10
+ interface StatementClass {
11
+ name: string;
12
+ constructor: any;
13
+ methods: string[];
14
+ confidence: number;
15
+ }
16
+ declare class StatementMethodFilter {
17
+ private static initialized;
18
+ private static methodPatterns;
19
+ private static classPatterns;
20
+ private static excludedMethods;
21
+ private static nativeClassBlacklist;
22
+ /**
23
+ * 🚀 Inicializar filtros inteligentes
24
+ */
25
+ static initialize(): void;
26
+ /**
27
+ * 📊 Calcular score de um método
28
+ */
29
+ static calculateMethodScore(methodName: string, className?: string): number;
30
+ /**
31
+ * ✅ Verificar se método é provavelmente um CT
32
+ * ✅ REATIVADO - Filtrar baseado no nome da classe e método
33
+ */
34
+ static isLikelyStatementMethod(methodName: string, className?: string): boolean;
35
+ /**
36
+ * 🚫 Verificar se classe é nativa e deve ser ignorada
37
+ * ✅ REATIVADO - Bloquear classes nativas para evitar stack overflow e CTs falsos
38
+ */
39
+ static isNativeClassBlacklisted(className: string): boolean;
40
+ /**
41
+ * 🛡️ Análise segura de classe (evita ERR_INVALID_THIS)
42
+ */
43
+ static safeAnalyzeClass(classConstructor: any, className: string): StatementClass;
44
+ /**
45
+ * �🔍 Analisar classe e extrair métodos CT
46
+ */
47
+ static analyzeClass(classConstructor: any, className: string): StatementClass;
48
+ /**
49
+ * 🎯 Filtro para todos os métodos de uma classe
50
+ * ✅ REATIVADO - Usar filtros para bloquear classes nativas e aprovar apenas CTs reais
51
+ */
52
+ static filterClassMethods(classConstructor: any, className: string): string[];
53
+ /**
54
+ * 📊 Obter estatísticas dos filtros
55
+ */
56
+ static getFilterStats(): {
57
+ patterns: number;
58
+ classPatterns: number;
59
+ excludedMethods: number;
60
+ totalPatterns: number;
61
+ };
62
+ /**
63
+ * 🔧 Adicionar padrão customizado
64
+ */
65
+ static addCustomPattern(pattern: RegExp, weight: number, description: string): void;
66
+ /**
67
+ * 🎯 Modo debug - mostrar análise detalhada
68
+ */
69
+ static debugAnalyzeMethod(methodName: string, className?: string): void;
70
+ }
71
+ export { StatementMethodFilter };
@@ -0,0 +1,618 @@
1
+ /**
2
+ * 🎯 StatementMethodFilter - Sistema Inteligente de Detecção de Métodos Statement
3
+ *
4
+ * Sistema mais permissivo que detecta métodos CT mesmo com padrões complexos:
5
+ * - Métodos com nomes diversos (executeAction, performTask, runOperation, etc.)
6
+ * - Métodos aninhados em classes complexas
7
+ * - Métodos gerados dinamicamente
8
+ * - Padrões de naming variados
9
+ */
10
+ class StatementMethodFilter {
11
+ static initialized = false;
12
+ // Padrões de métodos que provavelmente são CTs
13
+ static methodPatterns = [
14
+ // 🎯 PADRÕES DO SEU PROJETO - Métodos específicos observados nos logs
15
+ { pattern: /^getToken$/i, weight: 15, description: 'Token methods' },
16
+ {
17
+ pattern: /^consulta/i,
18
+ weight: 15,
19
+ description: 'Consulta methods (consultaCobertura, consultaEndereco, etc.)',
20
+ },
21
+ { pattern: /^solicita/i, weight: 15, description: 'Solicita methods' },
22
+ {
23
+ pattern: /^check/i,
24
+ weight: 15,
25
+ description: 'Check methods (checkServiceQualification, etc.)',
26
+ },
27
+ { pattern: /^reserva/i, weight: 15, description: 'Reserva methods' },
28
+ { pattern: /^alocar/i, weight: 15, description: 'Alocar methods' },
29
+ { pattern: /^configurar$/i, weight: 15, description: 'Configurar methods' },
30
+ // 🎯 PADRÕES EXPLÍCITOS - Alta prioridade
31
+ { pattern: /^execute/i, weight: 10, description: 'Execute methods' },
32
+ { pattern: /^perform/i, weight: 9, description: 'Perform methods' },
33
+ { pattern: /^run/i, weight: 8, description: 'Run methods' },
34
+ { pattern: /^process/i, weight: 8, description: 'Process methods' },
35
+ { pattern: /^handle/i, weight: 7, description: 'Handle methods' },
36
+ { pattern: /^do/i, weight: 6, description: 'Do methods' },
37
+ { pattern: /^make/i, weight: 6, description: 'Make methods' },
38
+ { pattern: /^create/i, weight: 6, description: 'Create methods' },
39
+ { pattern: /^send/i, weight: 7, description: 'Send methods' },
40
+ { pattern: /^get/i, weight: 5, description: 'Get methods' },
41
+ { pattern: /^post/i, weight: 6, description: 'Post methods' },
42
+ { pattern: /^put/i, weight: 6, description: 'Put methods' },
43
+ { pattern: /^delete/i, weight: 6, description: 'Delete methods' },
44
+ // Padrões por tipo de ação
45
+ {
46
+ pattern: /login|auth|signin/i,
47
+ weight: 8,
48
+ description: 'Authentication methods',
49
+ },
50
+ {
51
+ pattern: /request|call|invoke/i,
52
+ weight: 7,
53
+ description: 'Request methods',
54
+ },
55
+ {
56
+ pattern: /query|select|insert|update/i,
57
+ weight: 7,
58
+ description: 'Database methods',
59
+ },
60
+ {
61
+ pattern: /click|type|scroll|nav/i,
62
+ weight: 7,
63
+ description: 'Web interaction methods',
64
+ },
65
+ { pattern: /ssh|command|shell/i, weight: 7, description: 'SSH methods' },
66
+ {
67
+ pattern: /mobile|touch|swipe|tap/i,
68
+ weight: 7,
69
+ description: 'Mobile methods',
70
+ },
71
+ // Padrões genéricos (menos peso)
72
+ { pattern: /action/i, weight: 5, description: 'Action methods' },
73
+ { pattern: /operation/i, weight: 5, description: 'Operation methods' },
74
+ { pattern: /task/i, weight: 5, description: 'Task methods' },
75
+ { pattern: /step/i, weight: 4, description: 'Step methods' },
76
+ { pattern: /method/i, weight: 3, description: 'Method methods' },
77
+ // Qualquer método público (peso baixo mas incluído)
78
+ { pattern: /^[a-z]/i, weight: 1, description: 'Public methods' },
79
+ ];
80
+ // Nomes de classe que provavelmente contêm CTs
81
+ static classPatterns = [
82
+ // 🎯 PADRÕES PRINCIPAIS - Seus projetos TypeScript
83
+ /^Statements/i, // StatementsToken, StatementsConsultaCobertura, etc.
84
+ /^Statement[A-Z]/i, // StatementAlocarConfigurar, etc.
85
+ // 🎯 PADRÕES SECUNDÁRIOS - Outros projetos
86
+ /statement/i,
87
+ /action/i,
88
+ /command/i,
89
+ /operation/i,
90
+ /task/i,
91
+ /service/i,
92
+ /handler/i,
93
+ /controller/i,
94
+ /processor/i,
95
+ /executor/i,
96
+ /manager/i,
97
+ /helper/i,
98
+ /utility/i,
99
+ /client/i,
100
+ /api/i,
101
+ /web/i,
102
+ /mobile/i,
103
+ /ssh/i,
104
+ /database/i,
105
+ /banco/i,
106
+ ];
107
+ // Métodos que definitivamente NÃO são CTs
108
+ static excludedMethods = new Set([
109
+ 'constructor',
110
+ 'toString',
111
+ 'valueOf',
112
+ 'hasOwnProperty',
113
+ 'isPrototypeOf',
114
+ 'propertyIsEnumerable',
115
+ 'toLocaleString',
116
+ '__defineGetter__',
117
+ '__defineSetter__',
118
+ '__lookupGetter__',
119
+ '__lookupSetter__',
120
+ 'bind',
121
+ 'call',
122
+ 'apply',
123
+ 'length',
124
+ 'name',
125
+ 'prototype',
126
+ 'then',
127
+ 'catch',
128
+ 'finally', // Promise methods
129
+ 'on',
130
+ 'off',
131
+ 'emit',
132
+ 'addEventListener',
133
+ 'removeEventListener', // Event methods
134
+ ]);
135
+ // 🚫 BLACKLIST CRÍTICA: Classes que devem ser SEMPRE bloqueadas (causam stack overflow e CTs falsos)
136
+ static nativeClassBlacklist = new Set([
137
+ // 🚫 OBJETOS FUNDAMENTAIS - NUNCA INTERCEPTAR (causam stack overflow)
138
+ 'Object',
139
+ 'Date',
140
+ 'Array',
141
+ 'String',
142
+ 'Number',
143
+ 'Boolean',
144
+ 'Function',
145
+ 'RegExp',
146
+ 'Math',
147
+ 'JSON',
148
+ 'Error',
149
+ 'Promise',
150
+ 'Map',
151
+ 'Set',
152
+ 'WeakMap',
153
+ 'WeakSet',
154
+ 'Symbol',
155
+ 'Proxy',
156
+ 'Reflect',
157
+ 'console',
158
+ 'BigInt',
159
+ 'FinalizationRegistry',
160
+ 'WeakRef',
161
+ // 🚫 GLOBAL OBJECTS - NUNCA INTERCEPTAR (são utilities globais)
162
+ 'eval',
163
+ 'parseInt',
164
+ 'parseFloat',
165
+ 'isNaN',
166
+ 'isFinite',
167
+ 'encodeURI',
168
+ 'decodeURI',
169
+ 'encodeURIComponent',
170
+ 'decodeURIComponent',
171
+ 'escape',
172
+ 'unescape',
173
+ // 🚫 GLOBAL FUNCTIONS - NUNCA INTERCEPTAR
174
+ 'clearInterval',
175
+ 'clearTimeout',
176
+ 'setInterval',
177
+ 'setTimeout',
178
+ 'queueMicrotask',
179
+ 'structuredClone',
180
+ 'atob',
181
+ 'btoa',
182
+ 'fetch',
183
+ // 🚫 NODE.JS INTERNALS - NUNCA INTERCEPTAR (causam erros críticos)
184
+ 'process',
185
+ 'global',
186
+ 'Buffer',
187
+ 'URL',
188
+ 'URLSearchParams',
189
+ 'TextEncoder',
190
+ 'TextDecoder',
191
+ 'AbortController',
192
+ 'AbortSignal',
193
+ 'Event',
194
+ 'EventTarget',
195
+ 'CustomEvent',
196
+ 'Navigator',
197
+ // 🚫 WEB STREAMS API - CAUSAM ERR_INVALID_THIS (fonte dos erros atuais!)
198
+ 'TransformStream',
199
+ 'TransformStreamDefaultController',
200
+ 'WritableStream',
201
+ 'WritableStreamDefaultController',
202
+ 'WritableStreamDefaultWriter',
203
+ 'ReadableStream',
204
+ 'ReadableStreamDefaultReader',
205
+ 'ReadableStreamBYOBReader',
206
+ 'ReadableStreamBYOBRequest',
207
+ 'ReadableByteStreamController',
208
+ 'ReadableStreamDefaultController',
209
+ 'ByteLengthQueuingStrategy',
210
+ 'CountQueuingStrategy',
211
+ 'TextEncoderStream',
212
+ 'TextDecoderStream',
213
+ 'CompressionStream',
214
+ 'DecompressionStream',
215
+ // 🚫 FETCH API - CAUSAM ILLEGAL INVOCATION
216
+ 'BroadcastChannel',
217
+ 'MessageChannel',
218
+ 'MessagePort',
219
+ 'MessageEvent',
220
+ 'Blob',
221
+ 'File',
222
+ 'FormData',
223
+ 'Headers',
224
+ 'Request',
225
+ 'Response',
226
+ 'WebSocket',
227
+ 'URLPattern',
228
+ // 🚫 PERFORMANCE API - CAUSAM ERR_INVALID_ARG_TYPE
229
+ 'Performance',
230
+ 'PerformanceEntry',
231
+ 'PerformanceMark',
232
+ 'PerformanceMeasure',
233
+ 'PerformanceObserver',
234
+ 'PerformanceObserverEntryList',
235
+ 'PerformanceResourceTiming',
236
+ // 🚫 CRYPTO API - CAUSAM ERR_INVALID_THIS
237
+ 'Crypto',
238
+ 'CryptoKey',
239
+ 'SubtleCrypto',
240
+ // 🚫 BUFFER E TYPED ARRAYS - CAUSAM INCOMPATIBLE RECEIVER
241
+ 'ArrayBuffer',
242
+ 'SharedArrayBuffer',
243
+ 'DataView',
244
+ 'Int8Array',
245
+ 'Uint8Array',
246
+ 'Uint8ClampedArray',
247
+ 'Int16Array',
248
+ 'Uint16Array',
249
+ 'Int32Array',
250
+ 'Uint32Array',
251
+ 'Float32Array',
252
+ 'Float64Array',
253
+ 'BigInt64Array',
254
+ 'BigUint64Array',
255
+ // 🚫 ITERATORS - CAUSAM PROBLEMAS RECURSIVOS
256
+ 'Iterator',
257
+ 'AsyncIterator',
258
+ 'Generator',
259
+ 'AsyncGenerator',
260
+ // 🚫 AUTOCORE INTERNAL CLASSES - EVITAR AUTO-INTERCEPTAÇÃO
261
+ 'ExecutionTracker',
262
+ 'GlobalStatementRegistry',
263
+ 'StatementTracker',
264
+ 'StatementMethodFilter',
265
+ 'CTFallbackSystem',
266
+ 'ES6ModuleInterceptor',
267
+ 'AutoStatementInterceptor',
268
+ 'HubDocs',
269
+ 'CategoryDetector',
270
+ 'SwaggerGenerator',
271
+ 'DirectStatementInterceptor',
272
+ 'GlobalErrorHandler',
273
+ 'TestAnnotations',
274
+ // 🚫 STATEMENT BASE CLASSES - NÃO SÃO CTs INDIVIDUAIS
275
+ 'BaseStatement',
276
+ 'WebStatement',
277
+ 'SSHStatement',
278
+ 'ApiStatement',
279
+ 'DatabaseStatement',
280
+ 'MobileStatement',
281
+ 'Statement',
282
+ 'TestStatement',
283
+ // 🚫 AUTODOCS CLASSES - EVITAR LOOPS
284
+ 'AutoDocs',
285
+ 'AutoDocsGenerator',
286
+ 'AutoDocsCore',
287
+ // 🚫 PLAYWRIGHT/TESTING INTERNALS
288
+ 'Page',
289
+ 'Browser',
290
+ 'BrowserContext',
291
+ 'Playwright',
292
+ 'TestInfo',
293
+ 'Locator',
294
+ 'ElementHandle',
295
+ 'Frame',
296
+ 'Worker',
297
+ 'Dialog',
298
+ 'Download',
299
+ 'FileChooser',
300
+ 'Keyboard',
301
+ 'Mouse',
302
+ 'Touchscreen',
303
+ 'Video',
304
+ 'CDPSession',
305
+ // 🚫 NODE.JS MODULES - INTERNALS
306
+ 'Module',
307
+ 'require',
308
+ 'exports',
309
+ '__dirname',
310
+ '__filename',
311
+ 'fs',
312
+ 'path',
313
+ 'os',
314
+ 'crypto',
315
+ 'http',
316
+ 'https',
317
+ 'net',
318
+ 'dgram',
319
+ 'child_process',
320
+ 'cluster',
321
+ 'stream',
322
+ 'util',
323
+ 'events',
324
+ // 🚫 JAVASCRIPT ENGINE INTERNALS
325
+ 'Intl',
326
+ 'JSON',
327
+ 'Atomics',
328
+ 'SharedArrayBuffer',
329
+ 'WebAssembly',
330
+ 'AggregateError',
331
+ 'ReferenceError',
332
+ 'SyntaxError',
333
+ 'TypeError',
334
+ 'RangeError',
335
+ 'URIError',
336
+ 'EvalError',
337
+ ]);
338
+ /**
339
+ * 🚀 Inicializar filtros inteligentes
340
+ */
341
+ static initialize() {
342
+ if (StatementMethodFilter.initialized)
343
+ return;
344
+ StatementMethodFilter.initialized = true;
345
+ console.log('🎯 [StatementMethodFilter] Inicializando filtros inteligentes...');
346
+ console.log(`🎯 [StatementMethodFilter] ${StatementMethodFilter.methodPatterns.length} padrões de método carregados`);
347
+ console.log(`🎯 [StatementMethodFilter] ${StatementMethodFilter.classPatterns.length} padrões de classe carregados`);
348
+ console.log(`🎯 [StatementMethodFilter] ${StatementMethodFilter.excludedMethods.size} métodos excluídos`);
349
+ }
350
+ /**
351
+ * 📊 Calcular score de um método
352
+ */
353
+ static calculateMethodScore(methodName, className) {
354
+ if (StatementMethodFilter.excludedMethods.has(methodName)) {
355
+ return 0;
356
+ }
357
+ let totalScore = 0;
358
+ let matchCount = 0;
359
+ // Calcular score baseado nos padrões
360
+ for (const pattern of StatementMethodFilter.methodPatterns) {
361
+ if (pattern.pattern.test(methodName)) {
362
+ totalScore += pattern.weight;
363
+ matchCount++;
364
+ }
365
+ }
366
+ // Bonus se o nome da classe indica Statement/Action
367
+ if (className) {
368
+ const classBonus = StatementMethodFilter.classPatterns.some((pattern) => pattern.test(className))
369
+ ? 5
370
+ : 0;
371
+ totalScore += classBonus;
372
+ }
373
+ // Penalty para métodos muito curtos (provavelmente não são CTs)
374
+ if (methodName.length < 3) {
375
+ totalScore -= 3;
376
+ }
377
+ // Bonus para métodos com sufixos típicos
378
+ if (/^(execute|perform|run|process|handle|do).+/i.test(methodName)) {
379
+ totalScore += 3;
380
+ }
381
+ console.log(`🎯 [StatementMethodFilter] ${className || 'Unknown'}.${methodName}: score=${totalScore} (${matchCount} matches)`);
382
+ return Math.max(0, totalScore);
383
+ }
384
+ /**
385
+ * ✅ Verificar se método é provavelmente um CT
386
+ * ✅ REATIVADO - Filtrar baseado no nome da classe e método
387
+ */
388
+ static isLikelyStatementMethod(methodName, className) {
389
+ // Se é classe nativa, sempre rejeitar
390
+ if (className &&
391
+ StatementMethodFilter.isNativeClassBlacklisted(className)) {
392
+ console.log(`🚫 [StatementMethodFilter] MÉTODO REJEITADO: ${className}.${methodName} (classe nativa)`);
393
+ return false;
394
+ }
395
+ // Se o método está na lista de excluídos, rejeitar
396
+ if (StatementMethodFilter.excludedMethods.has(methodName)) {
397
+ console.log(`🚫 [StatementMethodFilter] MÉTODO REJEITADO: ${className || 'Unknown'}.${methodName} (método excluído)`);
398
+ return false;
399
+ }
400
+ // Se o nome da classe indica Statement/Action, aprovar tudo
401
+ if (className &&
402
+ StatementMethodFilter.classPatterns.some((pattern) => pattern.test(className))) {
403
+ console.log(`✅ [StatementMethodFilter] MÉTODO APROVADO: ${className}.${methodName} (classe Statement)`);
404
+ return true;
405
+ }
406
+ // Para outras classes, calcular score
407
+ const score = StatementMethodFilter.calculateMethodScore(methodName, className);
408
+ const approved = score >= 5; // Score mínimo para aprovar
409
+ if (approved) {
410
+ console.log(`✅ [StatementMethodFilter] MÉTODO APROVADO: ${className || 'Unknown'}.${methodName} (score=${score})`);
411
+ }
412
+ else {
413
+ console.log(`🚫 [StatementMethodFilter] MÉTODO REJEITADO: ${className || 'Unknown'}.${methodName} (score=${score})`);
414
+ }
415
+ return approved;
416
+ }
417
+ /**
418
+ * 🚫 Verificar se classe é nativa e deve ser ignorada
419
+ * ✅ REATIVADO - Bloquear classes nativas para evitar stack overflow e CTs falsos
420
+ */
421
+ static isNativeClassBlacklisted(className) {
422
+ const isBlacklisted = StatementMethodFilter.nativeClassBlacklist.has(className);
423
+ if (isBlacklisted) {
424
+ console.log(`🚫 [StatementMethodFilter] CLASSE BLOQUEADA (nativa): ${className}`);
425
+ return true;
426
+ }
427
+ console.log(`✅ [StatementMethodFilter] CLASSE PERMITIDA: ${className} (não é nativa)`);
428
+ return false;
429
+ }
430
+ /**
431
+ * 🛡️ Análise segura de classe (evita ERR_INVALID_THIS)
432
+ */
433
+ static safeAnalyzeClass(classConstructor, className) {
434
+ // Verificar blacklist primeiro
435
+ if (StatementMethodFilter.isNativeClassBlacklisted(className)) {
436
+ return {
437
+ name: className,
438
+ constructor: classConstructor,
439
+ methods: [],
440
+ confidence: 0,
441
+ };
442
+ }
443
+ // Análise normal para outras classes
444
+ return StatementMethodFilter.analyzeClass(classConstructor, className);
445
+ }
446
+ /**
447
+ * �🔍 Analisar classe e extrair métodos CT
448
+ */
449
+ static analyzeClass(classConstructor, className) {
450
+ const methods = [];
451
+ let totalConfidence = 0;
452
+ try {
453
+ // Analisar métodos static
454
+ const staticMethods = Object.getOwnPropertyNames(classConstructor)
455
+ .filter((name) => {
456
+ try {
457
+ return typeof classConstructor[name] === 'function';
458
+ }
459
+ catch {
460
+ return false; // Ignorar propriedades que causam erro ao acessar
461
+ }
462
+ })
463
+ .filter((name) => !name.startsWith('_'))
464
+ .filter((name) => name !== 'constructor');
465
+ staticMethods.forEach((methodName) => {
466
+ if (StatementMethodFilter.isLikelyStatementMethod(methodName, className)) {
467
+ methods.push(`${methodName} (static)`);
468
+ totalConfidence += StatementMethodFilter.calculateMethodScore(methodName, className);
469
+ }
470
+ });
471
+ // Analisar métodos do prototype com proteção
472
+ if (classConstructor.prototype) {
473
+ const prototypeMethods = Object.getOwnPropertyNames(classConstructor.prototype)
474
+ .filter((name) => {
475
+ try {
476
+ // Verificação segura do tipo
477
+ const descriptor = Object.getOwnPropertyDescriptor(classConstructor.prototype, name);
478
+ if (!descriptor)
479
+ return false;
480
+ // Se é getter/setter que pode causar erro, pular
481
+ if (descriptor.get || descriptor.set) {
482
+ try {
483
+ // Tentar acessar apenas se seguro
484
+ const testValue = classConstructor.prototype[name];
485
+ return typeof testValue === 'function';
486
+ }
487
+ catch (error) {
488
+ console.log(`⚠️ [StatementMethodFilter] Erro ao analisar classe ${className}: ${error.message}`);
489
+ return false;
490
+ }
491
+ }
492
+ return typeof classConstructor.prototype[name] === 'function';
493
+ }
494
+ catch {
495
+ return false;
496
+ }
497
+ })
498
+ .filter((name) => !name.startsWith('_'))
499
+ .filter((name) => name !== 'constructor');
500
+ prototypeMethods.forEach((methodName) => {
501
+ if (StatementMethodFilter.isLikelyStatementMethod(methodName, className)) {
502
+ methods.push(`${methodName} (instance)`);
503
+ totalConfidence += StatementMethodFilter.calculateMethodScore(methodName, className);
504
+ }
505
+ });
506
+ }
507
+ console.log(`🔍 [StatementMethodFilter] Classe ${className}: ${methods.length} métodos CT encontrados`);
508
+ }
509
+ catch (error) {
510
+ console.log(`⚠️ [StatementMethodFilter] Erro ao analisar classe ${className}:`, error.message);
511
+ }
512
+ return {
513
+ name: className,
514
+ constructor: classConstructor,
515
+ methods,
516
+ confidence: methods.length > 0 ? totalConfidence / methods.length : 0,
517
+ };
518
+ }
519
+ /**
520
+ * 🎯 Filtro para todos os métodos de uma classe
521
+ * ✅ REATIVADO - Usar filtros para bloquear classes nativas e aprovar apenas CTs reais
522
+ */
523
+ static filterClassMethods(classConstructor, className) {
524
+ // Primeiro verificar se é classe nativa (deve ser bloqueada)
525
+ if (StatementMethodFilter.isNativeClassBlacklisted(className)) {
526
+ console.log(`🚫 [StatementMethodFilter] CLASSE BLOQUEADA: ${className} (nativa)`);
527
+ return [];
528
+ }
529
+ console.log(`🔍 [StatementMethodFilter] ANALISANDO CLASSE: ${className}`);
530
+ const methods = [];
531
+ try {
532
+ // Métodos estáticos
533
+ Object.getOwnPropertyNames(classConstructor).forEach((prop) => {
534
+ if (typeof classConstructor[prop] === 'function' &&
535
+ prop !== 'constructor' &&
536
+ prop !== 'name' &&
537
+ prop !== 'length' &&
538
+ StatementMethodFilter.isLikelyStatementMethod(prop, className)) {
539
+ methods.push(prop);
540
+ }
541
+ });
542
+ // Métodos de instância
543
+ if (classConstructor.prototype) {
544
+ Object.getOwnPropertyNames(classConstructor.prototype).forEach((prop) => {
545
+ try {
546
+ if (typeof classConstructor.prototype[prop] === 'function' &&
547
+ prop !== 'constructor' &&
548
+ StatementMethodFilter.isLikelyStatementMethod(prop, className)) {
549
+ methods.push(prop);
550
+ }
551
+ }
552
+ catch (error) {
553
+ // Ignorar erros ao acessar propriedades de classes problemáticas
554
+ console.log(`⚠️ [StatementMethodFilter] Erro ao analisar ${className}: ${String(error)}`);
555
+ }
556
+ });
557
+ }
558
+ }
559
+ catch (error) {
560
+ console.log(`⚠️ [StatementMethodFilter] Erro ao analisar ${className}:`, error);
561
+ }
562
+ console.log(`🔍 [StatementMethodFilter] Classe ${className}: ${methods.length} métodos CT encontrados`);
563
+ return methods;
564
+ }
565
+ /**
566
+ * 📊 Obter estatísticas dos filtros
567
+ */
568
+ static getFilterStats() {
569
+ return {
570
+ patterns: StatementMethodFilter.methodPatterns.length,
571
+ classPatterns: StatementMethodFilter.classPatterns.length,
572
+ excludedMethods: StatementMethodFilter.excludedMethods.size,
573
+ totalPatterns: StatementMethodFilter.methodPatterns.length +
574
+ StatementMethodFilter.classPatterns.length,
575
+ };
576
+ }
577
+ /**
578
+ * 🔧 Adicionar padrão customizado
579
+ */
580
+ static addCustomPattern(pattern, weight, description) {
581
+ StatementMethodFilter.methodPatterns.push({ pattern, weight, description });
582
+ console.log(`🎯 [StatementMethodFilter] Padrão customizado adicionado: ${description}`);
583
+ }
584
+ /**
585
+ * 🎯 Modo debug - mostrar análise detalhada
586
+ */
587
+ static debugAnalyzeMethod(methodName, className) {
588
+ console.log(`\n🔍 [StatementMethodFilter] ANÁLISE DETALHADA: ${className || 'Unknown'}.${methodName}`);
589
+ if (StatementMethodFilter.excludedMethods.has(methodName)) {
590
+ console.log('❌ Método na lista de exclusão');
591
+ return;
592
+ }
593
+ let totalScore = 0;
594
+ const matches = [];
595
+ StatementMethodFilter.methodPatterns.forEach((pattern) => {
596
+ if (pattern.pattern.test(methodName)) {
597
+ matches.push(`${pattern.description}: +${pattern.weight}`);
598
+ totalScore += pattern.weight;
599
+ }
600
+ });
601
+ if (className) {
602
+ const classBonus = StatementMethodFilter.classPatterns.some((pattern) => pattern.test(className))
603
+ ? 5
604
+ : 0;
605
+ if (classBonus > 0) {
606
+ matches.push(`Class bonus: +${classBonus}`);
607
+ totalScore += classBonus;
608
+ }
609
+ }
610
+ console.log('📊 Matches encontrados:');
611
+ matches.forEach((match) => console.log(` ${match}`));
612
+ console.log(`📊 Score total: ${totalScore}`);
613
+ console.log(`📊 Resultado: ${totalScore >= 3 ? '✅ APROVADO' : '❌ REJEITADO'}`);
614
+ }
615
+ }
616
+ // Auto-inicialização
617
+ StatementMethodFilter.initialize();
618
+ export { StatementMethodFilter };