mirror of
https://github.com/VibedByKaKi/t3-code-android-nightly.git
synced 2026-10-09 11:51:15 +02:00
66 lines
1.8 KiB
TypeScript
66 lines
1.8 KiB
TypeScript
import { matchers, routes, type Transform, type VercelConfig } from "@vercel/config/v1";
|
|
|
|
const ROUTER_HOST = "app.t3.codes";
|
|
const HOSTED_WEB_CHANNEL_COOKIE = "t3code_web_channel";
|
|
const LATEST_ORIGIN = "https://latest.app.t3.codes";
|
|
const NIGHTLY_ORIGIN = "https://nightly.app.t3.codes";
|
|
const CLEAN_CHANNEL_QUERY_TRANSFORMS = [
|
|
{
|
|
type: "request.query",
|
|
op: "delete",
|
|
target: { key: "channel" },
|
|
},
|
|
] satisfies Transform[];
|
|
|
|
function channelCookie(channel: "latest" | "nightly"): string {
|
|
return [
|
|
`${HOSTED_WEB_CHANNEL_COOKIE}=${channel}`,
|
|
"Path=/",
|
|
"Max-Age=31536000",
|
|
"HttpOnly",
|
|
"Secure",
|
|
"SameSite=Lax",
|
|
].join("; ");
|
|
}
|
|
|
|
export const config: VercelConfig = {
|
|
buildCommand:
|
|
'vp run --filter @t3tools/web build && node ../../scripts/apply-web-brand-assets.ts --channel "${VITE_HOSTED_APP_CHANNEL:-latest}"',
|
|
git: {
|
|
deploymentEnabled: false,
|
|
},
|
|
installCommand:
|
|
"npm install -g vite-plus && vp install --ignore-scripts --filter '@t3tools/scripts...' --filter '@t3tools/web...'",
|
|
routes: [
|
|
{
|
|
src: "/__t3code/channel",
|
|
has: [matchers.query("channel", "nightly")],
|
|
transforms: CLEAN_CHANNEL_QUERY_TRANSFORMS,
|
|
headers: {
|
|
Location: "/",
|
|
"Set-Cookie": channelCookie("nightly"),
|
|
},
|
|
status: 302,
|
|
},
|
|
{
|
|
src: "/__t3code/channel",
|
|
transforms: CLEAN_CHANNEL_QUERY_TRANSFORMS,
|
|
headers: {
|
|
Location: "/",
|
|
"Set-Cookie": channelCookie("latest"),
|
|
},
|
|
status: 302,
|
|
},
|
|
{
|
|
src: "/(.*)",
|
|
has: [matchers.host(ROUTER_HOST), matchers.cookie(HOSTED_WEB_CHANNEL_COOKIE, "nightly")],
|
|
dest: `${NIGHTLY_ORIGIN}/$1`,
|
|
},
|
|
{
|
|
src: "/(.*)",
|
|
has: [matchers.host(ROUTER_HOST)],
|
|
dest: `${LATEST_ORIGIN}/$1`,
|
|
},
|
|
],
|
|
rewrites: [routes.rewrite("/(.*)", "/index.html")],
|
|
};
|