WIP: first pass, massive refactor of model imports

This commit is contained in:
Danny Avila 2025-05-30 12:54:24 -04:00
parent c682d45fb2
commit ab5450be8b
No known key found for this signature in database
GPG key ID: BF31EEB2C5CA0956
53 changed files with 179 additions and 72 deletions

View file

@ -1,8 +1,8 @@
const { logger } = require('@librechat/data-schemas');
const { ViolationTypes } = require('librechat-data-provider'); const { ViolationTypes } = require('librechat-data-provider');
const { deleteAllUserSessions } = require('@librechat/data-schemas');
const { isEnabled, math, removePorts } = require('~/server/utils'); const { isEnabled, math, removePorts } = require('~/server/utils');
const { deleteAllUserSessions } = require('~/models');
const getLogStores = require('./getLogStores'); const getLogStores = require('./getLogStores');
const { logger } = require('~/config');
const { BAN_VIOLATIONS, BAN_INTERVAL } = process.env ?? {}; const { BAN_VIOLATIONS, BAN_INTERVAL } = process.env ?? {};
const interval = math(BAN_INTERVAL, 20); const interval = math(BAN_INTERVAL, 20);

View file

@ -1,6 +1,10 @@
const mongoose = require('mongoose');
const { MeiliSearch } = require('meilisearch'); const { MeiliSearch } = require('meilisearch');
const { Message, Conversation, logger } = require('@librechat/data-schemas');
const { isEnabled } = require('~/server/utils'); const { isEnabled } = require('~/server/utils');
const { logger } = require('@librechat/data-schemas');
const Conversation = mongoose.models.Conversation;
const Message = mongoose.models.Message;
const searchEnabled = isEnabled(process.env.SEARCH); const searchEnabled = isEnabled(process.env.SEARCH);
const indexingDisabled = isEnabled(process.env.MEILI_NO_SYNC); const indexingDisabled = isEnabled(process.env.MEILI_NO_SYNC);

View file

