discovery-media-player 0.1.92 → 0.1.94
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 +22 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "discovery-media-player",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.94",
|
|
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
|
@@ -320,17 +320,33 @@ async function vraimentSonderTout() {
|
|
|
320
320
|
* Seulement si la colonne est là (sinon la question n'a pas de sens), et JAMAIS bloquant : un
|
|
321
321
|
* diagnostic ne doit pas casser la carte qu'il enrichit — mieux vaut pas de compteur qu'une carte muette.
|
|
322
322
|
*/
|
|
323
|
+
// Plafond du diagnostic : borné, ET qui le dit. Voir ci-dessous — la borne n'était jamais le défaut,
|
|
324
|
+
// son SILENCE l'était.
|
|
325
|
+
const PLAFOND_SANS_RANG = 1000;
|
|
326
|
+
|
|
323
327
|
async function ajouterSansRang(etat) {
|
|
324
328
|
const r = reponses.get("doc_presentation_messages.mod_seq");
|
|
325
329
|
if (!r || !r.present) return;
|
|
326
330
|
try {
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
//
|
|
330
|
-
//
|
|
331
|
-
|
|
331
|
+
// ⚠️ BORNÉ, ORDONNÉ, ET QUI DIT QU'IL EST BORNÉ — trois défauts corrigés en un (relevé 2e hôte,
|
|
332
|
+
// trois passes). (1) `selectAll` sans borne (0.1.93) : sur un hôte dont le backfill n'a JAMAIS
|
|
333
|
+
// tourné, toutes les lignes sont nulles → il paginait la table ENTIÈRE sur la route de la carte,
|
|
334
|
+
// épuisant maxDuration — que le try/catch NE rattrape PAS (un dépassement tue la fonction, pas la
|
|
335
|
+
// promesse). La carte TOMBE au lieu de dégrader, ce que la ligne d'à côté interdit. La borne
|
|
336
|
+
// n'était pas le défaut ; son silence l'était. (2) Sans `order=`, la pagination par Range n'a
|
|
337
|
+
// aucune stabilité — deux pages doublent ou sautent des lignes sur une base vivante (une
|
|
338
|
+
// présentation en cours EST une base vivante). Les trois autres selectAll du dépôt ont toutes un
|
|
339
|
+
// `order=` ; ce code était le seul à y déroger. (3) On rend donc en UNE requête bornée à PLAFOND,
|
|
340
|
+
// triée, et si la borne est atteinte on pose `tronque: true` : l'égalité total/dontScellees n'est
|
|
341
|
+
// alors plus lisible comme « tout va bien ». Un compteur borné DOIT dire qu'il l'est.
|
|
342
|
+
const bornee = `&order=slug.asc&limit=${PLAFOND_SANS_RANG}`;
|
|
343
|
+
const scellees = await PLAYER.db.request(`doc_presentations?active=eq.false&control_hash=is.null&select=slug${bornee}`);
|
|
344
|
+
const listeScellees = Array.isArray(scellees) ? scellees : [];
|
|
345
|
+
const setScellees = new Set(listeScellees.map((p) => p.slug));
|
|
346
|
+
const nuls = await PLAYER.db.request(`doc_presentation_messages?mod_seq=is.null&select=slug${bornee}`);
|
|
332
347
|
const liste = Array.isArray(nuls) ? nuls : [];
|
|
333
|
-
|
|
348
|
+
const tronque = liste.length >= PLAFOND_SANS_RANG || listeScellees.length >= PLAFOND_SANS_RANG;
|
|
349
|
+
etat.sansRang = { total: liste.length, dontScellees: liste.filter((m) => setScellees.has(m.slug)).length, tronque };
|
|
334
350
|
} catch { /* best-effort : un compteur absent vaut mieux qu'une carte en échec */ }
|
|
335
351
|
}
|
|
336
352
|
|