// ATTENTION: DO NOT PUT ANY SECRETS IN HERE (or the .env) import dotenv from 'dotenv' dotenv.config() // we want to synchronize @nuxt-dotenv and nuxt-env // Load Package Details for some default values const pkg = require('../package') // Build version from git describe (e.g. "3.14.0-12-gabcdef" → "3.14.0+12") const BUILD_VERSION = (() => { try { const desc = require('child_process') .execSync('git describe --tags --match "[0-9]*"', { encoding: 'utf8', stdio: ['pipe', 'pipe', 'ignore'], }) .trim() const match = desc.match(/^(.+)-(\d+)-g[0-9a-f]+$/) return match ? `${match[1]}+${match[2]}` : desc } catch { return null } })() const environment = { NODE_ENV: process.env.NODE_ENV, DEBUG: process.env.NODE_ENV !== 'production' || false, PRODUCTION: process.env.NODE_ENV === 'production' || false, NUXT_BUILD: process.env.NUXT_BUILD || '.nuxt', } const server = { GRAPHQL_URI: process.env.GRAPHQL_URI || 'http://localhost:4000', BACKEND_TOKEN: process.env.BACKEND_TOKEN || 'NULL', WEBSOCKETS_URI: process.env.WEBSOCKETS_URI || 'ws://localhost:3000/api/graphql', } const sentry = { SENTRY_DSN_WEBAPP: process.env.SENTRY_DSN_WEBAPP, COMMIT: process.env.COMMIT, } const options = { VERSION: process.env.VERSION || BUILD_VERSION || pkg.version, DESCRIPTION: process.env.DESCRIPTION || pkg.description, MAPBOX_TOKEN: process.env.MAPBOX_TOKEN, PUBLIC_REGISTRATION: process.env.PUBLIC_REGISTRATION === 'true' || false, INVITE_REGISTRATION: process.env.INVITE_REGISTRATION !== 'false', // default = true // Cookies COOKIE_EXPIRE_TIME: process.env.COOKIE_EXPIRE_TIME || 730, // Two years by default COOKIE_HTTPS_ONLY: process.env.COOKIE_HTTPS_ONLY || process.env.NODE_ENV === 'production', // ensure true in production if not set explicitly BADGES_ENABLED: process.env.BADGES_ENABLED === 'true' || false, INVITE_LINK_LIMIT: process.env.INVITE_LINK_LIMIT || 7, NETWORK_NAME: process.env.NETWORK_NAME || 'Ocelot.social', ASK_FOR_REAL_NAME: process.env.ASK_FOR_REAL_NAME === 'true' || false, REQUIRE_LOCATION: process.env.REQUIRE_LOCATION === 'true' || false, MAX_GROUP_PINNED_POSTS: Number.isNaN(Number(process.env.MAX_GROUP_PINNED_POSTS)) ? 1 : Number(process.env.MAX_GROUP_PINNED_POSTS), } const language = { LANGUAGE_DEFAULT: process.env.LANGUAGE_DEFAULT || 'en', LANGUAGE_FALLBACK: process.env.LANGUAGE_FALLBACK || 'en', } const CONFIG = { ...environment, ...server, ...sentry, ...options, ...language, } // override process.env with the values here since they contain default values process.env = { ...process.env, ...CONFIG, } export default CONFIG