@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.
- package/LICENSE +22 -0
- package/LICENSE.commercial +111 -0
- package/README.md +3 -0
- package/dist/{packages/mcp/src/adapters → adapters}/db.d.ts +1 -1
- package/dist/adapters/db.d.ts.map +1 -0
- package/dist/adapters/db.js.map +1 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js.map +1 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js.map +1 -0
- package/dist/{packages/mcp/src/hypervisor.d.ts → hypervisor.d.ts} +56 -0
- package/dist/hypervisor.d.ts.map +1 -0
- package/dist/{packages/mcp/src/hypervisor.js → hypervisor.js} +209 -1
- package/dist/hypervisor.js.map +1 -0
- package/dist/{packages/mcp/src/index.d.ts → index.d.ts} +9 -5
- package/dist/index.d.ts.map +1 -0
- package/dist/{packages/mcp/src/index.js → index.js} +8 -4
- package/dist/index.js.map +1 -0
- package/dist/{packages/mcp/src/servers → servers}/adapter.d.ts +11 -1
- package/dist/servers/adapter.d.ts.map +1 -0
- package/dist/{packages/mcp/src/servers → servers}/adapter.js +20 -4
- package/dist/servers/adapter.js.map +1 -0
- package/dist/servers/revealui-content.d.ts +21 -0
- package/dist/servers/revealui-content.d.ts.map +1 -0
- package/dist/servers/revealui-content.js +211 -0
- package/dist/servers/revealui-content.js.map +1 -0
- package/dist/servers/revealui-email.d.ts +18 -0
- package/dist/servers/revealui-email.d.ts.map +1 -0
- package/dist/servers/revealui-email.js +190 -0
- package/dist/servers/revealui-email.js.map +1 -0
- package/dist/servers/revealui-stripe.d.ts +19 -0
- package/dist/servers/revealui-stripe.d.ts.map +1 -0
- package/dist/servers/revealui-stripe.js +228 -0
- package/dist/servers/revealui-stripe.js.map +1 -0
- package/package.json +50 -11
- package/.env.example +0 -9
- package/MCP_MAINTENANCE.md +0 -265
- package/__tests__/crdt.integration.test.ts +0 -156
- package/configs/README.md +0 -77
- package/configs/claude-template.json +0 -54
- package/dist/packages/core/src/database/ssl-config.d.ts +0 -9
- package/dist/packages/core/src/database/ssl-config.d.ts.map +0 -1
- package/dist/packages/core/src/database/ssl-config.js +0 -8
- package/dist/packages/core/src/database/ssl-config.js.map +0 -1
- package/dist/packages/core/src/features.d.ts +0 -86
- package/dist/packages/core/src/features.d.ts.map +0 -1
- package/dist/packages/core/src/features.js +0 -93
- package/dist/packages/core/src/features.js.map +0 -1
- package/dist/packages/core/src/license.d.ts +0 -75
- package/dist/packages/core/src/license.d.ts.map +0 -1
- package/dist/packages/core/src/license.js +0 -174
- package/dist/packages/core/src/license.js.map +0 -1
- package/dist/packages/core/src/monitoring/alerts.d.ts +0 -118
- package/dist/packages/core/src/monitoring/alerts.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/alerts.js +0 -325
- package/dist/packages/core/src/monitoring/alerts.js.map +0 -1
- package/dist/packages/core/src/monitoring/cleanup-manager.d.ts +0 -71
- package/dist/packages/core/src/monitoring/cleanup-manager.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/cleanup-manager.js +0 -227
- package/dist/packages/core/src/monitoring/cleanup-manager.js.map +0 -1
- package/dist/packages/core/src/monitoring/health-monitor.d.ts +0 -22
- package/dist/packages/core/src/monitoring/health-monitor.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/health-monitor.js +0 -143
- package/dist/packages/core/src/monitoring/health-monitor.js.map +0 -1
- package/dist/packages/core/src/monitoring/index.d.ts +0 -14
- package/dist/packages/core/src/monitoring/index.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/index.js +0 -18
- package/dist/packages/core/src/monitoring/index.js.map +0 -1
- package/dist/packages/core/src/monitoring/process-registry.d.ts +0 -97
- package/dist/packages/core/src/monitoring/process-registry.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/process-registry.js +0 -223
- package/dist/packages/core/src/monitoring/process-registry.js.map +0 -1
- package/dist/packages/core/src/monitoring/types.d.ts +0 -231
- package/dist/packages/core/src/monitoring/types.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/types.js +0 -43
- package/dist/packages/core/src/monitoring/types.js.map +0 -1
- package/dist/packages/core/src/monitoring/zombie-detector.d.ts +0 -81
- package/dist/packages/core/src/monitoring/zombie-detector.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/zombie-detector.js +0 -232
- package/dist/packages/core/src/monitoring/zombie-detector.js.map +0 -1
- package/dist/packages/core/src/observability/logger.d.ts +0 -47
- package/dist/packages/core/src/observability/logger.d.ts.map +0 -1
- package/dist/packages/core/src/observability/logger.js +0 -141
- package/dist/packages/core/src/observability/logger.js.map +0 -1
- package/dist/packages/core/src/utils/logger-server.d.ts +0 -32
- package/dist/packages/core/src/utils/logger-server.d.ts.map +0 -1
- package/dist/packages/core/src/utils/logger-server.js +0 -69
- package/dist/packages/core/src/utils/logger-server.js.map +0 -1
- package/dist/packages/core/src/utils/request-context.d.ts +0 -143
- package/dist/packages/core/src/utils/request-context.d.ts.map +0 -1
- package/dist/packages/core/src/utils/request-context.js +0 -169
- package/dist/packages/core/src/utils/request-context.js.map +0 -1
- package/dist/packages/dev/src/code-validator/index.d.ts +0 -20
- package/dist/packages/dev/src/code-validator/index.d.ts.map +0 -1
- package/dist/packages/dev/src/code-validator/index.js +0 -20
- package/dist/packages/dev/src/code-validator/index.js.map +0 -1
- package/dist/packages/dev/src/code-validator/types.d.ts +0 -67
- package/dist/packages/dev/src/code-validator/types.d.ts.map +0 -1
- package/dist/packages/dev/src/code-validator/types.js +0 -7
- package/dist/packages/dev/src/code-validator/types.js.map +0 -1
- package/dist/packages/dev/src/code-validator/validator.d.ts +0 -48
- package/dist/packages/dev/src/code-validator/validator.d.ts.map +0 -1
- package/dist/packages/dev/src/code-validator/validator.js +0 -176
- package/dist/packages/dev/src/code-validator/validator.js.map +0 -1
- package/dist/packages/mcp/src/adapters/db.d.ts.map +0 -1
- package/dist/packages/mcp/src/adapters/db.js.map +0 -1
- package/dist/packages/mcp/src/config/index.d.ts.map +0 -1
- package/dist/packages/mcp/src/config/index.js.map +0 -1
- package/dist/packages/mcp/src/contracts.d.ts.map +0 -1
- package/dist/packages/mcp/src/contracts.js.map +0 -1
- package/dist/packages/mcp/src/hypervisor.d.ts.map +0 -1
- package/dist/packages/mcp/src/hypervisor.js.map +0 -1
- package/dist/packages/mcp/src/index.d.ts.map +0 -1
- package/dist/packages/mcp/src/index.js.map +0 -1
- package/dist/packages/mcp/src/servers/adapter.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/adapter.js.map +0 -1
- package/dist/packages/mcp/src/servers/code-validator.d.ts +0 -24
- package/dist/packages/mcp/src/servers/code-validator.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/code-validator.js +0 -156
- package/dist/packages/mcp/src/servers/code-validator.js.map +0 -1
- package/dist/packages/mcp/src/servers/neon.d.ts +0 -11
- package/dist/packages/mcp/src/servers/neon.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/neon.js +0 -90
- package/dist/packages/mcp/src/servers/neon.js.map +0 -1
- package/dist/packages/mcp/src/servers/next-devtools.d.ts +0 -11
- package/dist/packages/mcp/src/servers/next-devtools.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/next-devtools.js +0 -215
- package/dist/packages/mcp/src/servers/next-devtools.js.map +0 -1
- package/dist/packages/mcp/src/servers/playwright.d.ts +0 -11
- package/dist/packages/mcp/src/servers/playwright.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/playwright.js +0 -68
- package/dist/packages/mcp/src/servers/playwright.js.map +0 -1
- package/dist/packages/mcp/src/servers/stripe.d.ts +0 -11
- package/dist/packages/mcp/src/servers/stripe.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/stripe.js +0 -86
- package/dist/packages/mcp/src/servers/stripe.js.map +0 -1
- package/dist/packages/mcp/src/servers/supabase.d.ts +0 -11
- package/dist/packages/mcp/src/servers/supabase.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/supabase.js +0 -144
- package/dist/packages/mcp/src/servers/supabase.js.map +0 -1
- package/dist/packages/mcp/src/servers/vercel.d.ts +0 -11
- package/dist/packages/mcp/src/servers/vercel.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/vercel.js +0 -87
- package/dist/packages/mcp/src/servers/vercel.js.map +0 -1
- package/dist/packages/mcp/src/servers/vultr-test.d.ts +0 -3
- package/dist/packages/mcp/src/servers/vultr-test.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/vultr-test.js +0 -82
- package/dist/packages/mcp/src/servers/vultr-test.js.map +0 -1
- package/dist/scripts/lib/analyzers/console-analyzer.d.ts +0 -188
- package/dist/scripts/lib/analyzers/console-analyzer.d.ts.map +0 -1
- package/dist/scripts/lib/analyzers/console-analyzer.js +0 -432
- package/dist/scripts/lib/analyzers/console-analyzer.js.map +0 -1
- package/dist/scripts/lib/analyzers/index.d.ts +0 -11
- package/dist/scripts/lib/analyzers/index.d.ts.map +0 -1
- package/dist/scripts/lib/analyzers/index.js +0 -11
- package/dist/scripts/lib/analyzers/index.js.map +0 -1
- package/dist/scripts/lib/args.d.ts +0 -104
- package/dist/scripts/lib/args.d.ts.map +0 -1
- package/dist/scripts/lib/args.js +0 -304
- package/dist/scripts/lib/args.js.map +0 -1
- package/dist/scripts/lib/cache.d.ts +0 -185
- package/dist/scripts/lib/cache.d.ts.map +0 -1
- package/dist/scripts/lib/cache.js +0 -390
- package/dist/scripts/lib/cache.js.map +0 -1
- package/dist/scripts/lib/cli/dispatch.d.ts +0 -116
- package/dist/scripts/lib/cli/dispatch.d.ts.map +0 -1
- package/dist/scripts/lib/cli/dispatch.js +0 -206
- package/dist/scripts/lib/cli/dispatch.js.map +0 -1
- package/dist/scripts/lib/cli/index.d.ts +0 -10
- package/dist/scripts/lib/cli/index.d.ts.map +0 -1
- package/dist/scripts/lib/cli/index.js +0 -10
- package/dist/scripts/lib/cli/index.js.map +0 -1
- package/dist/scripts/lib/database/ssl-config.d.ts +0 -26
- package/dist/scripts/lib/database/ssl-config.d.ts.map +0 -1
- package/dist/scripts/lib/database/ssl-config.js +0 -47
- package/dist/scripts/lib/database/ssl-config.js.map +0 -1
- package/dist/scripts/lib/errors.d.ts +0 -218
- package/dist/scripts/lib/errors.d.ts.map +0 -1
- package/dist/scripts/lib/errors.js +0 -543
- package/dist/scripts/lib/errors.js.map +0 -1
- package/dist/scripts/lib/exec.d.ts +0 -107
- package/dist/scripts/lib/exec.d.ts.map +0 -1
- package/dist/scripts/lib/exec.js +0 -232
- package/dist/scripts/lib/exec.js.map +0 -1
- package/dist/scripts/lib/index.d.ts +0 -50
- package/dist/scripts/lib/index.d.ts.map +0 -1
- package/dist/scripts/lib/index.js +0 -65
- package/dist/scripts/lib/index.js.map +0 -1
- package/dist/scripts/lib/logger.d.ts +0 -50
- package/dist/scripts/lib/logger.d.ts.map +0 -1
- package/dist/scripts/lib/logger.js +0 -159
- package/dist/scripts/lib/logger.js.map +0 -1
- package/dist/scripts/lib/output.d.ts +0 -149
- package/dist/scripts/lib/output.d.ts.map +0 -1
- package/dist/scripts/lib/output.js +0 -263
- package/dist/scripts/lib/output.js.map +0 -1
- package/dist/scripts/lib/parallel.d.ts +0 -164
- package/dist/scripts/lib/parallel.d.ts.map +0 -1
- package/dist/scripts/lib/parallel.js +0 -355
- package/dist/scripts/lib/parallel.js.map +0 -1
- package/dist/scripts/lib/paths.d.ts +0 -92
- package/dist/scripts/lib/paths.d.ts.map +0 -1
- package/dist/scripts/lib/paths.js +0 -171
- package/dist/scripts/lib/paths.js.map +0 -1
- package/dist/scripts/lib/state/adapters/memory.d.ts +0 -42
- package/dist/scripts/lib/state/adapters/memory.d.ts.map +0 -1
- package/dist/scripts/lib/state/adapters/memory.js +0 -110
- package/dist/scripts/lib/state/adapters/memory.js.map +0 -1
- package/dist/scripts/lib/state/adapters/pglite.d.ts +0 -46
- package/dist/scripts/lib/state/adapters/pglite.d.ts.map +0 -1
- package/dist/scripts/lib/state/adapters/pglite.js +0 -256
- package/dist/scripts/lib/state/adapters/pglite.js.map +0 -1
- package/dist/scripts/lib/state/index.d.ts +0 -16
- package/dist/scripts/lib/state/index.d.ts.map +0 -1
- package/dist/scripts/lib/state/index.js +0 -16
- package/dist/scripts/lib/state/index.js.map +0 -1
- package/dist/scripts/lib/state/types.d.ts +0 -111
- package/dist/scripts/lib/state/types.d.ts.map +0 -1
- package/dist/scripts/lib/state/types.js +0 -8
- package/dist/scripts/lib/state/types.js.map +0 -1
- package/dist/scripts/lib/state/workflow-state.d.ts +0 -110
- package/dist/scripts/lib/state/workflow-state.d.ts.map +0 -1
- package/dist/scripts/lib/state/workflow-state.js +0 -331
- package/dist/scripts/lib/state/workflow-state.js.map +0 -1
- package/dist/scripts/lib/telemetry.d.ts +0 -194
- package/dist/scripts/lib/telemetry.d.ts.map +0 -1
- package/dist/scripts/lib/telemetry.js +0 -394
- package/dist/scripts/lib/telemetry.js.map +0 -1
- package/dist/scripts/lib/utils.d.ts +0 -270
- package/dist/scripts/lib/utils.d.ts.map +0 -1
- package/dist/scripts/lib/utils.js +0 -473
- package/dist/scripts/lib/utils.js.map +0 -1
- package/dist/scripts/lib/validation/database.d.ts +0 -83
- package/dist/scripts/lib/validation/database.d.ts.map +0 -1
- package/dist/scripts/lib/validation/database.js +0 -199
- package/dist/scripts/lib/validation/database.js.map +0 -1
- package/dist/scripts/lib/validation/env.d.ts +0 -80
- package/dist/scripts/lib/validation/env.d.ts.map +0 -1
- package/dist/scripts/lib/validation/env.js +0 -246
- package/dist/scripts/lib/validation/env.js.map +0 -1
- package/dist/scripts/lib/validation/index.d.ts +0 -16
- package/dist/scripts/lib/validation/index.d.ts.map +0 -1
- package/dist/scripts/lib/validation/index.js +0 -16
- package/dist/scripts/lib/validation/index.js.map +0 -1
- package/dist/scripts/lib/validation/post-execution.d.ts +0 -74
- package/dist/scripts/lib/validation/post-execution.d.ts.map +0 -1
- package/dist/scripts/lib/validation/post-execution.js +0 -110
- package/dist/scripts/lib/validation/post-execution.js.map +0 -1
- package/dist/scripts/lib/validation/pre-execution.d.ts +0 -165
- package/dist/scripts/lib/validation/pre-execution.d.ts.map +0 -1
- package/dist/scripts/lib/validation/pre-execution.js +0 -466
- package/dist/scripts/lib/validation/pre-execution.js.map +0 -1
- package/dist/scripts/lib/validators/documentation-validator.d.ts +0 -242
- package/dist/scripts/lib/validators/documentation-validator.d.ts.map +0 -1
- package/dist/scripts/lib/validators/documentation-validator.js +0 -584
- package/dist/scripts/lib/validators/documentation-validator.js.map +0 -1
- package/dist/scripts/lib/validators/index.d.ts +0 -11
- package/dist/scripts/lib/validators/index.d.ts.map +0 -1
- package/dist/scripts/lib/validators/index.js +0 -11
- package/dist/scripts/lib/validators/index.js.map +0 -1
- package/docker-compose.yml +0 -46
- package/docs/INDEX.md +0 -88
- package/docs/README.md +0 -774
- package/docs/SETUP.md +0 -264
- package/docs/servers/code-validator.md +0 -586
- package/eslint.config.js +0 -7
- package/migrations/0001_add_crdt_columns.sql +0 -8
- package/migrations/0001_rollback.sql +0 -6
- package/migrations/005_performance_indexes.sql +0 -190
- package/migrations/backfill_crdt_meta.js +0 -45
- package/src/__tests__/hypervisor.test.ts +0 -212
- package/src/adapters/db.ts +0 -180
- package/src/config/config.json +0 -49
- package/src/config/index.ts +0 -30
- package/src/contracts.ts +0 -221
- package/src/hypervisor.ts +0 -464
- package/src/index.ts +0 -87
- package/src/servers/adapter.ts +0 -643
- package/src/servers/code-validator.ts +0 -188
- package/src/servers/neon.ts +0 -103
- package/src/servers/next-devtools.ts +0 -230
- package/src/servers/playwright.ts +0 -77
- package/src/servers/stripe.ts +0 -99
- package/src/servers/supabase.ts +0 -161
- package/src/servers/vercel.ts +0 -100
- package/src/servers/vultr-test.ts +0 -97
- package/tsconfig.json +0 -12
- package/vitest.config.ts +0 -22
- /package/dist/{packages/mcp/src/adapters → adapters}/db.js +0 -0
- /package/dist/{packages/mcp/src/config → config}/index.d.ts +0 -0
- /package/dist/{packages/mcp/src/config → config}/index.js +0 -0
- /package/dist/{packages/mcp/src/contracts.d.ts → contracts.d.ts} +0 -0
- /package/dist/{packages/mcp/src/contracts.js → contracts.js} +0 -0
|
@@ -1,394 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Telemetry and monitoring utilities.
|
|
3
|
-
*
|
|
4
|
-
* Provides comprehensive metrics collection and performance monitoring:
|
|
5
|
-
* - Script execution tracking
|
|
6
|
-
* - Error tracking and analytics
|
|
7
|
-
* - Cache performance metrics
|
|
8
|
-
* - Script usage statistics
|
|
9
|
-
* - Performance measurement
|
|
10
|
-
* - Persistent metric storage
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```typescript
|
|
14
|
-
* import { telemetry } from './telemetry.js'
|
|
15
|
-
*
|
|
16
|
-
* // Track script execution
|
|
17
|
-
* const timer = telemetry.startTimer('build')
|
|
18
|
-
* // ... build process ...
|
|
19
|
-
* timer.stop()
|
|
20
|
-
*
|
|
21
|
-
* // Track errors
|
|
22
|
-
* telemetry.trackError('build-failed', error)
|
|
23
|
-
*
|
|
24
|
-
* // Get metrics
|
|
25
|
-
* const metrics = await telemetry.getMetrics()
|
|
26
|
-
* console.log(`Cache hit rate: ${metrics.cacheHitRate}%`)
|
|
27
|
-
* ```
|
|
28
|
-
*
|
|
29
|
-
* @dependencies
|
|
30
|
-
* - node:fs/promises - File operations for metric persistence
|
|
31
|
-
* - node:path - Path resolution for .revealui directory
|
|
32
|
-
* - node:perf_hooks - Performance measurement
|
|
33
|
-
*/
|
|
34
|
-
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
35
|
-
import { join } from 'node:path';
|
|
36
|
-
import { createLogger } from './logger.js';
|
|
37
|
-
import { getProjectRoot } from './paths.js';
|
|
38
|
-
import { fileExists, formatBytes, formatDuration } from './utils.js';
|
|
39
|
-
const logger = createLogger({ prefix: 'Telemetry' });
|
|
40
|
-
// =============================================================================
|
|
41
|
-
// Telemetry Class
|
|
42
|
-
// =============================================================================
|
|
43
|
-
export class Telemetry {
|
|
44
|
-
events = [];
|
|
45
|
-
storageDir;
|
|
46
|
-
persistent;
|
|
47
|
-
autoFlushInterval;
|
|
48
|
-
maxEventsInMemory;
|
|
49
|
-
verbose;
|
|
50
|
-
timers = new Map();
|
|
51
|
-
flushTimer = null;
|
|
52
|
-
projectRoot = null;
|
|
53
|
-
constructor(options = {}) {
|
|
54
|
-
this.storageDir = options.storageDir ?? '.telemetry';
|
|
55
|
-
this.persistent = options.persistent ?? true;
|
|
56
|
-
this.autoFlushInterval = options.autoFlushInterval ?? 60_000; // 1 minute
|
|
57
|
-
this.maxEventsInMemory = options.maxEventsInMemory ?? 1000;
|
|
58
|
-
this.verbose = options.verbose ?? false;
|
|
59
|
-
// Start auto-flush if enabled
|
|
60
|
-
if (this.autoFlushInterval > 0 && this.persistent) {
|
|
61
|
-
this.startAutoFlush();
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Get project root directory.
|
|
66
|
-
*/
|
|
67
|
-
async getRoot() {
|
|
68
|
-
if (!this.projectRoot) {
|
|
69
|
-
this.projectRoot = await getProjectRoot(import.meta.url);
|
|
70
|
-
}
|
|
71
|
-
return this.projectRoot;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Get storage directory path.
|
|
75
|
-
*/
|
|
76
|
-
async getStorageDir() {
|
|
77
|
-
const root = await this.getRoot();
|
|
78
|
-
return join(root, this.storageDir);
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Get metrics file path for a given date.
|
|
82
|
-
*/
|
|
83
|
-
async getMetricsFilePath(date = new Date()) {
|
|
84
|
-
const dir = await this.getStorageDir();
|
|
85
|
-
const dateStr = date.toISOString().split('T')[0]; // YYYY-MM-DD
|
|
86
|
-
return join(dir, `metrics-${dateStr}.json`);
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Start auto-flush timer.
|
|
90
|
-
*/
|
|
91
|
-
startAutoFlush() {
|
|
92
|
-
if (this.flushTimer) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
this.flushTimer = setInterval(() => {
|
|
96
|
-
this.flush().catch((error) => {
|
|
97
|
-
logger.warn(`Auto-flush failed: ${error.message}`);
|
|
98
|
-
});
|
|
99
|
-
}, this.autoFlushInterval);
|
|
100
|
-
// Cleanup on process exit
|
|
101
|
-
process.on('beforeExit', () => {
|
|
102
|
-
if (this.flushTimer) {
|
|
103
|
-
clearInterval(this.flushTimer);
|
|
104
|
-
}
|
|
105
|
-
this.flush().catch(() => {
|
|
106
|
-
// Ignore flush errors on exit
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Record a metric event.
|
|
112
|
-
*/
|
|
113
|
-
record(event) {
|
|
114
|
-
this.events.push(event);
|
|
115
|
-
if (this.verbose) {
|
|
116
|
-
logger.info(`[${event.type}] ${event.name}: ${event.value}`);
|
|
117
|
-
}
|
|
118
|
-
// Auto-flush if we hit the memory limit
|
|
119
|
-
if (this.events.length >= this.maxEventsInMemory && this.persistent) {
|
|
120
|
-
this.flush().catch((error) => {
|
|
121
|
-
logger.warn(`Auto-flush failed: ${error.message}`);
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Increment a counter.
|
|
127
|
-
*/
|
|
128
|
-
counter(name, value = 1, metadata) {
|
|
129
|
-
this.record({
|
|
130
|
-
name,
|
|
131
|
-
type: 'counter',
|
|
132
|
-
value,
|
|
133
|
-
timestamp: Date.now(),
|
|
134
|
-
metadata,
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Start a timer.
|
|
139
|
-
*/
|
|
140
|
-
startTimer(name, metadata) {
|
|
141
|
-
const startTime = Date.now();
|
|
142
|
-
const timerId = `${name}-${startTime}`;
|
|
143
|
-
this.timers.set(timerId, startTime);
|
|
144
|
-
return {
|
|
145
|
-
stop: (additionalMetadata) => {
|
|
146
|
-
const endTime = Date.now();
|
|
147
|
-
const duration = endTime - startTime;
|
|
148
|
-
this.timers.delete(timerId);
|
|
149
|
-
this.record({
|
|
150
|
-
name,
|
|
151
|
-
type: 'timer',
|
|
152
|
-
value: duration,
|
|
153
|
-
timestamp: endTime,
|
|
154
|
-
metadata: { ...metadata, ...additionalMetadata },
|
|
155
|
-
});
|
|
156
|
-
return duration;
|
|
157
|
-
},
|
|
158
|
-
elapsed: () => {
|
|
159
|
-
return Date.now() - startTime;
|
|
160
|
-
},
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Record a gauge value.
|
|
165
|
-
*/
|
|
166
|
-
gauge(name, value, metadata) {
|
|
167
|
-
this.record({
|
|
168
|
-
name,
|
|
169
|
-
type: 'gauge',
|
|
170
|
-
value,
|
|
171
|
-
timestamp: Date.now(),
|
|
172
|
-
metadata,
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Track an error.
|
|
177
|
-
*/
|
|
178
|
-
trackError(name, error, metadata) {
|
|
179
|
-
const errorMessage = error instanceof Error ? error.message : error;
|
|
180
|
-
this.record({
|
|
181
|
-
name,
|
|
182
|
-
type: 'error',
|
|
183
|
-
value: 1,
|
|
184
|
-
timestamp: Date.now(),
|
|
185
|
-
metadata: {
|
|
186
|
-
...metadata,
|
|
187
|
-
message: errorMessage,
|
|
188
|
-
stack: error instanceof Error ? error.stack : undefined,
|
|
189
|
-
},
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Flush events to persistent storage.
|
|
194
|
-
*/
|
|
195
|
-
async flush() {
|
|
196
|
-
if (!this.persistent || this.events.length === 0) {
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
const dir = await this.getStorageDir();
|
|
200
|
-
await mkdir(dir, { recursive: true });
|
|
201
|
-
const filePath = await this.getMetricsFilePath();
|
|
202
|
-
const eventsToFlush = [...this.events];
|
|
203
|
-
this.events = [];
|
|
204
|
-
try {
|
|
205
|
-
// Load existing events for today
|
|
206
|
-
let existingEvents = [];
|
|
207
|
-
if (await fileExists(filePath)) {
|
|
208
|
-
const content = await readFile(filePath, 'utf-8');
|
|
209
|
-
existingEvents = JSON.parse(content);
|
|
210
|
-
}
|
|
211
|
-
// Append new events
|
|
212
|
-
const allEvents = [...existingEvents, ...eventsToFlush];
|
|
213
|
-
// Write back
|
|
214
|
-
await writeFile(filePath, JSON.stringify(allEvents, null, 2));
|
|
215
|
-
if (this.verbose) {
|
|
216
|
-
logger.info(`Flushed ${eventsToFlush.length} events to ${filePath}`);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
catch (error) {
|
|
220
|
-
logger.error(`Failed to flush events: ${error}`);
|
|
221
|
-
// Put events back in memory
|
|
222
|
-
this.events.unshift(...eventsToFlush);
|
|
223
|
-
throw error;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Load events from storage.
|
|
228
|
-
*/
|
|
229
|
-
async loadEvents(startDate, endDate = new Date()) {
|
|
230
|
-
const dir = await this.getStorageDir();
|
|
231
|
-
if (!(await fileExists(dir))) {
|
|
232
|
-
return [];
|
|
233
|
-
}
|
|
234
|
-
const allEvents = [];
|
|
235
|
-
const start = startDate || new Date(endDate.getTime() - 7 * 24 * 60 * 60 * 1000); // Default: last 7 days
|
|
236
|
-
// Iterate through each day
|
|
237
|
-
const currentDate = new Date(start);
|
|
238
|
-
while (currentDate <= endDate) {
|
|
239
|
-
const filePath = await this.getMetricsFilePath(currentDate);
|
|
240
|
-
if (await fileExists(filePath)) {
|
|
241
|
-
try {
|
|
242
|
-
const content = await readFile(filePath, 'utf-8');
|
|
243
|
-
const events = JSON.parse(content);
|
|
244
|
-
allEvents.push(...events);
|
|
245
|
-
}
|
|
246
|
-
catch (error) {
|
|
247
|
-
logger.warn(`Failed to load metrics from ${filePath}: ${error}`);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
currentDate.setDate(currentDate.getDate() + 1);
|
|
251
|
-
}
|
|
252
|
-
return allEvents;
|
|
253
|
-
}
|
|
254
|
-
/**
|
|
255
|
-
* Get aggregated metrics.
|
|
256
|
-
*/
|
|
257
|
-
async getMetrics(startDate, endDate = new Date()) {
|
|
258
|
-
// Flush current events first
|
|
259
|
-
if (this.persistent) {
|
|
260
|
-
await this.flush();
|
|
261
|
-
}
|
|
262
|
-
// Load events from storage
|
|
263
|
-
const events = await this.loadEvents(startDate, endDate);
|
|
264
|
-
// Include in-memory events
|
|
265
|
-
const allEvents = [...events, ...this.events];
|
|
266
|
-
// Aggregate metrics
|
|
267
|
-
const eventsByType = {};
|
|
268
|
-
const scriptExecutions = [];
|
|
269
|
-
let cacheHits = 0;
|
|
270
|
-
let cacheMisses = 0;
|
|
271
|
-
let totalCacheSize = 0;
|
|
272
|
-
const errorsByType = {};
|
|
273
|
-
const recentErrors = [];
|
|
274
|
-
let totalDuration = 0;
|
|
275
|
-
for (const event of allEvents) {
|
|
276
|
-
eventsByType[event.type] = (eventsByType[event.type] || 0) + 1;
|
|
277
|
-
if (event.type === 'timer') {
|
|
278
|
-
scriptExecutions.push({ name: event.name, duration: event.value });
|
|
279
|
-
totalDuration += event.value;
|
|
280
|
-
}
|
|
281
|
-
else if (event.type === 'counter') {
|
|
282
|
-
if (event.name.includes('cache-hit')) {
|
|
283
|
-
cacheHits += event.value;
|
|
284
|
-
}
|
|
285
|
-
else if (event.name.includes('cache-miss')) {
|
|
286
|
-
cacheMisses += event.value;
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
else if (event.type === 'gauge' && event.name.includes('cache-size')) {
|
|
290
|
-
totalCacheSize = event.value;
|
|
291
|
-
}
|
|
292
|
-
else if (event.type === 'error') {
|
|
293
|
-
errorsByType[event.name] = (errorsByType[event.name] || 0) + 1;
|
|
294
|
-
recentErrors.push({
|
|
295
|
-
name: event.name,
|
|
296
|
-
timestamp: event.timestamp,
|
|
297
|
-
message: event.metadata?.message,
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
// Sort executions by duration
|
|
302
|
-
scriptExecutions.sort((a, b) => b.duration - a.duration);
|
|
303
|
-
// Calculate averages
|
|
304
|
-
const averageDuration = scriptExecutions.length > 0 ? totalDuration / scriptExecutions.length : 0;
|
|
305
|
-
// Get slowest and fastest
|
|
306
|
-
const slowest = scriptExecutions.slice(0, 5);
|
|
307
|
-
const fastest = scriptExecutions.slice(-5).reverse();
|
|
308
|
-
// Calculate cache hit rate
|
|
309
|
-
const totalCacheRequests = cacheHits + cacheMisses;
|
|
310
|
-
const cacheHitRate = totalCacheRequests > 0 ? (cacheHits / totalCacheRequests) * 100 : 0;
|
|
311
|
-
// Sort recent errors by timestamp
|
|
312
|
-
recentErrors.sort((a, b) => b.timestamp - a.timestamp);
|
|
313
|
-
return {
|
|
314
|
-
totalEvents: allEvents.length,
|
|
315
|
-
eventsByType,
|
|
316
|
-
scripts: {
|
|
317
|
-
totalExecutions: scriptExecutions.length,
|
|
318
|
-
averageDuration,
|
|
319
|
-
slowest,
|
|
320
|
-
fastest,
|
|
321
|
-
failures: errorsByType['script-failed'] || 0,
|
|
322
|
-
},
|
|
323
|
-
cache: {
|
|
324
|
-
hits: cacheHits,
|
|
325
|
-
misses: cacheMisses,
|
|
326
|
-
hitRate: Math.round(cacheHitRate * 100) / 100,
|
|
327
|
-
totalSize: totalCacheSize,
|
|
328
|
-
formattedSize: formatBytes(totalCacheSize),
|
|
329
|
-
},
|
|
330
|
-
errors: {
|
|
331
|
-
total: recentErrors.length,
|
|
332
|
-
byType: errorsByType,
|
|
333
|
-
recent: recentErrors.slice(0, 10),
|
|
334
|
-
},
|
|
335
|
-
performance: {
|
|
336
|
-
averageScriptDuration: averageDuration,
|
|
337
|
-
totalDuration,
|
|
338
|
-
formattedTotalDuration: formatDuration(totalDuration),
|
|
339
|
-
},
|
|
340
|
-
period: {
|
|
341
|
-
start: startDate?.getTime() || allEvents[0]?.timestamp || Date.now(),
|
|
342
|
-
end: endDate.getTime(),
|
|
343
|
-
duration: endDate.getTime() - (startDate?.getTime() || allEvents[0]?.timestamp || Date.now()),
|
|
344
|
-
},
|
|
345
|
-
};
|
|
346
|
-
}
|
|
347
|
-
/**
|
|
348
|
-
* Clear all metrics.
|
|
349
|
-
*/
|
|
350
|
-
clear() {
|
|
351
|
-
this.events = [];
|
|
352
|
-
this.timers.clear();
|
|
353
|
-
}
|
|
354
|
-
/**
|
|
355
|
-
* Stop telemetry and cleanup.
|
|
356
|
-
*/
|
|
357
|
-
async stop() {
|
|
358
|
-
if (this.flushTimer) {
|
|
359
|
-
clearInterval(this.flushTimer);
|
|
360
|
-
this.flushTimer = null;
|
|
361
|
-
}
|
|
362
|
-
if (this.persistent) {
|
|
363
|
-
await this.flush();
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
// =============================================================================
|
|
368
|
-
// Singleton Instance
|
|
369
|
-
// =============================================================================
|
|
370
|
-
let globalTelemetry = null;
|
|
371
|
-
/**
|
|
372
|
-
* Get the global telemetry instance.
|
|
373
|
-
*/
|
|
374
|
-
export function getTelemetry() {
|
|
375
|
-
if (!globalTelemetry) {
|
|
376
|
-
globalTelemetry = new Telemetry({
|
|
377
|
-
persistent: true,
|
|
378
|
-
autoFlushInterval: 60_000, // 1 minute
|
|
379
|
-
verbose: false,
|
|
380
|
-
});
|
|
381
|
-
}
|
|
382
|
-
return globalTelemetry;
|
|
383
|
-
}
|
|
384
|
-
/**
|
|
385
|
-
* Global telemetry instance.
|
|
386
|
-
*/
|
|
387
|
-
export const telemetry = getTelemetry();
|
|
388
|
-
/**
|
|
389
|
-
* Create a new telemetry instance.
|
|
390
|
-
*/
|
|
391
|
-
export function createTelemetry(options) {
|
|
392
|
-
return new Telemetry(options);
|
|
393
|
-
}
|
|
394
|
-
//# sourceMappingURL=telemetry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../../../../scripts/lib/telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,270 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Miscellaneous Utility Functions
|
|
3
|
-
*
|
|
4
|
-
* These functions are migrated from the legacy utils files
|
|
5
|
-
* to provide backward compatibility.
|
|
6
|
-
*
|
|
7
|
-
* @dependencies
|
|
8
|
-
* - scripts/lib/errors.ts - ErrorCode enum and ScriptError class
|
|
9
|
-
* - node:fs/promises - File system operations
|
|
10
|
-
* - node:readline - Interactive CLI prompts
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* Reads a file and returns its contents as a string.
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```typescript
|
|
17
|
-
* const content = await readFileContent('./config.json')
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
export declare function readFileContent(filePath: string): Promise<string>;
|
|
21
|
-
/**
|
|
22
|
-
* Writes content to a file.
|
|
23
|
-
*
|
|
24
|
-
* @example
|
|
25
|
-
* ```typescript
|
|
26
|
-
* await writeFileContent('./output.txt', 'Hello, world!')
|
|
27
|
-
* ```
|
|
28
|
-
*/
|
|
29
|
-
export declare function writeFileContent(filePath: string, content: string): Promise<void>;
|
|
30
|
-
/**
|
|
31
|
-
* Checks if a file exists.
|
|
32
|
-
*
|
|
33
|
-
* @example
|
|
34
|
-
* ```typescript
|
|
35
|
-
* if (await fileExists('./config.json')) {
|
|
36
|
-
* // File exists
|
|
37
|
-
* }
|
|
38
|
-
* ```
|
|
39
|
-
*/
|
|
40
|
-
export declare function fileExists(filePath: string): Promise<boolean>;
|
|
41
|
-
/**
|
|
42
|
-
* Reads a file and returns true if it exists and has content.
|
|
43
|
-
* Returns false if the file doesn't exist.
|
|
44
|
-
*/
|
|
45
|
-
export declare function readFileIfExists(filePath: string): Promise<string | null>;
|
|
46
|
-
/**
|
|
47
|
-
* Prompts the user for input and returns their response.
|
|
48
|
-
*
|
|
49
|
-
* @example
|
|
50
|
-
* ```typescript
|
|
51
|
-
* const name = await prompt('Enter your name: ')
|
|
52
|
-
* ```
|
|
53
|
-
*/
|
|
54
|
-
export declare function prompt(question: string): Promise<string>;
|
|
55
|
-
/**
|
|
56
|
-
* Prompts the user for confirmation (yes/no).
|
|
57
|
-
*
|
|
58
|
-
* @example
|
|
59
|
-
* ```typescript
|
|
60
|
-
* if (await confirm('Are you sure?')) {
|
|
61
|
-
* // User confirmed
|
|
62
|
-
* }
|
|
63
|
-
* ```
|
|
64
|
-
*/
|
|
65
|
-
export declare function confirm(question: string, defaultValue?: boolean): Promise<boolean>;
|
|
66
|
-
/**
|
|
67
|
-
* Sleeps for the specified number of milliseconds.
|
|
68
|
-
*/
|
|
69
|
-
export declare function sleep(ms: number): Promise<void>;
|
|
70
|
-
/**
|
|
71
|
-
* Waits for a condition to be true, polling at regular intervals.
|
|
72
|
-
*
|
|
73
|
-
* @param condition - Function that returns true when the condition is met
|
|
74
|
-
* @param timeout - Maximum time to wait in milliseconds (default: 30000)
|
|
75
|
-
* @param interval - Polling interval in milliseconds (default: 1000)
|
|
76
|
-
* @returns True if condition was met, false if timeout
|
|
77
|
-
*
|
|
78
|
-
* @example
|
|
79
|
-
* ```typescript
|
|
80
|
-
* await waitFor(() => serverIsReady(), 10000)
|
|
81
|
-
* ```
|
|
82
|
-
*/
|
|
83
|
-
export declare function waitFor(condition: () => boolean | Promise<boolean>, timeout?: number, interval?: number): Promise<boolean>;
|
|
84
|
-
/**
|
|
85
|
-
* Generates a random ID string.
|
|
86
|
-
*/
|
|
87
|
-
export declare function generateId(prefix?: string, length?: number): string;
|
|
88
|
-
/**
|
|
89
|
-
* Formats bytes into a human-readable string.
|
|
90
|
-
*/
|
|
91
|
-
export declare function formatBytes(bytes: number): string;
|
|
92
|
-
/**
|
|
93
|
-
* Formats a duration in milliseconds into a human-readable string.
|
|
94
|
-
*/
|
|
95
|
-
export declare function formatDuration(ms: number): string;
|
|
96
|
-
/**
|
|
97
|
-
* Truncates a string to a maximum length.
|
|
98
|
-
*/
|
|
99
|
-
export declare function truncate(str: string, maxLength: number, suffix?: string): string;
|
|
100
|
-
/**
|
|
101
|
-
* Ensures a value is an array.
|
|
102
|
-
*/
|
|
103
|
-
export declare function ensureArray<T>(value: T | T[]): T[];
|
|
104
|
-
/**
|
|
105
|
-
* Debounces a function call.
|
|
106
|
-
*/
|
|
107
|
-
export declare function debounce<T extends (...args: unknown[]) => unknown>(fn: T, delay: number): (...args: Parameters<T>) => void;
|
|
108
|
-
/**
|
|
109
|
-
* Requires an environment variable to be set.
|
|
110
|
-
* Throws an error if the variable is not defined.
|
|
111
|
-
*
|
|
112
|
-
* @param key - Primary environment variable name
|
|
113
|
-
* @param fallbackKey - Optional fallback variable name
|
|
114
|
-
* @returns The environment variable value
|
|
115
|
-
* @throws Error if neither variable is set
|
|
116
|
-
*
|
|
117
|
-
* @example
|
|
118
|
-
* ```typescript
|
|
119
|
-
* const dbUrl = requireEnv('POSTGRES_URL', 'DATABASE_URL')
|
|
120
|
-
* ```
|
|
121
|
-
*/
|
|
122
|
-
export declare function requireEnv(key: string, fallbackKey?: string): string;
|
|
123
|
-
/**
|
|
124
|
-
* Options for dependency validation.
|
|
125
|
-
*/
|
|
126
|
-
export interface ValidateDependenciesOptions {
|
|
127
|
-
/** Log missing dependencies */
|
|
128
|
-
log?: boolean;
|
|
129
|
-
/** Throw on missing dependencies */
|
|
130
|
-
throwOnMissing?: boolean;
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Validates that required npm packages are installed.
|
|
134
|
-
*
|
|
135
|
-
* @param packages - List of package names to check
|
|
136
|
-
* @param options - Validation options
|
|
137
|
-
* @returns True if all dependencies are available
|
|
138
|
-
*
|
|
139
|
-
* @example
|
|
140
|
-
* ```typescript
|
|
141
|
-
* await validateDependencies(['pg', 'dotenv'], { log: true })
|
|
142
|
-
* ```
|
|
143
|
-
*/
|
|
144
|
-
export declare function validateDependencies(packages: string[], options?: ValidateDependenciesOptions): Promise<boolean>;
|
|
145
|
-
/**
|
|
146
|
-
* Options for directory scanning
|
|
147
|
-
*/
|
|
148
|
-
export interface ScanDirectoryOptions {
|
|
149
|
-
/** File extensions to include (e.g., ['.ts', '.tsx']) */
|
|
150
|
-
extensions?: string[];
|
|
151
|
-
/** Directory names to exclude (defaults to common build/cache dirs) */
|
|
152
|
-
excludeDirs?: string[];
|
|
153
|
-
/** Regex patterns to exclude files/directories */
|
|
154
|
-
excludePatterns?: RegExp[];
|
|
155
|
-
/** Include hidden files/directories (starting with .) */
|
|
156
|
-
includeHidden?: boolean;
|
|
157
|
-
/** Maximum depth to scan (default: unlimited) */
|
|
158
|
-
maxDepth?: number;
|
|
159
|
-
/** Follow symbolic links (default: false) */
|
|
160
|
-
followSymlinks?: boolean;
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Scan a directory recursively for files matching criteria (async generator).
|
|
164
|
-
*
|
|
165
|
-
* This is the most memory-efficient approach for large directories.
|
|
166
|
-
* Use this when processing files one at a time or when dealing with
|
|
167
|
-
* potentially huge file sets. The generator yields files as they're found,
|
|
168
|
-
* allowing immediate processing without loading everything into memory.
|
|
169
|
-
*
|
|
170
|
-
* @param dir - Directory path to scan (absolute or relative)
|
|
171
|
-
* @param options - Scanning options
|
|
172
|
-
* @param options.extensions - File extensions to include (default: ['.ts', '.tsx', '.js', '.jsx'])
|
|
173
|
-
* @param options.excludeDirs - Directory names to exclude (default: node_modules, dist, .next, etc.)
|
|
174
|
-
* @param options.excludePatterns - Regex patterns for paths to exclude
|
|
175
|
-
* @param options.includeHidden - Whether to include hidden files/directories (default: false)
|
|
176
|
-
* @param options.maxDepth - Maximum recursion depth (default: Infinity)
|
|
177
|
-
* @param options.followSymlinks - Whether to follow symbolic links (default: false)
|
|
178
|
-
* @yields Absolute file paths matching the criteria
|
|
179
|
-
*
|
|
180
|
-
* @example
|
|
181
|
-
* ```typescript
|
|
182
|
-
* // Process files one at a time (memory efficient)
|
|
183
|
-
* for await (const file of scanDirectory('./src', { extensions: ['.ts', '.tsx'] })) {
|
|
184
|
-
* const content = await readFile(file, 'utf-8')
|
|
185
|
-
* // Process file...
|
|
186
|
-
* }
|
|
187
|
-
*
|
|
188
|
-
* // With custom exclusions
|
|
189
|
-
* for await (const file of scanDirectory('./packages', {
|
|
190
|
-
* extensions: ['.ts'],
|
|
191
|
-
* excludeDirs: ['node_modules', '__tests__'],
|
|
192
|
-
* excludePatterns: [/\.test\.ts$/],
|
|
193
|
-
* maxDepth: 3
|
|
194
|
-
* })) {
|
|
195
|
-
* console.log(file)
|
|
196
|
-
* }
|
|
197
|
-
* ```
|
|
198
|
-
*
|
|
199
|
-
* @see {@link scanDirectoryAll} to get all files as an array
|
|
200
|
-
* @see {@link scanDirectorySync} for synchronous version
|
|
201
|
-
*/
|
|
202
|
-
export declare function scanDirectory(dir: string, options?: ScanDirectoryOptions): AsyncGenerator<string>;
|
|
203
|
-
/**
|
|
204
|
-
* Scan a directory and return all matching files as an array (async).
|
|
205
|
-
*
|
|
206
|
-
* Use this when you need all files at once for batch processing or analysis.
|
|
207
|
-
* For large directories (>1000 files), prefer scanDirectory() generator to
|
|
208
|
-
* avoid loading everything into memory at once.
|
|
209
|
-
*
|
|
210
|
-
* @param dir - Directory path to scan (absolute or relative)
|
|
211
|
-
* @param options - Scanning options (same as scanDirectory)
|
|
212
|
-
* @returns Promise resolving to array of absolute file paths
|
|
213
|
-
*
|
|
214
|
-
* @example
|
|
215
|
-
* ```typescript
|
|
216
|
-
* // Get all TypeScript files
|
|
217
|
-
* const files = await scanDirectoryAll('./src', { extensions: ['.ts', '.tsx'] })
|
|
218
|
-
* console.log(`Found ${files.length} TypeScript files`)
|
|
219
|
-
*
|
|
220
|
-
* // Analyze all files at once
|
|
221
|
-
* const result = await analyzeFiles(files, process.cwd())
|
|
222
|
-
*
|
|
223
|
-
* // With custom options
|
|
224
|
-
* const sourceFiles = await scanDirectoryAll('./packages', {
|
|
225
|
-
* extensions: ['.ts'],
|
|
226
|
-
* excludeDirs: ['node_modules', 'dist', '__tests__'],
|
|
227
|
-
* includeHidden: false
|
|
228
|
-
* })
|
|
229
|
-
* ```
|
|
230
|
-
*
|
|
231
|
-
* @see {@link scanDirectory} for memory-efficient generator version
|
|
232
|
-
* @see {@link scanDirectorySync} for synchronous version
|
|
233
|
-
*/
|
|
234
|
-
export declare function scanDirectoryAll(dir: string, options?: ScanDirectoryOptions): Promise<string[]>;
|
|
235
|
-
/**
|
|
236
|
-
* Scan a directory synchronously (blocking).
|
|
237
|
-
*
|
|
238
|
-
* Use this only when you absolutely must have synchronous file scanning
|
|
239
|
-
* (e.g., in module initialization, config loading). Prefer scanDirectory()
|
|
240
|
-
* or scanDirectoryAll() for better performance and non-blocking I/O.
|
|
241
|
-
* This is provided for backward compatibility with existing scripts.
|
|
242
|
-
*
|
|
243
|
-
* @param dir - Directory path to scan (absolute or relative)
|
|
244
|
-
* @param options - Scanning options (same as scanDirectory)
|
|
245
|
-
* @param options.extensions - File extensions to include (default: ['.ts', '.tsx', '.js', '.jsx'])
|
|
246
|
-
* @param options.excludeDirs - Directory names to exclude
|
|
247
|
-
* @param options.excludePatterns - Regex patterns for paths to exclude
|
|
248
|
-
* @param options.includeHidden - Whether to include hidden files
|
|
249
|
-
* @param options.maxDepth - Maximum recursion depth
|
|
250
|
-
* @param options.followSymlinks - Whether to follow symbolic links
|
|
251
|
-
* @returns Array of absolute file paths
|
|
252
|
-
*
|
|
253
|
-
* @example
|
|
254
|
-
* ```typescript
|
|
255
|
-
* // Basic synchronous scanning
|
|
256
|
-
* const files = scanDirectorySync('./src', { extensions: ['.ts', '.tsx'] })
|
|
257
|
-
* console.log(`Found ${files.length} files`)
|
|
258
|
-
*
|
|
259
|
-
* // In config file where async not available
|
|
260
|
-
* const configFiles = scanDirectorySync('./config', {
|
|
261
|
-
* extensions: ['.json', '.yaml'],
|
|
262
|
-
* maxDepth: 2
|
|
263
|
-
* })
|
|
264
|
-
* ```
|
|
265
|
-
*
|
|
266
|
-
* @see {@link scanDirectory} for async generator version
|
|
267
|
-
* @see {@link scanDirectoryAll} for async array version
|
|
268
|
-
*/
|
|
269
|
-
export declare function scanDirectorySync(dir: string, options?: ScanDirectoryOptions): string[];
|
|
270
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../scripts/lib/utils.ts"],"names":[],"mappings":"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"}
|