@ -1,7 +1,5 @@
const mongoose = require('mongoose'); const mongoose = require('mongoose');
const { actionSchema } = require('@librechat/data-schemas'); const Action = mongoose.models.Action;
const Action = mongoose.model('action', actionSchema);
/** /**
* Update an action with new data without overwriting existing properties, * Update an action with new data without overwriting existing properties,

View file

@ -1,6 +1,6 @@
const mongoose = require('mongoose'); const mongoose = require('mongoose');
const crypto = require('node:crypto'); const crypto = require('node:crypto');
const { Agent } = require('@librechat/data-schemas'); const { logger } = require('@librechat/data-schemas');
const { SystemRoles, Tools, actionDelimiter } = require('librechat-data-provider'); const { SystemRoles, Tools, actionDelimiter } = require('librechat-data-provider');
const { GLOBAL_PROJECT_NAME, EPHEMERAL_AGENT_ID, mcp_delimiter } = const { GLOBAL_PROJECT_NAME, EPHEMERAL_AGENT_ID, mcp_delimiter } =
require('librechat-data-provider').Constants; require('librechat-data-provider').Constants;
@ -13,7 +13,8 @@ const {
} = require('./Project'); } = require('./Project');
const getLogStores = require('~/cache/getLogStores'); const getLogStores = require('~/cache/getLogStores');
const { getActions } = require('./Action'); const { getActions } = require('./Action');
const { logger } = require('~/config');
const Agent = mongoose.models.Agent;
/** /**
* Create an agent with the provided data. * Create an agent with the provided data.

View file

@ -8,19 +8,21 @@ process.env.CREDS_IV = '0123456789abcdef';
const mongoose = require('mongoose'); const mongoose = require('mongoose');
const { v4: uuidv4 } = require('uuid'); const { v4: uuidv4 } = require('uuid');
const { Agent } = require('@librechat/data-schemas');
const { MongoMemoryServer } = require('mongodb-memory-server'); const { MongoMemoryServer } = require('mongodb-memory-server');
const { const {
addAgentResourceFile,
removeAgentResourceFiles,
createAgent,
updateAgent,
getAgent, getAgent,
updateAgent,
deleteAgent, deleteAgent,
createAgent,
getListAgents, getListAgents,
updateAgentProjects, updateAgentProjects,
addAgentResourceFile,
removeAgentResourceFiles,
} = require('./Agent'); } = require('./Agent');
const Agent = mongoose.models.Agent;
describe('Agent Resource File Operations', () => { describe('Agent Resource File Operations', () => {
let mongoServer; let mongoServer;

View file

@ -1,4 +1,5 @@
const { Assistant } = require('@librechat/data-schemas'); const mongoose = require('mongoose');
const Assistant = mongoose.models.Assistant;
/** /**
* Update an assistant with new data without overwriting existing properties, * Update an assistant with new data without overwriting existing properties,

View file

@ -1,4 +1,7 @@
const { Banner, logger } = require('@librechat/data-schemas'); const mongoose = require('mongoose');
const { logger } = require('@librechat/data-schemas');
const Banner = mongoose.models.Banner;
/** /**
* Retrieves the current active banner. * Retrieves the current active banner.

View file

@ -1,5 +1,9 @@
const { Conversation, logger } = require('@librechat/data-schemas'); const mongoose = require('mongoose');
const { logger } = require('@librechat/data-schemas');
const { getMessages, deleteMessages } = require('./Message'); const { getMessages, deleteMessages } = require('./Message');
const Conversation = mongoose.models.Conversation;
/** /**
* Searches for a conversation by conversationId and returns a lean document with only conversationId and user. * Searches for a conversation by conversationId and returns a lean document with only conversationId and user.
* @param {string} conversationId - The conversation's ID. * @param {string} conversationId - The conversation's ID.

View file

@ -1,4 +1,8 @@
const { ConversationTag, Conversation, logger } = require('@librechat/data-schemas'); const mongoose = require('mongoose');
const { logger } = require('@librechat/data-schemas');
const ConversationTag = mongoose.models.ConversationTag;
const Conversation = mongoose.models.Conversation;
/** /**
* Retrieves all conversation tags for a user. * Retrieves all conversation tags for a user.

View file

@ -1,7 +1,8 @@
const mongoose = require('mongoose'); const mongoose = require('mongoose');
const { File } = require('@librechat/data-schemas'); const { logger } = require('@librechat/data-schemas');
const { EToolResources } = require('librechat-data-provider'); const { EToolResources } = require('librechat-data-provider');
const { logger } = require('~/config');
const File = mongoose.models.File;
/** /**
* Finds a file by its file_id with additional query options. * Finds a file by its file_id with additional query options.

View file

@ -1,5 +1,8 @@
const { z } = require('zod'); const { z } = require('zod');
const { Message, logger } = require('@librechat/data-schemas'); const mongoose = require('mongoose');
const { logger } = require('@librechat/data-schemas');
const Message = mongoose.models.Message;
const idSchema = z.string().uuid(); const idSchema = z.string().uuid();
/** /**

View file

@ -1,4 +1,7 @@
const { Preset, logger } = require('@librechat/data-schemas'); const mongoose = require('mongoose');
const { logger } = require('@librechat/data-schemas');
const Preset = mongoose.models.Preset;
const getPreset = async (user, presetId) => { const getPreset = async (user, presetId) => {
try { try {

View file

@ -1,6 +1,8 @@
const { Project } = require('@librechat/data-schemas'); const mongoose = require('mongoose');
const { GLOBAL_PROJECT_NAME } = require('librechat-data-provider').Constants; const { GLOBAL_PROJECT_NAME } = require('librechat-data-provider').Constants;
const Project = mongoose.models.Project;
/** /**
* Retrieve a project by ID and convert the found project document to a plain object. * Retrieve a project by ID and convert the found project document to a plain object.
* *

View file

@ -1,5 +1,6 @@
const mongoose = require('mongoose');
const { ObjectId } = require('mongodb'); const { ObjectId } = require('mongodb');
const { Prompt, PromptGroup, logger } = require('@librechat/data-schemas'); const { logger } = require('@librechat/data-schemas');
const { SystemRoles, SystemCategories, Constants } = require('librechat-data-provider'); const { SystemRoles, SystemCategories, Constants } = require('librechat-data-provider');
const { const {
getProjectByName, getProjectByName,
@ -9,6 +10,9 @@ const {
} = require('./Project'); } = require('./Project');
const { escapeRegExp } = require('~/server/utils'); const { escapeRegExp } = require('~/server/utils');
const PromptGroup = mongoose.models.PromptGroup;
const Prompt = mongoose.models.Prompt;
/** /**
* Create a pipeline for the aggregation to get prompt groups * Create a pipeline for the aggregation to get prompt groups
* @param {Object} query * @param {Object} query

View file

@ -6,9 +6,12 @@ const {
permissionsSchema, permissionsSchema,
removeNullishValues, removeNullishValues,
} = require('librechat-data-provider'); } = require('librechat-data-provider');
const { Role, logger } = require('@librechat/data-schemas'); const mongoose = require('mongoose');
const { logger } = require('@librechat/data-schemas');
const getLogStores = require('~/cache/getLogStores'); const getLogStores = require('~/cache/getLogStores');
const Role = mongoose.models.Role;
/** /**
* Retrieve a role by name and convert the found role document to a plain object. * Retrieve a role by name and convert the found role document to a plain object.
* If the role with the given name doesn't exist and the name is a system defined role, * If the role with the given name doesn't exist and the name is a system defined role,

View file

@ -1,5 +1,4 @@
const mongoose = require('mongoose'); const mongoose = require('mongoose');
const { Role, logger } = require('@librechat/data-schemas');
const { MongoMemoryServer } = require('mongodb-memory-server'); const { MongoMemoryServer } = require('mongodb-memory-server');
const { const {
SystemRoles, SystemRoles,
@ -10,6 +9,8 @@ const {
const { getRoleByName, updateAccessPermissions, initializeRoles } = require('~/models/Role'); const { getRoleByName, updateAccessPermissions, initializeRoles } = require('~/models/Role');
const getLogStores = require('~/cache/getLogStores'); const getLogStores = require('~/cache/getLogStores');
const Role = mongoose.models.Role;
// Mock the cache // Mock the cache
jest.mock('~/cache/getLogStores', () => jest.mock('~/cache/getLogStores', () =>
jest.fn().mockReturnValue({ jest.fn().mockReturnValue({

View file

@ -1,8 +1,12 @@
const { nanoid } = require('nanoid'); const { nanoid } = require('nanoid');
const mongoose = require('mongoose');
const { Constants } = require('librechat-data-provider'); const { Constants } = require('librechat-data-provider');
const { SharedLink, Conversation, logger } = require('@librechat/data-schemas'); const { logger } = require('@librechat/data-schemas');
const { getMessages } = require('./Message'); const { getMessages } = require('./Message');
const Conversation = mongoose.models.Conversation;
const SharedLink = mongoose.models.SharedLink;
class ShareServiceError extends Error { class ShareServiceError extends Error {
constructor(message, code) { constructor(message, code) {
super(message); super(message);

View file

@ -1,6 +1,8 @@
const { Token } = require('@librechat/data-schemas'); const mongoose = require('mongoose');
const { encryptV2 } = require('~/server/utils/crypto'); const { encryptV2 } = require('~/server/utils/crypto');
const Token = mongoose.models.Token;
/** /**
* Handles the OAuth token by creating or updating the token. * Handles the OAuth token by creating or updating the token.
* @param {object} fields * @param {object} fields

View file

@ -1,4 +1,7 @@
const { ToolCall } = require('@librechat/data-schemas'); const mongoose = require('mongoose');
const ToolCall = mongoose.models.ToolCall;
/** /**
* Create a new tool call * Create a new tool call
* @param {IToolCallData} toolCallData - The tool call data * @param {IToolCallData} toolCallData - The tool call data

View file

@ -1,8 +1,11 @@
const mongoose = require('mongoose'); const mongoose = require('mongoose');
const { Balance, Transaction, logger } = require('@librechat/data-schemas'); const { logger } = require('@librechat/data-schemas');
const { getBalanceConfig } = require('~/server/services/Config'); const { getBalanceConfig } = require('~/server/services/Config');
const { getMultiplier, getCacheMultiplier } = require('./tx'); const { getMultiplier, getCacheMultiplier } = require('./tx');
const Transaction = mongoose.models.Transaction;
const Balance = mongoose.models.Balance;
const cancelRate = 1.15; const cancelRate = 1.15;
/** /**

View file

@ -1,10 +1,10 @@
const mongoose = require('mongoose'); const mongoose = require('mongoose');
const { Balance } = require('@librechat/data-schemas');
const { MongoMemoryServer } = require('mongodb-memory-server'); const { MongoMemoryServer } = require('mongodb-memory-server');
const { spendTokens, spendStructuredTokens } = require('./spendTokens'); const { spendTokens, spendStructuredTokens } = require('./spendTokens');
const { getBalanceConfig } = require('~/server/services/Config'); const { getBalanceConfig } = require('~/server/services/Config');
const { getMultiplier, getCacheMultiplier } = require('./tx'); const { getMultiplier, getCacheMultiplier } = require('./tx');
const { createTransaction } = require('./Transaction'); const { createTransaction } = require('./Transaction');
const Balance = mongoose.models.Balance;
// Mock the custom config module so we can control the balance flag. // Mock the custom config module so we can control the balance flag.
jest.mock('~/server/services/Config'); jest.mock('~/server/services/Config');

View file

@ -1,9 +1,11 @@
const { Balance } = require('@librechat/data-schemas'); const mongoose = require('mongoose');
const { logger } = require('@librechat/data-schemas');
const { ViolationTypes } = require('librechat-data-provider'); const { ViolationTypes } = require('librechat-data-provider');
const { createAutoRefillTransaction } = require('./Transaction'); const { createAutoRefillTransaction } = require('./Transaction');
const { logViolation } = require('~/cache'); const { logViolation } = require('~/cache');
const { getMultiplier } = require('./tx'); const { getMultiplier } = require('./tx');
const { logger } = require('~/config');
const Balance = mongoose.models.Balance;
function isInvalidDate(date) { function isInvalidDate(date) {
return isNaN(date); return isNaN(date);

View file

@ -1,8 +1,9 @@
const mongoose = require('mongoose'); const mongoose = require('mongoose');
const { Message } = require('@librechat/data-schemas');
const { MongoMemoryServer } = require('mongodb-memory-server'); const { MongoMemoryServer } = require('mongodb-memory-server');
const { getMessages, bulkSaveMessages } = require('./Message'); const { getMessages, bulkSaveMessages } = require('./Message');
const Message = mongoose.models.Message;
// Original version of buildTree function // Original version of buildTree function
function buildTree({ messages, fileMap }) { function buildTree({ messages, fileMap }) {
if (messages === null) { if (messages === null) {

View file

@ -1,3 +1,7 @@
const mongoose = require('mongoose');
const { createModels, createMethods } = require('@librechat/data-schemas');
createModels(mongoose);
const methods = createMethods(mongoose);
const { comparePassword } = require('./userMethods'); const { comparePassword } = require('./userMethods');
const { const {
findFileById, findFileById,
@ -21,6 +25,7 @@ const { getConvoTitle, getConvo, saveConvo, deleteConvos } = require('./Conversa
const { getPreset, getPresets, savePreset, deletePresets } = require('./Preset'); const { getPreset, getPresets, savePreset, deletePresets } = require('./Preset');
module.exports = { module.exports = {
...methods,
comparePassword, comparePassword,
findFileById, findFileById,
createFile, createFile,

View file

@ -1,7 +1,9 @@
const mongoose = require('mongoose'); const mongoose = require('mongoose');
const { Token, logger } = require('@librechat/data-schemas'); const { logger } = require('@librechat/data-schemas');
const { getRandomValues, hashToken } = require('~/server/utils/crypto'); const { getRandomValues, hashToken } = require('~/server/utils/crypto');
const Token = mongoose.models.Token;
/** /**
* @module inviteUser * @module inviteUser
* @description This module provides functions to create and get user invites * @description This module provides functions to create and get user invites

View file

@ -1,8 +1,9 @@
const mongoose = require('mongoose'); const mongoose = require('mongoose');
const { MongoMemoryServer } = require('mongodb-memory-server'); const { MongoMemoryServer } = require('mongodb-memory-server');
const { Transaction, Balance } = require('@librechat/data-schemas');
const { spendTokens, spendStructuredTokens } = require('./spendTokens'); const { spendTokens, spendStructuredTokens } = require('./spendTokens');
const { createTransaction, createAutoRefillTransaction } = require('./Transaction'); const { createTransaction, createAutoRefillTransaction } = require('./Transaction');
const Transaction = mongoose.models.Transaction;
const Balance = mongoose.models.Balance;
// Mock the logger to prevent console output during tests // Mock the logger to prevent console output during tests
jest.mock('~/config', () => ({ jest.mock('~/config', () => ({

View file

@ -1,7 +1,8 @@
const cookies = require('cookie'); const cookies = require('cookie');
const jwt = require('jsonwebtoken'); const jwt = require('jsonwebtoken');
const mongoose = require('mongoose');
const openIdClient = require('openid-client'); const openIdClient = require('openid-client');
const { User, Session, logger } = require('@librechat/data-schemas'); const { logger } = require('@librechat/data-schemas');
const { const {
registerUser, registerUser,
resetPassword, resetPassword,
@ -12,6 +13,9 @@ const {
const { getOpenIdConfig } = require('~/strategies'); const { getOpenIdConfig } = require('~/strategies');
const { isEnabled } = require('~/server/utils'); const { isEnabled } = require('~/server/utils');
const Session = mongoose.models.Session;
const User = mongoose.models.User;
const registrationController = async (req, res) => { const registrationController = async (req, res) => {
try { try {
const response = await registerUser(req.body); const response = await registerUser(req.body);

View file

@ -1,4 +1,7 @@
const { Balance } = require('@librechat/data-schemas'); const mongoose = require('mongoose');
const Balance = mongoose.models.Balance;
async function balanceController(req, res) { async function balanceController(req, res) {
const balanceData = await Balance.findOne( const balanceData = await Balance.findOne(
{ user: req.user.id }, { user: req.user.id },

View file

@ -1,4 +1,5 @@
const { User, logger } = require('@librechat/data-schemas'); const mongoose = require('mongoose');
const { logger } = require('@librechat/data-schemas');
const { const {
generateTOTPSecret, generateTOTPSecret,
generateBackupCodes, generateBackupCodes,
@ -9,6 +10,8 @@ const {
const { encryptV3 } = require('~/server/utils/crypto'); const { encryptV3 } = require('~/server/utils/crypto');
const safeAppTitle = (process.env.APP_TITLE || 'LibreChat').replace(/\s+/g, ''); const safeAppTitle = (process.env.APP_TITLE || 'LibreChat').replace(/\s+/g, '');
const User = mongoose.models.User;
/** /**
* Enable 2FA for the user by generating a new TOTP secret and backup codes. * Enable 2FA for the user by generating a new TOTP secret and backup codes.
* The secret is encrypted and stored, and 2FA is marked as disabled until confirmed. * The secret is encrypted and stored, and 2FA is marked as disabled until confirmed.

View file

@ -4,7 +4,8 @@ const {
webSearchKeys, webSearchKeys,
extractWebSearchEnvVars, extractWebSearchEnvVars,
} = require('librechat-data-provider'); } = require('librechat-data-provider');
const { User, Session, Transaction, Balance, logger } = require('@librechat/data-schemas'); const mongoose = require('mongoose');
const { logger } = require('@librechat/data-schemas');
const { getFiles, deleteFiles, deleteConvos, deletePresets, deleteMessages } = require('~/models'); const { getFiles, deleteFiles, deleteConvos, deletePresets, deleteMessages } = require('~/models');
const { updateUserPluginAuth, deleteUserPluginAuth } = require('~/server/services/PluginService'); const { updateUserPluginAuth, deleteUserPluginAuth } = require('~/server/services/PluginService');
const { updateUserPluginsService, deleteUserKey } = require('~/server/services/UserService'); const { updateUserPluginsService, deleteUserKey } = require('~/server/services/UserService');
@ -14,6 +15,11 @@ const { processDeleteRequest } = require('~/server/services/Files/process');
const { deleteAllSharedLinks } = require('~/models/Share'); const { deleteAllSharedLinks } = require('~/models/Share');
const { deleteToolCalls } = require('~/models/ToolCall'); const { deleteToolCalls } = require('~/models/ToolCall');
const Transaction = mongoose.models.Transaction;
const Session = mongoose.models.Session;
const Balance = mongoose.models.Balance;
const User = mongoose.models.User;
const getUserController = async (req, res) => { const getUserController = async (req, res) => {
/** @type {MongoUser} */ /** @type {MongoUser} */
const userData = req.user.toObject != null ? req.user.toObject() : { ...req.user }; const userData = req.user.toObject != null ? req.user.toObject() : { ...req.user };

