const apollo = require("./handlers/apollo"); const playground = require("./handlers/playground"); const setCors = require("./utils/setCors"); const graphQLOptions = { baseEndpoint: "/", playgroundEndpoint: "/playground", forwardUnmatchedRequestsToOrigin: false, debug: false, // cors: { // allowCredentials: 'true', // allowHeaders: 'Content-type', // allowOrigin: '*', // allowMethods: 'GET, POST, PUT', // }, cors: true, kvCache: true, }; const handleRequest = async (request) => { const url = new URL(request.url); try { if (url.pathname === graphQLOptions.baseEndpoint) { const response = request.method === "OPTIONS" ? new Response("", { status: 204 }) : await apollo(request, graphQLOptions); if (graphQLOptions.cors) { setCors(response, graphQLOptions.cors); } return response; } else if ( graphQLOptions.playgroundEndpoint && url.pathname === graphQLOptions.playgroundEndpoint ) { return playground(request, graphQLOptions); } else if (graphQLOptions.forwardUnmatchedRequestsToOrigin) { return fetch(request); } else { return new Response("Not found", { status: 404 }); } } catch (err) { return new Response(graphQLOptions.debug ? err : "Something went wrong", { status: 500, }); } }; addEventListener("fetch", (event) => { event.respondWith(handleRequest(event.request)); });