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

39 lines
No EOL
1.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);
}