| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| import { Hono } from 'hono'; |
| import { cors } from 'hono/cors'; |
| import { logger } from 'hono/logger'; |
| import { generateWorkflowRoute } from './routes/generate'; |
| import { validateWorkflowRoute } from './routes/validate'; |
| import { simulateWorkflowRoute } from './routes/simulate'; |
| import { deployWorkflowRoute } from './routes/deploy'; |
| import { approvalRoute } from './routes/approval'; |
| import { activateWorkflowRoute } from './routes/activate'; |
| import { reportsRoute } from './routes/reports'; |
| import { healthRoute } from './routes/health'; |
| import { authMiddleware } from './middleware/auth'; |
| import { rateLimitMiddleware } from './middleware/rateLimit'; |
| import { errorHandler } from './middleware/errorHandler'; |
| import type { Env } from './types/env'; |
|
|
| const app = new Hono<{ Bindings: Env }>(); |
|
|
| |
| app.use('*', cors({ |
| origin: ['https://your-frontend.pages.dev', 'http://localhost:3000'], |
| allowHeaders: ['Content-Type', 'Authorization', 'X-API-Key'], |
| allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], |
| maxAge: 86400, |
| })); |
|
|
| app.use('*', logger()); |
| app.use('*', errorHandler); |
|
|
| |
| app.route('/health', healthRoute); |
|
|
| |
| app.use('/api/*', authMiddleware); |
| app.use('/api/*', rateLimitMiddleware); |
|
|
| app.route('/api/workflows', generateWorkflowRoute); |
| app.route('/api/workflows', validateWorkflowRoute); |
| app.route('/api/workflows', simulateWorkflowRoute); |
| app.route('/api/workflows', deployWorkflowRoute); |
| app.route('/api/workflows', approvalRoute); |
| app.route('/api/workflows', activateWorkflowRoute); |
| app.route('/api/reports', reportsRoute); |
|
|
| |
| app.notFound((c) => { |
| return c.json({ |
| success: false, |
| error: 'Route not found', |
| available_routes: [ |
| 'POST /api/workflows/generate', |
| 'POST /api/workflows/validate', |
| 'POST /api/workflows/simulate', |
| 'POST /api/workflows/deploy', |
| 'POST /api/workflows/approve', |
| 'POST /api/workflows/activate', |
| 'GET /api/reports/workflow/:id', |
| 'GET /api/reports/validation/:id', |
| 'GET /api/reports/simulation/:id', |
| 'GET /health', |
| ], |
| }, 404); |
| }); |
|
|
| export default app; |
|
|