UNPKG

@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
"use strict"; /** * 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==