L'application est à la racine du site : plateau en SVG, saisie au toucher (pion puis case d'arrivée, proposées à partir du moteur), boutons du jet, du videau et de nouvelle partie, coup de l'ordinateur affiché avec son temps, fin de partie, reprise depuis localStorage, aide lue dans les copies de docs/. Le moteur tourne dans le Web Worker existant ; main.ts est le seul assembleur (nouvelles règles dependency-cruiser). Le service worker met tout le site en cache, avec une empreinte du contenu comme version. Les pages de test du moteur passent sous /moteur/. Politique de sécurité du contenu dans le Caddyfile ; make test-browser joue une partie dans Chromium et Firefox sans écran (Playwright, hors de make test). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
41 lines
1.4 KiB
Bash
Executable File
41 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Complète le service worker d'un site assemblé (make site) : en tête de
|
|
# <site>/sw.js (copie de web/sw.js), écrit la liste de tous les fichiers du
|
|
# site, à mettre en cache pour le hors ligne, et la version du site, une
|
|
# empreinte de leur contenu.
|
|
#
|
|
# Le navigateur compare sw.js octet par octet à chaque visite : le moindre
|
|
# fichier modifié change l'empreinte, donc sw.js, ce qui déclenche la mise à
|
|
# jour du cache. Un site identique garde le même sw.js : rien à
|
|
# retélécharger.
|
|
#
|
|
# Usage : scripts/service-worker.sh build/site
|
|
|
|
set -euo pipefail
|
|
|
|
site="${1:?usage : scripts/service-worker.sh <dossier du site>}"
|
|
cd "$site"
|
|
[ -f sw.js ] || { echo "$site/sw.js absent" >&2; exit 1; }
|
|
|
|
# Tous les fichiers sauf sw.js, triés pour que l'empreinte soit stable.
|
|
mapfile -t files < <(find . -type f ! -path ./sw.js | sed 's|^\./||' | LC_ALL=C sort)
|
|
version="$(sha256sum "${files[@]}" | sha256sum | cut -c1-16)"
|
|
|
|
{
|
|
echo "// Généré par scripts/service-worker.sh (make site) : ne pas modifier."
|
|
echo "const VERSION = \"$version\";"
|
|
echo "const FILES = ["
|
|
for f in "${files[@]}"; do
|
|
# Une page index.html est aussi demandée sous le nom de son dossier.
|
|
case "$f" in
|
|
index.html) echo ' "./",' ;;
|
|
*/index.html) echo " \"${f%index.html}\"," ;;
|
|
esac
|
|
echo " \"$f\","
|
|
done
|
|
echo "];"
|
|
echo
|
|
cat sw.js
|
|
} >sw.js.tmp
|
|
mv sw.js.tmp sw.js
|