File size: 1,234 Bytes
aa2e6af
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
const { RateLimitPrefix } = require('librechat-data-provider');

/**
 *
 * @param {TCustomConfig['rateLimits'] | undefined} rateLimits
 */
const handleRateLimits = (rateLimits) => {
  if (!rateLimits) {
    return;
  }

  const rateLimitKeys = {
    fileUploads: RateLimitPrefix.FILE_UPLOAD,
    conversationsImport: RateLimitPrefix.IMPORT,
    tts: RateLimitPrefix.TTS,
    stt: RateLimitPrefix.STT,
  };

  Object.entries(rateLimitKeys).forEach(([key, prefix]) => {
    const rateLimit = rateLimits[key];
    if (rateLimit) {
      setRateLimitEnvVars(prefix, rateLimit);
    }
  });
};

/**
 * Set environment variables for rate limit configurations
 *
 * @param {string} prefix - Prefix for environment variable names
 * @param {object} rateLimit - Rate limit configuration object
 */
const setRateLimitEnvVars = (prefix, rateLimit) => {
  const envVarsMapping = {
    ipMax: `${prefix}_IP_MAX`,
    ipWindowInMinutes: `${prefix}_IP_WINDOW`,
    userMax: `${prefix}_USER_MAX`,
    userWindowInMinutes: `${prefix}_USER_WINDOW`,
  };

  Object.entries(envVarsMapping).forEach(([key, envVar]) => {
    if (rateLimit[key] !== undefined) {
      process.env[envVar] = rateLimit[key];
    }
  });
};

module.exports = handleRateLimits;