@lineai/gov-deals
Version:
Explore Federal contracts for government building renovations, city hall renovations, courthouse updates, library modernizations, federal building improvement contracts, base housing and facilities upgrades.
66 lines • 3.36 kB
JavaScript
/**
* Factory for creating data source instances
*/
import { SamApi } from '../clients/sam';
import { CsvApi } from './csv';
/**
* Factory function to create appropriate data source
*/
export function createGovDealsApi(config) {
switch (config.type) {
case 'api':
return createApiDataSource(config);
case 'csv':
return createCsvDataSource(config);
default:
throw new Error(`Unknown data source type: ${config.type}`);
}
}
/**
* Create SAM.gov API data source
*/
function createApiDataSource(config) {
if (!config.apiKey) {
throw new Error('API key is required for SAM.gov data source');
}
const options = {
apiKey: config.apiKey,
baseUrl: config.baseUrl,
timeout: config.timeout,
debug: config.debug,
};
return new SamApi(options);
}
/**
* Create CSV data source
*/
function createCsvDataSource(config) {
if (!config.csvPath) {
throw new Error('CSV path is required for CSV data source');
}
const options = {
csvPath: config.csvPath,
cacheResults: true,
};
return new CsvApi(options);
}
/**
* Configuration helper for historical data mode
*/
export function createHistoricalConfig(csvPath = './scratch/FY2025_opportunities.csv') {
return {
type: 'csv',
csvPath,
};
}
/**
* Configuration helper for production mode
*/
export function createProductionConfig(apiKey, baseUrl) {
return {
type: 'api',
apiKey,
baseUrl,
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhc291cmNlcy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBaUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFpQixNQUFNLE9BQU8sQ0FBQztBQWU5Qzs7R0FFRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxNQUF3QjtJQUN4RCxRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUU7UUFDbkIsS0FBSyxLQUFLO1lBQ1IsT0FBTyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxLQUFLLEtBQUs7WUFDUixPQUFPLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7S0FDL0Q7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLG1CQUFtQixDQUFDLE1BQXdCO0lBQ25ELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztLQUNoRTtJQUVELE1BQU0sT0FBTyxHQUFrQjtRQUM3QixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07UUFDckIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQ3ZCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztRQUN2QixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7S0FDcEIsQ0FBQztJQUVGLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxNQUF3QjtJQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtRQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7S0FDN0Q7SUFFRCxNQUFNLE9BQU8sR0FBa0I7UUFDN0IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQ3ZCLFlBQVksRUFBRSxJQUFJO0tBQ25CLENBQUM7SUFFRixPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxVQUFrQixvQ0FBb0M7SUFDM0YsT0FBTztRQUNMLElBQUksRUFBRSxLQUFLO1FBQ1gsT0FBTztLQUNSLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsTUFBYyxFQUFFLE9BQWdCO0lBQ3JFLE9BQU87UUFDTCxJQUFJLEVBQUUsS0FBSztRQUNYLE1BQU07UUFDTixPQUFPO0tBQ1IsQ0FBQztBQUNKLENBQUMifQ==