discovery-media-player 0.1.91 → 0.1.93
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/server/schema.js +37 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "discovery-media-player",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.93",
|
|
4
4
|
"description": "Self-hosted document viewer: per-recipient tracked links, reading analytics, live presentation. The core knows nothing about the application hosting it — everything it borrows arrives through an injected context.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pdf-viewer",
|
package/server/schema.js
CHANGED
|
@@ -303,7 +303,43 @@ async function vraimentSonderTout() {
|
|
|
303
303
|
for (const [cle] of quandNegatif) { connues.delete(cle); reponses.delete(cle); }
|
|
304
304
|
quandNegatif.clear();
|
|
305
305
|
for (const nom of Object.keys(ATTENDUES)) await attendue(nom);
|
|
306
|
-
|
|
306
|
+
const etat = etatDuSchema();
|
|
307
|
+
await ajouterSansRang(etat);
|
|
308
|
+
return etat;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* ⚠️ `mod_seq` NUL EST AMBIGU, ET UN NOMBRE AMBIGU NE MESURE RIEN. Le rattrapage de 0016 laisse
|
|
313
|
+
* DÉLIBÉRÉMENT sans rang les messages des présentations scellées (le scellé refuse de les écrire). Mais
|
|
314
|
+
* rien ne distingue « nul par décision » de « nul parce que le rattrapage n'a jamais tourné » : les
|
|
315
|
+
* deux se lisent « ligne sans rang ». On rend donc les DEUX nombres — total, et la part qui est
|
|
316
|
+
* légitimement scellée. Égaux ⇒ tout nul est un scellé attendu ; divergents ⇒ le rattrapage a laissé
|
|
317
|
+
* des lignes NON scellées derrière lui, anomalie à corriger. C'est la classe « une garde qu'on n'a pas
|
|
318
|
+
* vue refuser ne garde rien » appliquée à un compteur : le compteur devient un verdict. (relevé 2e hôte)
|
|
319
|
+
*
|
|
320
|
+
* Seulement si la colonne est là (sinon la question n'a pas de sens), et JAMAIS bloquant : un
|
|
321
|
+
* diagnostic ne doit pas casser la carte qu'il enrichit — mieux vaut pas de compteur qu'une carte muette.
|
|
322
|
+
*/
|
|
323
|
+
async function ajouterSansRang(etat) {
|
|
324
|
+
const r = reponses.get("doc_presentation_messages.mod_seq");
|
|
325
|
+
if (!r || !r.present) return;
|
|
326
|
+
try {
|
|
327
|
+
// ⚠️ `selectAll`, JAMAIS un `limit` — ET C'ÉTAIT LE DÉFAUT DE LA PREMIÈRE VERSION (relevé 2e hôte).
|
|
328
|
+
// Un compteur borné qui ne dit pas qu'il est borné redevient le nombre ambigu qu'il remplaçait, et
|
|
329
|
+
// une liste tronquée a EXACTEMENT la forme d'une liste complète. Les deux bornes mentaient en sens
|
|
330
|
+
// OPPOSÉS : une liste de nuls coupée (l'ordre physique groupe par présentation) pouvait ne voir que
|
|
331
|
+
// des scellées → total = dontScellees → faux « tout va bien » sur une base où des non-scellées ont
|
|
332
|
+
// été oubliées ; et la liste de scellées, sans `limit`, tombait sous le plafond IMPLICITE de
|
|
333
|
+
// PostgREST (db-max-rows) → setScellees incomplet → dontScellees sous-compté → fausse ALERTE
|
|
334
|
+
// permanente sur un hôte à >1000 archives. `selectAll` pagine jusqu'au bout : le transport reste
|
|
335
|
+
// borné à la taille RÉELLE du problème (zéro sur un hôte sain), et le compteur ne peut plus mentir
|
|
336
|
+
// par troncature. `is.null`/`eq` restent de la syntaxe portable.
|
|
337
|
+
const scellees = await PLAYER.db.selectAll("doc_presentations?active=eq.false&control_hash=is.null&select=slug");
|
|
338
|
+
const setScellees = new Set((Array.isArray(scellees) ? scellees : []).map((p) => p.slug));
|
|
339
|
+
const nuls = await PLAYER.db.selectAll("doc_presentation_messages?mod_seq=is.null&select=slug");
|
|
340
|
+
const liste = Array.isArray(nuls) ? nuls : [];
|
|
341
|
+
etat.sansRang = { total: liste.length, dontScellees: liste.filter((m) => setScellees.has(m.slug)).length };
|
|
342
|
+
} catch { /* best-effort : un compteur absent vaut mieux qu'une carte en échec */ }
|
|
307
343
|
}
|
|
308
344
|
|
|
309
345
|
/** La réponse, retenue pour qui la demandera — sans repasser par la base. */
|