@baguskto/saham
Version:
MCP Server untuk data saham Indonesia (IDX) - Implementasi Node.js/TypeScript
54 lines • 2.04 kB
JavaScript
;
/**
* Data sources management
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.initializeDataSources = initializeDataSources;
exports.getDataSourceManager = getDataSourceManager;
exports.getDataSourceStats = getDataSourceStats;
const base_1 = require("./base");
const yahoo_finance_1 = require("./yahoo-finance");
const web_scraper_1 = require("./web-scraper");
const github_dataset_1 = require("./github-dataset");
const logger_1 = require("../utils/logger");
let dataSourceManager;
function initializeDataSources() {
if (dataSourceManager) {
return dataSourceManager;
}
dataSourceManager = new base_1.DataSourceManager();
// Initialize data sources in priority order
try {
// Primary source for historical data: GitHub Dataset
const githubSource = new github_dataset_1.GitHubDatasetSource();
dataSourceManager.addSource(githubSource);
logger_1.logger.info('GitHub Dataset-Saham-IDX source initialized');
// Primary source for live data: Yahoo Finance
const yahooSource = new yahoo_finance_1.YahooFinanceSource();
dataSourceManager.addSource(yahooSource);
logger_1.logger.info('Yahoo Finance data source initialized');
// Fallback source: Web Scraping
const webSource = new web_scraper_1.WebScrapingSource();
dataSourceManager.addSource(webSource);
logger_1.logger.info('Web scraping data source initialized');
}
catch (error) {
logger_1.logger.error('Failed to initialize data sources:', error);
throw error;
}
logger_1.logger.info(`Initialized ${dataSourceManager.getHealthySources().length} data sources`);
return dataSourceManager;
}
function getDataSourceManager() {
if (!dataSourceManager) {
return initializeDataSources();
}
return dataSourceManager;
}
function getDataSourceStats() {
if (!dataSourceManager) {
return {};
}
return dataSourceManager.getStats();
}
//# sourceMappingURL=index.js.map