UNPKG

@copytrade/unified-broker

Version:

Unified broker interface library for Indian stock market brokers with plugin architecture

98 lines 3.43 kB
"use strict"; /** * 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