import { cacheTimingsFromEnv, createRuntimeEnv, type EnvSource, } from "@wp-reactor/headless-core" /** * La COQUE possède la lecture de l'env (contrat ADR 0001) : elle construit une * `EnvSource` depuis SON `import.meta.env` / `process.env` et la passe au kernel. * Les packages ne lisent jamais l'env directement. */ const envSource: EnvSource = { get(key) { // VITE_* est inliné par Vite ; le reste vient de process.env côté serveur. const fromVite = (import.meta.env as Record)[ key ] if (fromVite !== undefined) return fromVite return typeof process !== "undefined" ? process.env[key] : undefined }, ssr: import.meta.env.SSR, dev: import.meta.env.DEV, } export const runtimeEnv = createRuntimeEnv(envSource) /** * Lecture d'une variable serveur hors du périmètre de `runtimeEnv` (secrets et * réglages d'infra : Redis, secret de purge). Passe par la même `EnvSource` pour * que la coque reste le seul point de lecture de l'environnement (ADR 0001). */ export function readServerEnv(key: string): string | undefined { return envSource.get(key) } /** * Origine publique du site (domaine front), distincte du domaine WordPress en * headless. Consommée par les options SEO (`editorial/model/seo`) pour réancrer * les URLs que RankMath fabrique depuis `home_url`, donc depuis le backend. */ export const publicSiteUrl = envSource.get("VITE_FRONTEND_URL") export const cacheTimings = cacheTimingsFromEnv(envSource) export const isSsr = import.meta.env.SSR export const isDev = import.meta.env.DEV