import { z } from 'zod'; export const workerConfigSchema = z.object({ enabled: z.boolean().default(true), concurrency: z.number().min(1).max(10).default(2), queueName: z.string().default('accessibility-scans'), redis: z.object({ host: z.string().default('localhost'), port: z.number().default(6379), password: z.string().optional(), db: z.number().default(2), // Different DB for WCAG maxRetriesPerRequest: z.number().nullable().default(null), }).default({}), jobs: z.object({ scan: z.object({ priority: z.number().default(0), attempts: z.number().default(3), backoff: z.object({ type: z.enum(['exponential', 'fixed']).default('exponential'), delay: z.number().default(2000), }).default({}), timeout: z.number().default(300000), // 5 minutes removeOnComplete: z.object({ age: z.number().default(86400), // 24 hours count: z.number().default(100), }).default({}), removeOnFail: z.object({ age: z.number().default(604800), // 7 days count: z.number().default(500), }).default({}), }).default({}), report: z.object({ priority: z.number().default(1), attempts: z.number().default(2), backoff: z.object({ type: z.enum(['exponential', 'fixed']).default('exponential'), delay: z.number().default(5000), }).default({}), timeout: z.number().default(600000), // 10 minutes }).default({}), }).default({}), scheduler: z.object({ enabled: z.boolean().default(true), interval: z.number().default(60000), // Check every minute timezone: z.string().default('UTC'), }).default({}), }); export type WorkerConfig = z.infer;