@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.
- package/LICENSE +22 -0
- package/LICENSE.commercial +112 -0
- package/README.md +3 -0
- 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/hypervisor.d.ts.map +1 -0
- package/dist/hypervisor.js.map +1 -0
- package/dist/index.d.ts.map +1 -0
- 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 +199 -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 +185 -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 +211 -0
- package/dist/servers/revealui-stripe.js.map +1 -0
- package/package.json +47 -8
- 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.d.ts +0 -0
- /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
- /package/dist/{packages/mcp/src/hypervisor.d.ts → hypervisor.d.ts} +0 -0
- /package/dist/{packages/mcp/src/hypervisor.js → hypervisor.js} +0 -0
- /package/dist/{packages/mcp/src/index.d.ts → index.d.ts} +0 -0
- /package/dist/{packages/mcp/src/index.js → index.js} +0 -0
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Database Validation Utilities
|
|
3
|
-
*
|
|
4
|
-
* Validates database connections and schema.
|
|
5
|
-
*
|
|
6
|
-
* @dependencies
|
|
7
|
-
* - scripts/lib/logger.ts - Logger utilities
|
|
8
|
-
* - pg - PostgreSQL client for connection testing
|
|
9
|
-
*/
|
|
10
|
-
import { getSSLConfig } from '../database/ssl-config.js';
|
|
11
|
-
import { createLogger } from '../logger.js';
|
|
12
|
-
/**
|
|
13
|
-
* Parses a PostgreSQL connection string to extract components.
|
|
14
|
-
*/
|
|
15
|
-
export function parseConnectionString(connectionString) {
|
|
16
|
-
try {
|
|
17
|
-
const url = new URL(connectionString);
|
|
18
|
-
return {
|
|
19
|
-
host: url.hostname,
|
|
20
|
-
port: Number.parseInt(url.port, 10) || 5432,
|
|
21
|
-
database: url.pathname.slice(1) || 'postgres',
|
|
22
|
-
user: url.username,
|
|
23
|
-
password: url.password,
|
|
24
|
-
ssl: url.searchParams.get('sslmode') !== 'disable',
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Detects the database provider from a connection string.
|
|
33
|
-
*/
|
|
34
|
-
export function detectDatabaseProvider(connectionString) {
|
|
35
|
-
const lowerUrl = connectionString.toLowerCase();
|
|
36
|
-
if (lowerUrl.includes('.neon.tech') || lowerUrl.includes('neon.')) {
|
|
37
|
-
return 'neon';
|
|
38
|
-
}
|
|
39
|
-
if (lowerUrl.includes('.supabase.co') || lowerUrl.includes('pooler.supabase.com')) {
|
|
40
|
-
return 'supabase';
|
|
41
|
-
}
|
|
42
|
-
if (lowerUrl.startsWith('postgresql://') || lowerUrl.startsWith('postgres://')) {
|
|
43
|
-
return 'postgres';
|
|
44
|
-
}
|
|
45
|
-
return 'unknown';
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Validates a database connection by attempting to connect.
|
|
49
|
-
*
|
|
50
|
-
* @example
|
|
51
|
-
* ```typescript
|
|
52
|
-
* const result = await validateDatabaseConnection(process.env.POSTGRES_URL!)
|
|
53
|
-
* if (!result.connected) {
|
|
54
|
-
* console.error('Connection failed:', result.error)
|
|
55
|
-
* }
|
|
56
|
-
* ```
|
|
57
|
-
*/
|
|
58
|
-
export async function validateDatabaseConnection(connectionString, options = {}) {
|
|
59
|
-
const { timeout = 10000, logger = createLogger({ level: 'silent' }) } = options;
|
|
60
|
-
const provider = detectDatabaseProvider(connectionString);
|
|
61
|
-
const result = {
|
|
62
|
-
connected: false,
|
|
63
|
-
isNeon: provider === 'neon',
|
|
64
|
-
isSupabase: provider === 'supabase',
|
|
65
|
-
};
|
|
66
|
-
const startTime = Date.now();
|
|
67
|
-
try {
|
|
68
|
-
// Use pg Pool for connection testing
|
|
69
|
-
const { Pool } = await import('pg');
|
|
70
|
-
const pool = new Pool({
|
|
71
|
-
connectionString,
|
|
72
|
-
connectionTimeoutMillis: timeout,
|
|
73
|
-
ssl: getSSLConfig(connectionString),
|
|
74
|
-
});
|
|
75
|
-
try {
|
|
76
|
-
const client = await pool.connect();
|
|
77
|
-
try {
|
|
78
|
-
// Test basic query
|
|
79
|
-
const versionResult = await client.query('SELECT version(), current_database()');
|
|
80
|
-
const row = versionResult.rows[0];
|
|
81
|
-
result.connected = true;
|
|
82
|
-
result.latencyMs = Date.now() - startTime;
|
|
83
|
-
result.serverVersion = row?.version?.split(' ')[1] || 'unknown';
|
|
84
|
-
result.database = row?.current_database || 'unknown';
|
|
85
|
-
logger.success(`Connected to ${provider} database: ${result.database}`);
|
|
86
|
-
logger.info(`Latency: ${result.latencyMs}ms`);
|
|
87
|
-
}
|
|
88
|
-
finally {
|
|
89
|
-
client.release();
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
finally {
|
|
93
|
-
await pool.end();
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
catch (error) {
|
|
97
|
-
result.error = error instanceof Error ? error.message : String(error);
|
|
98
|
-
logger.error(`Failed to connect to database: ${result.error}`);
|
|
99
|
-
}
|
|
100
|
-
return result;
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Validates that required tables exist in the database.
|
|
104
|
-
*
|
|
105
|
-
* @example
|
|
106
|
-
* ```typescript
|
|
107
|
-
* const { valid, missing } = await validateTables(connectionString, ['users', 'sessions', 'sites'])
|
|
108
|
-
* ```
|
|
109
|
-
*/
|
|
110
|
-
export async function validateTables(connectionString, expectedTables) {
|
|
111
|
-
const { Pool } = await import('pg');
|
|
112
|
-
const pool = new Pool({
|
|
113
|
-
connectionString,
|
|
114
|
-
ssl: getSSLConfig(connectionString),
|
|
115
|
-
});
|
|
116
|
-
try {
|
|
117
|
-
const client = await pool.connect();
|
|
118
|
-
try {
|
|
119
|
-
const result = await client.query(`
|
|
120
|
-
SELECT table_name
|
|
121
|
-
FROM information_schema.tables
|
|
122
|
-
WHERE table_schema = 'public'
|
|
123
|
-
AND table_type = 'BASE TABLE'
|
|
124
|
-
`);
|
|
125
|
-
const existingTables = new Set(result.rows.map((r) => r.table_name));
|
|
126
|
-
const existing = expectedTables.filter((t) => existingTables.has(t));
|
|
127
|
-
const missing = expectedTables.filter((t) => !existingTables.has(t));
|
|
128
|
-
return {
|
|
129
|
-
valid: missing.length === 0,
|
|
130
|
-
existing,
|
|
131
|
-
missing,
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
finally {
|
|
135
|
-
client.release();
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
finally {
|
|
139
|
-
await pool.end();
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Gets the list of all tables in the database.
|
|
144
|
-
*/
|
|
145
|
-
export async function listTables(connectionString) {
|
|
146
|
-
const { Pool } = await import('pg');
|
|
147
|
-
const pool = new Pool({
|
|
148
|
-
connectionString,
|
|
149
|
-
ssl: getSSLConfig(connectionString),
|
|
150
|
-
});
|
|
151
|
-
try {
|
|
152
|
-
const client = await pool.connect();
|
|
153
|
-
try {
|
|
154
|
-
const result = await client.query(`
|
|
155
|
-
SELECT table_name
|
|
156
|
-
FROM information_schema.tables
|
|
157
|
-
WHERE table_schema = 'public'
|
|
158
|
-
AND table_type = 'BASE TABLE'
|
|
159
|
-
ORDER BY table_name
|
|
160
|
-
`);
|
|
161
|
-
return result.rows.map((r) => r.table_name);
|
|
162
|
-
}
|
|
163
|
-
finally {
|
|
164
|
-
client.release();
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
finally {
|
|
168
|
-
await pool.end();
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Core tables that should exist in the RevealUI database.
|
|
173
|
-
*/
|
|
174
|
-
export const CORE_TABLES = [
|
|
175
|
-
'users',
|
|
176
|
-
'sessions',
|
|
177
|
-
'sites',
|
|
178
|
-
'pages',
|
|
179
|
-
'page_revisions',
|
|
180
|
-
'site_collaborators',
|
|
181
|
-
'media',
|
|
182
|
-
'posts',
|
|
183
|
-
'global_settings',
|
|
184
|
-
'global_header',
|
|
185
|
-
'global_footer',
|
|
186
|
-
];
|
|
187
|
-
/**
|
|
188
|
-
* Agent-related tables.
|
|
189
|
-
*/
|
|
190
|
-
export const AGENT_TABLES = ['agent_memories', 'agent_contexts', 'agent_actions', 'conversations'];
|
|
191
|
-
/**
|
|
192
|
-
* CRDT-related tables.
|
|
193
|
-
*/
|
|
194
|
-
export const CRDT_TABLES = ['crdt_operations', 'node_id_mappings'];
|
|
195
|
-
/**
|
|
196
|
-
* All expected tables in the RevealUI database.
|
|
197
|
-
*/
|
|
198
|
-
export const ALL_TABLES = [...CORE_TABLES, ...AGENT_TABLES, ...CRDT_TABLES];
|
|
199
|
-
//# sourceMappingURL=database.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../../../../scripts/lib/validation/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Environment Validation Utilities
|
|
3
|
-
*
|
|
4
|
-
* Validates environment variables and provides helpful error messages.
|
|
5
|
-
*
|
|
6
|
-
* @dependencies
|
|
7
|
-
* - scripts/lib/errors.ts - ErrorCode enum for exit codes
|
|
8
|
-
* - scripts/lib/logger.ts - Logger utilities
|
|
9
|
-
* - scripts/lib/paths.ts - Project root resolution for .env file lookup
|
|
10
|
-
* - node:fs/promises - File system operations for reading .env files
|
|
11
|
-
* - node:path - Path manipulation utilities
|
|
12
|
-
*/
|
|
13
|
-
import { type Logger } from '../logger.js';
|
|
14
|
-
export interface EnvVariable {
|
|
15
|
-
name: string;
|
|
16
|
-
required: boolean;
|
|
17
|
-
description: string;
|
|
18
|
-
validator?: (value: string) => boolean;
|
|
19
|
-
sensitive?: boolean;
|
|
20
|
-
defaultValue?: string;
|
|
21
|
-
}
|
|
22
|
-
export interface EnvValidationResult {
|
|
23
|
-
valid: boolean;
|
|
24
|
-
missing: string[];
|
|
25
|
-
invalid: string[];
|
|
26
|
-
warnings: string[];
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Core required environment variables for RevealUI
|
|
30
|
-
*/
|
|
31
|
-
export declare const REQUIRED_ENV_VARS: EnvVariable[];
|
|
32
|
-
/**
|
|
33
|
-
* Optional environment variables
|
|
34
|
-
*/
|
|
35
|
-
export declare const OPTIONAL_ENV_VARS: EnvVariable[];
|
|
36
|
-
/**
|
|
37
|
-
* Validates environment variables against the specification.
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* ```typescript
|
|
41
|
-
* const result = await validateEnv()
|
|
42
|
-
* if (!result.valid) {
|
|
43
|
-
* console.error('Missing:', result.missing)
|
|
44
|
-
* process.exit(ErrorCode.EXECUTION_ERROR)
|
|
45
|
-
* }
|
|
46
|
-
* ```
|
|
47
|
-
*/
|
|
48
|
-
export declare function validateEnv(variables?: EnvVariable[], env?: Record<string, string | undefined>): EnvValidationResult;
|
|
49
|
-
/**
|
|
50
|
-
* Validates environment and logs results.
|
|
51
|
-
*
|
|
52
|
-
* @param options.exitOnError - Whether to exit the process on validation failure (default: false)
|
|
53
|
-
* @returns Whether validation passed
|
|
54
|
-
*/
|
|
55
|
-
export declare function validateEnvWithLogging(options?: {
|
|
56
|
-
logger?: Logger;
|
|
57
|
-
exitOnError?: boolean;
|
|
58
|
-
importMetaUrl?: string;
|
|
59
|
-
}): Promise<boolean>;
|
|
60
|
-
/**
|
|
61
|
-
* Checks if a .env file exists at the project root.
|
|
62
|
-
*/
|
|
63
|
-
export declare function envFileExists(importMetaUrl: string): Promise<boolean>;
|
|
64
|
-
/**
|
|
65
|
-
* Checks if .env.development.local exists.
|
|
66
|
-
*/
|
|
67
|
-
export declare function devEnvFileExists(importMetaUrl: string): Promise<boolean>;
|
|
68
|
-
/**
|
|
69
|
-
* Reads and parses an env file.
|
|
70
|
-
*/
|
|
71
|
-
export declare function parseEnvFile(filePath: string): Promise<Record<string, string>>;
|
|
72
|
-
/**
|
|
73
|
-
* Detects running environment.
|
|
74
|
-
*/
|
|
75
|
-
export declare function detectEnvironment(): 'development' | 'test' | 'production' | 'ci';
|
|
76
|
-
/**
|
|
77
|
-
* Checks if running in CI environment.
|
|
78
|
-
*/
|
|
79
|
-
export declare function isCI(): boolean;
|
|
80
|
-
//# sourceMappingURL=env.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../../../../scripts/lib/validation/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAA;AAGxD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;IACtC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,EAe1C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,EAuC1C,CAAA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,SAAS,GAAE,WAAW,EAAiD,EACvE,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,mBAAmB,CAmCrB;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/E,OAAO,CAAC,OAAO,CAAC,CA2ClB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ3E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ9E;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAgCpF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,CAWhF;AAED;;GAEG;AACH,wBAAgB,IAAI,IAAI,OAAO,CAS9B"}
|
|
@@ -1,246 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Environment Validation Utilities
|
|
3
|
-
*
|
|
4
|
-
* Validates environment variables and provides helpful error messages.
|
|
5
|
-
*
|
|
6
|
-
* @dependencies
|
|
7
|
-
* - scripts/lib/errors.ts - ErrorCode enum for exit codes
|
|
8
|
-
* - scripts/lib/logger.ts - Logger utilities
|
|
9
|
-
* - scripts/lib/paths.ts - Project root resolution for .env file lookup
|
|
10
|
-
* - node:fs/promises - File system operations for reading .env files
|
|
11
|
-
* - node:path - Path manipulation utilities
|
|
12
|
-
*/
|
|
13
|
-
import { access, readFile } from 'node:fs/promises';
|
|
14
|
-
import { join } from 'node:path';
|
|
15
|
-
import { ErrorCode } from '../../lib/errors.js';
|
|
16
|
-
import { createLogger } from '../logger.js';
|
|
17
|
-
import { getProjectRoot } from '../paths.js';
|
|
18
|
-
/**
|
|
19
|
-
* Core required environment variables for RevealUI
|
|
20
|
-
*/
|
|
21
|
-
export const REQUIRED_ENV_VARS = [
|
|
22
|
-
{
|
|
23
|
-
name: 'REVEALUI_SECRET',
|
|
24
|
-
required: true,
|
|
25
|
-
description: 'Secret key for JWT tokens (32+ characters)',
|
|
26
|
-
validator: (v) => v.length >= 32,
|
|
27
|
-
sensitive: true,
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
name: 'POSTGRES_URL',
|
|
31
|
-
required: true,
|
|
32
|
-
description: 'PostgreSQL connection string',
|
|
33
|
-
validator: (v) => v.startsWith('postgresql://') || v.startsWith('postgres://'),
|
|
34
|
-
sensitive: true,
|
|
35
|
-
},
|
|
36
|
-
];
|
|
37
|
-
/**
|
|
38
|
-
* Optional environment variables
|
|
39
|
-
*/
|
|
40
|
-
export const OPTIONAL_ENV_VARS = [
|
|
41
|
-
{
|
|
42
|
-
name: 'REVEALUI_PUBLIC_SERVER_URL',
|
|
43
|
-
required: false,
|
|
44
|
-
description: 'Public server URL',
|
|
45
|
-
defaultValue: 'http://localhost:4000',
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
name: 'NEXT_PUBLIC_SERVER_URL',
|
|
49
|
-
required: false,
|
|
50
|
-
description: 'Next.js public server URL',
|
|
51
|
-
defaultValue: 'http://localhost:4000',
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
name: 'BLOB_READ_WRITE_TOKEN',
|
|
55
|
-
required: false,
|
|
56
|
-
description: 'Vercel Blob Storage token',
|
|
57
|
-
sensitive: true,
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
name: 'STRIPE_SECRET_KEY',
|
|
61
|
-
required: false,
|
|
62
|
-
description: 'Stripe secret key',
|
|
63
|
-
validator: (v) => v.startsWith('sk_'),
|
|
64
|
-
sensitive: true,
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
name: 'NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY',
|
|
68
|
-
required: false,
|
|
69
|
-
description: 'Stripe publishable key',
|
|
70
|
-
validator: (v) => v.startsWith('pk_'),
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
name: 'DATABASE_URL',
|
|
74
|
-
required: false,
|
|
75
|
-
description: 'Alternative database connection string',
|
|
76
|
-
validator: (v) => v.startsWith('postgresql://') || v.startsWith('postgres://'),
|
|
77
|
-
sensitive: true,
|
|
78
|
-
},
|
|
79
|
-
];
|
|
80
|
-
/**
|
|
81
|
-
* Validates environment variables against the specification.
|
|
82
|
-
*
|
|
83
|
-
* @example
|
|
84
|
-
* ```typescript
|
|
85
|
-
* const result = await validateEnv()
|
|
86
|
-
* if (!result.valid) {
|
|
87
|
-
* console.error('Missing:', result.missing)
|
|
88
|
-
* process.exit(ErrorCode.EXECUTION_ERROR)
|
|
89
|
-
* }
|
|
90
|
-
* ```
|
|
91
|
-
*/
|
|
92
|
-
export function validateEnv(variables = [...REQUIRED_ENV_VARS, ...OPTIONAL_ENV_VARS], env = process.env) {
|
|
93
|
-
const missing = [];
|
|
94
|
-
const invalid = [];
|
|
95
|
-
const warnings = [];
|
|
96
|
-
for (const variable of variables) {
|
|
97
|
-
const value = env[variable.name];
|
|
98
|
-
if (!value) {
|
|
99
|
-
if (variable.required) {
|
|
100
|
-
missing.push(variable.name);
|
|
101
|
-
}
|
|
102
|
-
else if (!variable.defaultValue) {
|
|
103
|
-
warnings.push(`${variable.name} is not set (optional)`);
|
|
104
|
-
}
|
|
105
|
-
continue;
|
|
106
|
-
}
|
|
107
|
-
if (variable.validator && !variable.validator(value)) {
|
|
108
|
-
invalid.push(variable.name);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
// Check for DATABASE_URL fallback
|
|
112
|
-
if (missing.includes('POSTGRES_URL') && env.DATABASE_URL) {
|
|
113
|
-
const idx = missing.indexOf('POSTGRES_URL');
|
|
114
|
-
missing.splice(idx, 1);
|
|
115
|
-
warnings.push('Using DATABASE_URL as fallback for POSTGRES_URL');
|
|
116
|
-
}
|
|
117
|
-
return {
|
|
118
|
-
valid: missing.length === 0 && invalid.length === 0,
|
|
119
|
-
missing,
|
|
120
|
-
invalid,
|
|
121
|
-
warnings,
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Validates environment and logs results.
|
|
126
|
-
*
|
|
127
|
-
* @param options.exitOnError - Whether to exit the process on validation failure (default: false)
|
|
128
|
-
* @returns Whether validation passed
|
|
129
|
-
*/
|
|
130
|
-
export async function validateEnvWithLogging(options = {}) {
|
|
131
|
-
const logger = options.logger || createLogger();
|
|
132
|
-
const result = validateEnv();
|
|
133
|
-
if (result.valid) {
|
|
134
|
-
logger.success('Environment validation passed');
|
|
135
|
-
for (const warning of result.warnings) {
|
|
136
|
-
logger.warn(warning);
|
|
137
|
-
}
|
|
138
|
-
return true;
|
|
139
|
-
}
|
|
140
|
-
logger.error('Environment validation failed');
|
|
141
|
-
if (result.missing.length > 0) {
|
|
142
|
-
logger.error(`Missing required variables: ${result.missing.join(', ')}`);
|
|
143
|
-
for (const name of result.missing) {
|
|
144
|
-
const variable = [...REQUIRED_ENV_VARS, ...OPTIONAL_ENV_VARS].find((v) => v.name === name);
|
|
145
|
-
if (variable) {
|
|
146
|
-
logger.info(` ${name}: ${variable.description}`);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
if (result.invalid.length > 0) {
|
|
151
|
-
logger.error(`Invalid variables: ${result.invalid.join(', ')}`);
|
|
152
|
-
for (const name of result.invalid) {
|
|
153
|
-
const variable = [...REQUIRED_ENV_VARS, ...OPTIONAL_ENV_VARS].find((v) => v.name === name);
|
|
154
|
-
if (variable) {
|
|
155
|
-
logger.info(` ${name}: ${variable.description}`);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
for (const warning of result.warnings) {
|
|
160
|
-
logger.warn(warning);
|
|
161
|
-
}
|
|
162
|
-
if (options.exitOnError) {
|
|
163
|
-
process.exit(ErrorCode.EXECUTION_ERROR);
|
|
164
|
-
}
|
|
165
|
-
return false;
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Checks if a .env file exists at the project root.
|
|
169
|
-
*/
|
|
170
|
-
export async function envFileExists(importMetaUrl) {
|
|
171
|
-
try {
|
|
172
|
-
const root = await getProjectRoot(importMetaUrl);
|
|
173
|
-
await access(join(root, '.env'));
|
|
174
|
-
return true;
|
|
175
|
-
}
|
|
176
|
-
catch {
|
|
177
|
-
return false;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Checks if .env.development.local exists.
|
|
182
|
-
*/
|
|
183
|
-
export async function devEnvFileExists(importMetaUrl) {
|
|
184
|
-
try {
|
|
185
|
-
const root = await getProjectRoot(importMetaUrl);
|
|
186
|
-
await access(join(root, '.env.development.local'));
|
|
187
|
-
return true;
|
|
188
|
-
}
|
|
189
|
-
catch {
|
|
190
|
-
return false;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* Reads and parses an env file.
|
|
195
|
-
*/
|
|
196
|
-
export async function parseEnvFile(filePath) {
|
|
197
|
-
const content = await readFile(filePath, 'utf-8');
|
|
198
|
-
const env = {};
|
|
199
|
-
for (const line of content.split('\n')) {
|
|
200
|
-
const trimmed = line.trim();
|
|
201
|
-
// Skip comments and empty lines
|
|
202
|
-
if (!trimmed || trimmed.startsWith('#')) {
|
|
203
|
-
continue;
|
|
204
|
-
}
|
|
205
|
-
const eqIndex = trimmed.indexOf('=');
|
|
206
|
-
if (eqIndex === -1) {
|
|
207
|
-
continue;
|
|
208
|
-
}
|
|
209
|
-
const key = trimmed.substring(0, eqIndex).trim();
|
|
210
|
-
let value = trimmed.substring(eqIndex + 1).trim();
|
|
211
|
-
// Remove quotes if present
|
|
212
|
-
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
213
|
-
(value.startsWith("'") && value.endsWith("'"))) {
|
|
214
|
-
value = value.slice(1, -1);
|
|
215
|
-
}
|
|
216
|
-
env[key] = value;
|
|
217
|
-
}
|
|
218
|
-
return env;
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* Detects running environment.
|
|
222
|
-
*/
|
|
223
|
-
export function detectEnvironment() {
|
|
224
|
-
if (process.env.CI) {
|
|
225
|
-
return 'ci';
|
|
226
|
-
}
|
|
227
|
-
if (process.env.NODE_ENV === 'test') {
|
|
228
|
-
return 'test';
|
|
229
|
-
}
|
|
230
|
-
if (process.env.NODE_ENV === 'production') {
|
|
231
|
-
return 'production';
|
|
232
|
-
}
|
|
233
|
-
return 'development';
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Checks if running in CI environment.
|
|
237
|
-
*/
|
|
238
|
-
export function isCI() {
|
|
239
|
-
return Boolean(process.env.CI ||
|
|
240
|
-
process.env.GITHUB_ACTIONS ||
|
|
241
|
-
process.env.GITLAB_CI ||
|
|
242
|
-
process.env.CIRCLECI ||
|
|
243
|
-
process.env.TRAVIS ||
|
|
244
|
-
process.env.JENKINS_URL);
|
|
245
|
-
}
|
|
246
|
-
//# sourceMappingURL=env.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../../../../scripts/lib/validation/env.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Validation Module
|
|
3
|
-
*
|
|
4
|
-
* Provides validation utilities for environment, database, pre-execution, and post-execution.
|
|
5
|
-
*
|
|
6
|
-
* @dependencies
|
|
7
|
-
* - scripts/lib/validation/database.ts - Database validation utilities
|
|
8
|
-
* - scripts/lib/validation/env.ts - Environment validation utilities
|
|
9
|
-
* - scripts/lib/validation/post-execution.ts - Post-execution validation
|
|
10
|
-
* - scripts/lib/validation/pre-execution.ts - Pre-execution validation
|
|
11
|
-
*/
|
|
12
|
-
export * from './database.js';
|
|
13
|
-
export * from './env.js';
|
|
14
|
-
export * from './post-execution.js';
|
|
15
|
-
export * from './pre-execution.js';
|
|
16
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../scripts/lib/validation/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA;AACxB,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Validation Module
|
|
3
|
-
*
|
|
4
|
-
* Provides validation utilities for environment, database, pre-execution, and post-execution.
|
|
5
|
-
*
|
|
6
|
-
* @dependencies
|
|
7
|
-
* - scripts/lib/validation/database.ts - Database validation utilities
|
|
8
|
-
* - scripts/lib/validation/env.ts - Environment validation utilities
|
|
9
|
-
* - scripts/lib/validation/post-execution.ts - Post-execution validation
|
|
10
|
-
* - scripts/lib/validation/pre-execution.ts - Pre-execution validation
|
|
11
|
-
*/
|
|
12
|
-
export * from './database.js';
|
|
13
|
-
export * from './env.js';
|
|
14
|
-
export * from './post-execution.js';
|
|
15
|
-
export * from './pre-execution.js';
|
|
16
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../scripts/lib/validation/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA;AACxB,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA"}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Post-Execution Validation
|
|
3
|
-
*
|
|
4
|
-
* Validation checks to run after script execution to verify
|
|
5
|
-
* correctness and completeness of operations.
|
|
6
|
-
*
|
|
7
|
-
* @dependencies
|
|
8
|
-
* - node:child_process - Process execution for validation commands
|
|
9
|
-
* - node:fs - Synchronous file system checks
|
|
10
|
-
* - node:fs/promises - File stat operations
|
|
11
|
-
* - node:util - Promisify utilities for exec
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* ```typescript
|
|
15
|
-
* const validator = new PostExecutionValidator()
|
|
16
|
-
*
|
|
17
|
-
* const result = await validator.validate({
|
|
18
|
-
* checks: ['files', 'database'],
|
|
19
|
-
* expectedFiles: ['output.json', 'backup.sql'],
|
|
20
|
-
* expectedRecords: { users: 10, posts: 50 },
|
|
21
|
-
* })
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
/**
|
|
25
|
-
* Post-execution check types
|
|
26
|
-
*/
|
|
27
|
-
export type PostCheckType = 'files' | 'database' | 'output' | 'side-effects';
|
|
28
|
-
/**
|
|
29
|
-
* Post-execution validation options
|
|
30
|
-
*/
|
|
31
|
-
export interface PostValidationOptions {
|
|
32
|
-
/** Checks to perform */
|
|
33
|
-
checks?: PostCheckType[];
|
|
34
|
-
/** Files that should exist */
|
|
35
|
-
expectedFiles?: string[];
|
|
36
|
-
/** Files that should not exist */
|
|
37
|
-
unexpectedFiles?: string[];
|
|
38
|
-
/** Expected file sizes (path: minBytes) */
|
|
39
|
-
expectedFileSizes?: Record<string, number>;
|
|
40
|
-
/** Expected database record counts */
|
|
41
|
-
expectedRecords?: Record<string, number>;
|
|
42
|
-
/** Expected output structure */
|
|
43
|
-
expectedOutput?: unknown;
|
|
44
|
-
/** Custom validation functions */
|
|
45
|
-
customValidators?: Array<() => Promise<boolean>>;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Post-execution validation result
|
|
49
|
-
*/
|
|
50
|
-
export interface PostValidationResult {
|
|
51
|
-
/** Whether all checks passed */
|
|
52
|
-
passed: boolean;
|
|
53
|
-
/** Validation errors */
|
|
54
|
-
errors: string[];
|
|
55
|
-
/** Validation warnings */
|
|
56
|
-
warnings: string[];
|
|
57
|
-
/** Check details */
|
|
58
|
-
details: Record<string, unknown>;
|
|
59
|
-
}
|
|
60
|
-
export declare class PostExecutionValidator {
|
|
61
|
-
/**
|
|
62
|
-
* Validate post-execution state
|
|
63
|
-
*/
|
|
64
|
-
validate(options?: PostValidationOptions): Promise<PostValidationResult>;
|
|
65
|
-
/**
|
|
66
|
-
* Check file existence and properties
|
|
67
|
-
*/
|
|
68
|
-
private checkFiles;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Create a post-execution validator
|
|
72
|
-
*/
|
|
73
|
-
export declare function createPostExecutionValidator(): PostExecutionValidator;
|
|
74
|
-
//# sourceMappingURL=post-execution.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"post-execution.d.ts","sourceRoot":"","sources":["../../../../../../scripts/lib/validation/post-execution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAaH;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,UAAU,GACV,QAAQ,GACR,cAAc,CAAA;AAElB;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wBAAwB;IACxB,MAAM,CAAC,EAAE,aAAa,EAAE,CAAA;IAExB,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IAExB,kCAAkC;IAClC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAE1B,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE1C,sCAAsC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAExC,gCAAgC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAA;IAExB,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,gCAAgC;IAChC,MAAM,EAAE,OAAO,CAAA;IAEf,wBAAwB;IACxB,MAAM,EAAE,MAAM,EAAE,CAAA;IAEhB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAA;IAElB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC;AAMD,qBAAa,sBAAsB;IACjC;;OAEG;IACG,QAAQ,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA8ClF;;OAEG;YACW,UAAU;CAyCzB;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,sBAAsB,CAErE"}
|