azion
Version:
Azion Packages for Edge Computing.
85 lines (84 loc) • 2.85 kB
JavaScript
const c = process.env.AZION_ENV === "stage" ? "https://stage-api.azion.com/v4/workspace/purge" : "https://api.azion.com/v4/workspace/purge", h = (s, r, o) => {
let e = { message: "Error unknown", operation: o };
return s.forEach((t) => {
r[t] && (e = {
message: Array.isArray(r[t]) ? r[t].join(", ") : r[t],
operation: o
});
}), e;
};
async function y(s, r, o, e = !0) {
const t = await fetch(s, r);
if (!t.ok) {
const n = `HTTP error! Status: ${t.status} - ${t.statusText}`;
throw o && console.log(`Error in fetch: ${n}`), new Error(n);
}
if (e) {
const n = t.headers.get("content-type");
if (!n || !n.includes("application/json")) {
const u = `Expected JSON response, but got: ${await t.text()}`;
throw o && console.log(`Error in fetch: ${u}`), new Error(u);
}
return await t.json();
} else
return await t.text();
}
const f = async (s, r, o) => i(`${c}/url`, s, r, o), m = async (s, r, o) => i(`${c}/cachekey`, s, r, o), w = async (s, r, o) => i(`${c}/wildcard`, s, r, o), i = async (s, r, o, e) => {
try {
const t = await y(
s,
{
method: "POST",
headers: {
Authorization: `Token ${r}`,
"Content-Type": "application/json",
Accept: "application/json; version=3"
},
credentials: "include",
body: JSON.stringify({ items: o, layer: "cache" })
},
e
);
return t.data ? (e && console.log("Response:", t), t) : (e && console.log("Response Error:", t), t.error = h(["detail", "error", "items"], t, "post purge"), {
error: t.error ?? JSON.stringify(t)
});
} catch (t) {
return e && console.error("Error purging:", t), {
error: { message: t.toString(), operation: "post purge" }
};
}
}, E = process.env.AZION_DEBUG && process.env.AZION_DEBUG === "true", a = (s) => s ?? process.env.AZION_TOKEN ?? "", p = (s) => s ?? !!E, g = async (s, r, o) => {
const e = await f(a(s), r, p(o?.debug));
return e?.data && e.state ? { data: { items: e.data.items, state: e.state } } : {
error: e.error
};
}, l = async (s, r, o) => {
const e = await m(a(s), r, p(o?.debug));
return e?.data && e.state ? {
data: {
items: e.data.items,
state: e.state
}
} : {
error: e.error
};
}, d = async (s, r, o) => {
const e = await w(a(s), r, p(o?.debug));
return e?.data && e.state ? { data: { items: e.data.items, state: e.state } } : {
error: e.error
};
}, v = (s, r) => g(a(), s, r), A = (s, r) => l(a(), s, r), k = (s, r) => d(a(), s, r), N = (s) => {
const r = a(s?.token);
return {
purgeURL: (e, t) => g(r, e, t),
purgeCacheKey: (e, t) => l(r, e, t),
purgeWildCard: (e, t) => d(r, e, t)
};
};
export {
N as createClient,
N as default,
A as purgeCacheKey,
v as purgeURL,
k as purgeWildCard
};