const express = require('express'); const { isEnabled } = require('@librechat/api'); const { uaParser, checkBan, requireJwtAuth, messageIpLimiter, configMiddleware, concurrentLimiter, messageUserLimiter, } = require('~/server/middleware'); const { v1 } = require('./v1'); const chat = require('./chat'); const { LIMIT_CONCURRENT_MESSAGES, LIMIT_MESSAGE_IP, LIMIT_MESSAGE_USER } = process.env ?? {}; const router = express.Router(); router.use(requireJwtAuth); router.use(checkBan); router.use(uaParser); router.use('/', v1); const chatRouter = express.Router(); chatRouter.use(configMiddleware); if (isEnabled(LIMIT_CONCURRENT_MESSAGES)) { chatRouter.use(concurrentLimiter); } if (isEnabled(LIMIT_MESSAGE_IP)) { chatRouter.use(messageIpLimiter); } if (isEnabled(LIMIT_MESSAGE_USER)) { chatRouter.use(messageUserLimiter); } chatRouter.use('/', chat); router.use('/chat', chatRouter); module.exports = router;