import { readBrandingEnv, readBrandingLocked } from './utils/branding'; import { resolveRuntimeInstanceConfig, type InstanceConfigValues, type RuntimeInstanceConfig, } from './utils/runtimeInstanceConfig'; type ConfigType = InstanceConfigValues; const config: ConfigType = { baseUrl: import.meta.env.VITE_BASE_URL, environment: import.meta.env.VITE_ENVIRONMENT, googleCloudStorageBucket: import.meta.env.VITE_GOOGLE_CLOUD_STORAGE_BUCKET, googleMapsApiKey: import.meta.env.VITE_GOOGLE_MAPS_API_KEY, googleMapId: import.meta.env.VITE_GOOGLE_MAP_ID, graphqlUrl: import.meta.env.VITE_GRAPHQL_URL, logoutUrl: import.meta.env.VITE_LOGOUT_URL, openCageApiKey: import.meta.env.VITE_OPEN_CAGE_API_KEY, openGraphApiKey: import.meta.env.VITE_OPEN_GRAPH_API_KEY, serverName: import.meta.env.VITE_SERVER_NAME, // Human-facing site name used in the nav, page titles and SEO. Falls back to // the server identifier and finally 'Untitled' so a missing // VITE_SERVER_DISPLAY_NAME never renders as "undefined". Set // VITE_SERVER_DISPLAY_NAME in the deploy for the desired branding. serverDisplayName: import.meta.env.VITE_SERVER_DISPLAY_NAME || import.meta.env.VITE_SERVER_NAME || 'Untitled', }; // Build-time branding defaults. Each key is overridable at container startup // by its NUXT_PUBLIC_BRANDING_* counterpart once it reaches // `runtimeConfig.public.branding` in nuxt.config.ts. const brandingEnvDefaults = readBrandingEnv(import.meta.env); const brandingLockedDefault = readBrandingLocked(import.meta.env); const applyRuntimeInstanceConfig = (runtime: RuntimeInstanceConfig): void => { Object.assign( config, resolveRuntimeInstanceConfig({ runtime, fallback: config }) ); }; export { applyRuntimeInstanceConfig, brandingEnvDefaults, brandingLockedDefault, config, };