refactor(js): extract sync module from app.js monofile (§3.1)
Second slice of the app.js split (after crypto). Moves the WebDAV sync section to js/app.sync.js: transport (_webdavCall), buildSyncSnapshot, applyRemoteSnapshot (merge + tombstone arbitration), runSyncNow, and the sync settings UI. - Byte-for-byte identical to the extracted block (verified before removal); no duplicate const; no top-level sync reference left in app.js. - Load order: AFTER app.js (unlike crypto, which loads before) because this module has a top-level side effect — `Bridge.onWebdavResult = …` — that needs Bridge/state/api already declared. Rule documented in CLAUDE.md. - index.html + BuildAssets whitelist + harness APP_PARTS updated; assets rebuilt to embed the new file. - Safety net: the existing merge tests exercise applyRemoteSnapshot / buildSyncSnapshot from the extracted file and stay green (42/42). app.js: 11936 → 11256 lines (crypto + sync now separate). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -31,11 +31,18 @@ global** dans le navigateur, donc les `const`/fonctions d'un fichier sont
|
||||
visibles des suivants exactement comme dans le monofichier. Ordre actuel :
|
||||
|
||||
```
|
||||
js/argon2.js (IIFE, globalThis.NobleArgon2)
|
||||
js/argon2.js (IIFE, globalThis.NobleArgon2)
|
||||
js/app.crypto.js (KDF, verifier, encrypt/decrypt — extrait §3.1)
|
||||
js/app.js (le reste)
|
||||
js/app.js (le reste : state, Bridge, api, UI…)
|
||||
js/app.sync.js (WebDAV + merge — extrait §3.1, APRÈS app.js car
|
||||
effet de bord top-level `Bridge.onWebdavResult = …`)
|
||||
```
|
||||
|
||||
Note ordre : un module **sans** exécution top-level (que des déclarations,
|
||||
comme `app.crypto.js`) peut se charger AVANT `app.js`. Un module **avec** un
|
||||
effet de bord top-level qui touche un global d'`app.js` (`Bridge`, `state`…)
|
||||
doit se charger APRÈS (`app.sync.js`).
|
||||
|
||||
Règles pour extraire un nouveau module :
|
||||
- Il doit se charger **avant** ses consommateurs et **ne jamais redéclarer**
|
||||
un `const` d'un autre fichier (un `const` dupliqué entre deux classic
|
||||
@@ -87,6 +94,7 @@ parsing CSV d'import, et l'arbitrage merge/tombstone de sync
|
||||
| Handlers REST | `delphi-backend/Handlers/PM.Handler.*.pas` |
|
||||
| Frontend principal (en cours de découpage §3.1) | `js/app.js` |
|
||||
| Crypto frontend (KDF, verifier, AES-GCM) — extrait §3.1 | `js/app.crypto.js` |
|
||||
| Sync frontend (WebDAV, snapshot, merge) — extrait §3.1 | `js/app.sync.js` |
|
||||
| Argon2id vendé (bundle `@noble/hashes`, IIFE) | `js/argon2.js` |
|
||||
| HTML racine | `index.html` |
|
||||
| Styles | `css/style.css` |
|
||||
|
||||
Reference in New Issue
Block a user