refactor: apply new utilities and constants across codebase
P0 fixes: - KV Cache migration: security.ts now delegates to kv-cache.ts (74% code reduction) - Environment validation: index.ts validates env on first request - Type safety: optimistic-lock.ts removes `as any` with proper interface P1 improvements: - Constants applied to deposit-agent.ts (TRANSACTION_STATUS, TRANSACTION_TYPE) - Constants applied to callback-handler.ts (CALLBACK_PREFIXES) - Constants applied to domain-tool.ts (MESSAGE_MARKERS) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
36
src/index.ts
36
src/index.ts
@@ -10,13 +10,49 @@ import { handleProvisionQueue, handleProvisionDLQ } from './server-provision';
|
||||
import { timingSafeEqual } from './security';
|
||||
import { createLogger } from './utils/logger';
|
||||
import { notifyAdmin } from './services/notification';
|
||||
import { validateEnv } from './utils/env-validation';
|
||||
import { Hono } from 'hono';
|
||||
|
||||
const logger = createLogger('worker');
|
||||
|
||||
// Environment validation flag (checked once per instance)
|
||||
let envValidated = false;
|
||||
|
||||
// Hono app with Env type
|
||||
const app = new Hono<{ Bindings: Env }>();
|
||||
|
||||
// Environment validation middleware (runs once per worker instance)
|
||||
app.use('*', async (c, next) => {
|
||||
if (!envValidated) {
|
||||
// Cast to Record<string, unknown> for validation
|
||||
const result = validateEnv(c.env as unknown as Record<string, unknown>);
|
||||
if (!result.success) {
|
||||
logger.error('Environment validation failed on startup', new Error('Invalid configuration'), {
|
||||
errors: result.errors,
|
||||
});
|
||||
return c.json({
|
||||
error: 'Configuration error',
|
||||
message: 'The worker is not properly configured. Please check environment variables.',
|
||||
details: result.errors,
|
||||
}, 500);
|
||||
}
|
||||
|
||||
// Log warnings but continue
|
||||
if (result.warnings.length > 0) {
|
||||
logger.warn('Environment configuration warnings', { warnings: result.warnings });
|
||||
}
|
||||
|
||||
logger.info('Environment validation passed', {
|
||||
environment: c.env.ENVIRONMENT || 'production',
|
||||
warnings: result.warnings.length,
|
||||
});
|
||||
|
||||
envValidated = true;
|
||||
}
|
||||
|
||||
return await next();
|
||||
});
|
||||
|
||||
// Health check (public - minimal info only)
|
||||
app.get('/health', () => handleHealthCheck());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user