contextual-agent-sdk
Version:
SDK for building AI agents with seamless voice-text context switching
88 lines • 4.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.StorageFactory = void 0;
const RedisStorageProvider_1 = require("./RedisStorageProvider");
const MongoStorageProvider_1 = require("./MongoStorageProvider");
const MemoryStorageProvider_1 = require("./MemoryStorageProvider");
class StorageFactory {
static createProvider(factoryConfig) {
if (!factoryConfig) {
console.warn('No storage configuration provided. Using in-memory storage (not recommended for production).');
return new MemoryStorageProvider_1.MemoryStorageProvider();
}
switch (factoryConfig.type) {
case 'redis':
if (!factoryConfig.config?.url) {
console.warn('Redis URL not provided. Falling back to in-memory storage.');
return new MemoryStorageProvider_1.MemoryStorageProvider();
}
return new RedisStorageProvider_1.RedisStorageProvider(factoryConfig.config);
case 'mongodb':
if (!factoryConfig.config?.url) {
console.warn('MongoDB URL not provided. Falling back to in-memory storage.');
return new MemoryStorageProvider_1.MemoryStorageProvider();
}
return new MongoStorageProvider_1.MongoStorageProvider(factoryConfig.config);
case 'memory':
if (process.env.NODE_ENV === 'production') {
console.warn('Using in-memory storage in production is not recommended.');
}
return new MemoryStorageProvider_1.MemoryStorageProvider(factoryConfig.config);
default:
console.warn('Unknown storage type. Using in-memory storage.');
return new MemoryStorageProvider_1.MemoryStorageProvider();
}
}
static createFromEnv() {
if (process.env.REDIS_URL) {
return StorageFactory.createProvider({
type: 'redis',
config: {
url: process.env.REDIS_URL,
username: process.env.REDIS_USERNAME,
password: process.env.REDIS_PASSWORD,
ssl: process.env.REDIS_SSL === 'true',
maxConnections: process.env.REDIS_MAX_CONNECTIONS ?
parseInt(process.env.REDIS_MAX_CONNECTIONS) : undefined,
timeout: process.env.REDIS_TIMEOUT ?
parseInt(process.env.REDIS_TIMEOUT) : undefined,
maxAge: process.env.SESSION_MAX_AGE ?
parseInt(process.env.SESSION_MAX_AGE) : 3600000,
cleanupInterval: process.env.SESSION_CLEANUP_INTERVAL ?
parseInt(process.env.SESSION_CLEANUP_INTERVAL) : 600000
}
});
}
if (process.env.MONGODB_URL) {
return StorageFactory.createProvider({
type: 'mongodb',
config: {
url: process.env.MONGODB_URL,
username: process.env.MONGODB_USERNAME,
password: process.env.MONGODB_PASSWORD,
ssl: process.env.MONGODB_SSL === 'true',
certPath: process.env.MONGODB_CERT_PATH,
maxConnections: process.env.MONGODB_MAX_CONNECTIONS ?
parseInt(process.env.MONGODB_MAX_CONNECTIONS) : undefined,
timeout: process.env.MONGODB_TIMEOUT ?
parseInt(process.env.MONGODB_TIMEOUT) : undefined,
maxAge: process.env.SESSION_MAX_AGE ?
parseInt(process.env.SESSION_MAX_AGE) : 3600000,
cleanupInterval: process.env.SESSION_CLEANUP_INTERVAL ?
parseInt(process.env.SESSION_CLEANUP_INTERVAL) : 600000
}
});
}
return StorageFactory.createProvider({
type: 'memory',
config: {
maxAge: process.env.SESSION_MAX_AGE ?
parseInt(process.env.SESSION_MAX_AGE) : 3600000,
cleanupInterval: process.env.SESSION_CLEANUP_INTERVAL ?
parseInt(process.env.SESSION_CLEANUP_INTERVAL) : 600000
}
});
}
}
exports.StorageFactory = StorageFactory;
//# sourceMappingURL=StorageFactory.js.map