@copytrade/unified-broker
Version:
Unified broker interface library for Indian stock market brokers with plugin architecture
98 lines • 3.43 kB
JavaScript
;
/**
* Unified Broker Factory
* Creates instances of the new unified broker services
* Eliminates the need for broker-specific logic in the unified manager
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.UnifiedBrokerFactory = void 0;
exports.createUnifiedBroker = createUnifiedBroker;
exports.getSupportedUnifiedBrokers = getSupportedUnifiedBrokers;
const UnifiedShoonyaService_1 = require("../brokers/shoonya/UnifiedShoonyaService");
const UnifiedFyersService_1 = require("../brokers/fyers/UnifiedFyersService");
class UnifiedBrokerFactory {
constructor() {
this.supportedBrokers = new Map();
this.registerDefaultBrokers();
}
static getInstance() {
if (!UnifiedBrokerFactory.instance) {
UnifiedBrokerFactory.instance = new UnifiedBrokerFactory();
}
return UnifiedBrokerFactory.instance;
}
/**
* Register default broker implementations
*/
registerDefaultBrokers() {
this.supportedBrokers.set('shoonya', () => new UnifiedShoonyaService_1.UnifiedShoonyaService());
this.supportedBrokers.set('fyers', () => new UnifiedFyersService_1.UnifiedFyersService());
console.log('✅ Unified broker factory initialized with default brokers:', Array.from(this.supportedBrokers.keys()));
}
/**
* Create a unified broker service instance
*/
createBroker(brokerName) {
const brokerFactory = this.supportedBrokers.get(brokerName.toLowerCase());
if (!brokerFactory) {
throw new Error(`Unsupported broker: ${brokerName}. Supported brokers: ${this.getSupportedBrokers().join(', ')}`);
}
console.log(`🏭 Creating unified ${brokerName} broker instance`);
return brokerFactory();
}
/**
* Get list of supported brokers
*/
getSupportedBrokers() {
return Array.from(this.supportedBrokers.keys());
}
/**
* Check if a broker is supported
*/
isBrokerSupported(brokerName) {
return this.supportedBrokers.has(brokerName.toLowerCase());
}
/**
* Register a custom broker implementation
*/
registerBroker(brokerName, brokerFactory) {
this.supportedBrokers.set(brokerName.toLowerCase(), brokerFactory);
console.log(`✅ Registered custom broker: ${brokerName}`);
}
/**
* Unregister a broker
*/
unregisterBroker(brokerName) {
const removed = this.supportedBrokers.delete(brokerName.toLowerCase());
if (removed) {
console.log(`✅ Unregistered broker: ${brokerName}`);
}
return removed;
}
/**
* Get factory information
*/
getFactoryInfo() {
return {
totalBrokers: this.supportedBrokers.size,
supportedBrokers: this.getSupportedBrokers(),
factoryType: 'UnifiedBrokerFactory'
};
}
}
exports.UnifiedBrokerFactory = UnifiedBrokerFactory;
/**
* Convenience function to create a unified broker instance
*/
function createUnifiedBroker(brokerName) {
const factory = UnifiedBrokerFactory.getInstance();
return factory.createBroker(brokerName);
}
/**
* Convenience function to get supported brokers
*/
function getSupportedUnifiedBrokers() {
const factory = UnifiedBrokerFactory.getInstance();
return factory.getSupportedBrokers();
}
//# sourceMappingURL=UnifiedBrokerFactory.js.map