mirror of
https://github.com/stack-auth/stack.git
synced 2026-06-19 21:00:40 +08:00
92 lines
2.6 KiB
TypeScript
92 lines
2.6 KiB
TypeScript
import { writeFileSyncIfChanged } from "@hexclave/shared/dist/utils/fs";
|
|
import { deindent } from "@hexclave/shared/dist/utils/strings";
|
|
|
|
const envVarsConfig: Record<string, { allowPublic?: boolean, deprecatedLegacyNames?: string[] }> = {
|
|
HEXCLAVE_PORT_PREFIX: {
|
|
allowPublic: true,
|
|
},
|
|
HEXCLAVE_PROJECT_ID: {
|
|
allowPublic: true,
|
|
},
|
|
HEXCLAVE_PUBLISHABLE_CLIENT_KEY: {
|
|
allowPublic: true,
|
|
},
|
|
HEXCLAVE_SECRET_SERVER_KEY: {},
|
|
HEXCLAVE_SUPER_SECRET_ADMIN_KEY: {},
|
|
HEXCLAVE_EXTRA_REQUEST_HEADERS: {
|
|
allowPublic: true,
|
|
},
|
|
HEXCLAVE_API_URL_BROWSER: {
|
|
allowPublic: true,
|
|
deprecatedLegacyNames: ["BROWSER_STACK_API_URL", "BROWSER_HEXCLAVE_API_URL"],
|
|
},
|
|
HEXCLAVE_API_URL_SERVER: {
|
|
allowPublic: true,
|
|
deprecatedLegacyNames: ["SERVER_STACK_API_URL", "SERVER_HEXCLAVE_API_URL"],
|
|
},
|
|
HEXCLAVE_API_URL: {
|
|
allowPublic: true,
|
|
deprecatedLegacyNames: ["HEXCLAVE_URL", "STACK_URL"],
|
|
},
|
|
HEXCLAVE_HOSTED_HANDLER_DOMAIN_SUFFIX: {
|
|
allowPublic: true,
|
|
},
|
|
HEXCLAVE_HOSTED_HANDLER_URL_TEMPLATE: {
|
|
allowPublic: true,
|
|
},
|
|
HEXCLAVE_STRIPE_PUBLISHABLE_KEY: {
|
|
allowPublic: true,
|
|
},
|
|
HEXCLAVE_BOT_CHALLENGE_SITE_KEY: {
|
|
allowPublic: true,
|
|
},
|
|
HEXCLAVE_BOT_CHALLENGE_INVISIBLE_SITE_KEY: {
|
|
allowPublic: true,
|
|
},
|
|
HEXCLAVE_IS_LOCAL_EMULATOR: {
|
|
allowPublic: true,
|
|
},
|
|
HEXCLAVE_POSTHOG_KEY: {
|
|
allowPublic: true,
|
|
},
|
|
HEXCLAVE_SVIX_SERVER_URL: {
|
|
allowPublic: true,
|
|
},
|
|
HEXCLAVE_SENTRY_DSN: {
|
|
allowPublic: true,
|
|
},
|
|
HEXCLAVE_VERSION_ALERTER_SEVERE_ONLY: {
|
|
allowPublic: true,
|
|
},
|
|
NODE_ENV: {
|
|
allowPublic: false,
|
|
},
|
|
};
|
|
|
|
function generateEnvVarsConstSnippet() {
|
|
const getters: string[] = [];
|
|
for (const [key, config] of Object.entries(envVarsConfig)) {
|
|
const allVariables = [key, ...(config.deprecatedLegacyNames ?? [])]
|
|
.flatMap(k => k.startsWith("HEXCLAVE_") ? [k, k.replace("HEXCLAVE_", "STACK_")] : [k])
|
|
.flatMap(k => config.allowPublic ? [k, `NEXT_PUBLIC_${k}`, `VITE_${k}`] : [k]);
|
|
getters.push(deindent`
|
|
get ${key}() {
|
|
return ${allVariables.map(variableName => deindent`
|
|
((typeof process !== "undefined" ? process.env.${variableName} : undefined) ?? import.meta.env?.${variableName})
|
|
`).join("\n ?? ")} ?? undefined;
|
|
},
|
|
`);
|
|
}
|
|
return deindent`
|
|
// THIS FILE IS AUTO-GENERATED BY THE \`generate-env.ts\` SCRIPT.
|
|
// DO NOT EDIT IT BY HAND.
|
|
/* eslint-disable no-restricted-properties */
|
|
|
|
export const envVars = {
|
|
${getters.join("\n")}
|
|
};
|
|
` + "\n";
|
|
}
|
|
|
|
writeFileSyncIfChanged("src/generated/env.ts", generateEnvVarsConstSnippet());
|