@revealui/mcp 0.1.0 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. package/LICENSE +22 -0
  2. package/LICENSE.commercial +111 -0
  3. package/README.md +3 -0
  4. package/dist/{packages/mcp/src/adapters → adapters}/db.d.ts +1 -1
  5. package/dist/adapters/db.d.ts.map +1 -0
  6. package/dist/adapters/db.js.map +1 -0
  7. package/dist/config/index.d.ts.map +1 -0
  8. package/dist/config/index.js.map +1 -0
  9. package/dist/contracts.d.ts.map +1 -0
  10. package/dist/contracts.js.map +1 -0
  11. package/dist/{packages/mcp/src/hypervisor.d.ts → hypervisor.d.ts} +56 -0
  12. package/dist/hypervisor.d.ts.map +1 -0
  13. package/dist/{packages/mcp/src/hypervisor.js → hypervisor.js} +209 -1
  14. package/dist/hypervisor.js.map +1 -0
  15. package/dist/{packages/mcp/src/index.d.ts → index.d.ts} +9 -5
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/{packages/mcp/src/index.js → index.js} +8 -4
  18. package/dist/index.js.map +1 -0
  19. package/dist/{packages/mcp/src/servers → servers}/adapter.d.ts +11 -1
  20. package/dist/servers/adapter.d.ts.map +1 -0
  21. package/dist/{packages/mcp/src/servers → servers}/adapter.js +20 -4
  22. package/dist/servers/adapter.js.map +1 -0
  23. package/dist/servers/revealui-content.d.ts +21 -0
  24. package/dist/servers/revealui-content.d.ts.map +1 -0
  25. package/dist/servers/revealui-content.js +211 -0
  26. package/dist/servers/revealui-content.js.map +1 -0
  27. package/dist/servers/revealui-email.d.ts +18 -0
  28. package/dist/servers/revealui-email.d.ts.map +1 -0
  29. package/dist/servers/revealui-email.js +190 -0
  30. package/dist/servers/revealui-email.js.map +1 -0
  31. package/dist/servers/revealui-stripe.d.ts +19 -0
  32. package/dist/servers/revealui-stripe.d.ts.map +1 -0
  33. package/dist/servers/revealui-stripe.js +228 -0
  34. package/dist/servers/revealui-stripe.js.map +1 -0
  35. package/package.json +50 -11
  36. package/.env.example +0 -9
  37. package/MCP_MAINTENANCE.md +0 -265
  38. package/__tests__/crdt.integration.test.ts +0 -156
  39. package/configs/README.md +0 -77
  40. package/configs/claude-template.json +0 -54
  41. package/dist/packages/core/src/database/ssl-config.d.ts +0 -9
  42. package/dist/packages/core/src/database/ssl-config.d.ts.map +0 -1
  43. package/dist/packages/core/src/database/ssl-config.js +0 -8
  44. package/dist/packages/core/src/database/ssl-config.js.map +0 -1
  45. package/dist/packages/core/src/features.d.ts +0 -86
  46. package/dist/packages/core/src/features.d.ts.map +0 -1
  47. package/dist/packages/core/src/features.js +0 -93
  48. package/dist/packages/core/src/features.js.map +0 -1
  49. package/dist/packages/core/src/license.d.ts +0 -75
  50. package/dist/packages/core/src/license.d.ts.map +0 -1
  51. package/dist/packages/core/src/license.js +0 -174
  52. package/dist/packages/core/src/license.js.map +0 -1
  53. package/dist/packages/core/src/monitoring/alerts.d.ts +0 -118
  54. package/dist/packages/core/src/monitoring/alerts.d.ts.map +0 -1
  55. package/dist/packages/core/src/monitoring/alerts.js +0 -325
  56. package/dist/packages/core/src/monitoring/alerts.js.map +0 -1
  57. package/dist/packages/core/src/monitoring/cleanup-manager.d.ts +0 -71
  58. package/dist/packages/core/src/monitoring/cleanup-manager.d.ts.map +0 -1
  59. package/dist/packages/core/src/monitoring/cleanup-manager.js +0 -227
  60. package/dist/packages/core/src/monitoring/cleanup-manager.js.map +0 -1
  61. package/dist/packages/core/src/monitoring/health-monitor.d.ts +0 -22
  62. package/dist/packages/core/src/monitoring/health-monitor.d.ts.map +0 -1
  63. package/dist/packages/core/src/monitoring/health-monitor.js +0 -143
  64. package/dist/packages/core/src/monitoring/health-monitor.js.map +0 -1
  65. package/dist/packages/core/src/monitoring/index.d.ts +0 -14
  66. package/dist/packages/core/src/monitoring/index.d.ts.map +0 -1
  67. package/dist/packages/core/src/monitoring/index.js +0 -18
  68. package/dist/packages/core/src/monitoring/index.js.map +0 -1
  69. package/dist/packages/core/src/monitoring/process-registry.d.ts +0 -97
  70. package/dist/packages/core/src/monitoring/process-registry.d.ts.map +0 -1
  71. package/dist/packages/core/src/monitoring/process-registry.js +0 -223
  72. package/dist/packages/core/src/monitoring/process-registry.js.map +0 -1
  73. package/dist/packages/core/src/monitoring/types.d.ts +0 -231
  74. package/dist/packages/core/src/monitoring/types.d.ts.map +0 -1
  75. package/dist/packages/core/src/monitoring/types.js +0 -43
  76. package/dist/packages/core/src/monitoring/types.js.map +0 -1
  77. package/dist/packages/core/src/monitoring/zombie-detector.d.ts +0 -81
  78. package/dist/packages/core/src/monitoring/zombie-detector.d.ts.map +0 -1
  79. package/dist/packages/core/src/monitoring/zombie-detector.js +0 -232
  80. package/dist/packages/core/src/monitoring/zombie-detector.js.map +0 -1
  81. package/dist/packages/core/src/observability/logger.d.ts +0 -47
  82. package/dist/packages/core/src/observability/logger.d.ts.map +0 -1
  83. package/dist/packages/core/src/observability/logger.js +0 -141
  84. package/dist/packages/core/src/observability/logger.js.map +0 -1
  85. package/dist/packages/core/src/utils/logger-server.d.ts +0 -32
  86. package/dist/packages/core/src/utils/logger-server.d.ts.map +0 -1
  87. package/dist/packages/core/src/utils/logger-server.js +0 -69
  88. package/dist/packages/core/src/utils/logger-server.js.map +0 -1
  89. package/dist/packages/core/src/utils/request-context.d.ts +0 -143
  90. package/dist/packages/core/src/utils/request-context.d.ts.map +0 -1
  91. package/dist/packages/core/src/utils/request-context.js +0 -169
  92. package/dist/packages/core/src/utils/request-context.js.map +0 -1
  93. package/dist/packages/dev/src/code-validator/index.d.ts +0 -20
  94. package/dist/packages/dev/src/code-validator/index.d.ts.map +0 -1
  95. package/dist/packages/dev/src/code-validator/index.js +0 -20
  96. package/dist/packages/dev/src/code-validator/index.js.map +0 -1
  97. package/dist/packages/dev/src/code-validator/types.d.ts +0 -67
  98. package/dist/packages/dev/src/code-validator/types.d.ts.map +0 -1
  99. package/dist/packages/dev/src/code-validator/types.js +0 -7
  100. package/dist/packages/dev/src/code-validator/types.js.map +0 -1
  101. package/dist/packages/dev/src/code-validator/validator.d.ts +0 -48
  102. package/dist/packages/dev/src/code-validator/validator.d.ts.map +0 -1
  103. package/dist/packages/dev/src/code-validator/validator.js +0 -176
  104. package/dist/packages/dev/src/code-validator/validator.js.map +0 -1
  105. package/dist/packages/mcp/src/adapters/db.d.ts.map +0 -1
  106. package/dist/packages/mcp/src/adapters/db.js.map +0 -1
  107. package/dist/packages/mcp/src/config/index.d.ts.map +0 -1
  108. package/dist/packages/mcp/src/config/index.js.map +0 -1
  109. package/dist/packages/mcp/src/contracts.d.ts.map +0 -1
  110. package/dist/packages/mcp/src/contracts.js.map +0 -1
  111. package/dist/packages/mcp/src/hypervisor.d.ts.map +0 -1
  112. package/dist/packages/mcp/src/hypervisor.js.map +0 -1
  113. package/dist/packages/mcp/src/index.d.ts.map +0 -1
  114. package/dist/packages/mcp/src/index.js.map +0 -1
  115. package/dist/packages/mcp/src/servers/adapter.d.ts.map +0 -1
  116. package/dist/packages/mcp/src/servers/adapter.js.map +0 -1
  117. package/dist/packages/mcp/src/servers/code-validator.d.ts +0 -24
  118. package/dist/packages/mcp/src/servers/code-validator.d.ts.map +0 -1
  119. package/dist/packages/mcp/src/servers/code-validator.js +0 -156
  120. package/dist/packages/mcp/src/servers/code-validator.js.map +0 -1
  121. package/dist/packages/mcp/src/servers/neon.d.ts +0 -11
  122. package/dist/packages/mcp/src/servers/neon.d.ts.map +0 -1
  123. package/dist/packages/mcp/src/servers/neon.js +0 -90
  124. package/dist/packages/mcp/src/servers/neon.js.map +0 -1
  125. package/dist/packages/mcp/src/servers/next-devtools.d.ts +0 -11
  126. package/dist/packages/mcp/src/servers/next-devtools.d.ts.map +0 -1
  127. package/dist/packages/mcp/src/servers/next-devtools.js +0 -215
  128. package/dist/packages/mcp/src/servers/next-devtools.js.map +0 -1
  129. package/dist/packages/mcp/src/servers/playwright.d.ts +0 -11
  130. package/dist/packages/mcp/src/servers/playwright.d.ts.map +0 -1
  131. package/dist/packages/mcp/src/servers/playwright.js +0 -68
  132. package/dist/packages/mcp/src/servers/playwright.js.map +0 -1
  133. package/dist/packages/mcp/src/servers/stripe.d.ts +0 -11
  134. package/dist/packages/mcp/src/servers/stripe.d.ts.map +0 -1
  135. package/dist/packages/mcp/src/servers/stripe.js +0 -86
  136. package/dist/packages/mcp/src/servers/stripe.js.map +0 -1
  137. package/dist/packages/mcp/src/servers/supabase.d.ts +0 -11
  138. package/dist/packages/mcp/src/servers/supabase.d.ts.map +0 -1
  139. package/dist/packages/mcp/src/servers/supabase.js +0 -144
  140. package/dist/packages/mcp/src/servers/supabase.js.map +0 -1
  141. package/dist/packages/mcp/src/servers/vercel.d.ts +0 -11
  142. package/dist/packages/mcp/src/servers/vercel.d.ts.map +0 -1
  143. package/dist/packages/mcp/src/servers/vercel.js +0 -87
  144. package/dist/packages/mcp/src/servers/vercel.js.map +0 -1
  145. package/dist/packages/mcp/src/servers/vultr-test.d.ts +0 -3
  146. package/dist/packages/mcp/src/servers/vultr-test.d.ts.map +0 -1
  147. package/dist/packages/mcp/src/servers/vultr-test.js +0 -82
  148. package/dist/packages/mcp/src/servers/vultr-test.js.map +0 -1
  149. package/dist/scripts/lib/analyzers/console-analyzer.d.ts +0 -188
  150. package/dist/scripts/lib/analyzers/console-analyzer.d.ts.map +0 -1
  151. package/dist/scripts/lib/analyzers/console-analyzer.js +0 -432
  152. package/dist/scripts/lib/analyzers/console-analyzer.js.map +0 -1
  153. package/dist/scripts/lib/analyzers/index.d.ts +0 -11
  154. package/dist/scripts/lib/analyzers/index.d.ts.map +0 -1
  155. package/dist/scripts/lib/analyzers/index.js +0 -11
  156. package/dist/scripts/lib/analyzers/index.js.map +0 -1
  157. package/dist/scripts/lib/args.d.ts +0 -104
  158. package/dist/scripts/lib/args.d.ts.map +0 -1
  159. package/dist/scripts/lib/args.js +0 -304
  160. package/dist/scripts/lib/args.js.map +0 -1
  161. package/dist/scripts/lib/cache.d.ts +0 -185
  162. package/dist/scripts/lib/cache.d.ts.map +0 -1
  163. package/dist/scripts/lib/cache.js +0 -390
  164. package/dist/scripts/lib/cache.js.map +0 -1
  165. package/dist/scripts/lib/cli/dispatch.d.ts +0 -116
  166. package/dist/scripts/lib/cli/dispatch.d.ts.map +0 -1
  167. package/dist/scripts/lib/cli/dispatch.js +0 -206
  168. package/dist/scripts/lib/cli/dispatch.js.map +0 -1
  169. package/dist/scripts/lib/cli/index.d.ts +0 -10
  170. package/dist/scripts/lib/cli/index.d.ts.map +0 -1
  171. package/dist/scripts/lib/cli/index.js +0 -10
  172. package/dist/scripts/lib/cli/index.js.map +0 -1
  173. package/dist/scripts/lib/database/ssl-config.d.ts +0 -26
  174. package/dist/scripts/lib/database/ssl-config.d.ts.map +0 -1
  175. package/dist/scripts/lib/database/ssl-config.js +0 -47
  176. package/dist/scripts/lib/database/ssl-config.js.map +0 -1
  177. package/dist/scripts/lib/errors.d.ts +0 -218
  178. package/dist/scripts/lib/errors.d.ts.map +0 -1
  179. package/dist/scripts/lib/errors.js +0 -543
  180. package/dist/scripts/lib/errors.js.map +0 -1
  181. package/dist/scripts/lib/exec.d.ts +0 -107
  182. package/dist/scripts/lib/exec.d.ts.map +0 -1
  183. package/dist/scripts/lib/exec.js +0 -232
  184. package/dist/scripts/lib/exec.js.map +0 -1
  185. package/dist/scripts/lib/index.d.ts +0 -50
  186. package/dist/scripts/lib/index.d.ts.map +0 -1
  187. package/dist/scripts/lib/index.js +0 -65
  188. package/dist/scripts/lib/index.js.map +0 -1
  189. package/dist/scripts/lib/logger.d.ts +0 -50
  190. package/dist/scripts/lib/logger.d.ts.map +0 -1
  191. package/dist/scripts/lib/logger.js +0 -159
  192. package/dist/scripts/lib/logger.js.map +0 -1
  193. package/dist/scripts/lib/output.d.ts +0 -149
  194. package/dist/scripts/lib/output.d.ts.map +0 -1
  195. package/dist/scripts/lib/output.js +0 -263
  196. package/dist/scripts/lib/output.js.map +0 -1
  197. package/dist/scripts/lib/parallel.d.ts +0 -164
  198. package/dist/scripts/lib/parallel.d.ts.map +0 -1
  199. package/dist/scripts/lib/parallel.js +0 -355
  200. package/dist/scripts/lib/parallel.js.map +0 -1
  201. package/dist/scripts/lib/paths.d.ts +0 -92
  202. package/dist/scripts/lib/paths.d.ts.map +0 -1
  203. package/dist/scripts/lib/paths.js +0 -171
  204. package/dist/scripts/lib/paths.js.map +0 -1
  205. package/dist/scripts/lib/state/adapters/memory.d.ts +0 -42
  206. package/dist/scripts/lib/state/adapters/memory.d.ts.map +0 -1
  207. package/dist/scripts/lib/state/adapters/memory.js +0 -110
  208. package/dist/scripts/lib/state/adapters/memory.js.map +0 -1
  209. package/dist/scripts/lib/state/adapters/pglite.d.ts +0 -46
  210. package/dist/scripts/lib/state/adapters/pglite.d.ts.map +0 -1
  211. package/dist/scripts/lib/state/adapters/pglite.js +0 -256
  212. package/dist/scripts/lib/state/adapters/pglite.js.map +0 -1
  213. package/dist/scripts/lib/state/index.d.ts +0 -16
  214. package/dist/scripts/lib/state/index.d.ts.map +0 -1
  215. package/dist/scripts/lib/state/index.js +0 -16
  216. package/dist/scripts/lib/state/index.js.map +0 -1
  217. package/dist/scripts/lib/state/types.d.ts +0 -111
  218. package/dist/scripts/lib/state/types.d.ts.map +0 -1
  219. package/dist/scripts/lib/state/types.js +0 -8
  220. package/dist/scripts/lib/state/types.js.map +0 -1
  221. package/dist/scripts/lib/state/workflow-state.d.ts +0 -110
  222. package/dist/scripts/lib/state/workflow-state.d.ts.map +0 -1
  223. package/dist/scripts/lib/state/workflow-state.js +0 -331
  224. package/dist/scripts/lib/state/workflow-state.js.map +0 -1
  225. package/dist/scripts/lib/telemetry.d.ts +0 -194
  226. package/dist/scripts/lib/telemetry.d.ts.map +0 -1
  227. package/dist/scripts/lib/telemetry.js +0 -394
  228. package/dist/scripts/lib/telemetry.js.map +0 -1
  229. package/dist/scripts/lib/utils.d.ts +0 -270
  230. package/dist/scripts/lib/utils.d.ts.map +0 -1
  231. package/dist/scripts/lib/utils.js +0 -473
  232. package/dist/scripts/lib/utils.js.map +0 -1
  233. package/dist/scripts/lib/validation/database.d.ts +0 -83
  234. package/dist/scripts/lib/validation/database.d.ts.map +0 -1
  235. package/dist/scripts/lib/validation/database.js +0 -199
  236. package/dist/scripts/lib/validation/database.js.map +0 -1
  237. package/dist/scripts/lib/validation/env.d.ts +0 -80
  238. package/dist/scripts/lib/validation/env.d.ts.map +0 -1
  239. package/dist/scripts/lib/validation/env.js +0 -246
  240. package/dist/scripts/lib/validation/env.js.map +0 -1
  241. package/dist/scripts/lib/validation/index.d.ts +0 -16
  242. package/dist/scripts/lib/validation/index.d.ts.map +0 -1
  243. package/dist/scripts/lib/validation/index.js +0 -16
  244. package/dist/scripts/lib/validation/index.js.map +0 -1
  245. package/dist/scripts/lib/validation/post-execution.d.ts +0 -74
  246. package/dist/scripts/lib/validation/post-execution.d.ts.map +0 -1
  247. package/dist/scripts/lib/validation/post-execution.js +0 -110
  248. package/dist/scripts/lib/validation/post-execution.js.map +0 -1
  249. package/dist/scripts/lib/validation/pre-execution.d.ts +0 -165
  250. package/dist/scripts/lib/validation/pre-execution.d.ts.map +0 -1
  251. package/dist/scripts/lib/validation/pre-execution.js +0 -466
  252. package/dist/scripts/lib/validation/pre-execution.js.map +0 -1
  253. package/dist/scripts/lib/validators/documentation-validator.d.ts +0 -242
  254. package/dist/scripts/lib/validators/documentation-validator.d.ts.map +0 -1
  255. package/dist/scripts/lib/validators/documentation-validator.js +0 -584
  256. package/dist/scripts/lib/validators/documentation-validator.js.map +0 -1
  257. package/dist/scripts/lib/validators/index.d.ts +0 -11
  258. package/dist/scripts/lib/validators/index.d.ts.map +0 -1
  259. package/dist/scripts/lib/validators/index.js +0 -11
  260. package/dist/scripts/lib/validators/index.js.map +0 -1
  261. package/docker-compose.yml +0 -46
  262. package/docs/INDEX.md +0 -88
  263. package/docs/README.md +0 -774
  264. package/docs/SETUP.md +0 -264
  265. package/docs/servers/code-validator.md +0 -586
  266. package/eslint.config.js +0 -7
  267. package/migrations/0001_add_crdt_columns.sql +0 -8
  268. package/migrations/0001_rollback.sql +0 -6
  269. package/migrations/005_performance_indexes.sql +0 -190
  270. package/migrations/backfill_crdt_meta.js +0 -45
  271. package/src/__tests__/hypervisor.test.ts +0 -212
  272. package/src/adapters/db.ts +0 -180
  273. package/src/config/config.json +0 -49
  274. package/src/config/index.ts +0 -30
  275. package/src/contracts.ts +0 -221
  276. package/src/hypervisor.ts +0 -464
  277. package/src/index.ts +0 -87
  278. package/src/servers/adapter.ts +0 -643
  279. package/src/servers/code-validator.ts +0 -188
  280. package/src/servers/neon.ts +0 -103
  281. package/src/servers/next-devtools.ts +0 -230
  282. package/src/servers/playwright.ts +0 -77
  283. package/src/servers/stripe.ts +0 -99
  284. package/src/servers/supabase.ts +0 -161
  285. package/src/servers/vercel.ts +0 -100
  286. package/src/servers/vultr-test.ts +0 -97
  287. package/tsconfig.json +0 -12
  288. package/vitest.config.ts +0 -22
  289. /package/dist/{packages/mcp/src/adapters → adapters}/db.js +0 -0
  290. /package/dist/{packages/mcp/src/config → config}/index.d.ts +0 -0
  291. /package/dist/{packages/mcp/src/config → config}/index.js +0 -0
  292. /package/dist/{packages/mcp/src/contracts.d.ts → contracts.d.ts} +0 -0
  293. /package/dist/{packages/mcp/src/contracts.js → contracts.js} +0 -0
