@copytrade/unified-broker
Version:
Unified broker interface library for Indian stock market brokers with plugin architecture
120 lines • 5.07 kB
JavaScript
;
/**
* Broker Plugins Loader
* Automatically registers all available broker plugins
* This file enables the plugin architecture for the unified broker library
*/
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.brokerRegistry = exports.fyersPlugin = exports.shoonyaPlugin = void 0;
exports.initializeBrokers = initializeBrokers;
exports.getAvailableBrokerPlugins = getAvailableBrokerPlugins;
exports.loadExternalBrokerPlugins = loadExternalBrokerPlugins;
exports.configureBrokerRegistry = configureBrokerRegistry;
const BrokerRegistry_1 = require("../registry/BrokerRegistry");
Object.defineProperty(exports, "brokerRegistry", { enumerable: true, get: function () { return BrokerRegistry_1.brokerRegistry; } });
// Import broker plugins
const shoonya_1 = __importDefault(require("./shoonya"));
exports.shoonyaPlugin = shoonya_1.default;
const fyers_1 = __importDefault(require("./fyers"));
exports.fyersPlugin = fyers_1.default;
/**
* Initialize and register all broker plugins
* This function should be called once during application startup
*/
function initializeBrokers(registry = BrokerRegistry_1.brokerRegistry) {
console.log('🚀 Initializing broker plugins...');
try {
// Register Shoonya broker
shoonya_1.default.register(registry);
// Register Fyers broker
fyers_1.default.register(registry);
// Future brokers can be added here:
// zerodhaPlugin.register(registry);
// upstoxPlugin.register(registry);
// angelOnePlugin.register(registry);
const registeredBrokers = registry.getAvailableBrokers();
console.log(`✅ Successfully registered ${registeredBrokers.length} broker plugins:`, registeredBrokers);
}
catch (error) {
console.error('🚨 Failed to initialize broker plugins:', error.message);
throw error;
}
}
/**
* Get list of all available broker plugins
*/
function getAvailableBrokerPlugins() {
return BrokerRegistry_1.brokerRegistry.getRegisteredPlugins();
}
/**
* Load additional broker plugins from external modules
* @param pluginPaths - Array of module paths to load
*/
async function loadExternalBrokerPlugins(pluginPaths) {
console.log('📦 Loading external broker plugins...');
for (const pluginPath of pluginPaths) {
try {
const plugin = await Promise.resolve(`${pluginPath}`).then(s => __importStar(require(s)));
if (plugin.default && typeof plugin.default.register === 'function') {
plugin.default.register(BrokerRegistry_1.brokerRegistry);
console.log(`✅ Loaded external broker plugin from: ${pluginPath}`);
}
else {
console.warn(`⚠️ Invalid plugin format at: ${pluginPath}`);
}
}
catch (error) {
console.error(`🚨 Failed to load plugin from ${pluginPath}:`, error.message);
}
}
}
/**
* Configure broker registry with custom settings
*/
function configureBrokerRegistry(config) {
BrokerRegistry_1.brokerRegistry.updateConfig(config);
console.log('⚙️ Broker registry configured:', config);
}
// Re-export types and interfaces
__exportStar(require("../registry/BrokerRegistry"), exports);
__exportStar(require("../interfaces/IBrokerService"), exports);
//# sourceMappingURL=index.js.map