addEventListener("fetch", event => event.respondWith(handler(event)));

const handler = async (event) => {
  const req = event.request;

  if (req.method === "OPTIONS" && req.headers.has("Origin") && (req.headers.has("access-control-request-headers") || req.headers.has("access-control-request-method"))) {
    return new Response(null, {
      status: 204,
      headers: {
        "access-control-allow-origin": req.headers.get('origin'),
        "access-control-allow-methods": "GET,HEAD,POST,OPTIONS",
        "access-control-allow-headers": req.headers.get('access-control-request-headers') || '',
        "access-control-max-age": 86400,
      }
    });
  }
  
  const backendResponse = await fetch(req, { backend: "origin_0" });
  return backendResponse;
};