@revealui/mcp 0.1.0 → 0.1.1

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 +112 -0
  3. package/README.md +3 -0
  4. package/dist/adapters/db.d.ts.map +1 -0
  5. package/dist/adapters/db.js.map +1 -0
  6. package/dist/config/index.d.ts.map +1 -0
  7. package/dist/config/index.js.map +1 -0
  8. package/dist/contracts.d.ts.map +1 -0
  9. package/dist/contracts.js.map +1 -0
  10. package/dist/hypervisor.d.ts.map +1 -0
  11. package/dist/hypervisor.js.map +1 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/{packages/mcp/src/servers → servers}/adapter.d.ts +11 -1
  15. package/dist/servers/adapter.d.ts.map +1 -0
  16. package/dist/{packages/mcp/src/servers → servers}/adapter.js +20 -4
  17. package/dist/servers/adapter.js.map +1 -0
  18. package/dist/servers/revealui-content.d.ts +21 -0
  19. package/dist/servers/revealui-content.d.ts.map +1 -0
  20. package/dist/servers/revealui-content.js +199 -0
  21. package/dist/servers/revealui-content.js.map +1 -0
  22. package/dist/servers/revealui-email.d.ts +18 -0
  23. package/dist/servers/revealui-email.d.ts.map +1 -0
  24. package/dist/servers/revealui-email.js +185 -0
  25. package/dist/servers/revealui-email.js.map +1 -0
  26. package/dist/servers/revealui-stripe.d.ts +19 -0
  27. package/dist/servers/revealui-stripe.d.ts.map +1 -0
  28. package/dist/servers/revealui-stripe.js +211 -0
  29. package/dist/servers/revealui-stripe.js.map +1 -0
  30. package/package.json +47 -8
  31. package/.env.example +0 -9
  32. package/MCP_MAINTENANCE.md +0 -265
  33. package/__tests__/crdt.integration.test.ts +0 -156
  34. package/configs/README.md +0 -77
  35. package/configs/claude-template.json +0 -54
  36. package/dist/packages/core/src/database/ssl-config.d.ts +0 -9
  37. package/dist/packages/core/src/database/ssl-config.d.ts.map +0 -1
  38. package/dist/packages/core/src/database/ssl-config.js +0 -8
  39. package/dist/packages/core/src/database/ssl-config.js.map +0 -1
  40. package/dist/packages/core/src/features.d.ts +0 -86
  41. package/dist/packages/core/src/features.d.ts.map +0 -1
  42. package/dist/packages/core/src/features.js +0 -93
  43. package/dist/packages/core/src/features.js.map +0 -1
  44. package/dist/packages/core/src/license.d.ts +0 -75
  45. package/dist/packages/core/src/license.d.ts.map +0 -1
  46. package/dist/packages/core/src/license.js +0 -174
  47. package/dist/packages/core/src/license.js.map +0 -1
  48. package/dist/packages/core/src/monitoring/alerts.d.ts +0 -118
  49. package/dist/packages/core/src/monitoring/alerts.d.ts.map +0 -1
  50. package/dist/packages/core/src/monitoring/alerts.js +0 -325
  51. package/dist/packages/core/src/monitoring/alerts.js.map +0 -1
  52. package/dist/packages/core/src/monitoring/cleanup-manager.d.ts +0 -71
  53. package/dist/packages/core/src/monitoring/cleanup-manager.d.ts.map +0 -1
  54. package/dist/packages/core/src/monitoring/cleanup-manager.js +0 -227
  55. package/dist/packages/core/src/monitoring/cleanup-manager.js.map +0 -1
  56. package/dist/packages/core/src/monitoring/health-monitor.d.ts +0 -22
  57. package/dist/packages/core/src/monitoring/health-monitor.d.ts.map +0 -1
  58. package/dist/packages/core/src/monitoring/health-monitor.js +0 -143
  59. package/dist/packages/core/src/monitoring/health-monitor.js.map +0 -1
  60. package/dist/packages/core/src/monitoring/index.d.ts +0 -14
  61. package/dist/packages/core/src/monitoring/index.d.ts.map +0 -1
  62. package/dist/packages/core/src/monitoring/index.js +0 -18
  63. package/dist/packages/core/src/monitoring/index.js.map +0 -1
  64. package/dist/packages/core/src/monitoring/process-registry.d.ts +0 -97
  65. package/dist/packages/core/src/monitoring/process-registry.d.ts.map +0 -1
  66. package/dist/packages/core/src/monitoring/process-registry.js +0 -223
  67. package/dist/packages/core/src/monitoring/process-registry.js.map +0 -1
  68. package/dist/packages/core/src/monitoring/types.d.ts +0 -231
  69. package/dist/packages/core/src/monitoring/types.d.ts.map +0 -1
  70. package/dist/packages/core/src/monitoring/types.js +0 -43
  71. package/dist/packages/core/src/monitoring/types.js.map +0 -1
  72. package/dist/packages/core/src/monitoring/zombie-detector.d.ts +0 -81
  73. package/dist/packages/core/src/monitoring/zombie-detector.d.ts.map +0 -1
  74. package/dist/packages/core/src/monitoring/zombie-detector.js +0 -232
  75. package/dist/packages/core/src/monitoring/zombie-detector.js.map +0 -1
  76. package/dist/packages/core/src/observability/logger.d.ts +0 -47
  77. package/dist/packages/core/src/observability/logger.d.ts.map +0 -1
  78. package/dist/packages/core/src/observability/logger.js +0 -141
  79. package/dist/packages/core/src/observability/logger.js.map +0 -1
  80. package/dist/packages/core/src/utils/logger-server.d.ts +0 -32
  81. package/dist/packages/core/src/utils/logger-server.d.ts.map +0 -1
  82. package/dist/packages/core/src/utils/logger-server.js +0 -69
  83. package/dist/packages/core/src/utils/logger-server.js.map +0 -1
  84. package/dist/packages/core/src/utils/request-context.d.ts +0 -143
  85. package/dist/packages/core/src/utils/request-context.d.ts.map +0 -1
  86. package/dist/packages/core/src/utils/request-context.js +0 -169
  87. package/dist/packages/core/src/utils/request-context.js.map +0 -1
  88. package/dist/packages/dev/src/code-validator/index.d.ts +0 -20
  89. package/dist/packages/dev/src/code-validator/index.d.ts.map +0 -1
  90. package/dist/packages/dev/src/code-validator/index.js +0 -20
  91. package/dist/packages/dev/src/code-validator/index.js.map +0 -1
  92. package/dist/packages/dev/src/code-validator/types.d.ts +0 -67
  93. package/dist/packages/dev/src/code-validator/types.d.ts.map +0 -1
  94. package/dist/packages/dev/src/code-validator/types.js +0 -7
  95. package/dist/packages/dev/src/code-validator/types.js.map +0 -1
  96. package/dist/packages/dev/src/code-validator/validator.d.ts +0 -48
  97. package/dist/packages/dev/src/code-validator/validator.d.ts.map +0 -1
  98. package/dist/packages/dev/src/code-validator/validator.js +0 -176
  99. package/dist/packages/dev/src/code-validator/validator.js.map +0 -1
  100. package/dist/packages/mcp/src/adapters/db.d.ts.map +0 -1
  101. package/dist/packages/mcp/src/adapters/db.js.map +0 -1
  102. package/dist/packages/mcp/src/config/index.d.ts.map +0 -1
  103. package/dist/packages/mcp/src/config/index.js.map +0 -1
  104. package/dist/packages/mcp/src/contracts.d.ts.map +0 -1
  105. package/dist/packages/mcp/src/contracts.js.map +0 -1
  106. package/dist/packages/mcp/src/hypervisor.d.ts.map +0 -1
  107. package/dist/packages/mcp/src/hypervisor.js.map +0 -1
  108. package/dist/packages/mcp/src/index.d.ts.map +0 -1
  109. package/dist/packages/mcp/src/index.js.map +0 -1
  110. package/dist/packages/mcp/src/servers/adapter.d.ts.map +0 -1
  111. package/dist/packages/mcp/src/servers/adapter.js.map +0 -1
  112. package/dist/packages/mcp/src/servers/code-validator.d.ts +0 -24
  113. package/dist/packages/mcp/src/servers/code-validator.d.ts.map +0 -1
  114. package/dist/packages/mcp/src/servers/code-validator.js +0 -156
  115. package/dist/packages/mcp/src/servers/code-validator.js.map +0 -1
  116. package/dist/packages/mcp/src/servers/neon.d.ts +0 -11
  117. package/dist/packages/mcp/src/servers/neon.d.ts.map +0 -1
  118. package/dist/packages/mcp/src/servers/neon.js +0 -90
  119. package/dist/packages/mcp/src/servers/neon.js.map +0 -1
  120. package/dist/packages/mcp/src/servers/next-devtools.d.ts +0 -11
  121. package/dist/packages/mcp/src/servers/next-devtools.d.ts.map +0 -1
  122. package/dist/packages/mcp/src/servers/next-devtools.js +0 -215
  123. package/dist/packages/mcp/src/servers/next-devtools.js.map +0 -1
  124. package/dist/packages/mcp/src/servers/playwright.d.ts +0 -11
  125. package/dist/packages/mcp/src/servers/playwright.d.ts.map +0 -1
  126. package/dist/packages/mcp/src/servers/playwright.js +0 -68
  127. package/dist/packages/mcp/src/servers/playwright.js.map +0 -1
  128. package/dist/packages/mcp/src/servers/stripe.d.ts +0 -11
  129. package/dist/packages/mcp/src/servers/stripe.d.ts.map +0 -1
  130. package/dist/packages/mcp/src/servers/stripe.js +0 -86
  131. package/dist/packages/mcp/src/servers/stripe.js.map +0 -1
  132. package/dist/packages/mcp/src/servers/supabase.d.ts +0 -11
  133. package/dist/packages/mcp/src/servers/supabase.d.ts.map +0 -1
  134. package/dist/packages/mcp/src/servers/supabase.js +0 -144
  135. package/dist/packages/mcp/src/servers/supabase.js.map +0 -1
  136. package/dist/packages/mcp/src/servers/vercel.d.ts +0 -11
  137. package/dist/packages/mcp/src/servers/vercel.d.ts.map +0 -1
  138. package/dist/packages/mcp/src/servers/vercel.js +0 -87
  139. package/dist/packages/mcp/src/servers/vercel.js.map +0 -1
  140. package/dist/packages/mcp/src/servers/vultr-test.d.ts +0 -3
  141. package/dist/packages/mcp/src/servers/vultr-test.d.ts.map +0 -1
  142. package/dist/packages/mcp/src/servers/vultr-test.js +0 -82
  143. package/dist/packages/mcp/src/servers/vultr-test.js.map +0 -1
  144. package/dist/scripts/lib/analyzers/console-analyzer.d.ts +0 -188
  145. package/dist/scripts/lib/analyzers/console-analyzer.d.ts.map +0 -1
  146. package/dist/scripts/lib/analyzers/console-analyzer.js +0 -432
  147. package/dist/scripts/lib/analyzers/console-analyzer.js.map +0 -1
  148. package/dist/scripts/lib/analyzers/index.d.ts +0 -11
  149. package/dist/scripts/lib/analyzers/index.d.ts.map +0 -1
  150. package/dist/scripts/lib/analyzers/index.js +0 -11
  151. package/dist/scripts/lib/analyzers/index.js.map +0 -1
  152. package/dist/scripts/lib/args.d.ts +0 -104
  153. package/dist/scripts/lib/args.d.ts.map +0 -1
  154. package/dist/scripts/lib/args.js +0 -304
  155. package/dist/scripts/lib/args.js.map +0 -1
  156. package/dist/scripts/lib/cache.d.ts +0 -185
  157. package/dist/scripts/lib/cache.d.ts.map +0 -1
  158. package/dist/scripts/lib/cache.js +0 -390
  159. package/dist/scripts/lib/cache.js.map +0 -1
  160. package/dist/scripts/lib/cli/dispatch.d.ts +0 -116
  161. package/dist/scripts/lib/cli/dispatch.d.ts.map +0 -1
  162. package/dist/scripts/lib/cli/dispatch.js +0 -206
  163. package/dist/scripts/lib/cli/dispatch.js.map +0 -1
  164. package/dist/scripts/lib/cli/index.d.ts +0 -10
  165. package/dist/scripts/lib/cli/index.d.ts.map +0 -1
  166. package/dist/scripts/lib/cli/index.js +0 -10
  167. package/dist/scripts/lib/cli/index.js.map +0 -1
  168. package/dist/scripts/lib/database/ssl-config.d.ts +0 -26
  169. package/dist/scripts/lib/database/ssl-config.d.ts.map +0 -1
  170. package/dist/scripts/lib/database/ssl-config.js +0 -47
  171. package/dist/scripts/lib/database/ssl-config.js.map +0 -1
  172. package/dist/scripts/lib/errors.d.ts +0 -218
  173. package/dist/scripts/lib/errors.d.ts.map +0 -1
  174. package/dist/scripts/lib/errors.js +0 -543
  175. package/dist/scripts/lib/errors.js.map +0 -1
  176. package/dist/scripts/lib/exec.d.ts +0 -107
  177. package/dist/scripts/lib/exec.d.ts.map +0 -1
  178. package/dist/scripts/lib/exec.js +0 -232
  179. package/dist/scripts/lib/exec.js.map +0 -1
  180. package/dist/scripts/lib/index.d.ts +0 -50
  181. package/dist/scripts/lib/index.d.ts.map +0 -1
  182. package/dist/scripts/lib/index.js +0 -65
  183. package/dist/scripts/lib/index.js.map +0 -1
  184. package/dist/scripts/lib/logger.d.ts +0 -50
  185. package/dist/scripts/lib/logger.d.ts.map +0 -1
  186. package/dist/scripts/lib/logger.js +0 -159
  187. package/dist/scripts/lib/logger.js.map +0 -1
  188. package/dist/scripts/lib/output.d.ts +0 -149
  189. package/dist/scripts/lib/output.d.ts.map +0 -1
  190. package/dist/scripts/lib/output.js +0 -263
  191. package/dist/scripts/lib/output.js.map +0 -1
  192. package/dist/scripts/lib/parallel.d.ts +0 -164
  193. package/dist/scripts/lib/parallel.d.ts.map +0 -1
  194. package/dist/scripts/lib/parallel.js +0 -355
  195. package/dist/scripts/lib/parallel.js.map +0 -1
  196. package/dist/scripts/lib/paths.d.ts +0 -92
  197. package/dist/scripts/lib/paths.d.ts.map +0 -1
  198. package/dist/scripts/lib/paths.js +0 -171
  199. package/dist/scripts/lib/paths.js.map +0 -1
  200. package/dist/scripts/lib/state/adapters/memory.d.ts +0 -42
  201. package/dist/scripts/lib/state/adapters/memory.d.ts.map +0 -1
  202. package/dist/scripts/lib/state/adapters/memory.js +0 -110
  203. package/dist/scripts/lib/state/adapters/memory.js.map +0 -1
  204. package/dist/scripts/lib/state/adapters/pglite.d.ts +0 -46
  205. package/dist/scripts/lib/state/adapters/pglite.d.ts.map +0 -1
  206. package/dist/scripts/lib/state/adapters/pglite.js +0 -256
  207. package/dist/scripts/lib/state/adapters/pglite.js.map +0 -1
  208. package/dist/scripts/lib/state/index.d.ts +0 -16
  209. package/dist/scripts/lib/state/index.d.ts.map +0 -1
  210. package/dist/scripts/lib/state/index.js +0 -16
  211. package/dist/scripts/lib/state/index.js.map +0 -1
  212. package/dist/scripts/lib/state/types.d.ts +0 -111
  213. package/dist/scripts/lib/state/types.d.ts.map +0 -1
  214. package/dist/scripts/lib/state/types.js +0 -8
  215. package/dist/scripts/lib/state/types.js.map +0 -1
  216. package/dist/scripts/lib/state/workflow-state.d.ts +0 -110
  217. package/dist/scripts/lib/state/workflow-state.d.ts.map +0 -1
  218. package/dist/scripts/lib/state/workflow-state.js +0 -331
  219. package/dist/scripts/lib/state/workflow-state.js.map +0 -1
  220. package/dist/scripts/lib/telemetry.d.ts +0 -194
  221. package/dist/scripts/lib/telemetry.d.ts.map +0 -1
  222. package/dist/scripts/lib/telemetry.js +0 -394
  223. package/dist/scripts/lib/telemetry.js.map +0 -1
  224. package/dist/scripts/lib/utils.d.ts +0 -270
  225. package/dist/scripts/lib/utils.d.ts.map +0 -1
  226. package/dist/scripts/lib/utils.js +0 -473
  227. package/dist/scripts/lib/utils.js.map +0 -1
  228. package/dist/scripts/lib/validation/database.d.ts +0 -83
  229. package/dist/scripts/lib/validation/database.d.ts.map +0 -1
  230. package/dist/scripts/lib/validation/database.js +0 -199
  231. package/dist/scripts/lib/validation/database.js.map +0 -1
  232. package/dist/scripts/lib/validation/env.d.ts +0 -80
  233. package/dist/scripts/lib/validation/env.d.ts.map +0 -1
  234. package/dist/scripts/lib/validation/env.js +0 -246
  235. package/dist/scripts/lib/validation/env.js.map +0 -1
  236. package/dist/scripts/lib/validation/index.d.ts +0 -16
  237. package/dist/scripts/lib/validation/index.d.ts.map +0 -1
  238. package/dist/scripts/lib/validation/index.js +0 -16
  239. package/dist/scripts/lib/validation/index.js.map +0 -1
  240. package/dist/scripts/lib/validation/post-execution.d.ts +0 -74
  241. package/dist/scripts/lib/validation/post-execution.d.ts.map +0 -1
  242. package/dist/scripts/lib/validation/post-execution.js +0 -110
  243. package/dist/scripts/lib/validation/post-execution.js.map +0 -1
  244. package/dist/scripts/lib/validation/pre-execution.d.ts +0 -165
  245. package/dist/scripts/lib/validation/pre-execution.d.ts.map +0 -1
  246. package/dist/scripts/lib/validation/pre-execution.js +0 -466
  247. package/dist/scripts/lib/validation/pre-execution.js.map +0 -1
  248. package/dist/scripts/lib/validators/documentation-validator.d.ts +0 -242
  249. package/dist/scripts/lib/validators/documentation-validator.d.ts.map +0 -1
  250. package/dist/scripts/lib/validators/documentation-validator.js +0 -584
  251. package/dist/scripts/lib/validators/documentation-validator.js.map +0 -1
  252. package/dist/scripts/lib/validators/index.d.ts +0 -11
  253. package/dist/scripts/lib/validators/index.d.ts.map +0 -1
  254. package/dist/scripts/lib/validators/index.js +0 -11
  255. package/dist/scripts/lib/validators/index.js.map +0 -1
  256. package/docker-compose.yml +0 -46
  257. package/docs/INDEX.md +0 -88
  258. package/docs/README.md +0 -774
  259. package/docs/SETUP.md +0 -264
  260. package/docs/servers/code-validator.md +0 -586
  261. package/eslint.config.js +0 -7
  262. package/migrations/0001_add_crdt_columns.sql +0 -8
  263. package/migrations/0001_rollback.sql +0 -6
  264. package/migrations/005_performance_indexes.sql +0 -190
  265. package/migrations/backfill_crdt_meta.js +0 -45
  266. package/src/__tests__/hypervisor.test.ts +0 -212
  267. package/src/adapters/db.ts +0 -180
  268. package/src/config/config.json +0 -49
  269. package/src/config/index.ts +0 -30
  270. package/src/contracts.ts +0 -221
  271. package/src/hypervisor.ts +0 -464
  272. package/src/index.ts +0 -87
  273. package/src/servers/adapter.ts +0 -643
  274. package/src/servers/code-validator.ts +0 -188
  275. package/src/servers/neon.ts +0 -103
  276. package/src/servers/next-devtools.ts +0 -230
  277. package/src/servers/playwright.ts +0 -77
  278. package/src/servers/stripe.ts +0 -99
  279. package/src/servers/supabase.ts +0 -161
  280. package/src/servers/vercel.ts +0 -100
  281. package/src/servers/vultr-test.ts +0 -97
  282. package/tsconfig.json +0 -12
  283. package/vitest.config.ts +0 -22
  284. /package/dist/{packages/mcp/src/adapters → adapters}/db.d.ts +0 -0
  285. /package/dist/{packages/mcp/src/adapters → adapters}/db.js +0 -0
  286. /package/dist/{packages/mcp/src/config → config}/index.d.ts +0 -0
  287. /package/dist/{packages/mcp/src/config → config}/index.js +0 -0
  288. /package/dist/{packages/mcp/src/contracts.d.ts → contracts.d.ts} +0 -0
  289. /package/dist/{packages/mcp/src/contracts.js → contracts.js} +0 -0
  290. /package/dist/{packages/mcp/src/hypervisor.d.ts → hypervisor.d.ts} +0 -0
  291. /package/dist/{packages/mcp/src/hypervisor.js → hypervisor.js} +0 -0
  292. /package/dist/{packages/mcp/src/index.d.ts → index.d.ts} +0 -0
  293. /package/dist/{packages/mcp/src/index.js → index.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"}