Files
echo-du-huit/extension/config.js
Pierre MartinandClaude Opus 4.8 b103ab78ec feat: introduce a shared config with an optional local override
The mairie form needs an organiser, an email and the café defaults. Ship the
defaults in the repo and let each volunteer override the personal bits in
config.local.json (gitignored, optional: a fresh clone still works).

config.js carries neither import nor export on purpose, so that it loads both
as a classic script (content script, background) and as an ESM module. That is
what lets presentation.js drop its duplicated café address.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 13:07:17 +02:00

40 lines
1.5 KiB
JavaScript

// Défauts committés de l'extension + fusion avec la surcharge locale.
//
// ⚠️ Ce fichier n'a NI `import` NI `export`, DÉLIBÉRÉMENT (ne pas « corriger ») :
// c'est ce qui le rend chargeable à la fois comme content script / script de
// background (scripts classiques : un `export` y lève une SyntaxError) et comme
// module ESM (`import "./config.js"` depuis presentation.js et bun test).
// Il communique donc par `globalThis`. Cf. DECISIONS.md 2026-07-17.
globalThis.EchoConfig = {
// Clé de storage : le background écrit, le content script lit.
CLE_CONFIG_LOCALE: "config-locale",
DEFAUTS: {
// Vides par défaut : sans config.local.json, on préfère un champ vide
// signalé dans le bandeau à un organisateur inventé.
organisateur: "",
email: "",
// RECHERCHE.md §3 : valeur exacte du dropdown #input_6_20.
themeDefaut: "Culture",
tarifs: "Gratuit",
// RECHERCHE.md §2. `input_18` se compose `${coords}|${adresse}`.
cafe: {
adresse: "8 Rue du Pré Vicinal 31270 Cugnaux",
coords: "43.53753132806989|1.342981890597508",
},
},
// Fusion de surface : la locale ne porte que des champs plats
// (organisateur, email…). Tolérante par nécessité — `config.local.json` est
// optionnel et éditable à la main : absent, `null` ou invalide → défauts nus,
// jamais d'exception.
fusionner(defauts, locale) {
const surcharge =
locale && typeof locale === "object" && !Array.isArray(locale) ? locale : {};
return { ...defauts, ...surcharge };
},
};