| const { FileSources } = require('librechat-data-provider'); |
| const { |
| getFirebaseURL, |
| prepareImageURL, |
| saveURLToFirebase, |
| deleteFirebaseFile, |
| saveBufferToFirebase, |
| uploadImageToFirebase, |
| processFirebaseAvatar, |
| getFirebaseFileStream, |
| } = require('./Firebase'); |
| const { |
| getLocalFileURL, |
| saveFileFromURL, |
| saveLocalBuffer, |
| deleteLocalFile, |
| uploadLocalImage, |
| prepareImagesLocal, |
| processLocalAvatar, |
| getLocalFileStream, |
| } = require('./Local'); |
| const { uploadOpenAIFile, deleteOpenAIFile, getOpenAIFileStream } = require('./OpenAI'); |
| const { uploadVectors, deleteVectors } = require('./VectorDB'); |
|
|
| |
| |
| |
| |
| const firebaseStrategy = () => ({ |
| |
| |
| handleFileUpload: null, |
| saveURL: saveURLToFirebase, |
| getFileURL: getFirebaseURL, |
| deleteFile: deleteFirebaseFile, |
| saveBuffer: saveBufferToFirebase, |
| prepareImagePayload: prepareImageURL, |
| processAvatar: processFirebaseAvatar, |
| handleImageUpload: uploadImageToFirebase, |
| getDownloadStream: getFirebaseFileStream, |
| }); |
|
|
| |
| |
| |
| |
| const localStrategy = () => ({ |
| |
| handleFileUpload: null, |
| saveURL: saveFileFromURL, |
| getFileURL: getLocalFileURL, |
| saveBuffer: saveLocalBuffer, |
| deleteFile: deleteLocalFile, |
| processAvatar: processLocalAvatar, |
| handleImageUpload: uploadLocalImage, |
| prepareImagePayload: prepareImagesLocal, |
| getDownloadStream: getLocalFileStream, |
| }); |
|
|
| |
| |
| |
| |
| const vectorStrategy = () => ({ |
| |
| saveURL: null, |
| |
| getFileURL: null, |
| |
| saveBuffer: null, |
| |
| processAvatar: null, |
| |
| handleImageUpload: null, |
| |
| prepareImagePayload: null, |
| |
| getDownloadStream: null, |
| handleFileUpload: uploadVectors, |
| deleteFile: deleteVectors, |
| }); |
|
|
| |
| |
| |
| |
| |
| const openAIStrategy = () => ({ |
| |
| saveURL: null, |
| |
| getFileURL: null, |
| |
| saveBuffer: null, |
| |
| processAvatar: null, |
| |
| handleImageUpload: null, |
| |
| prepareImagePayload: null, |
| deleteFile: deleteOpenAIFile, |
| handleFileUpload: uploadOpenAIFile, |
| getDownloadStream: getOpenAIFileStream, |
| }); |
|
|
| |
| const getStrategyFunctions = (fileSource) => { |
| if (fileSource === FileSources.firebase) { |
| return firebaseStrategy(); |
| } else if (fileSource === FileSources.local) { |
| return localStrategy(); |
| } else if (fileSource === FileSources.openai) { |
| return openAIStrategy(); |
| } else if (fileSource === FileSources.azure) { |
| return openAIStrategy(); |
| } else if (fileSource === FileSources.vectordb) { |
| return vectorStrategy(); |
| } else { |
| throw new Error('Invalid file source'); |
| } |
| }; |
|
|
| module.exports = { |
| getStrategyFunctions, |
| }; |
|
|