Files
Rental-operations-platform/scripts/validate-phase14-environment.mjs
T
2026-06-25 20:08:39 -04:00

36 lines
1.2 KiB
JavaScript

import { readFile } from 'node:fs/promises';
import path from 'node:path';
import { fail, pass, repositoryRoot } from './lib.mjs';
const failures = [];
const example = await readFile(path.join(repositoryRoot, '.env.example'), 'utf8');
const implementation = await readFile(
path.join(repositoryRoot, 'src/lib/integrations/environment.ts'),
'utf8',
);
const keys = [
'NEXT_PUBLIC_DEMO_ENABLED',
'DEMO_SUBMISSION_MODE',
'DEMO_REQUEST_TIMEOUT_MS',
'DEMO_IDEMPOTENCY_TTL_SECONDS',
'DEMO_TEST_SCENARIOS_ENABLED',
'DEMO_LOCAL_TEST_MODE',
'NEXT_PUBLIC_ANALYTICS_MODE',
];
for (const key of keys) {
if (!example.includes(`${key}=`)) failures.push(`.env.example omits ${key}.`);
if (!implementation.includes(key)) failures.push(`Environment validator omits ${key}.`);
}
if (!example.includes('DEMO_SUBMISSION_MODE=blocked')) {
failures.push('Safe production example does not default demo submission to blocked.');
}
if (!example.includes('NEXT_PUBLIC_ANALYTICS_MODE=disabled')) {
failures.push('Safe production example does not default analytics to disabled.');
}
if (failures.length) fail(failures);
else
pass(
'Phase 14 environment inventory is explicit and defaults production integrations to blocked.',
);