@brimdata/zealot
Version:
The Javascript Client for Zed Lakes
95 lines (94 loc) • 2.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
parseContent: ()=>parseContent,
accept: ()=>accept,
defaults: ()=>defaults,
toJS: ()=>toJS,
json: ()=>json,
wrapAbort: ()=>wrapAbort,
getLoadContentType: ()=>getLoadContentType
});
const _encoder = require("../encoder");
function parseContent(resp) {
if (resp.status === 204) return Promise.resolve(null);
const type = resp.headers.get("Content-Type");
switch(type){
case "application/json":
case "application/x-zjson":
try {
return resp.json();
} catch {
console.error("Unable to parse json content, parsing as text instead");
return resp.text();
}
case "text/html; charset=UTF-8":
case "text/plain; charset=utf-8":
return resp.text();
case "application/vnd.tcpdump.pcap":
return resp;
default:
console.error(`unknown Content-Type: '${type}', parsing as text`);
return resp.text();
}
}
function accept(format) {
const formats = {
arrows: "application/vnd.apache.arrow.stream",
csv: "text/csv",
json: "application/json",
ndjson: "application/x-ndjson",
vng: "application/x-vng",
zeek: "application/x-zeek",
zjson: "application/x-zjson",
zng: "application/x-zng",
zson: "application/x-zson"
};
const value = formats[format];
if (!value) {
throw Error(`Unknown Format: ${format}`);
} else {
return value;
}
}
function defaults(opts, defs) {
return {
...defs,
...opts
};
}
async function toJS(res) {
const j = await res.json();
return (0, _encoder.decode)(j).toJS();
}
function json(obj) {
return JSON.stringify(obj);
}
function wrapAbort(signal) {
const ctl = new AbortController();
signal?.addEventListener("abort", ()=>ctl.abort());
return ctl;
}
function getLoadContentType(format) {
if (!format) return null;
if (format === "auto") return "*/*";
if (format === "arrows") return "application/vnd.apache.arrow.stream";
if (format === "csv") return "text/csv";
if (format === "json") return "application/json";
if (format === "line") return "application/x-line";
if (format === "parquet") return "application/x-parquet";
if (format === "vng") return "application/x-vng";
if (format === "zeek") return "application/x-zeek";
if (format === "zjson") return "application/x-zjson";
if (format === "zng") return "application/x-zng";
if (format === "zson") return "application/x-zson";
throw new Error("Unknown load format: " + format);
}