/* This file is part of the Notesnook project (https://notesnook.com/) Copyright (C) 2023 Streetwriters (Private) Limited This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ function isBeta(cookie: string) { console.log("Checking cookie:", cookie); const releaseTrack = cookie .split("; ") .find((row) => row.startsWith("release-track=")) ?.split("=")[1]; return releaseTrack === "beta"; } interface Env { BETA_BASE_URL: string; } export const onRequest: PagesFunction = async ({ request, env, next }) => { try { const url = new URL(request.url); const response = await (async () => { if (isBeta(request.headers.get("Cookie") || "") && env.BETA_BASE_URL) { const betaUrl = new URL(env.BETA_BASE_URL); betaUrl.pathname = url.pathname; betaUrl.search = url.search; console.log("Fetching asset from beta URL:", betaUrl.toString()); const asset = await fetch(betaUrl, { headers: request.headers, method: request.method, body: request.body }); return new Response(asset.body, asset); } else { return await next(); } })(); return response; } catch (thrown) { console.error("Error occurred:", thrown); return new Response(thrown); } };