diff --git a/.eslintrc.json b/.eslintrc.json index a64ed3f..f2b7fac 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -34,7 +34,10 @@ // Import/Export rules // General code quality rules - "no-unused-vars": ["error", { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" }], + "no-unused-vars": [ + "error", + { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" } + ], "prefer-const": "error", "no-var": "error", "no-console": "warn", @@ -95,4 +98,4 @@ } } ] -} \ No newline at end of file +} diff --git a/client/src/components/tournament-card.tsx b/client/src/components/tournament-card.tsx index 9be3d2d..c1e4769 100644 --- a/client/src/components/tournament-card.tsx +++ b/client/src/components/tournament-card.tsx @@ -201,4 +201,3 @@ export default function TournamentCard({ ); } - diff --git a/client/src/components/ui/carousel.tsx b/client/src/components/ui/carousel.tsx index b488976..ed678ce 100644 --- a/client/src/components/ui/carousel.tsx +++ b/client/src/components/ui/carousel.tsx @@ -238,4 +238,3 @@ export { CarouselPrevious, CarouselNext, }; - diff --git a/client/src/components/ui/chart.tsx b/client/src/components/ui/chart.tsx index c28ac2e..b9678d3 100644 --- a/client/src/components/ui/chart.tsx +++ b/client/src/components/ui/chart.tsx @@ -62,7 +62,9 @@ const ChartContainer = React.forwardRef< ChartContainer.displayName = "Chart"; const ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => { - const colorConfig = Object.entries(config).filter(([, itemConfig]) => itemConfig.theme || itemConfig.color); + const colorConfig = Object.entries(config).filter( + ([, itemConfig]) => itemConfig.theme || itemConfig.color, + ); if (!colorConfig.length) { return null; diff --git a/client/src/components/ui/sidebar.tsx b/client/src/components/ui/sidebar.tsx index a2c0e45..b89ca72 100644 --- a/client/src/components/ui/sidebar.tsx +++ b/client/src/components/ui/sidebar.tsx @@ -561,9 +561,7 @@ const SidebarMenuButton = React.forwardRef< return button; } - const tooltipConfig = typeof tooltip === "string" - ? { children: tooltip } - : tooltip; + const tooltipConfig = typeof tooltip === "string" ? { children: tooltip } : tooltip; const tooltipProps = { delayDuration: 0, diff --git a/client/src/lib/websocket.ts b/client/src/lib/websocket.ts index a702382..b05760f 100644 --- a/client/src/lib/websocket.ts +++ b/client/src/lib/websocket.ts @@ -80,10 +80,10 @@ export function useWebSocket(onMessage?: (message: WebSocketMessage) => void) { const jitter = Math.random() * 1000; // Add some randomness const finalDelay = delay + jitter; reconnectAttempts++; - reconnectTimeoutRef.current = window.setTimeout(connect, finalDelay); - } else { - websocketCallbacks.current.forEach((callback) => - callback({ + reconnectTimeoutRef.current = window.setTimeout(connect, finalDelay); + } else { + websocketCallbacks.current.forEach((callback) => + callback({ type: "error", error: "Connection failed after maximum attempts", }), diff --git a/client/src/pages/tournament-detail.tsx b/client/src/pages/tournament-detail.tsx index 308aee5..df7142d 100644 --- a/client/src/pages/tournament-detail.tsx +++ b/client/src/pages/tournament-detail.tsx @@ -362,4 +362,3 @@ export default function TournamentDetailPage() { ); } - diff --git a/client/src/pages/tournaments.tsx b/client/src/pages/tournaments.tsx index 902f3ec..879bb76 100644 --- a/client/src/pages/tournaments.tsx +++ b/client/src/pages/tournaments.tsx @@ -240,4 +240,3 @@ export default function TournamentsPage() { ); } - diff --git a/server/auth.ts b/server/auth.ts index 9985b5d..bb89e6e 100644 --- a/server/auth.ts +++ b/server/auth.ts @@ -177,4 +177,3 @@ export function telegramAuthMiddleware(req: Request, res: any, next: any) { next(); } - diff --git a/server/db.ts b/server/db.ts index 863e4bf..4422af1 100644 --- a/server/db.ts +++ b/server/db.ts @@ -38,4 +38,3 @@ export async function checkDatabaseConnection(): Promise { return false; } } - diff --git a/server/errorHandler.ts b/server/errorHandler.ts index d698f51..cbff3b8 100644 --- a/server/errorHandler.ts +++ b/server/errorHandler.ts @@ -129,7 +129,7 @@ function getStatusCode(error: AppError): number { * Extract user context from request for logging */ function extractUserContext(req: Request): Record { - const { telegramUser } = (req as any); + const { telegramUser } = req as any; return { userId: telegramUser?.id, username: telegramUser?.username, @@ -307,4 +307,3 @@ export default { createSecurityError, createDatabaseError, }; - diff --git a/server/logger.ts b/server/logger.ts index 0320f8b..d8950e7 100644 --- a/server/logger.ts +++ b/server/logger.ts @@ -10,15 +10,16 @@ const logger = winston.createLogger({ ), transports: [ new winston.transports.Console({ - format: winston.format.combine( - winston.format.colorize(), - winston.format.simple(), - ), + format: winston.format.combine(winston.format.colorize(), winston.format.simple()), }), ], }); -export function logRequest(req: Request, message: string, level: "info" | "warn" | "error" = "info") { +export function logRequest( + req: Request, + message: string, + level: "info" | "warn" | "error" = "info", +) { const userContext = { ip: req.ip, userAgent: req.get("User-Agent"), diff --git a/server/middleware.ts b/server/middleware.ts index 6e2b146..9e97b5e 100644 --- a/server/middleware.ts +++ b/server/middleware.ts @@ -239,4 +239,3 @@ export const notFound = (req: Request, res: Response) => { code: "NOT_FOUND", }); }; - diff --git a/server/rateLimiter.simple.ts b/server/rateLimiter.simple.ts index 01f4190..66a4ecb 100644 --- a/server/rateLimiter.simple.ts +++ b/server/rateLimiter.simple.ts @@ -25,4 +25,3 @@ export function createSimpleRateLimit() { // Placeholder for simple rate limiting implementation return generalLimiter; } - diff --git a/server/rateLimiter.ts b/server/rateLimiter.ts index a9fad32..c8c19db 100644 --- a/server/rateLimiter.ts +++ b/server/rateLimiter.ts @@ -9,7 +9,7 @@ function shouldSkipRateLimit(): boolean { // Safe key generator for IPv6 compatibility function safeKeyGenerator(req: Request, prefix = ""): string { - const { telegramUser } = (req as any); + const { telegramUser } = req as any; if (telegramUser?.id) { return `${prefix}${telegramUser.id.toString()}`; } @@ -34,7 +34,7 @@ export const generalLimiter = rateLimit({ legacyHeaders: false, // Disable the `X-RateLimit-*` headers keyGenerator: (req: Request) => { // Use Telegram user ID if available, otherwise fall back to IP - const { telegramUser } = (req as any); + const { telegramUser } = req as any; if (telegramUser?.id) { return telegramUser.id.toString(); } @@ -136,9 +136,7 @@ export function createCustomLimiter(options: { }, standardHeaders: true, legacyHeaders: false, - keyGenerator: - options.keyGenerator || - ((req: Request) => safeKeyGenerator(req)), + keyGenerator: options.keyGenerator || ((req: Request) => safeKeyGenerator(req)), skip: () => { return shouldSkipRateLimit(); }, @@ -174,4 +172,3 @@ export default { search: searchLimiter, createCustom: createCustomLimiter, }; - diff --git a/server/routes.ts b/server/routes.ts index fb4250b..0e25155 100644 --- a/server/routes.ts +++ b/server/routes.ts @@ -299,4 +299,3 @@ declare global { } } } - diff --git a/server/validation.ts b/server/validation.ts index f656baf..ce5358f 100644 --- a/server/validation.ts +++ b/server/validation.ts @@ -429,4 +429,3 @@ export default { secureString, sanitizeString, }; -