UNPKG

@devvai/devv-code-backend

Version:

Backend SDK for Devv Code - Provides authentication, data management, email and AI capabilities

57 lines (56 loc) 1.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DevvWebReader = void 0; const device_1 = require("./device"); const session_1 = require("./session"); const constants_1 = require("./constants"); /** * DevvWebReader - Web content extraction using Jina Reader API * * Extracts clean, LLM-friendly content from any web page * * Usage: * ```typescript * const webReader = new DevvWebReader(); * const result = await webReader.read({ * url: "https://example.com/article" * }); * ``` */ class DevvWebReader { async read(options) { if (!options.url) { throw new Error('URL is required for web reader'); } // URL encode const encodedUrl = encodeURIComponent(options.url); // Get authentication info const deviceId = (0, device_1.getEncryptedDeviceId)(); const sid = (0, session_1.getSid)(); // Build request headers const headers = { 'Accept': 'application/json', 'Device-Id': deviceId }; if (sid) { headers['sid'] = sid; } // Send request const response = await fetch(`${constants_1.BASE_URL}api/v1/jina-reader/${encodedUrl}`, { method: 'POST', headers }); if (!response.ok) { const error = await response.json().catch(() => ({ error: 'Web reader failed' })); throw new Error(error.error || `Failed to read URL (Status: ${response.status})`); } // Parse response const result = await response.json(); // Check business status codes if (result.code !== 200 || result.status !== 20000) { throw new Error(`Read failed with code ${result.code}`); } return result; } } exports.DevvWebReader = DevvWebReader;