View file

@ -1,11 +1,14 @@
const jwt = require('jsonwebtoken'); const jwt = require('jsonwebtoken');
const mongoose = require('mongoose');
const { const {
verifyTOTP, verifyTOTP,
verifyBackupCode, verifyBackupCode,
getTOTPSecret, getTOTPSecret,
} = require('~/server/services/twoFactorService'); } = require('~/server/services/twoFactorService');
const { setAuthTokens } = require('~/server/services/AuthService'); const { setAuthTokens } = require('~/server/services/AuthService');
const { User, logger } = require('@librechat/data-schemas'); const { logger } = require('@librechat/data-schemas');
const User = mongoose.models.User;
/** /**
* Verifies the 2FA code during login using a temporary token. * Verifies the 2FA code during login using a temporary token.

View file

@ -1,11 +1,14 @@
const { Keyv } = require('keyv'); const { Keyv } = require('keyv');
const uap = require('ua-parser-js'); const uap = require('ua-parser-js');
const mongoose = require('mongoose');
const { logger } = require('@librechat/data-schemas');
const { ViolationTypes } = require('librechat-data-provider'); const { ViolationTypes } = require('librechat-data-provider');
const { isEnabled, removePorts } = require('~/server/utils'); const { isEnabled, removePorts } = require('~/server/utils');
const keyvMongo = require('~/cache/keyvMongo'); const keyvMongo = require('~/cache/keyvMongo');
const denyRequest = require('./denyRequest'); const denyRequest = require('./denyRequest');
const { getLogStores } = require('~/cache'); const { getLogStores } = require('~/cache');
const { User, logger } = require('@librechat/data-schemas');
const User = mongoose.models.User;
const banCache = new Keyv({ store: keyvMongo, namespace: ViolationTypes.BAN, ttl: 0 }); const banCache = new Keyv({ store: keyvMongo, namespace: ViolationTypes.BAN, ttl: 0 });
const message = 'Your account has been temporarily banned due to violations of our service.'; const message = 'Your account has been temporarily banned due to violations of our service.';

View file

@ -1,5 +1,5 @@
const { deleteTokens } = require('@librechat/data-schemas');
const { getInvite } = require('~/models/inviteUser'); const { getInvite } = require('~/models/inviteUser');
const { deleteTokens } = require('~/models');
async function checkInviteUser(req, res, next) { async function checkInviteUser(req, res, next) {
const token = req.body.token; const token = req.body.token;

View file

@ -1,6 +1,9 @@
const { Balance, logger } = require('@librechat/data-schemas'); const mongoose = require('mongoose');
const { logger } = require('@librechat/data-schemas');
const { getBalanceConfig } = require('~/server/services/Config'); const { getBalanceConfig } = require('~/server/services/Config');
const Balance = mongoose.models.Balance;
/** /**
* Middleware to synchronize user balance settings with current balance configuration. * Middleware to synchronize user balance settings with current balance configuration.
* @function * @function

View file

@ -1,6 +1,7 @@
const express = require('express'); const express = require('express');
const mongoose = require('mongoose');
const { logger } = require('@librechat/data-schemas');
const { ContentTypes } = require('librechat-data-provider'); const { ContentTypes } = require('librechat-data-provider');
const { Message, logger } = require('@librechat/data-schemas');
const { const {
saveConvo, saveConvo,
saveMessage, saveMessage,
@ -15,6 +16,8 @@ const { cleanUpPrimaryKeyValue } = require('~/lib/utils/misc');
const { getConvosQueried } = require('~/models/Conversation'); const { getConvosQueried } = require('~/models/Conversation');
const { countTokens } = require('~/server/utils'); const { countTokens } = require('~/server/utils');
const Message = mongoose.models.Message;
const router = express.Router(); const router = express.Router();
router.use(requireJwtAuth); router.use(requireJwtAuth);

View file

@ -1,7 +1,6 @@
const jwt = require('jsonwebtoken'); const jwt = require('jsonwebtoken');
const { nanoid } = require('nanoid'); const { nanoid } = require('nanoid');
const { tool } = require('@langchain/core/tools'); const { tool } = require('@langchain/core/tools');
const { findToken } = require('@librechat/data-schemas');
const { GraphEvents, sleep } = require('@librechat/agents'); const { GraphEvents, sleep } = require('@librechat/agents');
const { const {
Time, Time,
@ -20,7 +19,7 @@ const { getActions, deleteActions } = require('~/models/Action');
const { deleteAssistant } = require('~/models/Assistant'); const { deleteAssistant } = require('~/models/Assistant');
const { logAxiosError } = require('~/utils'); const { logAxiosError } = require('~/utils');
const { getLogStores } = require('~/cache'); const { getLogStores } = require('~/cache');
const db = require('~/lib/db/connectDb'); const { findToken } = require('~/models');
const JWT_SECRET = process.env.JWT_SECRET; const JWT_SECRET = process.env.JWT_SECRET;
const toolNameRegex = /^[a-zA-Z0-9_-]+$/; const toolNameRegex = /^[a-zA-Z0-9_-]+$/;

View file

@ -1,5 +1,6 @@
const bcrypt = require('bcryptjs'); const bcrypt = require('bcryptjs');
const { webcrypto } = require('node:crypto'); const { webcrypto } = require('node:crypto');
const { SystemRoles, errorsToString } = require('librechat-data-provider');
const { const {
findUser, findUser,
createUser, createUser,
@ -15,8 +16,7 @@ const {
generateToken, generateToken,
deleteUserById, deleteUserById,
generateRefreshToken, generateRefreshToken,
} = require('@librechat/data-schemas'); } = require('~/models');
const { SystemRoles, errorsToString } = require('librechat-data-provider');
const { isEnabled, checkEmailConfig, sendEmail } = require('~/server/utils'); const { isEnabled, checkEmailConfig, sendEmail } = require('~/server/utils');
const { isEmailDomainAllowed } = require('~/server/services/domains'); const { isEmailDomainAllowed } = require('~/server/services/domains');
const { getBalanceConfig } = require('~/server/services/Config'); const { getBalanceConfig } = require('~/server/services/Config');

View file

@ -1,9 +1,9 @@
const fs = require('fs'); const fs = require('fs');
const path = require('path'); const path = require('path');
const sharp = require('sharp'); const sharp = require('sharp');
const { updateUser, logger } = require('@librechat/data-schemas'); const { logger } = require('@librechat/data-schemas');
const { resizeImageBuffer } = require('../images/resize'); const { resizeImageBuffer } = require('../images/resize');
const { updateFile } = require('~/models/File'); const { updateUser, updateFile } = require('~/models');
const { saveBufferToAzure } = require('./crud'); const { saveBufferToAzure } = require('./crud');
/** /**

View file

@ -1,10 +1,10 @@
const fs = require('fs'); const fs = require('fs');
const path = require('path'); const path = require('path');
const sharp = require('sharp'); const sharp = require('sharp');
const { logger } = require('@librechat/data-schemas');
const { resizeImageBuffer } = require('../images/resize'); const { resizeImageBuffer } = require('../images/resize');
const { updateUser, updateFile } = require('~/models');
const { saveBufferToFirebase } = require('./crud'); const { saveBufferToFirebase } = require('./crud');
const { updateFile } = require('~/models/File');
const { logger, updateUser } = require('@librechat/data-schemas');
/** /**
* Converts an image file to the target format. The function first resizes the image based on the specified * Converts an image file to the target format. The function first resizes the image based on the specified

View file

@ -1,9 +1,8 @@
const fs = require('fs'); const fs = require('fs');
const path = require('path'); const path = require('path');
const sharp = require('sharp'); const sharp = require('sharp');
const { updateUser } = require('@librechat/data-schemas');
const { resizeImageBuffer } = require('../images/resize'); const { resizeImageBuffer } = require('../images/resize');
const { updateFile } = require('~/models/File'); const { updateUser, updateFile } = require('~/models');
/** /**
* Converts an image file to the target format. The function first resizes the image based on the specified * Converts an image file to the target format. The function first resizes the image based on the specified

View file

@ -1,9 +1,9 @@
const fs = require('fs'); const fs = require('fs');
const path = require('path'); const path = require('path');
const sharp = require('sharp'); const sharp = require('sharp');
const { logger, updateUser } = require('@librechat/data-schemas'); const { logger } = require('@librechat/data-schemas');
const { resizeImageBuffer } = require('../images/resize'); const { resizeImageBuffer } = require('../images/resize');
const { updateFile } = require('~/models/File'); const { updateUser, updateFile } = require('~/models');
const { saveBufferToS3 } = require('./crud'); const { saveBufferToS3 } = require('./crud');
const defaultBasePath = 'images'; const defaultBasePath = 'images';

View file

@ -1,7 +1,9 @@
const { PluginAuth } = require('@librechat/data-schemas'); const mongoose = require('mongoose');
const { encrypt, decrypt } = require('~/server/utils/'); const { encrypt, decrypt } = require('~/server/utils/');
const { logger } = require('~/config'); const { logger } = require('~/config');
const PluginAuth = mongoose.models.PluginAuth;
/** /**
* Asynchronously retrieves and decrypts the authentication value for a user's plugin, based on a specified authentication field. * Asynchronously retrieves and decrypts the authentication value for a user's plugin, based on a specified authentication field.
* *

View file

@ -1,6 +1,10 @@
const mongoose = require('mongoose');
const { logger } = require('@librechat/data-schemas');
const { ErrorTypes } = require('librechat-data-provider'); const { ErrorTypes } = require('librechat-data-provider');
const { Key, logger, updateUser } = require('@librechat/data-schemas');
const { encrypt, decrypt } = require('~/server/utils/crypto'); const { encrypt, decrypt } = require('~/server/utils/crypto');
const { updateUser } = require('~/models');
const Key = mongoose.models.Key;
/** /**
* Updates the plugins for a user based on the action specified (install/uninstall). * Updates the plugins for a user based on the action specified (install/uninstall).

View file

@ -1,7 +1,9 @@
const mongoose = require('mongoose');
const { webcrypto } = require('node:crypto'); const { webcrypto } = require('node:crypto');
const { User } = require('@librechat/data-schemas');
const { hashBackupCode, decryptV3, decryptV2 } = require('~/server/utils/crypto'); const { hashBackupCode, decryptV3, decryptV2 } = require('~/server/utils/crypto');
const User = mongoose.models.User;
// Base32 alphabet for TOTP secret encoding. // Base32 alphabet for TOTP secret encoding.
const BASE32_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'; const BASE32_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';

View file

@ -1,11 +1,13 @@
const mongoose = require('mongoose'); const mongoose = require('mongoose');
const { MongoMemoryServer } = require('mongodb-memory-server');
const jwt = require('jsonwebtoken'); const jwt = require('jsonwebtoken');
const { logger } = require('@librechat/data-schemas');
const { Strategy: AppleStrategy } = require('passport-apple'); const { Strategy: AppleStrategy } = require('passport-apple');
const socialLogin = require('./socialLogin'); const { MongoMemoryServer } = require('mongodb-memory-server');
const { createSocialUser, handleExistingUser } = require('./process'); const { createSocialUser, handleExistingUser } = require('./process');
const { isEnabled } = require('~/server/utils'); const { isEnabled } = require('~/server/utils');
const { User, logger } = require('@librechat/data-schemas'); const socialLogin = require('./socialLogin');
const User = mongoose.models.User;
// Mocking external dependencies // Mocking external dependencies
jest.mock('jsonwebtoken'); jest.mock('jsonwebtoken');

View file

@ -1,7 +1,10 @@
const mongoose = require('mongoose');
const { logger } = require('@librechat/data-schemas');
const { SystemRoles } = require('librechat-data-provider'); const { SystemRoles } = require('librechat-data-provider');
const { User, logger } = require('@librechat/data-schemas');
const { Strategy: JwtStrategy, ExtractJwt } = require('passport-jwt'); const { Strategy: JwtStrategy, ExtractJwt } = require('passport-jwt');
const User = mongoose.models.User;
// JWT strategy // JWT strategy
const jwtLogin = () => const jwtLogin = () =>
new JwtStrategy( new JwtStrategy(

View file

@ -1,10 +1,13 @@
const fs = require('fs'); const fs = require('fs');
const mongoose = require('mongoose');
const LdapStrategy = require('passport-ldapauth'); const LdapStrategy = require('passport-ldapauth');
const { SystemRoles } = require('librechat-data-provider'); const { SystemRoles } = require('librechat-data-provider');
const { User, createUser, findUser, updateUser } = require('@librechat/data-schemas'); const { logger } = require('@librechat/data-schemas');
const { createUser, findUser, updateUser } = require('~/models');
const { getBalanceConfig } = require('~/server/services/Config'); const { getBalanceConfig } = require('~/server/services/Config');
const { isEnabled } = require('~/server/utils'); const { isEnabled } = require('~/server/utils');
const logger = require('~/utils/logger');
const User = mongoose.models.User;
const { const {
LDAP_URL, LDAP_URL,

View file

@ -1,10 +1,13 @@
const { User, logger } = require('@librechat/data-schemas'); const mongoose = require('mongoose');
const { logger } = require('@librechat/data-schemas');
const { errorsToString } = require('librechat-data-provider'); const { errorsToString } = require('librechat-data-provider');
const { Strategy: PassportLocalStrategy } = require('passport-local'); const { Strategy: PassportLocalStrategy } = require('passport-local');
const { isEnabled, checkEmailConfig } = require('~/server/utils'); const { isEnabled, checkEmailConfig } = require('~/server/utils');
const { comparePassword } = require('~/models'); const { comparePassword } = require('~/models');
const { loginSchema } = require('./validators'); const { loginSchema } = require('./validators');
const User = mongoose.models.User;
// Unix timestamp for 2024-06-07 15:20:18 Eastern Time // Unix timestamp for 2024-06-07 15:20:18 Eastern Time
const verificationEnabledTimestamp = 1717788018; const verificationEnabledTimestamp = 1717788018;

View file

@ -1,15 +1,18 @@
const fetch = require('node-fetch'); const fetch = require('node-fetch');
const mongoose = require('mongoose');
const passport = require('passport'); const passport = require('passport');
const client = require('openid-client'); const client = require('openid-client');
const jwtDecode = require('jsonwebtoken/decode'); const jwtDecode = require('jsonwebtoken/decode');
const { logger } = require('@librechat/data-schemas');
const { CacheKeys } = require('librechat-data-provider'); const { CacheKeys } = require('librechat-data-provider');
const { HttpsProxyAgent } = require('https-proxy-agent'); const { HttpsProxyAgent } = require('https-proxy-agent');
const { User, logger } = require('@librechat/data-schemas');
const { Strategy: OpenIDStrategy } = require('openid-client/passport'); const { Strategy: OpenIDStrategy } = require('openid-client/passport');
const { getStrategyFunctions } = require('~/server/services/Files/strategies'); const { getStrategyFunctions } = require('~/server/services/Files/strategies');
const getLogStores = require('~/cache/getLogStores'); const getLogStores = require('~/cache/getLogStores');
const { isEnabled } = require('~/server/utils'); const { isEnabled } = require('~/server/utils');
const User = mongoose.models.User;
/** /**
* @typedef {import('openid-client').ClientMetadata} ClientMetadata * @typedef {import('openid-client').ClientMetadata} ClientMetadata
* @typedef {import('openid-client').Configuration} Configuration * @typedef {import('openid-client').Configuration} Configuration

View file

@ -1,4 +1,5 @@
const fetch = require('node-fetch'); const fetch = require('node-fetch');
const mongoose = require('mongoose');
const jwtDecode = require('jsonwebtoken/decode'); const jwtDecode = require('jsonwebtoken/decode');
const { setupOpenId } = require('./openidStrategy'); const { setupOpenId } = require('./openidStrategy');
const { getBalanceConfig } = require('~/server/services/Config'); const { getBalanceConfig } = require('~/server/services/Config');
@ -7,7 +8,6 @@ const { getBalanceConfig } = require('~/server/services/Config');
const mockCreateUser = jest.fn(); const mockCreateUser = jest.fn();
const mockFindUser = jest.fn(); const mockFindUser = jest.fn();
const mockUpdateUser = jest.fn(); const mockUpdateUser = jest.fn();
let User;
const mockModels = { const mockModels = {
User: { User: {
@ -132,8 +132,7 @@ describe('setupOpenId', () => {
picture: 'https://example.com/avatar.png', picture: 'https://example.com/avatar.png',
}), }),
}; };
const { registerModels } = require('@librechat/data-schemas'); const User = mongoose.models.User;
User = registerModels().User;
beforeEach(async () => { beforeEach(async () => {
// Clear previous mock calls and reset implementations // Clear previous mock calls and reset implementations
jest.clearAllMocks(); jest.clearAllMocks();

View file

@ -1,7 +1,7 @@
const { FileSources } = require('librechat-data-provider'); const { FileSources } = require('librechat-data-provider');
const { updateUser, createUser, getUserById } = require('@librechat/data-schemas');
const { getStrategyFunctions } = require('~/server/services/Files/strategies'); const { getStrategyFunctions } = require('~/server/services/Files/strategies');
const { resizeAvatar } = require('~/server/services/Files/images/avatar'); const { resizeAvatar } = require('~/server/services/Files/images/avatar');
const { updateUser, createUser, getUserById } = require('~/models');
const { getBalanceConfig } = require('~/server/services/Config'); const { getBalanceConfig } = require('~/server/services/Config');
/** /**

View file

@ -1,6 +1,7 @@
const { findUser, logger } = require('@librechat/data-schemas'); const { logger } = require('@librechat/data-schemas');
const { createSocialUser, handleExistingUser } = require('./process'); const { createSocialUser, handleExistingUser } = require('./process');
const { isEnabled } = require('~/server/utils'); const { isEnabled } = require('~/server/utils');
const { findUser } = require('~/models');
const socialLogin = const socialLogin =
(provider, getProfileDetails) => async (accessToken, refreshToken, idToken, profile, cb) => { (provider, getProfileDetails) => async (accessToken, refreshToken, idToken, profile, cb) => {

View file

@ -1,3 +1,5 @@
export { createModels } from './models'; export { createModels } from './models';
export { createMethods } from './methods'; export { createMethods } from './methods';
export type * from './types'; export type * from './types';
export { default as logger } from './config/winston';
export { default as meiliLogger } from './config/meiliLogger';