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.

94 lines 6.6 kB
"use strict"; /** * Wrapper to make SamApi work with Supabase Edge Functions * Converts query parameter authentication to header authentication */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createSupabaseApi = exports.SupabaseApi = void 0; const opportunities_1 = require("./sam/endpoints/opportunities"); const axios_1 = __importDefault(require("axios")); const errors_1 = require("../core/errors"); /** * Custom client that sends API key in headers instead of query params */ class SupabaseClient { constructor(apiKey, baseUrl) { this.axios = axios_1.default.create({ baseURL: baseUrl, timeout: 30000, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', 'apikey': apiKey, 'Authorization': `Bearer ${apiKey}`, }, }); // Intercept requests to remove api_key from query params this.axios.interceptors.request.use((config) => { var _a; if ((_a = config.params) === null || _a === void 0 ? void 0 : _a.api_key) { delete config.params.api_key; } return config; }); } async get(path, params) { try { const response = await this.axios.get(path, { params }); return response.data; } catch (error) { this.handleError(error); } } async post(path, data, params) { try { const response = await this.axios.post(path, data, { params }); return response.data; } catch (error) { this.handleError(error); } } handleError(error) { var _a, _b, _c, _d, _e, _f; if (axios_1.default.isAxiosError(error)) { const status = (_a = error.response) === null || _a === void 0 ? void 0 : _a.status; const message = ((_c = (_b = error.response) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.error) || ((_e = (_d = error.response) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.message) || error.message; if (status === 401 || status === 403) { throw new errors_1.AuthenticationError(`Authentication failed: ${message}`); } throw new errors_1.ApiError(`API error: ${message}`, status, (_f = error.response) === null || _f === void 0 ? void 0 : _f.data); } throw error; } } /** * Supabase-compatible API wrapper * Use this instead of SamApi when connecting to Supabase Edge Functions */ class SupabaseApi { constructor(options) { this.client = new SupabaseClient(options.apiKey, options.baseUrl); this.opportunities = new opportunities_1.OpportunitiesEndpoint(this.client); } } exports.SupabaseApi = SupabaseApi; /** * Helper function to create Supabase-compatible API instance */ function createSupabaseApi(supabaseUrl, supabaseAnonKey) { // Ensure the URL includes /functions/v1/api const baseUrl = supabaseUrl.includes('/functions/v1') ? supabaseUrl : `${supabaseUrl}/functions/v1/api`; return new SupabaseApi({ apiKey: supabaseAnonKey, baseUrl: baseUrl, }); } exports.createSupabaseApi = createSupabaseApi; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwYWJhc2Utd3JhcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnRzL3N1cGFiYXNlLXdyYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7Ozs7O0FBRUgsaUVBQXNFO0FBQ3RFLGtEQUE2QztBQUM3QywyQ0FBK0Q7QUFFL0Q7O0dBRUc7QUFDSCxNQUFNLGNBQWM7SUFHbEIsWUFBWSxNQUFjLEVBQUUsT0FBZTtRQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFHLGVBQUssQ0FBQyxNQUFNLENBQUM7WUFDeEIsT0FBTyxFQUFFLE9BQU87WUFDaEIsT0FBTyxFQUFFLEtBQUs7WUFDZCxPQUFPLEVBQUU7Z0JBQ1AsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsY0FBYyxFQUFFLGtCQUFrQjtnQkFDbEMsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLGVBQWUsRUFBRSxVQUFVLE1BQU0sRUFBRTthQUNwQztTQUNGLENBQUMsQ0FBQztRQUVILHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7O1lBQzdDLElBQUksTUFBQSxNQUFNLENBQUMsTUFBTSwwQ0FBRSxPQUFPLEVBQUU7Z0JBQzFCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7YUFDOUI7WUFDRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFJLElBQVksRUFBRSxNQUE0QjtRQUNyRCxJQUFJO1lBQ0YsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBSSxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQzNELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztTQUN0QjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSSxDQUFJLElBQVksRUFBRSxJQUFjLEVBQUUsTUFBNEI7UUFDdEUsSUFBSTtZQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUksSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDbEUsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1NBQ3RCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFVOztRQUM1QixJQUFJLGVBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDN0IsTUFBTSxNQUFNLEdBQUcsTUFBQSxLQUFLLENBQUMsUUFBUSwwQ0FBRSxNQUFNLENBQUM7WUFDdEMsTUFBTSxPQUFPLEdBQUcsQ0FBQSxNQUFBLE1BQUEsS0FBSyxDQUFDLFFBQVEsMENBQUUsSUFBSSwwQ0FBRSxLQUFLLE1BQUksTUFBQSxNQUFBLEtBQUssQ0FBQyxRQUFRLDBDQUFFLElBQUksMENBQUUsT0FBTyxDQUFBLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUU5RixJQUFJLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxLQUFLLEdBQUcsRUFBRTtnQkFDcEMsTUFBTSxJQUFJLDRCQUFtQixDQUFDLDBCQUEwQixPQUFPLEVBQUUsQ0FBQyxDQUFDO2FBQ3BFO1lBRUQsTUFBTSxJQUFJLGlCQUFRLENBQ2hCLGNBQWMsT0FBTyxFQUFFLEVBQ3ZCLE1BQU0sRUFDTixNQUFBLEtBQUssQ0FBQyxRQUFRLDBDQUFFLElBQUksQ0FDckIsQ0FBQztTQUNIO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUFFRDs7O0dBR0c7QUFDSCxNQUFhLFdBQVc7SUFJdEIsWUFBWSxPQUE0QztRQUN0RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxxQ0FBcUIsQ0FBQyxJQUFJLENBQUMsTUFBYSxDQUFDLENBQUM7SUFDckUsQ0FBQztDQUNGO0FBUkQsa0NBUUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLFdBQW1CLEVBQUUsZUFBdUI7SUFDNUUsNENBQTRDO0lBQzVDLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQ25ELENBQUMsQ0FBQyxXQUFXO1FBQ2IsQ0FBQyxDQUFDLEdBQUcsV0FBVyxtQkFBbUIsQ0FBQztJQUV0QyxPQUFPLElBQUksV0FBVyxDQUFDO1FBQ3JCLE1BQU0sRUFBRSxlQUFlO1FBQ3ZCLE9BQU8sRUFBRSxPQUFPO0tBQ2pCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFWRCw4Q0FVQyJ9