UNPKG

@uwdata/mosaic-core

Version:

Scalable and extensible linked data views.

36 lines 1.19 kB
import { decodeIPC } from '../util/decode-ipc.js'; /** * Connect to a DuckDB server over an HTTP REST interface. * @param options Connector options. * @param options.uri The URI for the DuckDB REST server. * @param options.ipc Arrow IPC extraction options. * @returns A connector instance. */ export function restConnector(options) { return new RestConnector(options); } export class RestConnector { _uri; _ipc; constructor({ uri = 'http://localhost:3000/', ipc = undefined } = {}) { this._uri = uri; this._ipc = ipc; } async query(query) { const req = fetch(this._uri, { method: 'POST', mode: 'cors', credentials: 'omit', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(query) }); const res = await req; if (!res.ok) { throw new Error(`Query failed with HTTP status ${res.status}: ${await res.text()}`); } return query.type === 'exec' ? req : query.type === 'arrow' ? decodeIPC(await res.arrayBuffer(), this._ipc) : res.json(); } } //# sourceMappingURL=rest.js.map