@diffbot/typescript 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/constants.ts","../src/errors.ts","../src/http.ts","../src/client.ts","../src/auth.ts","../src/extract.ts","../src/ask.ts","../src/crawl.ts","../src/kg.ts","../src/ontology.ts","../src/nlp.ts","../src/web-search.ts"],"sourcesContent":["export { DiffbotClient, type DiffbotClientOptions } from \"./client.js\";\nexport { resolveToken } from \"./auth.js\";\nexport { extract } from \"./extract.js\";\nexport { ask, type ChatMessage } from \"./ask.js\";\nexport {\n crawl,\n crawlDeleteJob,\n crawlGetJob,\n crawlListJobs,\n CrawlEventType,\n type CrawlEvent,\n type CrawlOptions,\n} from \"./crawl.js\";\nexport {\n dql,\n dqlFetchOntology,\n dqlParallel,\n dqlRefreshOntology,\n type DqlOptions,\n} from \"./kg.js\";\nexport { entities } from \"./nlp.js\";\nexport { Ontology } from \"./ontology.js\";\nexport { webSearch } from \"./web-search.js\";\nexport {\n DiffbotError,\n ValidationError,\n APIError,\n AuthError,\n RateLimitError,\n ExtractionError,\n} from \"./errors.js\";\nexport { VERSION } from \"./constants.js\";\nexport type { FetchFn } from \"./http.js\";\nexport type { JsonObject } from \"./json.js\";\n","export const VERSION = \"0.1.0\";\n\nexport const DEFAULT_TIMEOUT = 30_000;\n\nexport const EXTRACT_BASE = \"https://api.diffbot.com/v3\";\nexport const CRAWL_BASE = \"https://api.diffbot.com/v3/crawl\";\nexport const DIFFBOT_LLM_BASE = \"https://llm.diffbot.com/rag/v1/chat/completions\";\nexport const WEB_SEARCH_BASE = \"https://llm.diffbot.com/api/v1/web_search\";\nexport const NLP_BASE = \"https://nl.diffbot.com/v1/\";\nexport const KG_DQL_ENDPOINT = \"https://kg.diffbot.com/kg/v3/dql\";\nexport const KG_ONTOLOGY_ENDPOINT = \"https://kg.diffbot.com/kg/ontology\";\n\nexport const TOKEN_ENV_VAR = \"DIFFBOT_API_TOKEN\";\n","/** Exception hierarchy for the Diffbot SDK. */\n\nexport class DiffbotError extends Error {\n override name = \"DiffbotError\";\n}\n\nexport class ValidationError extends DiffbotError {\n override name = \"ValidationError\";\n}\n\nexport class APIError extends DiffbotError {\n statusCode: number;\n body: string;\n apiMessage: string | undefined;\n requestId: string | undefined;\n\n constructor(statusCode: number, body: string) {\n let apiMessage: string | undefined;\n let requestId: string | undefined;\n try {\n const data = JSON.parse(body) as { message?: string; requestId?: string };\n apiMessage = data.message;\n requestId = data.requestId;\n } catch {\n /* ignore parse errors */\n }\n const display = apiMessage ?? (body.length > 200 ? `${body.slice(0, 200)}...` : body);\n super(`Diffbot API error ${statusCode}: ${display}`);\n this.name = \"APIError\";\n this.statusCode = statusCode;\n this.body = body;\n this.apiMessage = apiMessage;\n this.requestId = requestId;\n }\n\n}\n\nexport class AuthError extends APIError {\n override name = \"AuthError\";\n}\n\nexport class RateLimitError extends APIError {\n retryAfter: string | undefined;\n override name = \"RateLimitError\";\n\n constructor(statusCode: number, body: string, retryAfter?: string | null) {\n super(statusCode, body);\n this.retryAfter = retryAfter ?? undefined;\n }\n}\n\nexport class ExtractionError extends DiffbotError {\n errorCode: number;\n error: string;\n override name = \"ExtractionError\";\n\n constructor(errorCode: number, error: string) {\n super(`Diffbot extraction error ${errorCode}: ${error}`);\n this.errorCode = errorCode;\n this.error = error;\n }\n}\n","import { APIError, AuthError, RateLimitError } from \"./errors.js\";\n\nexport type FetchFn = typeof fetch;\n\nexport interface HttpRequestOptions {\n params?: Record<string, string | number | boolean | undefined>;\n headers?: Record<string, string>;\n json?: unknown;\n redirect?: \"follow\" | \"error\" | \"manual\";\n}\n\nexport class HttpClient {\n private closed = false;\n\n constructor(\n private readonly fetchFn: FetchFn,\n private readonly timeoutMs: number,\n readonly userAgent: string,\n ) {}\n\n async get(url: string, options: HttpRequestOptions = {}): Promise<Response> {\n return this.request(url, { ...options, method: \"GET\" });\n }\n\n async post(url: string, options: HttpRequestOptions = {}): Promise<Response> {\n return this.request(url, { ...options, method: \"POST\" });\n }\n\n async request(url: string, options: HttpRequestOptions & { method?: string } = {}): Promise<Response> {\n if (this.closed) {\n throw new Error(\"HTTP client is closed\");\n }\n\n const parsed = new URL(url);\n if (options.params) {\n for (const [key, value] of Object.entries(options.params)) {\n if (value !== undefined) {\n parsed.searchParams.set(key, String(value));\n }\n }\n }\n\n const headers = new Headers(options.headers);\n headers.set(\"User-Agent\", this.userAgent);\n if (options.json !== undefined) {\n headers.set(\"Content-Type\", \"application/json\");\n }\n\n const init: RequestInit = {\n method: options.method ?? \"GET\",\n headers,\n redirect: options.redirect,\n signal: AbortSignal.timeout(this.timeoutMs),\n };\n if (options.json !== undefined) {\n init.body = JSON.stringify(options.json);\n }\n\n return this.fetchFn(parsed.toString(), init);\n }\n\n async close(): Promise<void> {\n this.closed = true;\n }\n\n get isClosed(): boolean {\n return this.closed;\n }\n}\n\nexport function raiseForStatus(response: Response, bodyText?: string): void {\n if (response.ok) {\n return;\n }\n const status = response.status;\n const body = bodyText ?? \"\";\n if (status === 401 || status === 403) {\n throw new AuthError(status, body);\n }\n if (status === 429) {\n throw new RateLimitError(status, body, response.headers.get(\"retry-after\"));\n }\n throw new APIError(status, body);\n}\n\nexport async function readBodyText(response: Response): Promise<string> {\n return response.text();\n}\n","import {\n CRAWL_BASE,\n DEFAULT_TIMEOUT,\n DIFFBOT_LLM_BASE,\n EXTRACT_BASE,\n NLP_BASE,\n VERSION,\n WEB_SEARCH_BASE,\n} from \"./constants.js\";\nimport { ValidationError } from \"./errors.js\";\nimport { HttpClient, type FetchFn } from \"./http.js\";\n\nexport interface DiffbotClientOptions {\n token: string;\n timeout?: number;\n analyzeUrl?: string;\n llmUrl?: string;\n crawlerUrl?: string;\n webSearchUrl?: string;\n nlpUrl?: string;\n fetch?: FetchFn;\n}\n\nexport class DiffbotClient {\n readonly token: string;\n readonly analyzeUrl: string;\n readonly llmUrl: string;\n readonly crawlerUrl: string;\n readonly webSearchUrl: string;\n readonly nlpUrl: string;\n readonly http: HttpClient;\n\n constructor(options: DiffbotClientOptions) {\n if (!options.token) {\n throw new ValidationError(\"token is required\");\n }\n this.token = options.token;\n this.analyzeUrl = options.analyzeUrl ?? EXTRACT_BASE;\n this.llmUrl = options.llmUrl ?? DIFFBOT_LLM_BASE;\n this.crawlerUrl = options.crawlerUrl ?? CRAWL_BASE;\n this.webSearchUrl = options.webSearchUrl ?? WEB_SEARCH_BASE;\n this.nlpUrl = options.nlpUrl ?? NLP_BASE;\n this.http = new HttpClient(\n options.fetch ?? fetch,\n options.timeout ?? DEFAULT_TIMEOUT,\n `diffbot-typescript/${VERSION}`,\n );\n }\n\n async close(): Promise<void> {\n await this.http.close();\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n await this.close();\n }\n}\n","import { existsSync, readFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { TOKEN_ENV_VAR } from \"./constants.js\";\n\n/** Mutable for tests; defaults to ~/.diffbot/credentials. */\nexport const authConfig = {\n credentialsPath: join(homedir(), \".diffbot\", \"credentials\"),\n};\n\nfunction readCredentialsFile(path = authConfig.credentialsPath): string {\n if (!existsSync(path)) {\n return \"\";\n }\n const text = readFileSync(path, \"utf8\");\n for (const line of text.split(\"\\n\")) {\n const trimmed = line.trim();\n if (trimmed.startsWith(`${TOKEN_ENV_VAR}=`)) {\n return trimmed.slice(TOKEN_ENV_VAR.length + 1).trim();\n }\n }\n return \"\";\n}\n\n/** Resolve a Diffbot API token from explicit arg, env var, or credentials file. */\nexport function resolveToken(token?: string | null): string {\n if (token?.trim()) {\n return token.trim();\n }\n\n const envToken = process.env[TOKEN_ENV_VAR]?.trim();\n if (envToken) {\n return envToken;\n }\n\n return readCredentialsFile();\n}\n","import type { DiffbotClient } from \"./client.js\";\nimport { ExtractionError } from \"./errors.js\";\nimport { raiseForStatus, readBodyText } from \"./http.js\";\nimport type { JsonObject } from \"./json.js\";\n\nfunction buildParams(client: DiffbotClient, url: string, fmt: string) {\n const params: Record<string, string | number> = {\n token: client.token,\n url,\n timeout: 30_000,\n };\n if (fmt === \"markdown\") {\n params.mode = \"llm\";\n }\n return params;\n}\n\nfunction parseResponse(data: JsonObject): JsonObject {\n if (\"errorCode\" in data) {\n throw new ExtractionError(\n Number(data.errorCode),\n String(data.error ?? \"\"),\n );\n }\n return data;\n}\n\nfunction normalizeUrl(url: string): string {\n return url.startsWith(\"http\") ? url : `https://${url}`;\n}\n\nexport async function extract(\n client: DiffbotClient,\n url: string,\n api = \"analyze\",\n fmt = \"markdown\",\n): Promise<JsonObject> {\n const normalized = normalizeUrl(url);\n const response = await client.http.get(`${client.analyzeUrl}/${api}`, {\n params: buildParams(client, normalized, fmt),\n });\n const body = await readBodyText(response);\n raiseForStatus(response, body);\n return parseResponse(JSON.parse(body) as JsonObject);\n}\n","import type { DiffbotClient } from \"./client.js\";\nimport { readBodyText, raiseForStatus } from \"./http.js\";\n\nexport interface ChatMessage {\n role: string;\n content: string;\n}\n\nfunction parseChunk(line: string): string | undefined {\n try {\n const chunk = JSON.parse(line.replace(/^data: /, \"\")) as {\n choices?: Array<{ delta?: { content?: string } }>;\n };\n const content = chunk.choices?.[0]?.delta?.content;\n return content ?? undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction* linesFromText(text: string): Generator<string> {\n for (const line of text.split(\"\\n\")) {\n if (line) yield line;\n }\n}\n\nasync function* linesFromStream(body: ReadableStream<Uint8Array>): AsyncGenerator<string> {\n const reader = body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n const parts = buffer.split(\"\\n\");\n buffer = parts.pop() ?? \"\";\n for (const line of parts) {\n if (line) yield line;\n }\n }\n if (buffer) yield buffer;\n}\n\nexport async function* ask(\n client: DiffbotClient,\n messages: ChatMessage[],\n): AsyncGenerator<string> {\n const headers = { Authorization: `Bearer ${client.token}` };\n const payload = { model: \"diffbot-small-xl\", messages, stream: true };\n\n const response = await client.http.post(client.llmUrl, { headers, json: payload });\n if (!response.ok) {\n const body = await readBodyText(response);\n raiseForStatus(response, body);\n return;\n }\n\n if (response.body) {\n for await (const line of linesFromStream(response.body)) {\n const content = parseChunk(line);\n if (content) yield content;\n }\n return;\n }\n\n const text = await response.text();\n for (const line of linesFromText(text)) {\n const content = parseChunk(line);\n if (content) yield content;\n }\n}\n","import type { DiffbotClient } from \"./client.js\";\nimport { APIError } from \"./errors.js\";\nimport { readBodyText, raiseForStatus } from \"./http.js\";\nimport type { JsonObject } from \"./json.js\";\n\nexport enum CrawlEventType {\n JobCreated = \"job_created\",\n UrlProcessed = \"url_processed\",\n}\n\nexport interface CrawlEvent {\n eventType: CrawlEventType;\n timestamp: string;\n details: JsonObject;\n}\n\nexport interface CrawlOptions {\n hops?: number;\n jobName?: string;\n maxToCrawl?: number;\n maxToProcess?: number;\n restrictDomain?: boolean;\n apiUrl?: string;\n crawlDelay?: number;\n urlCrawlPattern?: string;\n urlProcessPattern?: string;\n obeyRobots?: boolean;\n useProxies?: boolean;\n customHeaders?: string;\n watch?: boolean;\n pollInterval?: number;\n}\n\nfunction buildCrawlParams(\n client: DiffbotClient,\n jobName: string,\n site: string,\n options: Required<Pick<CrawlOptions, \"maxToCrawl\" | \"maxToProcess\" | \"hops\" | \"restrictDomain\" | \"apiUrl\" | \"crawlDelay\" | \"obeyRobots\" | \"useProxies\">> &\n Pick<CrawlOptions, \"urlCrawlPattern\" | \"urlProcessPattern\" | \"customHeaders\">,\n) {\n const params: Record<string, string | number> = {\n token: client.token,\n name: jobName,\n seeds: site,\n maxToCrawl: options.maxToCrawl,\n maxToProcess: options.maxToProcess,\n maxHops: options.hops,\n restrictDomain: options.restrictDomain ? 1 : 0,\n };\n if (options.apiUrl) params.apiUrl = options.apiUrl;\n if (options.crawlDelay > 0) params.crawlDelay = options.crawlDelay;\n if (options.urlCrawlPattern) params.urlCrawlPattern = options.urlCrawlPattern;\n if (options.urlProcessPattern) params.urlProcessPattern = options.urlProcessPattern;\n if (options.obeyRobots) params.obeyRobots = 1;\n if (options.useProxies) params.useProxies = 1;\n if (options.customHeaders) params.customHeaders = options.customHeaders;\n return params;\n}\n\nfunction parseUrlCsv(text: string, seenUrls: Set<string>): CrawlEvent[] {\n const events: CrawlEvent[] = [];\n const lines = text.trim().split(\"\\n\");\n if (lines.length < 2) return events;\n\n const headers = lines[0]!.split(\",\").map((h) => h.trim());\n const urlIdx = headers.indexOf(\"Url\");\n const timeIdx = headers.indexOf(\"Crawled Time\");\n const statusIdx = headers.indexOf(\"Crawl Status\");\n\n for (const line of lines.slice(1)) {\n const cols = line.split(\",\");\n const url = cols[urlIdx]?.replace(/^\"|\"$/g, \"\").trim() ?? \"\";\n if (url && !seenUrls.has(url)) {\n seenUrls.add(url);\n events.push({\n eventType: CrawlEventType.UrlProcessed,\n timestamp: cols[timeIdx]?.trim() ?? new Date().toISOString(),\n details: {\n url,\n status: cols[statusIdx]?.trim() ?? \"unknown\",\n },\n });\n }\n }\n return events;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport async function* crawl(\n client: DiffbotClient,\n site: string,\n options: CrawlOptions = {},\n): AsyncGenerator<CrawlEvent> {\n let normalizedSite = site.startsWith(\"http\") ? site : `https://${site}`;\n const jobName = options.jobName ?? `crawl-${Math.floor(Date.now() / 1000)}`;\n\n const params = buildCrawlParams(client, jobName, normalizedSite, {\n hops: options.hops ?? 2,\n maxToCrawl: options.maxToCrawl ?? 100,\n maxToProcess: options.maxToProcess ?? 100,\n restrictDomain: options.restrictDomain ?? true,\n apiUrl: options.apiUrl ?? \"\",\n crawlDelay: options.crawlDelay ?? -1,\n urlCrawlPattern: options.urlCrawlPattern,\n urlProcessPattern: options.urlProcessPattern,\n obeyRobots: options.obeyRobots ?? false,\n useProxies: options.useProxies ?? false,\n customHeaders: options.customHeaders,\n });\n\n const response = await client.http.get(client.crawlerUrl, { params });\n const body = await readBodyText(response);\n raiseForStatus(response, body);\n\n yield {\n eventType: CrawlEventType.JobCreated,\n timestamp: new Date().toISOString(),\n details: { job_name: jobName },\n };\n\n if (!options.watch) {\n return;\n }\n\n const seenUrls = new Set<string>();\n const pollInterval = options.pollInterval ?? 2000;\n\n while (true) {\n const statusResponse = await client.http.get(client.crawlerUrl, {\n params: { token: client.token, name: jobName },\n });\n const statusBody = await readBodyText(statusResponse);\n raiseForStatus(statusResponse, statusBody);\n const jobs = (JSON.parse(statusBody) as JsonObject).jobs as JsonObject[] | undefined;\n if (!jobs?.length) break;\n\n const jobStatus = (jobs[0]!.jobStatus ?? {}) as JsonObject;\n const statusCode = Number(jobStatus.status ?? 0);\n\n const urlsResponse = await client.http.get(`${client.crawlerUrl}/data`, {\n params: { token: client.token, name: jobName, type: \"urls\" },\n redirect: \"follow\",\n });\n const urlsBody = await readBodyText(urlsResponse);\n raiseForStatus(urlsResponse, urlsBody);\n if (urlsBody) {\n for (const event of parseUrlCsv(urlsBody, seenUrls)) {\n yield event;\n }\n }\n\n if (statusCode !== 0 && statusCode !== 7) {\n const message = String(jobStatus.message ?? \"\");\n if (/fail|error/i.test(message)) {\n throw new APIError(500, `Crawler job failed: ${message}`);\n }\n break;\n }\n\n await sleep(pollInterval);\n }\n}\n\nexport async function crawlListJobs(client: DiffbotClient): Promise<JsonObject[]> {\n const response = await client.http.get(client.crawlerUrl, {\n params: { token: client.token },\n });\n const body = await readBodyText(response);\n raiseForStatus(response, body);\n return ((JSON.parse(body) as JsonObject).jobs as JsonObject[] | undefined) ?? [];\n}\n\nexport async function crawlGetJob(client: DiffbotClient, jobName: string): Promise<JsonObject> {\n const response = await client.http.get(client.crawlerUrl, {\n params: { token: client.token, name: jobName },\n });\n const body = await readBodyText(response);\n raiseForStatus(response, body);\n const jobs = (JSON.parse(body) as JsonObject).jobs as JsonObject[] | undefined;\n return jobs?.[0] ?? {};\n}\n\nexport async function crawlDeleteJob(client: DiffbotClient, jobName: string): Promise<void> {\n const response = await client.http.get(client.crawlerUrl, {\n params: { token: client.token, name: jobName, delete: 1 },\n });\n const body = await readBodyText(response);\n raiseForStatus(response, body);\n}\n","import type { DiffbotClient } from \"./client.js\";\nimport { mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname } from \"node:path\";\nimport { KG_DQL_ENDPOINT, KG_ONTOLOGY_ENDPOINT } from \"./constants.js\";\nimport { readBodyText, raiseForStatus } from \"./http.js\";\nimport type { JsonObject } from \"./json.js\";\nimport { Ontology } from \"./ontology.js\";\n\nexport interface DqlOptions {\n size?: number;\n from?: number;\n format?: string;\n filter?: string;\n exportspec?: string;\n extra?: Record<string, string>;\n raw?: boolean;\n}\n\nfunction buildDqlParams(\n client: DiffbotClient,\n query: string,\n options: DqlOptions,\n): Record<string, string | number> {\n const params: Record<string, string | number> = {\n token: client.token,\n query,\n size: options.size ?? 10,\n };\n if (options.from) params.from = options.from;\n if (options.format && options.format !== \"json\") params.format = options.format;\n if (options.filter !== undefined) params.filter = options.filter;\n if (options.exportspec !== undefined) params.exportspec = options.exportspec;\n if (options.extra) Object.assign(params, options.extra);\n return params;\n}\n\nexport async function dql(\n client: DiffbotClient,\n query: string,\n options: DqlOptions = {},\n): Promise<JsonObject | Uint8Array> {\n const params = buildDqlParams(client, query, options);\n const response = await client.http.get(KG_DQL_ENDPOINT, { params });\n const body = await readBodyText(response);\n raiseForStatus(response, body);\n if (options.raw) {\n return new TextEncoder().encode(body);\n }\n return JSON.parse(body) as JsonObject;\n}\n\nexport async function dqlParallel(\n client: DiffbotClient,\n queries: Array<DqlOptions & { query: string }>,\n workers = 8,\n): Promise<Array<JsonObject | Uint8Array>> {\n if (!queries.length) return [];\n\n const limit = Math.min(workers, queries.length);\n const results: Array<JsonObject | Uint8Array> = new Array(queries.length);\n let index = 0;\n\n async function worker(): Promise<void> {\n while (true) {\n const current = index++;\n if (current >= queries.length) return;\n const { query, ...opts } = queries[current]!;\n results[current] = await dql(client, query, opts);\n }\n }\n\n await Promise.all(Array.from({ length: limit }, () => worker()));\n return results;\n}\n\nexport async function dqlRefreshOntology(client: DiffbotClient, dest: string): Promise<void> {\n const response = await client.http.get(KG_ONTOLOGY_ENDPOINT);\n const body = await readBodyText(response);\n raiseForStatus(response, body);\n await mkdir(dirname(dest), { recursive: true });\n await writeFile(dest, body);\n}\n\nexport async function dqlFetchOntology(client: DiffbotClient): Promise<Ontology> {\n const response = await client.http.get(KG_ONTOLOGY_ENDPOINT);\n const body = await readBodyText(response);\n raiseForStatus(response, body);\n return Ontology.fromJson(body);\n}\n","import { readFile } from \"node:fs/promises\";\nimport type { JsonObject } from \"./json.js\";\n\ntype FieldMeta = JsonObject;\ntype FieldEntry = [string, FieldMeta];\n\nexport class Ontology {\n readonly data: JsonObject;\n\n constructor(data: JsonObject) {\n this.data = data;\n }\n\n static fromJson(raw: string | Uint8Array): Ontology {\n const text = typeof raw === \"string\" ? raw : new TextDecoder().decode(raw);\n return new Ontology(JSON.parse(text) as JsonObject);\n }\n\n static async fromPath(path: string): Promise<Ontology> {\n const text = await readFile(path, \"utf8\");\n return Ontology.fromJson(text);\n }\n\n types(): string[] {\n const types = this.data.types as Record<string, unknown> | undefined;\n return Object.keys(types ?? {}).sort();\n }\n\n composites(): string[] {\n const composites = this.data.composites as Record<string, unknown> | undefined;\n return Object.keys(composites ?? {}).sort();\n }\n\n enums(): string[] {\n const enums = this.data.enums as Record<string, unknown> | undefined;\n return Object.keys(enums ?? {}).sort();\n }\n\n taxonomies(): string[] {\n const taxonomies = this.data.taxonomies as Record<string, unknown> | undefined;\n return Object.keys(taxonomies ?? {}).sort();\n }\n\n private static fieldsOf(container: Record<string, JsonObject>, typeName: string): Record<string, FieldMeta> {\n const entry = container[typeName];\n if (!entry) throw new Error(`Unknown name: ${typeName}`);\n return (entry.fields as Record<string, FieldMeta> | undefined) ?? {};\n }\n\n fieldsFor(typeName: string): Record<string, FieldMeta> {\n const types = (this.data.types ?? {}) as Record<string, JsonObject>;\n const composites = (this.data.composites ?? {}) as Record<string, JsonObject>;\n if (typeName in types) return Ontology.fieldsOf(types, typeName);\n if (typeName in composites) return Ontology.fieldsOf(composites, typeName);\n throw new Error(`${typeName} is not a known entity type or composite`);\n }\n\n static filterFields(\n fields: Record<string, FieldMeta>,\n search?: string | null,\n includeDeprecated = false,\n ): FieldEntry[] {\n const pattern = search ? new RegExp(search, \"i\") : null;\n const out: FieldEntry[] = [];\n for (const [name, meta] of Object.entries(fields)) {\n if (!includeDeprecated && meta.isDeprecated) continue;\n if (pattern && !pattern.test(name)) continue;\n out.push([name, meta]);\n }\n return out;\n }\n\n taxonomyValues(name: string, search?: string | null): string[] {\n const taxonomies = (this.data.taxonomies ?? {}) as Record<string, JsonObject>;\n const tax = taxonomies[name];\n if (!tax) throw new Error(`Unknown taxonomy: ${name}`);\n\n const pattern = search ? new RegExp(search, \"i\") : null;\n const out: string[] = [];\n\n const walk = (node: JsonObject): void => {\n const n = node.name;\n if (typeof n === \"string\" && (!pattern || pattern.test(n))) {\n out.push(n);\n }\n for (const child of (node.children as JsonObject[] | undefined) ?? []) {\n walk(child);\n }\n };\n\n for (const cat of (tax.categories as JsonObject[] | undefined) ?? []) {\n walk(cat);\n }\n return out;\n }\n\n enumValues(name: string): string[] {\n const enums = (this.data.enums ?? {}) as Record<string, JsonObject>;\n const enumEntry = enums[name];\n if (!enumEntry) throw new Error(`Unknown enum: ${name}`);\n return [...((enumEntry.values as string[] | undefined) ?? [])];\n }\n\n findNamed(search: string): string[] {\n const pattern = new RegExp(search, \"i\");\n const found = new Set<string>();\n\n const walk = (node: unknown): void => {\n if (Array.isArray(node)) {\n for (const v of node) walk(v);\n } else if (node && typeof node === \"object\") {\n const obj = node as JsonObject;\n const n = obj.name;\n if (typeof n === \"string\" && pattern.test(n)) found.add(n);\n for (const v of Object.values(obj)) walk(v);\n }\n };\n\n walk(this.data);\n return [...found].sort();\n }\n\n static formatField(name: string, meta: FieldMeta): string {\n let typeName = String(meta.type ?? \"?\");\n if (typeName === \"LinkedEntity\") {\n const le = meta.leType as string[] | undefined;\n if (le?.length) typeName = `LinkedEntity (${le[0]})`;\n }\n const flags: string[] = [];\n if (meta.isList) flags.push(\"isList\");\n if (meta.isComposite) flags.push(\"isComposite\");\n if (meta.isEnum) flags.push(\"isEnum\");\n if (meta.isDeprecated) flags.push(\"DEPRECATED\");\n const suffix = flags.map((f) => ` [${f}]`).join(\"\");\n return `${name}: [${typeName}]${suffix}`;\n }\n}\n","import type { DiffbotClient } from \"./client.js\";\nimport { readBodyText, raiseForStatus } from \"./http.js\";\nimport type { JsonObject } from \"./json.js\";\n\nconst NLP_FIELDS = \"entities,sentiment\";\n\nexport async function entities(\n client: DiffbotClient,\n text: string,\n lang = \"auto\",\n): Promise<JsonObject> {\n const params = { token: client.token, fields: NLP_FIELDS };\n const payload = [{ lang, format: \"plain text\", content: text }];\n const response = await client.http.post(client.nlpUrl, { params, json: payload });\n const body = await readBodyText(response);\n raiseForStatus(response, body);\n const data = JSON.parse(body) as JsonObject | JsonObject[];\n return Array.isArray(data) ? (data[0] ?? {}) : data;\n}\n","import type { DiffbotClient } from \"./client.js\";\nimport { readBodyText, raiseForStatus } from \"./http.js\";\nimport type { JsonObject } from \"./json.js\";\n\nexport async function webSearch(\n client: DiffbotClient,\n text: string,\n options: { numResults?: number; maxTokens?: number } = {},\n): Promise<JsonObject> {\n const headers = { Authorization: `Bearer ${client.token}` };\n const params: Record<string, string | number> = { text };\n if (options.numResults !== undefined) params.size = options.numResults;\n if (options.maxTokens !== undefined) params.maxTokens = options.maxTokens;\n\n const response = await client.http.get(client.webSearchUrl, { headers, params });\n const body = await readBodyText(response);\n raiseForStatus(response, body);\n return JSON.parse(body) as JsonObject;\n}\n"],"mappings":"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","names":["CrawlEventType","import_promises","import_node_path"]}
@@ -0,0 +1,163 @@
1
+ type FetchFn = typeof fetch;
2
+ interface HttpRequestOptions {
3
+ params?: Record<string, string | number | boolean | undefined>;
4
+ headers?: Record<string, string>;
5
+ json?: unknown;
6
+ redirect?: "follow" | "error" | "manual";
7
+ }
8
+ declare class HttpClient {
9
+ private readonly fetchFn;
10
+ private readonly timeoutMs;
11
+ readonly userAgent: string;
12
+ private closed;
13
+ constructor(fetchFn: FetchFn, timeoutMs: number, userAgent: string);
14
+ get(url: string, options?: HttpRequestOptions): Promise<Response>;
15
+ post(url: string, options?: HttpRequestOptions): Promise<Response>;
16
+ request(url: string, options?: HttpRequestOptions & {
17
+ method?: string;
18
+ }): Promise<Response>;
19
+ close(): Promise<void>;
20
+ get isClosed(): boolean;
21
+ }
22
+
23
+ interface DiffbotClientOptions {
24
+ token: string;
25
+ timeout?: number;
26
+ analyzeUrl?: string;
27
+ llmUrl?: string;
28
+ crawlerUrl?: string;
29
+ webSearchUrl?: string;
30
+ nlpUrl?: string;
31
+ fetch?: FetchFn;
32
+ }
33
+ declare class DiffbotClient {
34
+ readonly token: string;
35
+ readonly analyzeUrl: string;
36
+ readonly llmUrl: string;
37
+ readonly crawlerUrl: string;
38
+ readonly webSearchUrl: string;
39
+ readonly nlpUrl: string;
40
+ readonly http: HttpClient;
41
+ constructor(options: DiffbotClientOptions);
42
+ close(): Promise<void>;
43
+ [Symbol.asyncDispose](): Promise<void>;
44
+ }
45
+
46
+ /** Resolve a Diffbot API token from explicit arg, env var, or credentials file. */
47
+ declare function resolveToken(token?: string | null): string;
48
+
49
+ type JsonObject = Record<string, unknown>;
50
+
51
+ declare function extract(client: DiffbotClient, url: string, api?: string, fmt?: string): Promise<JsonObject>;
52
+
53
+ interface ChatMessage {
54
+ role: string;
55
+ content: string;
56
+ }
57
+ declare function ask(client: DiffbotClient, messages: ChatMessage[]): AsyncGenerator<string>;
58
+
59
+ declare enum CrawlEventType {
60
+ JobCreated = "job_created",
61
+ UrlProcessed = "url_processed"
62
+ }
63
+ interface CrawlEvent {
64
+ eventType: CrawlEventType;
65
+ timestamp: string;
66
+ details: JsonObject;
67
+ }
68
+ interface CrawlOptions {
69
+ hops?: number;
70
+ jobName?: string;
71
+ maxToCrawl?: number;
72
+ maxToProcess?: number;
73
+ restrictDomain?: boolean;
74
+ apiUrl?: string;
75
+ crawlDelay?: number;
76
+ urlCrawlPattern?: string;
77
+ urlProcessPattern?: string;
78
+ obeyRobots?: boolean;
79
+ useProxies?: boolean;
80
+ customHeaders?: string;
81
+ watch?: boolean;
82
+ pollInterval?: number;
83
+ }
84
+ declare function crawl(client: DiffbotClient, site: string, options?: CrawlOptions): AsyncGenerator<CrawlEvent>;
85
+ declare function crawlListJobs(client: DiffbotClient): Promise<JsonObject[]>;
86
+ declare function crawlGetJob(client: DiffbotClient, jobName: string): Promise<JsonObject>;
87
+ declare function crawlDeleteJob(client: DiffbotClient, jobName: string): Promise<void>;
88
+
89
+ type FieldMeta = JsonObject;
90
+ type FieldEntry = [string, FieldMeta];
91
+ declare class Ontology {
92
+ readonly data: JsonObject;
93
+ constructor(data: JsonObject);
94
+ static fromJson(raw: string | Uint8Array): Ontology;
95
+ static fromPath(path: string): Promise<Ontology>;
96
+ types(): string[];
97
+ composites(): string[];
98
+ enums(): string[];
99
+ taxonomies(): string[];
100
+ private static fieldsOf;
101
+ fieldsFor(typeName: string): Record<string, FieldMeta>;
102
+ static filterFields(fields: Record<string, FieldMeta>, search?: string | null, includeDeprecated?: boolean): FieldEntry[];
103
+ taxonomyValues(name: string, search?: string | null): string[];
104
+ enumValues(name: string): string[];
105
+ findNamed(search: string): string[];
106
+ static formatField(name: string, meta: FieldMeta): string;
107
+ }
108
+
109
+ interface DqlOptions {
110
+ size?: number;
111
+ from?: number;
112
+ format?: string;
113
+ filter?: string;
114
+ exportspec?: string;
115
+ extra?: Record<string, string>;
116
+ raw?: boolean;
117
+ }
118
+ declare function dql(client: DiffbotClient, query: string, options?: DqlOptions): Promise<JsonObject | Uint8Array>;
119
+ declare function dqlParallel(client: DiffbotClient, queries: Array<DqlOptions & {
120
+ query: string;
121
+ }>, workers?: number): Promise<Array<JsonObject | Uint8Array>>;
122
+ declare function dqlRefreshOntology(client: DiffbotClient, dest: string): Promise<void>;
123
+ declare function dqlFetchOntology(client: DiffbotClient): Promise<Ontology>;
124
+
125
+ declare function entities(client: DiffbotClient, text: string, lang?: string): Promise<JsonObject>;
126
+
127
+ declare function webSearch(client: DiffbotClient, text: string, options?: {
128
+ numResults?: number;
129
+ maxTokens?: number;
130
+ }): Promise<JsonObject>;
131
+
132
+ /** Exception hierarchy for the Diffbot SDK. */
133
+ declare class DiffbotError extends Error {
134
+ name: string;
135
+ }
136
+ declare class ValidationError extends DiffbotError {
137
+ name: string;
138
+ }
139
+ declare class APIError extends DiffbotError {
140
+ statusCode: number;
141
+ body: string;
142
+ apiMessage: string | undefined;
143
+ requestId: string | undefined;
144
+ constructor(statusCode: number, body: string);
145
+ }
146
+ declare class AuthError extends APIError {
147
+ name: string;
148
+ }
149
+ declare class RateLimitError extends APIError {
150
+ retryAfter: string | undefined;
151
+ name: string;
152
+ constructor(statusCode: number, body: string, retryAfter?: string | null);
153
+ }
154
+ declare class ExtractionError extends DiffbotError {
155
+ errorCode: number;
156
+ error: string;
157
+ name: string;
158
+ constructor(errorCode: number, error: string);
159
+ }
160
+
161
+ declare const VERSION = "0.1.0";
162
+
163
+ export { APIError, AuthError, type ChatMessage, type CrawlEvent, CrawlEventType, type CrawlOptions, DiffbotClient, type DiffbotClientOptions, DiffbotError, type DqlOptions, ExtractionError, type FetchFn, type JsonObject, Ontology, RateLimitError, VERSION, ValidationError, ask, crawl, crawlDeleteJob, crawlGetJob, crawlListJobs, dql, dqlFetchOntology, dqlParallel, dqlRefreshOntology, entities, extract, resolveToken, webSearch };
@@ -0,0 +1,163 @@
1
+ type FetchFn = typeof fetch;
2
+ interface HttpRequestOptions {
3
+ params?: Record<string, string | number | boolean | undefined>;
4
+ headers?: Record<string, string>;
5
+ json?: unknown;
6
+ redirect?: "follow" | "error" | "manual";
7
+ }
8
+ declare class HttpClient {
9
+ private readonly fetchFn;
10
+ private readonly timeoutMs;
11
+ readonly userAgent: string;
12
+ private closed;
13
+ constructor(fetchFn: FetchFn, timeoutMs: number, userAgent: string);
14
+ get(url: string, options?: HttpRequestOptions): Promise<Response>;
15
+ post(url: string, options?: HttpRequestOptions): Promise<Response>;
16
+ request(url: string, options?: HttpRequestOptions & {
17
+ method?: string;
18
+ }): Promise<Response>;
19
+ close(): Promise<void>;
20
+ get isClosed(): boolean;
21
+ }
22
+
23
+ interface DiffbotClientOptions {
24
+ token: string;
25
+ timeout?: number;
26
+ analyzeUrl?: string;
27
+ llmUrl?: string;
28
+ crawlerUrl?: string;
29
+ webSearchUrl?: string;
30
+ nlpUrl?: string;
31
+ fetch?: FetchFn;
32
+ }
33
+ declare class DiffbotClient {
34
+ readonly token: string;
35
+ readonly analyzeUrl: string;
36
+ readonly llmUrl: string;
37
+ readonly crawlerUrl: string;
38
+ readonly webSearchUrl: string;
39
+ readonly nlpUrl: string;
40
+ readonly http: HttpClient;
41
+ constructor(options: DiffbotClientOptions);
42
+ close(): Promise<void>;
43
+ [Symbol.asyncDispose](): Promise<void>;
44
+ }
45
+
46
+ /** Resolve a Diffbot API token from explicit arg, env var, or credentials file. */
47
+ declare function resolveToken(token?: string | null): string;
48
+
49
+ type JsonObject = Record<string, unknown>;
50
+
51
+ declare function extract(client: DiffbotClient, url: string, api?: string, fmt?: string): Promise<JsonObject>;
52
+
53
+ interface ChatMessage {
54
+ role: string;
55
+ content: string;
56
+ }
57
+ declare function ask(client: DiffbotClient, messages: ChatMessage[]): AsyncGenerator<string>;
58
+
59
+ declare enum CrawlEventType {
60
+ JobCreated = "job_created",
61
+ UrlProcessed = "url_processed"
62
+ }
63
+ interface CrawlEvent {
64
+ eventType: CrawlEventType;
65
+ timestamp: string;
66
+ details: JsonObject;
67
+ }
68
+ interface CrawlOptions {
69
+ hops?: number;
70
+ jobName?: string;
71
+ maxToCrawl?: number;
72
+ maxToProcess?: number;
73
+ restrictDomain?: boolean;
74
+ apiUrl?: string;
75
+ crawlDelay?: number;
76
+ urlCrawlPattern?: string;
77
+ urlProcessPattern?: string;
78
+ obeyRobots?: boolean;
79
+ useProxies?: boolean;
80
+ customHeaders?: string;
81
+ watch?: boolean;
82
+ pollInterval?: number;
83
+ }
84
+ declare function crawl(client: DiffbotClient, site: string, options?: CrawlOptions): AsyncGenerator<CrawlEvent>;
85
+ declare function crawlListJobs(client: DiffbotClient): Promise<JsonObject[]>;
86
+ declare function crawlGetJob(client: DiffbotClient, jobName: string): Promise<JsonObject>;
87
+ declare function crawlDeleteJob(client: DiffbotClient, jobName: string): Promise<void>;
88
+
89
+ type FieldMeta = JsonObject;
90
+ type FieldEntry = [string, FieldMeta];
91
+ declare class Ontology {
92
+ readonly data: JsonObject;
93
+ constructor(data: JsonObject);
94
+ static fromJson(raw: string | Uint8Array): Ontology;
95
+ static fromPath(path: string): Promise<Ontology>;
96
+ types(): string[];
97
+ composites(): string[];
98
+ enums(): string[];
99
+ taxonomies(): string[];
100
+ private static fieldsOf;
101
+ fieldsFor(typeName: string): Record<string, FieldMeta>;
102
+ static filterFields(fields: Record<string, FieldMeta>, search?: string | null, includeDeprecated?: boolean): FieldEntry[];
103
+ taxonomyValues(name: string, search?: string | null): string[];
104
+ enumValues(name: string): string[];
105
+ findNamed(search: string): string[];
106
+ static formatField(name: string, meta: FieldMeta): string;
107
+ }
108
+
109
+ interface DqlOptions {
110
+ size?: number;
111
+ from?: number;
112
+ format?: string;
113
+ filter?: string;
114
+ exportspec?: string;
115
+ extra?: Record<string, string>;
116
+ raw?: boolean;
117
+ }
118
+ declare function dql(client: DiffbotClient, query: string, options?: DqlOptions): Promise<JsonObject | Uint8Array>;
119
+ declare function dqlParallel(client: DiffbotClient, queries: Array<DqlOptions & {
120
+ query: string;
121
+ }>, workers?: number): Promise<Array<JsonObject | Uint8Array>>;
122
+ declare function dqlRefreshOntology(client: DiffbotClient, dest: string): Promise<void>;
123
+ declare function dqlFetchOntology(client: DiffbotClient): Promise<Ontology>;
124
+
125
+ declare function entities(client: DiffbotClient, text: string, lang?: string): Promise<JsonObject>;
126
+
127
+ declare function webSearch(client: DiffbotClient, text: string, options?: {
128
+ numResults?: number;
129
+ maxTokens?: number;
130
+ }): Promise<JsonObject>;
131
+
132
+ /** Exception hierarchy for the Diffbot SDK. */
133
+ declare class DiffbotError extends Error {
134
+ name: string;
135
+ }
136
+ declare class ValidationError extends DiffbotError {
137
+ name: string;
138
+ }
139
+ declare class APIError extends DiffbotError {
140
+ statusCode: number;
141
+ body: string;
142
+ apiMessage: string | undefined;
143
+ requestId: string | undefined;
144
+ constructor(statusCode: number, body: string);
145
+ }
146
+ declare class AuthError extends APIError {
147
+ name: string;
148
+ }
149
+ declare class RateLimitError extends APIError {
150
+ retryAfter: string | undefined;
151
+ name: string;
152
+ constructor(statusCode: number, body: string, retryAfter?: string | null);
153
+ }
154
+ declare class ExtractionError extends DiffbotError {
155
+ errorCode: number;
156
+ error: string;
157
+ name: string;
158
+ constructor(errorCode: number, error: string);
159
+ }
160
+
161
+ declare const VERSION = "0.1.0";
162
+
163
+ export { APIError, AuthError, type ChatMessage, type CrawlEvent, CrawlEventType, type CrawlOptions, DiffbotClient, type DiffbotClientOptions, DiffbotError, type DqlOptions, ExtractionError, type FetchFn, type JsonObject, Ontology, RateLimitError, VERSION, ValidationError, ask, crawl, crawlDeleteJob, crawlGetJob, crawlListJobs, dql, dqlFetchOntology, dqlParallel, dqlRefreshOntology, entities, extract, resolveToken, webSearch };