UNPKG

@hyperbrowser/sdk

Version:

Node SDK for Hyperbrowser API

69 lines (68 loc) 2.73 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseService = void 0; const node_fetch_1 = __importDefault(require("node-fetch")); const client_1 = require("../client"); class BaseService { constructor(apiKey, baseUrl, timeout = 30000) { this.apiKey = apiKey; this.baseUrl = baseUrl; this.timeout = timeout; } async request(path, init, params) { try { const url = new URL(`${this.baseUrl}/api${path}`); if (params) { Object.entries(params).forEach(([key, value]) => { if (value !== undefined) { url.searchParams.append(key, value.toString()); } }); } const headerKeys = Object.keys(init?.headers || {}); const contentTypeKey = headerKeys.find((key) => key.toLowerCase() === "content-type"); const response = await (0, node_fetch_1.default)(url.toString(), { ...init, timeout: this.timeout, headers: { "x-api-key": this.apiKey, ...(contentTypeKey && init?.headers ? { "content-type": init.headers[contentTypeKey] } : { "content-type": "application/json" }), ...init?.headers, }, }); if (!response.ok) { let errorMessage; try { const errorData = await response.json(); errorMessage = errorData.message || errorData.error || `HTTP error! status: ${response.status}`; } catch { errorMessage = `HTTP error! status: ${response.status}`; } throw new client_1.HyperbrowserError(errorMessage, response.status); } if (response.headers.get("content-length") === "0") { return {}; } try { return (await response.json()); } catch { throw new client_1.HyperbrowserError("Failed to parse JSON response", response.status); } } catch (error) { if (error instanceof client_1.HyperbrowserError) { throw error; } throw new client_1.HyperbrowserError(error instanceof Error ? error.message : "Unknown error occurred", undefined); } } } exports.BaseService = BaseService;