no idea- added loki and other stuff to market-data-gateway, also added config lib

This commit is contained in:
Bojan Kucera 2025-06-03 11:37:58 -04:00
parent b957fb99aa
commit 1b71fc87ab
72 changed files with 6178 additions and 153 deletions

View file

@ -0,0 +1,73 @@
/**
* Data provider configurations for market data
*/
import { getEnvVar, validateConfig } from './core';
import { dataProvidersConfigSchema, DataProvidersConfig, DataProviderConfig } from './types';
/**
* Default data provider configurations
*/
const defaultDataProviders: DataProviderConfig[] = [
{
name: 'alpaca',
type: 'rest',
baseUrl: 'https://data.alpaca.markets/v1beta1',
apiKey: '',
apiSecret: '',
rateLimits: {
maxRequestsPerMinute: 200
}
},
{
name: 'polygon',
type: 'rest',
baseUrl: 'https://api.polygon.io/v2',
apiKey: '',
rateLimits: {
maxRequestsPerMinute: 5
}
},
{
name: 'alpaca-websocket',
type: 'websocket',
wsUrl: 'wss://stream.data.alpaca.markets/v2/iex',
apiKey: '',
apiSecret: ''
}
];
/**
* Load data provider configurations from environment variables
*/
export function loadDataProviderConfigs(): DataProvidersConfig {
// Get provider specific environment variables
const providers = defaultDataProviders.map(provider => {
const nameUpper = provider.name.toUpperCase().replace('-', '_');
const updatedProvider: DataProviderConfig = {
...provider,
apiKey: getEnvVar(`${nameUpper}_API_KEY`) || provider.apiKey || '',
};
if (provider.apiSecret !== undefined) {
updatedProvider.apiSecret = getEnvVar(`${nameUpper}_API_SECRET`) || provider.apiSecret || '';
}
return updatedProvider;
});
// Load default provider from environment
const defaultProvider = getEnvVar('DEFAULT_DATA_PROVIDER') || 'alpaca';
const config: DataProvidersConfig = {
providers,
defaultProvider
};
return validateConfig(config, dataProvidersConfigSchema);
}
/**
* Singleton data provider configurations
*/
export const dataProviderConfigs = loadDataProviderConfigs();