@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.
71 lines • 7.41 kB
JavaScript
;
/**
* Configuration management for the gov-deals package
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateConfig = exports.createConfig = exports.ConfigSchema = void 0;
const zod_1 = require("zod");
const dotenv_1 = __importDefault(require("dotenv"));
// Load environment variables
dotenv_1.default.config();
/**
* Configuration schema for validation
*/
exports.ConfigSchema = zod_1.z.object({
samGov: zod_1.z.object({
apiKey: zod_1.z.string().min(1, 'SAM.gov API key is required'),
baseUrl: zod_1.z.string().url().default('https://api.sam.gov'),
timeout: zod_1.z.number().int().positive().default(30000),
retryAttempts: zod_1.z.number().int().nonnegative().default(3),
retryDelay: zod_1.z.number().int().positive().default(1000),
}),
cache: zod_1.z.object({
enabled: zod_1.z.boolean().default(true),
ttlSeconds: zod_1.z.number().int().positive().default(300),
maxSize: zod_1.z.number().int().positive().default(100),
}),
debug: zod_1.z.boolean().default(false),
});
/**
* Create configuration from environment variables and options
*/
function createConfig(options = {}) {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
// Build final config with fallbacks
const config = {
samGov: {
apiKey: ((_a = options.samGov) === null || _a === void 0 ? void 0 : _a.apiKey) || process.env.SAM_GOV_API_KEY || '',
baseUrl: ((_b = options.samGov) === null || _b === void 0 ? void 0 : _b.baseUrl) || process.env.SAM_GOV_BASE_URL || 'https://api.sam.gov',
timeout: ((_c = options.samGov) === null || _c === void 0 ? void 0 : _c.timeout) ||
(process.env.SAM_GOV_TIMEOUT ? parseInt(process.env.SAM_GOV_TIMEOUT) : 30000),
retryAttempts: ((_d = options.samGov) === null || _d === void 0 ? void 0 : _d.retryAttempts) ||
(process.env.SAM_GOV_RETRY_ATTEMPTS ? parseInt(process.env.SAM_GOV_RETRY_ATTEMPTS) : 3),
retryDelay: ((_e = options.samGov) === null || _e === void 0 ? void 0 : _e.retryDelay) ||
(process.env.SAM_GOV_RETRY_DELAY ? parseInt(process.env.SAM_GOV_RETRY_DELAY) : 1000),
},
cache: {
enabled: (_g = (_f = options.cache) === null || _f === void 0 ? void 0 : _f.enabled) !== null && _g !== void 0 ? _g : (process.env.CACHE_ENABLED ? process.env.CACHE_ENABLED === 'true' : true),
ttlSeconds: ((_h = options.cache) === null || _h === void 0 ? void 0 : _h.ttlSeconds) ||
(process.env.CACHE_TTL_SECONDS ? parseInt(process.env.CACHE_TTL_SECONDS) : 300),
maxSize: ((_j = options.cache) === null || _j === void 0 ? void 0 : _j.maxSize) ||
(process.env.CACHE_MAX_SIZE ? parseInt(process.env.CACHE_MAX_SIZE) : 100),
},
debug: (_l = (_k = options.debug) !== null && _k !== void 0 ? _k : (process.env.DEBUG === 'true')) !== null && _l !== void 0 ? _l : (process.env.NODE_ENV === 'development'),
};
// Validate the final configuration
return exports.ConfigSchema.parse(config);
}
exports.createConfig = createConfig;
/**
* Validate that required configuration is present
*/
function validateConfig(config) {
if (!config.samGov.apiKey) {
throw new Error('SAM.gov API key is required. Set SAM_GOV_API_KEY environment variable or pass it in configuration.');
}
}
exports.validateConfig = validateConfig;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvcmUvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7O0FBRUgsNkJBQXdCO0FBQ3hCLG9EQUE0QjtBQUU1Qiw2QkFBNkI7QUFDN0IsZ0JBQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUVoQjs7R0FFRztBQUNVLFFBQUEsWUFBWSxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDbkMsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDZixNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsNkJBQTZCLENBQUM7UUFDeEQsT0FBTyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUM7UUFDeEQsT0FBTyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ25ELGFBQWEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN4RCxVQUFVLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7S0FDdEQsQ0FBQztJQUNGLEtBQUssRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDO1FBQ2QsT0FBTyxFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQ2xDLFVBQVUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUNwRCxPQUFPLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7S0FDbEQsQ0FBQztJQUNGLEtBQUssRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztDQUNsQyxDQUFDLENBQUM7QUFJSDs7R0FFRztBQUNILFNBQWdCLFlBQVksQ0FBQyxVQUEyQixFQUFFOztJQUN4RCxvQ0FBb0M7SUFDcEMsTUFBTSxNQUFNLEdBQVc7UUFDckIsTUFBTSxFQUFFO1lBQ04sTUFBTSxFQUFFLENBQUEsTUFBQSxPQUFPLENBQUMsTUFBTSwwQ0FBRSxNQUFNLEtBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLElBQUksRUFBRTtZQUNuRSxPQUFPLEVBQUUsQ0FBQSxNQUFBLE9BQU8sQ0FBQyxNQUFNLDBDQUFFLE9BQU8sS0FBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixJQUFJLHFCQUFxQjtZQUN6RixPQUFPLEVBQUUsQ0FBQSxNQUFBLE9BQU8sQ0FBQyxNQUFNLDBDQUFFLE9BQU87Z0JBQ3ZCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDdEYsYUFBYSxFQUFFLENBQUEsTUFBQSxPQUFPLENBQUMsTUFBTSwwQ0FBRSxhQUFhO2dCQUM3QixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RyxVQUFVLEVBQUUsQ0FBQSxNQUFBLE9BQU8sQ0FBQyxNQUFNLDBDQUFFLFVBQVU7Z0JBQzFCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ2pHO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsT0FBTyxFQUFFLE1BQUEsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxPQUFPLG1DQUN0QixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNsRixVQUFVLEVBQUUsQ0FBQSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLFVBQVU7Z0JBQ3pCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQzNGLE9BQU8sRUFBRSxDQUFBLE1BQUEsT0FBTyxDQUFDLEtBQUssMENBQUUsT0FBTztnQkFDdEIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztTQUNuRjtRQUNELEtBQUssRUFBRSxNQUFBLE1BQUEsT0FBTyxDQUFDLEtBQUssbUNBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUMsbUNBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxhQUFhLENBQUM7S0FDbkcsQ0FBQztJQUVGLG1DQUFtQztJQUNuQyxPQUFPLG9CQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUExQkQsb0NBMEJDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixjQUFjLENBQUMsTUFBYztJQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDekIsTUFBTSxJQUFJLEtBQUssQ0FDYixvR0FBb0csQ0FDckcsQ0FBQztLQUNIO0FBQ0gsQ0FBQztBQU5ELHdDQU1DIn0=