refactor: migrate checkEmailConfig to TypeScript and update imports

This commit is contained in:
Danny Avila 2025-08-20 01:07:31 -04:00
parent ab4596206f
commit 550bf56077
No known key found for this signature in database
GPG key ID: BF31EEB2C5CA0956
8 changed files with 27 additions and 32 deletions

View file

@ -1,8 +1,8 @@
const bcrypt = require('bcryptjs'); const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken'); const jwt = require('jsonwebtoken');
const { webcrypto } = require('node:crypto'); const { webcrypto } = require('node:crypto');
const { isEnabled } = require('@librechat/api');
const { logger } = require('@librechat/data-schemas'); const { logger } = require('@librechat/data-schemas');
const { isEnabled, checkEmailConfig } = require('@librechat/api');
const { SystemRoles, errorsToString } = require('librechat-data-provider'); const { SystemRoles, errorsToString } = require('librechat-data-provider');
const { const {
findUser, findUser,
@ -21,9 +21,9 @@ const {
generateRefreshToken, generateRefreshToken,
} = require('~/models'); } = require('~/models');
const { isEmailDomainAllowed } = require('~/server/services/domains'); const { isEmailDomainAllowed } = require('~/server/services/domains');
const { checkEmailConfig, sendEmail } = require('~/server/utils');
const { registerSchema } = require('~/strategies/validators'); const { registerSchema } = require('~/strategies/validators');
const { getAppConfig } = require('~/server/services/Config'); const { getAppConfig } = require('~/server/services/Config');
const { sendEmail } = require('~/server/utils');
const domains = { const domains = {
client: process.env.DOMAIN_CLIENT, client: process.env.DOMAIN_CLIENT,

View file

@ -1,12 +1,11 @@
const { webSearchKeys } = require('@librechat/api'); const { logger } = require('@librechat/data-schemas');
const { isEnabled, webSearchKeys, checkEmailConfig } = require('@librechat/api');
const { const {
Constants, Constants,
extractVariableName,
deprecatedAzureVariables, deprecatedAzureVariables,
conflictingAzureVariables, conflictingAzureVariables,
extractVariableName,
} = require('librechat-data-provider'); } = require('librechat-data-provider');
const { isEnabled, checkEmailConfig } = require('~/server/utils');
const { logger } = require('~/config');
const secretDefaults = { const secretDefaults = {
CREDS_KEY: 'f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0', CREDS_KEY: 'f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0',
@ -76,7 +75,7 @@ async function checkHealth() {
if (response?.ok && response?.status === 200) { if (response?.ok && response?.status === 200) {
logger.info(`RAG API is running and reachable at ${process.env.RAG_API_URL}.`); logger.info(`RAG API is running and reachable at ${process.env.RAG_API_URL}.`);
} }
} catch (error) { } catch {
logger.warn( logger.warn(
`RAG API is either not running or not reachable at ${process.env.RAG_API_URL}, you may experience errors with file uploads.`, `RAG API is either not running or not reachable at ${process.env.RAG_API_URL}, you may experience errors with file uploads.`,
); );

View file

@ -5,28 +5,7 @@ const sendEmail = require('./sendEmail');
const queue = require('./queue'); const queue = require('./queue');
const files = require('./files'); const files = require('./files');
/**
* Check if email configuration is set
* @returns {Boolean}
*/
function checkEmailConfig() {
// Check if Mailgun is configured
const hasMailgunConfig =
!!process.env.MAILGUN_API_KEY && !!process.env.MAILGUN_DOMAIN && !!process.env.EMAIL_FROM;
// Check if SMTP is configured
const hasSMTPConfig =
(!!process.env.EMAIL_SERVICE || !!process.env.EMAIL_HOST) &&
!!process.env.EMAIL_USERNAME &&
!!process.env.EMAIL_PASSWORD &&
!!process.env.EMAIL_FROM;
// Return true if either Mailgun or SMTP is properly configured
return hasMailgunConfig || hasSMTPConfig;
}
module.exports = { module.exports = {
checkEmailConfig,
...handleText, ...handleText,
countTokens, countTokens,
removePorts, removePorts,

View file

@ -4,9 +4,8 @@ const axios = require('axios');
const FormData = require('form-data'); const FormData = require('form-data');
const nodemailer = require('nodemailer'); const nodemailer = require('nodemailer');
const handlebars = require('handlebars'); const handlebars = require('handlebars');
const { logAxiosError } = require('@librechat/api');
const { logger } = require('@librechat/data-schemas'); const { logger } = require('@librechat/data-schemas');
const { isEnabled } = require('~/server/utils/handleText'); const { logAxiosError, isEnabled } = require('@librechat/api');
/** /**
* Sends an email using Mailgun API. * Sends an email using Mailgun API.

View file

@ -1,7 +1,7 @@
const { logger } = require('@librechat/data-schemas'); const { logger } = require('@librechat/data-schemas');
const { errorsToString } = require('librechat-data-provider'); const { errorsToString } = require('librechat-data-provider');
const { isEnabled, checkEmailConfig } = require('@librechat/api');
const { Strategy: PassportLocalStrategy } = require('passport-local'); const { Strategy: PassportLocalStrategy } = require('passport-local');
const { isEnabled, checkEmailConfig } = require('~/server/utils');
const { findUser, comparePassword, updateUser } = require('~/models'); const { findUser, comparePassword, updateUser } = require('~/models');
const { loginSchema } = require('./validators'); const { loginSchema } = require('./validators');

View file

@ -1,10 +1,11 @@
const path = require('path'); const path = require('path');
const mongoose = require('mongoose'); const mongoose = require('mongoose');
const { checkEmailConfig } = require('@librechat/api');
const { User } = require('@librechat/data-schemas').createModels(mongoose); const { User } = require('@librechat/data-schemas').createModels(mongoose);
require('module-alias')({ base: path.resolve(__dirname, '..', 'api') }); require('module-alias')({ base: path.resolve(__dirname, '..', 'api') });
const { sendEmail, checkEmailConfig } = require('~/server/utils');
const { askQuestion, silentExit } = require('./helpers'); const { askQuestion, silentExit } = require('./helpers');
const { createInvite } = require('~/models/inviteUser'); const { createInvite } = require('~/models/inviteUser');
const { sendEmail } = require('~/server/utils');
const connect = require('./connect'); const connect = require('./connect');
(async () => { (async () => {

View file

@ -0,0 +1,16 @@
/**
* Check if email configuration is set
* @returns Returns `true` if either Mailgun or SMTP is properly configured
*/
export function checkEmailConfig(): boolean {
const hasMailgunConfig =
!!process.env.MAILGUN_API_KEY && !!process.env.MAILGUN_DOMAIN && !!process.env.EMAIL_FROM;
const hasSMTPConfig =
(!!process.env.EMAIL_SERVICE || !!process.env.EMAIL_HOST) &&
!!process.env.EMAIL_USERNAME &&
!!process.env.EMAIL_PASSWORD &&
!!process.env.EMAIL_FROM;
return hasMailgunConfig || hasSMTPConfig;
}

View file

@ -1,6 +1,7 @@
export * from './axios'; export * from './axios';
export * from './azure'; export * from './azure';
export * from './common'; export * from './common';
export * from './email';
export * from './env'; export * from './env';
export * from './events'; export * from './events';
export * from './files'; export * from './files';