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.

71 lines 7.41 kB
"use strict"; /** * 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvcmUvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7O0FBRUgsNkJBQXdCO0FBQ3hCLG9EQUE0QjtBQUU1Qiw2QkFBNkI7QUFDN0IsZ0JBQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUVoQjs7R0FFRztBQUNVLFFBQUEsWUFBWSxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDbkMsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDZixNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsNkJBQTZCLENBQUM7UUFDeEQsT0FBTyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUM7UUFDeEQsT0FBTyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ25ELGFBQWEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN4RCxVQUFVLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7S0FDdEQsQ0FBQztJQUNGLEtBQUssRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDO1FBQ2QsT0FBTyxFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQ2xDLFVBQVUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEdB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