mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-11-22 01:19:11 +08:00
61 lines
1.7 KiB
TypeScript
61 lines
1.7 KiB
TypeScript
import { Plugin } from "vite";
|
|
import { EnvConfig } from "virtual:env-config";
|
|
|
|
const virtualModuleId = "virtual:env-config";
|
|
const resolvedVirtualModuleId = "\0" + virtualModuleId;
|
|
|
|
const developmentConfig: EnvConfig = {
|
|
isDevelopment: true,
|
|
backendUrl: fallbackEnv("BACKEND_URL", "http://localhost:5005"),
|
|
clientVersion: "DEVELOPMENT_CLIENT",
|
|
recaptchaSiteKey: "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI",
|
|
quickLoginEmail: process.env["QUICK_LOGIN_EMAIL"],
|
|
quickLoginPassword: process.env["QUICK_LOGIN_PASSWORD"],
|
|
};
|
|
const productionConfig: Omit<EnvConfig, "clientVersion"> = {
|
|
isDevelopment: false,
|
|
backendUrl: fallbackEnv("BACKEND_URL", "https://api.monkeytype.com"),
|
|
recaptchaSiteKey: process.env["RECAPTCHA_SITE_KEY"] ?? "",
|
|
quickLoginEmail: undefined,
|
|
quickLoginPassword: undefined,
|
|
};
|
|
|
|
export function envConfig(
|
|
options:
|
|
| {
|
|
isDevelopment: true;
|
|
}
|
|
| {
|
|
isDevelopment: false;
|
|
clientVersion: string;
|
|
}
|
|
): Plugin {
|
|
return {
|
|
name: "virtual-env-config",
|
|
resolveId(id) {
|
|
if (id === virtualModuleId) return resolvedVirtualModuleId;
|
|
return;
|
|
},
|
|
load(id) {
|
|
if (id === resolvedVirtualModuleId) {
|
|
const envConfig = options.isDevelopment
|
|
? developmentConfig
|
|
: {
|
|
...productionConfig,
|
|
clientVersion: options.clientVersion,
|
|
};
|
|
|
|
return `
|
|
export const envConfig = ${JSON.stringify(envConfig)};
|
|
`;
|
|
}
|
|
return;
|
|
},
|
|
};
|
|
}
|
|
|
|
function fallbackEnv(envVariable: string, fallback: string): string {
|
|
const value = process.env[envVariable];
|
|
if (value === null || value === undefined || value === "") return fallback;
|
|
return value;
|
|
}
|