linkup-sdk
Version:
A Javascript Client SDK for the Linkup API
65 lines • 2.82 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.LinkupClient = void 0;
const axios_1 = __importDefault(require("axios"));
const zod_to_json_schema_1 = __importDefault(require("zod-to-json-schema"));
const package_json_1 = require("../package.json");
const refine_error_utils_1 = require("./utils/refine-error.utils");
const schema_utils_1 = require("./utils/schema.utils");
class LinkupClient {
USER_AGENT = `Linkup-JS-SDK/${package_json_1.version}`;
client;
constructor(config) {
const baseURL = config.baseUrl || 'https://api.linkup.so/v1';
this.client = axios_1.default.create({
baseURL,
headers: {
Authorization: `Bearer ${config.apiKey}`,
'User-Agent': this.USER_AGENT,
},
});
this.client.interceptors.response.use(response => response, error => {
if (!error.response || !error.response.data) {
throw error;
}
throw (0, refine_error_utils_1.refineError)(error.response.data);
});
}
async search(params) {
return this.client.post('/search', this.sanitizeParams(params)).then(response => response.data);
}
async fetch(params) {
return this.client.post('/fetch', params).then(response => response.data);
}
sanitizeParams(params) {
const { query, depth, outputType, includeImages, includeDomains, excludeDomains, fromDate, toDate, maxResults, } = params;
const result = {
depth,
outputType,
q: query,
...(includeImages && { includeImages }),
...(includeDomains && { includeDomains }),
...(excludeDomains && { excludeDomains }),
...(fromDate && { fromDate: fromDate.toISOString() }),
...(toDate && { toDate: toDate.toISOString() }),
...(maxResults && { maxResults }),
};
if ('includeInlineCitations' in params && params.includeInlineCitations) {
result.includeInlineCitations = params.includeInlineCitations;
}
if ('includeSources' in params && params.includeSources) {
result.includeSources = params.includeSources;
}
if ('structuredOutputSchema' in params) {
result.structuredOutputSchema = JSON.stringify((0, schema_utils_1.isZodObject)(params.structuredOutputSchema)
? (0, zod_to_json_schema_1.default)(params.structuredOutputSchema)
: params.structuredOutputSchema);
}
return result;
}
}
exports.LinkupClient = LinkupClient;
//# sourceMappingURL=linkup-client.js.map