"use strict"; import { once } from './misc/events.mjs'; class SystemQueryClient { constructor() { } async status() { return this.fetch_json(`/api/status`); } async *table(table_name) { const abort = new AbortController(); const source = new EventSource(`/api/table/${table_name}`); source.addEventListener(`end`, () => { source.close(); abort.abort(); }, { once: true }); let count = 0; while(source.readyState !== EventSource.CLOSED) { let item = await once(source, "table", abort.signal); if(item.type === "abort") break; yield JSON.parse(item.data); count++; } console.log(`FETCH TABLE ${table_name}: ${count} items returned`); } async fetch_json(path) { let response = await fetch(path, { headers: { "accept": "application/json" }, credentials: "same-origin" }); console.log(`FETCH ${path} ${response.status} ${response.statusText}`); return await response.json(); } } export default SystemQueryClient;