@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.
72 lines • 3.64 kB
JavaScript
;
/**
* Factory for creating data source instances
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.createProductionConfig = exports.createHistoricalConfig = exports.createGovDealsApi = void 0;
const sam_1 = require("../clients/sam");
const csv_1 = require("./csv");
/**
* Factory function to create appropriate data source
*/
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}`);
}
}
exports.createGovDealsApi = createGovDealsApi;
/**
* 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 sam_1.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 csv_1.CsvApi(options);
}
/**
* Configuration helper for historical data mode
*/
function createHistoricalConfig(csvPath = './scratch/FY2025_opportunities.csv') {
return {
type: 'csv',
csvPath,
};
}
exports.createHistoricalConfig = createHistoricalConfig;
/**
* Configuration helper for production mode
*/
function createProductionConfig(apiKey, baseUrl) {
return {
type: 'api',
apiKey,
baseUrl,
};
}
exports.createProductionConfig = createProductionConfig;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhc291cmNlcy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBRUgsd0NBQXVEO0FBQ3ZELCtCQUE4QztBQWU5Qzs7R0FFRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLE1BQXdCO0lBQ3hELFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRTtRQUNuQixLQUFLLEtBQUs7WUFDUixPQUFPLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLEtBQUssS0FBSztZQUNSLE9BQU8sbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckM7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztLQUMvRDtBQUNILENBQUM7QUFURCw4Q0FTQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxNQUF3QjtJQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7S0FDaEU7SUFFRCxNQUFNLE9BQU8sR0FBa0I7UUFDN0IsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1FBQ3JCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztRQUN2QixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87UUFDdkIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO0tBQ3BCLENBQUM7SUFFRixPQUFPLElBQUksWUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsbUJBQW1CLENBQUMsTUFBd0I7SUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7UUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0tBQzdEO0lBRUQsTUFBTSxPQUFPLEdBQWtCO1FBQzdCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztRQUN2QixZQUFZLEVBQUUsSUFBSTtLQUNuQixDQUFDO0lBRUYsT0FBTyxJQUFJLFlBQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixzQkFBc0IsQ0FBQyxVQUFrQixvQ0FBb0M7SUFDM0YsT0FBTztRQUNMLElBQUksRUFBRSxLQUFLO1FBQ1gsT0FBTztLQUNSLENBQUM7QUFDSixDQUFDO0FBTEQsd0RBS0M7QUFFRDs7R0FFRztBQUNILFNBQWdCLHNCQUFzQixDQUFDLE1BQWMsRUFBRSxPQUFnQjtJQUNyRSxPQUFPO1FBQ0wsSUFBSSxFQUFFLEtBQUs7UUFDWCxNQUFNO1FBQ04sT0FBTztLQUNSLENBQUM7QUFDSixDQUFDO0FBTkQsd0RBTUMifQ==