import { createEnv } from "@t3-oss/env-nextjs"; import { z } from "zod"; export const getEnv = (() => { let env: any = null; return () => { if (env == null) { env = createEnv({ /* * Serverside Environment variables, not available on the client. * Will throw if you access these variables on the client. */ server: { APPCONDA_ENDPOINT: z.string().default('http://localhost/v1'), APPCONDA_CLIENT_ENDPOINT: z.string().default('http://localhost/v1'), _SERVICE_TOKEN: z.string().default('7c5e77c31363c1b4b36b8940001326a0cc813fab4f48df839813dfbd7b386dc5'), ENTERPRISE_LICENSE_KEY: z.string().default('none'), NEXTAUTH_SECRET: z.string().min(1).default('f9b89c6a0f8c4e2d3a59b76d58d1a4e5f7c6b2a9e3d4f1c0b8a6d7e9f5c2b3a1'), ENCRYPTION_KEY: z.string().length(64).or(z.string().length(32)).default('51570cb4caa6c1f5f80e6e57a32efb397e9220434532697c94c8f821a7dd1851'), CRON_SECRET: z.string().min(10).default('51570cb4caa6c1f5f80e6e57a32efb397e9220434532697c94c8f821a7dd1851'), _ADMIN_DOMAIN: z.string().optional(), /* AI_AZURE_LLM_API_KEY: z.string().optional(), AI_AZURE_EMBEDDINGS_DEPLOYMENT_ID: z.string().optional(), AI_AZURE_LLM_DEPLOYMENT_ID: z.string().optional(), AI_AZURE_EMBEDDINGS_RESSOURCE_NAME: z.string().optional(), AI_AZURE_LLM_RESSOURCE_NAME: z.string().optional(), AIRTABLE_CLIENT_ID: z.string().optional(), AZUREAD_CLIENT_ID: z.string().optional(), AZUREAD_CLIENT_SECRET: z.string().optional(), AZUREAD_TENANT_ID: z.string().optional(), CRON_SECRET: z.string().min(10), CUSTOMER_IO_API_KEY: z.string().optional(), CUSTOMER_IO_SITE_ID: z.string().optional(), DATABASE_URL: z.string().url(), DEBUG: z.enum(["1", "0"]).optional(), DEFAULT_ORGANIZATION_ID: z.string().optional(), DEFAULT_ORGANIZATION_ROLE: z.enum(["owner", "manager", "member", "billing"]).optional(), E2E_TESTING: z.enum(["1", "0"]).optional(), EMAIL_AUTH_DISABLED: z.enum(["1", "0"]).optional(), EMAIL_VERIFICATION_DISABLED: z.enum(["1", "0"]).optional(), ENTERPRISE_LICENSE_KEY: z.string().optional(), FORMBRICKS_ENCRYPTION_KEY: z.string().length(24).or(z.string().length(0)).optional(), GITHUB_ID: z.string().optional(), GITHUB_SECRET: z.string().optional(), GOOGLE_CLIENT_ID: z.string().optional(), GOOGLE_CLIENT_SECRET: z.string().optional(), GOOGLE_SHEETS_CLIENT_ID: z.string().optional(), GOOGLE_SHEETS_CLIENT_SECRET: z.string().optional(), GOOGLE_SHEETS_REDIRECT_URL: z.string().optional(), HTTP_PROXY: z.string().url().optional(), HTTPS_PROXY: z.string().url().optional(), IMPRINT_URL: z .string() .url() .optional() .or(z.string().refine((str) => str === "")), IMPRINT_ADDRESS: z.string().optional(), INVITE_DISABLED: z.enum(["1", "0"]).optional(), INTERCOM_SECRET_KEY: z.string().optional(), IS_FORMBRICKS_CLOUD: z.enum(["1", "0"]).optional(), MAIL_FROM: z.string().email().optional(), NOTION_OAUTH_CLIENT_ID: z.string().optional(), NOTION_OAUTH_CLIENT_SECRET: z.string().optional(), OIDC_CLIENT_ID: z.string().optional(), OIDC_CLIENT_SECRET: z.string().optional(), OIDC_DISPLAY_NAME: z.string().optional(), OIDC_ISSUER: z.string().optional(), OIDC_SIGNING_ALGORITHM: z.string().optional(), OPENTELEMETRY_LISTENER_URL: z.string().optional(), REDIS_URL: z.string().optional(), REDIS_HTTP_URL: z.string().optional(), PASSWORD_RESET_DISABLED: z.enum(["1", "0"]).optional(), PRIVACY_URL: z .string() .url() .optional() .or(z.string().refine((str) => str === "")), RATE_LIMITING_DISABLED: z.enum(["1", "0"]).optional(), S3_ACCESS_KEY: z.string().optional(), S3_BUCKET_NAME: z.string().optional(), S3_REGION: z.string().optional(), S3_SECRET_KEY: z.string().optional(), S3_ENDPOINT_URL: z.string().optional(), S3_FORCE_PATH_STYLE: z.enum(["1", "0"]).optional(), SHORT_URL_BASE: z.string().url().optional().or(z.string().length(0)), SIGNUP_DISABLED: z.enum(["1", "0"]).optional(), SLACK_CLIENT_ID: z.string().optional(), SLACK_CLIENT_SECRET: z.string().optional(), SMTP_HOST: z.string().min(1).optional(), SMTP_PORT: z.string().min(1).optional(), SMTP_SECURE_ENABLED: z.enum(["1", "0"]).optional(), SMTP_USER: z.string().min(1).optional(), SMTP_PASSWORD: z.string().min(1).optional(), SMTP_AUTHENTICATED: z.enum(["1", "0"]).optional(), SMTP_REJECT_UNAUTHORIZED_TLS: z.enum(["1", "0"]).optional(), STRIPE_SECRET_KEY: z.string().optional(), STRIPE_WEBHOOK_SECRET: z.string().optional(), TELEMETRY_DISABLED: z.enum(["1", "0"]).optional(), TERMS_URL: z .string() .url() .optional() .or(z.string().refine((str) => str === "")), TURNSTILE_SECRET_KEY: z.string().optional(), UPLOADS_DIR: z.string().min(1).optional(), VERCEL_URL: z.string().optional(), ADMIN_URL: z.string().url().optional(), UNSPLASH_ACCESS_KEY: z.string().optional(), LANGFUSE_SECRET_KEY: z.string().optional(), LANGFUSE_PUBLIC_KEY: z.string().optional(), LANGFUSE_BASEURL: z.string().optional(), */ }, /* * Due to how Next.js bundles environment variables on Edge and Client, * we need to manually destructure them to make sure all are included in bundle. * * 💡 You'll get type errors if not all variables from `server` & `client` are included here. */ runtimeEnv: { APPCONDA_ENDPOINT: process.env.APPCONDA_ENDPOINT, APPCONDA_CLIENT_ENDPOINT: process.env.APPCONDA_CLIENT_ENDPOINT, _SERVICE_TOKEN: process.env._SERVICE_TOKEN, ENTERPRISE_LICENSE_KEY: process.env.ENTERPRISE_LICENSE_KEY, NEXTAUTH_SECRET: process.env.NEXTAUTH_SECRET, ENCRYPTION_KEY: process.env.ENCRYPTION_KEY, CRON_SECRET: process.env.CRON_SECRET, _ADMIN_DOMAIN: process.env._ADMIN_DOMAIN, }, }); console.log(env); } return env; }; })();