@@ -1,432 +0,0 @@
1
- /**
2
- * Unified Console Analyzer
3
- *
4
- * Provides both AST-based and regex-based console statement detection.
5
- * Consolidates logic from analyze/console-usage.ts and validate/console-statements.ts
6
- *
7
- * Features:
8
- * - AST mode: TypeScript AST parsing for accurate detection with production guard awareness
9
- * - Regex mode: Fast pattern matching for simple validation
10
- * - Auto mode: Intelligently picks best approach based on file type
11
- * - File categorization: production, test, script, unknown
12
- * - Production guard detection: Recognizes if (process.env.NODE_ENV !== 'production')
13
- *
14
- * @dependencies
15
- * - node:fs - File system operations for reading files
16
- * - node:path - Path manipulation utilities
17
- * - typescript - TypeScript compiler API for AST parsing
18
- */
19
- import { readFile, readFileSync } from 'node:fs';
20
- import { relative } from 'node:path';
21
- import * as ts from 'typescript';
22
- const CONSOLE_METHODS = new Set(['log', 'error', 'warn', 'debug', 'info', 'trace']);
23
- /**
24
- * Categorize a file based on its path to determine the appropriate context
25
- * for console statement analysis.
26
- *
27
- * @param filePath - Absolute path to the file to categorize
28
- * @param workspaceRoot - Root directory of the workspace/project
29
- * @returns File category: 'production', 'test', 'script', or 'unknown'
30
- *
31
- * @example
32
- * ```typescript
33
- * const category = categorizeFile('/app/src/components/Button.tsx', '/app')
34
- * console.log(category) // 'production'
35
- *
36
- * const testCategory = categorizeFile('/app/src/__tests__/Button.test.tsx', '/app')
37
- * console.log(testCategory) // 'test'
38
- * ```
39
- */
40
- export function categorizeFile(filePath, workspaceRoot) {
41
- const relativePath = relative(workspaceRoot, filePath);
42
- // Test files
43
- if (relativePath.includes('.test.') ||
44
- relativePath.includes('.spec.') ||
45
- relativePath.includes('__tests__') ||
46
- relativePath.includes('/tests/')) {
47
- return 'test';
48
- }
49
- // Scripts
50
- if (relativePath.startsWith('scripts/') ||
51
- relativePath.includes('/scripts/') ||
52
- relativePath.endsWith('.config.ts') ||
53
- relativePath.endsWith('.config.js')) {
54
- return 'script';
55
- }
56
- // Production code
57
- if (relativePath.includes('/src/') &&
58
- (relativePath.startsWith('packages/') || relativePath.startsWith('apps/'))) {
59
- return 'production';
60
- }
61
- return 'unknown';
62
- }
63
- /**
64
- * Check if a node is inside a production-safe conditional
65
- * Looks for patterns like: if (process.env.NODE_ENV !== 'production')
66
- * or: if (!isProduction) where isProduction is derived from NODE_ENV
67
- */
68
- function isInsideProductionGuard(node, _sourceFile) {
69
- let current = node;
70
- // Walk up the AST to find conditional statements
71
- while (current) {
72
- if (ts.isIfStatement(current)) {
73
- const condition = current.expression;
74
- // Check for direct NODE_ENV checks
75
- if (isNodeEnvProductionCheck(condition)) {
76
- return true;
77
- }
78
- // Check for variable references that might be production checks
79
- if (ts.isIdentifier(condition) || ts.isPropertyAccessExpression(condition)) {
80
- // Could be extended to track variable assignments
81
- // For now, just check common patterns
82
- }
83
- // Check for logical NOT expressions
84
- if (ts.isPrefixUnaryExpression(condition) &&
85
- condition.operator === ts.SyntaxKind.ExclamationToken &&
86
- isNodeEnvProductionCheck(condition.operand)) {
87
- return true;
88
- }
89
- }
90
- current = current.parent;
91
- }
92
- return false;
93
- }
94
- /**
95
- * Check if an expression is checking NODE_ENV for production
96
- */
97
- function isNodeEnvProductionCheck(node) {
98
- // Check for: process.env.NODE_ENV !== 'production'
99
- if (ts.isBinaryExpression(node)) {
100
- const { left, operatorToken, right } = node;
101
- if (operatorToken.kind === ts.SyntaxKind.ExclamationEqualsEqualsToken ||
102
- operatorToken.kind === ts.SyntaxKind.ExclamationEqualsToken) {
103
- // Check if left side is process.env.NODE_ENV
104
- if (isProcessEnvNodeEnv(left)) {
105
- // Check if right side is 'production' literal
106
- if (ts.isStringLiteral(right) && right.text === 'production') {
107
- return true;
108
- }
109
- }
110
- // Also check reverse: 'production' !== process.env.NODE_ENV
111
- if (isProcessEnvNodeEnv(right)) {
112
- if (ts.isStringLiteral(left) && left.text === 'production') {
113
- return true;
114
- }
115
- }
116
- }
117
- }
118
- // Check for: process.env.NODE_ENV === 'development'
119
- if (ts.isBinaryExpression(node)) {
120
- const { left, operatorToken, right } = node;
121
- if (operatorToken.kind === ts.SyntaxKind.EqualsEqualsEqualsToken ||
122
- operatorToken.kind === ts.SyntaxKind.EqualsEqualsToken) {
123
- if (isProcessEnvNodeEnv(left)) {
124
- if (ts.isStringLiteral(right) && right.text === 'development') {
125
- return true;
126
- }
127
- }
128
- }
129
- }
130
- return false;
131
- }
132
- /**
133
- * Check if expression is process.env.NODE_ENV
134
- */
135
- function isProcessEnvNodeEnv(node) {
136
- if (ts.isPropertyAccessExpression(node)) {
137
- const { expression, name } = node;
138
- if (ts.isPropertyAccessExpression(expression)) {
139
- const { expression: envExpr, name: envName } = expression;
140
- if (ts.isIdentifier(envExpr) &&
141
- envExpr.text === 'process' &&
142
- ts.isIdentifier(envName) &&
143
- envName.text === 'env' &&
144
- ts.isIdentifier(name) &&
145
- name.text === 'NODE_ENV') {
146
- return true;
147
- }
148
- }
149
- }
150
- return false;
151
- }
152
- /**
153
- * Check if console method is appropriate for production
154
- * Error methods are generally acceptable, info/debug/log are not
155
- */
156
- function isProductionAppropriateConsole(method) {
157
- return method === 'error'; // Only error logging is acceptable in production
158
- }
159
- /**
160
- * Recursively traverse AST to find console method calls
161
- * Aware of production-safe conditionals
162
- */
163
- function findConsoleCallsInNode(node, context, usages, filePath, category, workspaceRoot) {
164
- if (ts.isPropertyAccessExpression(node)) {
165
- const expression = node.expression;
166
- if (ts.isIdentifier(expression) && expression.text === 'console') {
167
- const methodName = node.name.text;
168
- if (CONSOLE_METHODS.has(methodName)) {
169
- const parent = node.parent;
170
- if (parent && ts.isCallExpression(parent)) {
171
- // Check if this console call is inside a production guard
172
- const isGuarded = isInsideProductionGuard(node, context.sourceFile);
173
- // For production code, only count unguarded inappropriate calls
174
- // (calls not inside production guards that aren't error logging)
175
- if (category !== 'production' ||
176
- !(isGuarded || isProductionAppropriateConsole(methodName))) {
177
- const { line, character } = context.sourceFile.getLineAndCharacterOfPosition(node.getStart());
178
- // Use cached lines array instead of calling getText().split() every time
179
- const lineText = context.lines[line]?.trim() || '';
180
- usages.push({
181
- file: relative(workspaceRoot, filePath),
182
- line: line + 1,
183
- column: character + 1,
184
- method: methodName,
185
- code: lineText.substring(0, 100),
186
- category,
187
- });
188
- }
189
- }
190
- }
191
- }
192
- }
193
- ts.forEachChild(node, (child) => {
194
- findConsoleCallsInNode(child, context, usages, filePath, category, workspaceRoot);
195
- });
196
- }
197
- /**
198
- * Analyze file using TypeScript AST parsing for accurate console statement detection.
199
- * More accurate but slower than regex. Detects production guards and appropriate
200
- * console methods (e.g., console.error is acceptable in production).
201
- *
202
- * @param filePath - Absolute path to the file to analyze
203
- * @param workspaceRoot - Root directory of the workspace/project
204
- * @returns Array of console usages found in the file
205
- *
206
- * @example
207
- * ```typescript
208
- * const usages = analyzeFileAST('/app/src/utils/logger.ts', '/app')
209
- * console.log(`Found ${usages.length} console statements`)
210
- * usages.forEach(u => console.log(`${u.file}:${u.line} - ${u.method}`))
211
- * ```
212
- *
213
- * @see {@link analyzeFileRegex} for faster regex-based analysis
214
- * @see {@link analyzeFile} for automatic mode selection
215
- */
216
- export function analyzeFileAST(filePath, workspaceRoot) {
217
- const usages = [];
218
- const category = categorizeFile(filePath, workspaceRoot);
219
- try {
220
- const content = readFileSync(filePath, 'utf-8');
221
- const ext = filePath.split('.').pop()?.toLowerCase();
222
- const scriptKind = ext === 'tsx' || ext === 'jsx'
223
- ? ts.ScriptKind.TSX
224
- : ext === 'ts' || ext === 'js'
225
- ? ts.ScriptKind.TS
226
- : ts.ScriptKind.Unknown;
227
- const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true, scriptKind);
228
- // Cache lines array once to avoid repeated split() calls (performance optimization)
229
- const context = {
230
- sourceFile,
231
- lines: content.split('\n'),
232
- };
233
- findConsoleCallsInNode(sourceFile, context, usages, filePath, category, workspaceRoot);
234
- }
235
- catch (_error) {
236
- // Skip files that can't be parsed (silently continue for library usage)
237
- // Calling code can handle logging if needed
238
- }
239
- return usages;
240
- }
241
- /**
242
- * Analyze file using regex pattern matching for fast console statement detection.
243
- * Faster but less accurate than AST - cannot detect production guards or
244
- * complex conditional logic.
245
- *
246
- * @param filePath - Absolute path to the file to analyze
247
- * @param workspaceRoot - Root directory of the workspace/project
248
- * @returns Promise resolving to array of console usages found
249
- *
250
- * @example
251
- * ```typescript
252
- * const usages = await analyzeFileRegex('/app/src/index.js', '/app')
253
- * console.log(`Found ${usages.length} console statements (regex mode)`)
254
- * ```
255
- *
256
- * @see {@link analyzeFileAST} for more accurate AST-based analysis
257
- * @see {@link analyzeFile} for automatic mode selection
258
- */
259
- export async function analyzeFileRegex(filePath, workspaceRoot) {
260
- const category = categorizeFile(filePath, workspaceRoot);
261
- const usages = [];
262
- try {
263
- const content = await new Promise((resolve, reject) => {
264
- readFile(filePath, 'utf-8', (err, data) => {
265
- if (err)
266
- reject(err);
267
- else
268
- resolve(data);
269
- });
270
- });
271
- const lines = content.split('\n');
272
- const consoleRegex = /\bconsole\.(log|warn|error|info|debug|trace)\s*\(/g;
273
- for (let i = 0; i < lines.length; i++) {
274
- const line = lines[i];
275
- let match = consoleRegex.exec(line);
276
- while (match !== null) {
277
- usages.push({
278
- file: relative(workspaceRoot, filePath),
279
- line: i + 1,
280
- column: match.index + 1,
281
- method: match[1],
282
- code: line.trim(),
283
- category,
284
- });
285
- match = consoleRegex.exec(line);
286
- }
287
- }
288
- }
289
- catch (_error) {
290
- // Skip files that can't be scanned (silently continue for library usage)
291
- // Calling code can handle logging if needed
292
- }
293
- return usages;
294
- }
295
- /**
296
- * Analyze file with automatic or explicit mode selection.
297
- * Auto mode intelligently selects AST for TypeScript files and regex for JavaScript.
298
- *
299
- * @param filePath - Absolute path to the file to analyze
300
- * @param workspaceRoot - Root directory of the workspace/project
301
- * @param mode - Analysis mode: 'auto' (default), 'ast', or 'regex'
302
- * @returns Promise resolving to array of console usages found
303
- *
304
- * @example
305
- * ```typescript
306
- * // Auto mode - picks best approach
307
- * const usages = await analyzeFile('/app/src/components/Button.tsx', '/app')
308
- *
309
- * // Force AST mode
310
- * const astUsages = await analyzeFile('/app/src/index.js', '/app', 'ast')
311
- *
312
- * // Force regex mode for speed
313
- * const regexUsages = await analyzeFile('/app/src/utils.ts', '/app', 'regex')
314
- * ```
315
- *
316
- * @see {@link analyzeFiles} to analyze multiple files at once
317
- */
318
- export async function analyzeFile(filePath, workspaceRoot, mode = 'auto') {
319
- if (mode === 'ast') {
320
- return analyzeFileAST(filePath, workspaceRoot);
321
- }
322
- if (mode === 'regex') {
323
- return analyzeFileRegex(filePath, workspaceRoot);
324
- }
325
- // Auto mode: use AST for TypeScript, regex for JavaScript
326
- const ext = filePath.split('.').pop()?.toLowerCase();
327
- if (ext === 'ts' || ext === 'tsx') {
328
- return analyzeFileAST(filePath, workspaceRoot);
329
- }
330
- return analyzeFileRegex(filePath, workspaceRoot);
331
- }
332
- /**
333
- * Analyze multiple files and aggregate results with categorized summary.
334
- * Provides comprehensive analysis across many files with performance optimization.
335
- *
336
- * @param filePaths - Array of absolute file paths to analyze
337
- * @param workspaceRoot - Root directory of the workspace/project
338
- * @param mode - Analysis mode: 'auto' (default), 'ast', or 'regex'
339
- * @returns Promise resolving to analysis result with usages and summary statistics
340
- *
341
- * @example
342
- * ```typescript
343
- * const files = await scanDirectoryAll('./src', { extensions: ['.ts', '.tsx'] })
344
- * const result = await analyzeFiles(files, process.cwd())
345
- *
346
- * console.log(`Total console statements: ${result.summary.total}`)
347
- * console.log(`Production issues: ${result.summary.production}`)
348
- * console.log(`Test files: ${result.summary.test}`)
349
- *
350
- * result.usages.forEach(usage => {
351
- * console.log(`${usage.file}:${usage.line} - ${usage.method} (${usage.category})`)
352
- * })
353
- * ```
354
- */
355
- export async function analyzeFiles(filePaths, workspaceRoot, mode = 'auto') {
356
- const allUsages = [];
357
- for (const file of filePaths) {
358
- const usages = await analyzeFile(file, workspaceRoot, mode);
359
- allUsages.push(...usages);
360
- }
361
- // Calculate summary
362
- const production = allUsages.filter((u) => u.category === 'production');
363
- const test = allUsages.filter((u) => u.category === 'test');
364
- const script = allUsages.filter((u) => u.category === 'script');
365
- const unknown = allUsages.filter((u) => u.category === 'unknown');
366
- return {
367
- usages: allUsages,
368
- summary: {
369
- total: allUsages.length,
370
- production: production.length,
371
- test: test.length,
372
- script: script.length,
373
- unknown: unknown.length,
374
- },
375
- };
376
- }
377
- /**
378
- * Console Analyzer class for object-oriented usage.
379
- * Provides a convenient API for analyzing console statements across a project.
380
- *
381
- * @example
382
- * ```typescript
383
- * const analyzer = new ConsoleAnalyzer('/path/to/project')
384
- *
385
- * // Analyze single file
386
- * const usages = await analyzer.analyze('src/app.ts')
387
- *
388
- * // Analyze multiple files with summary
389
- * const files = await scanDirectoryAll('./src', { extensions: ['.ts'] })
390
- * const result = await analyzer.analyzeMultiple(files, 'auto')
391
- * console.log(`Found ${result.summary.total} console statements`)
392
- * ```
393
- */
394
- export class ConsoleAnalyzer {
395
- workspaceRoot;
396
- /**
397
- * Create a new ConsoleAnalyzer instance.
398
- *
399
- * @param workspaceRoot - Root directory of the workspace/project
400
- */
401
- constructor(workspaceRoot) {
402
- this.workspaceRoot = workspaceRoot;
403
- }
404
- /**
405
- * Analyze file using TypeScript AST parsing.
406
- *
407
- * @param filePath - Absolute path to file to analyze
408
- * @returns Array of console usages found
409
- */
410
- analyzeAST(filePath) {
411
- return analyzeFileAST(filePath, this.workspaceRoot);
412
- }
413
- /**
414
- * Analyze using regex pattern matching
415
- */
416
- async analyzeRegex(filePath) {
417
- return analyzeFileRegex(filePath, this.workspaceRoot);
418
- }
419
- /**
420
- * Smart analysis with automatic mode selection
421
- */
422
- async analyze(filePath, mode = 'auto') {
423
- return analyzeFile(filePath, this.workspaceRoot, mode);
424
- }
425
- /**
426
- * Analyze multiple files
427
- */
428
- async analyzeMultiple(filePaths, mode = 'auto') {
429
- return analyzeFiles(filePaths, this.workspaceRoot, mode);
430
- }
431
- }
432
- //# sourceMappingURL=console-analyzer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"console-analyzer.js","sourceRoot":"","sources":["../../../../../../scripts/lib/analyzers/console-analyzer.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Code Analyzers Module
3
- *
4
- * Exports specialized analyzers for code analysis tasks.
5
- * These analyzers are reusable across analyze/ and validate/ commands.
6
- *
7
- * @dependencies
8
- * - scripts/lib/analyzers/console-analyzer.ts - Console statement analysis
9
- */
10
- export { type AnalysisMode, analyzeFile, analyzeFileAST, analyzeFileRegex, analyzeFiles, type ConsoleAnalysisResult, ConsoleAnalyzer, type ConsoleUsage, categorizeFile, } from './console-analyzer.js';
11
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../scripts/lib/analyzers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,KAAK,YAAY,EACjB,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,KAAK,qBAAqB,EAC1B,eAAe,EACf,KAAK,YAAY,EACjB,cAAc,GACf,MAAM,uBAAuB,CAAA"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Code Analyzers Module
3
- *
4
- * Exports specialized analyzers for code analysis tasks.
5
- * These analyzers are reusable across analyze/ and validate/ commands.
6
- *
7
- * @dependencies
8
- * - scripts/lib/analyzers/console-analyzer.ts - Console statement analysis
9
- */
10
- export { analyzeFile, analyzeFileAST, analyzeFileRegex, analyzeFiles, ConsoleAnalyzer, categorizeFile, } from './console-analyzer.js';
11
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../scripts/lib/analyzers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAEL,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,YAAY,EAEZ,eAAe,EAEf,cAAc,GACf,MAAM,uBAAuB,CAAA"}
@@ -1,104 +0,0 @@
1
- /**
2
- * Lightweight Argument Parser
3
- *
4
- * Type-safe argument parsing for CLI scripts with support for
5
- * positional args, flags, and auto-generated help text.
6
- *
7
- * @dependencies
8
- * - scripts/lib/errors.ts - ErrorCode enum and ScriptError class
9
- *
10
- * @example
11
- * ```typescript
12
- * const parser = defineArgs({
13
- * name: 'workflow',
14
- * description: 'Workflow management CLI',
15
- * args: [
16
- * { name: 'json', short: 'j', type: 'boolean', description: 'Output JSON' },
17
- * { name: 'id', short: 'i', type: 'string', description: 'Workflow ID' },
18
- * ],
19
- * commands: ['status', 'list', 'create', 'delete'],
20
- * })
21
- *
22
- * const args = parseArgs(process.argv.slice(2), parser)
23
- * // args.command: 'status' | 'list' | ...
24
- * // args.flags.json: boolean
25
- * // args.flags.id: string | undefined
26
- * // args.positional: string[]
27
- * ```
28
- */
29
- export type ArgType = 'string' | 'boolean' | 'number';
30
- export interface ArgDefinition<T extends ArgType = ArgType> {
31
- /** Argument name (used as --name) */
32
- name: string;
33
- /** Short flag (used as -x) */
34
- short?: string;
35
- /** Value type */
36
- type: T;
37
- /** Whether this argument is required */
38
- required?: boolean;
39
- /** Default value if not provided */
40
- default?: T extends 'string' ? string : T extends 'number' ? number : boolean;
41
- /** Description for help text */
42
- description: string;
43
- }
44
- export interface CommandDefinition {
45
- /** Command name */
46
- name: string;
47
- /** Command description for help text */
48
- description: string;
49
- /** Command-specific arguments */
50
- args?: ArgDefinition[];
51
- }
52
- export interface ParserConfig {
53
- /** CLI name for help text */
54
- name: string;
55
- /** CLI description */
56
- description: string;
57
- /** Global argument definitions */
58
- args?: ArgDefinition[];
59
- /** Available commands */
60
- commands?: CommandDefinition[];
61
- /** Positional argument names (for help text) */
62
- positionalNames?: string[];
63
- }
64
- export interface ParsedArgs {
65
- /** The command (first positional if matches known command) */
66
- command?: string;
67
- /** Positional arguments (after command) */
68
- positional: string[];
69
- /** Parsed flag values */
70
- flags: Record<string, string | number | boolean | undefined>;
71
- /** Whether help was requested */
72
- help: boolean;
73
- /** Raw argv for debugging */
74
- _raw: string[];
75
- }
76
- export interface ArgParser {
77
- config: ParserConfig;
78
- parse: (argv: string[]) => ParsedArgs;
79
- generateHelp: (command?: string) => string;
80
- }
81
- /**
82
- * Define an argument parser configuration
83
- */
84
- export declare function defineArgs(config: ParserConfig): ArgParser;
85
- /**
86
- * Parse command-line arguments
87
- */
88
- export declare function parseArgs(argv: string[], config: ParserConfig): ParsedArgs;
89
- /**
90
- * Generate help text for the CLI
91
- */
92
- export declare function generateHelp(config: ParserConfig, command?: string): string;
93
- /**
94
- * Validate required arguments are present
95
- */
96
- export declare function validateRequiredArgs(args: ParsedArgs, config: ParserConfig): {
97
- valid: boolean;
98
- missing: string[];
99
- };
100
- /**
101
- * Get a typed flag value with proper narrowing
102
- */
103
- export declare function getFlag<T extends string | number | boolean>(args: ParsedArgs, name: string, defaultValue: T): T;
104
- //# sourceMappingURL=args.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../../../scripts/lib/args.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAQH,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAA;AAErD,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO;IACxD,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iBAAiB;IACjB,IAAI,EAAE,CAAC,CAAA;IACP,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,oCAAoC;IACpC,OAAO,CAAC,EAAE,CAAC,SAAS,QAAQ,GAAG,MAAM,GAAG,CAAC,SAAS,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IAC7E,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAA;IACnB,iCAAiC;IACjC,IAAI,CAAC,EAAE,aAAa,EAAE,CAAA;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,sBAAsB;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,kCAAkC;IAClC,IAAI,CAAC,EAAE,aAAa,EAAE,CAAA;IACtB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAC9B,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAA;IAC5D,iCAAiC;IACjC,IAAI,EAAE,OAAO,CAAA;IACb,6BAA6B;IAC7B,IAAI,EAAE,MAAM,EAAE,CAAA;CACf;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,YAAY,CAAA;IACpB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,UAAU,CAAA;IACrC,YAAY,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;CAC3C;AAMD;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAM1D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,GAAG,UAAU,CAuI1E;AAgDD;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CA0D3E;AA0BD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,YAAY,GACnB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAevC;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,EACzD,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,CAAC,GACd,CAAC,CAIH"}