This repository has been archived on 2025-03-28. You can view files and clone it, but cannot push or open issues or pull requests.
coryd.dev-eleventy/workers/analytics/index.js

40 lines
1 KiB
JavaScript

const scriptName = "/js/script.js";
const endpoint = "/api/event";
addEventListener("fetch", (event) => {
event.passThroughOnException();
event.respondWith(handleRequest(event));
});
async function handleRequest(event) {
const url = new URL(event.request.url);
const pathname = url.pathname;
if (pathname === scriptName) {
return getScript(event);
} else if (pathname === endpoint) {
return postData(event);
}
return new Response(null, { status: 404 });
}
async function getScript(event) {
const cache = caches.default;
let response = await cache.match(event.request);
if (!response) {
const scriptUrl =
"https://plausible.io/js/plausible.outbound-links.tagged-events.js";
response = await fetch(scriptUrl);
if (response.ok)
event.waitUntil(cache.put(event.request, response.clone()));
}
return response;
}
async function postData(event) {
const request = new Request(event.request);
request.headers.delete("cookie");
return await fetch("https://plausible.io/api/event", request);
}