dist / fredClient.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.fredFetch = fredFetch;
exports.clean = clean;
const BASE = "https://api.stlouisfed.org/fred";
async function fredFetch(endpoint, params, apiKey) {
const url = new URL(`${BASE}/${endpoint}`);
url.searchParams.set("api_key", apiKey);
url.searchParams.set("file_type", "json");
for (const [k, v] of Object.entries(params)) {
if (v === undefined || v === null || v === "")
continue;
url.searchParams.set(k, String(v));
}
const res = await fetch(url.toString());
if (!res.ok) {
const txt = await res.text();
throw new Error(`FRED ${res.status}: ${txt.slice(0, 500)}`);
}
return res.json();
}
// small helper to prune empty keys
function clean(o) {
const r = {};
for (const [k, v] of Object.entries(o))
if (v !== undefined && v !== null && v !== "")
r[k] = v;
return r;
}
dist / fredClient.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.fredFetch = fredFetch;
exports.clean = clean;
const BASE = "https://api.stlouisfed.org/fred";
async function fredFetch(endpoint, params, apiKey) {
const url = new URL(`${BASE}/${endpoint}`);
url.searchParams.set("api_key", apiKey);
url.searchParams.set("file_type", "json");
for (const [k, v] of Object.entries(params)) {
if (v === undefined || v === null || v === "")
continue;
url.searchParams.set(k, String(v));
}
const res = await fetch(url.toString());
if (!res.ok) {
const txt = await res.text();
throw new Error(`FRED ${res.status}: ${txt.slice(0, 500)}`);
}
return res.json();
}
// small helper to prune empty keys
function clean(o) {
const r = {};
for (const [k, v] of Object.entries(o))
if (v !== undefined && v !== null && v !== "")
r[k] = v;
return r;
}