# barcode-detector (polyfill de l'API BarcodeDetector)

Utilisé par le module G_Scan (`G_Scan/static/G_Scan/js/gscan-camera.js`) quand
le navigateur n'a pas d'API `BarcodeDetector` native (Chrome/Edge Windows,
Safari iOS, Firefox). Chargé **à la demande**, à la première ouverture de la
caméra, jamais au chargement du POS. Aucun appel CDN à l'exécution : le `.wasm`
est servi depuis ce dossier (`prepareZXingModule({overrides: {locateFile}})`),
avec les URL fournies par `{% gscan_camera_assets %}`.

| Fichier | Origine | Version | Licence | SHA-256 |
|---|---|---|---|---|
| `barcode-detector-ponyfill.js` | npm `barcode-detector`, `dist/iife/ponyfill.js` | 3.2.2 (16/08/2026) | MIT (`LICENSE-barcode-detector`) | `e3aa2057178b8ea71dd97003270331bbcb46499197b68bc0c7dd18e40c0863ea` |
| `zxing_reader.wasm` | npm `zxing-wasm`, `dist/reader/zxing_reader.wasm` | 3.1.3 (dépendance exacte de barcode-detector 3.2.2) | MIT (`LICENSE-zxing-wasm`), moteur zxing-cpp sous Apache-2.0 | `2ebda08a93eea3efcd8399cda6b276e6a0b1de4fec60b4d8988a047de4c6d1ba` |

Le build IIFE *ponyfill* expose `window.BarcodeDetectionAPI.BarcodeDetector` et
`window.BarcodeDetectionAPI.prepareZXingModule` sans remplacer un
`window.BarcodeDetector` natif.

## Mise à jour

1. `npm pack barcode-detector@<version>` puis `npm pack zxing-wasm@<version exacte de sa dépendance>`.
2. Copier `dist/iife/ponyfill.js` et `dist/reader/zxing_reader.wasm` ici (mêmes noms).
3. Vérifier dans le README de la version que la configuration du `.wasm` se fait
   toujours par `prepareZXingModule` (anciennement `setZXingModuleOverrides`).
4. Mettre à jour ce tableau et `BARCODE_DETECTOR_VERSION` dans
   `G_Scan/templatetags/gscan.py`, puis relancer les tests du module
   (`manage.py test G_Scan`) et les tests caméra du POS
   (`facturation/tests_quick_billing_browser.py`).
