discovery-media-player 0.1.52 → 0.1.53

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "discovery-media-player",
3
- "version": "0.1.52",
3
+ "version": "0.1.53",
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/handler.js CHANGED
@@ -2389,13 +2389,30 @@ ${LEGAL_CSS}
2389
2389
  //
2390
2390
  // Le drapeau posé sur la fenêtre permet au banc d'EXIGER le refus, au lieu de constater une
2391
2391
  // absence de rendu qui aurait dix causes.
2392
+ // ⚠️ ON NE FERME QUE CE QUI DÉPEND DU WORKER. Le premier correctif gatait la mise en route du
2393
+ // lecteur ENTIER — or elle sert aussi au chemin IMAGE, qui n appelle pdf.js à aucun moment. Un
2394
+ // worker invérifiable empêchait donc d afficher un PNG : une porte fermée sur une pièce que le
2395
+ // code refusé ne pouvait pas atteindre.
2396
+ //
2397
+ // ⚠️ PAS D ACCENT GRAVE ICI : ce commentaire vit dans le gabarit de la page, un accent grave y
2398
+ // ferme la chaîne. Troisième fois aujourd hui.
2399
+ //
2400
+ // Trouvé par le harnais de l hôte, pas ici : son essai d assistant a cessé de démarrer, et j ai
2401
+ // d abord diagnostiqué un artefact de jsdom. Corriger le harnais aurait masqué le défaut.
2402
+ //
2403
+ // Le refus reste ENTIER pour un PDF, là où le worker s exécute.
2404
+ function refuserWorker(){
2405
+ window.__workerRefuse=1;
2406
+ if(IS_IMG){ start(); return; }
2407
+ loadError("Document non affiche : une dependance n a pas pu etre verifiee.");
2408
+ }
2392
2409
  var wsrc=CFG.pdfjs+'/pdf.worker.min.js';
2393
2410
  try{
2394
2411
  Player.viewer.workerBlobUrl(wsrc,'${TIERS.pdfWorker.sri}').then(function(u){
2395
- if(!u){ window.__workerRefuse=1; loadError("Document non affiche : une dependance n a pas pu etre verifiee."); return; }
2412
+ if(!u){ refuserWorker(); return; }
2396
2413
  pdfjsLib.GlobalWorkerOptions.workerSrc=u; start();
2397
- }).catch(function(){ window.__workerRefuse=1; loadError("Document non affiche : une dependance n a pas pu etre verifiee."); });
2398
- }catch(e){ window.__workerRefuse=1; loadError("Document non affiche : une dependance n a pas pu etre verifiee."); }
2414
+ }).catch(refuserWorker);
2415
+ }catch(e){ refuserWorker(); }
2399
2416
  // Bord à bord en une-page mobile : chaque millimètre compte, surtout pour un PDF paysage.
2400
2417
  function baseWidth(){ var pad=(onePage&&window.innerWidth<=820)?0:30; return (scrollEl.clientWidth||900)-pad; }
2401
2418
  // Hauteur du document OCCULTÉE par la bottom sheet du bot (mobile, état compagnon) : la page une-page se
@@ -53,3 +53,20 @@ $$;
53
53
 
54
54
  -- Le player parle à la base avec la clé de service ; personne d'autre n'a à appeler ceci.
55
55
  revoke all on function public.player_rate_limit_bump(text, integer, integer) from public, anon, authenticated;
56
+
57
+ -- ⚠️ LE `revoke` CI-DESSUS NE SUFFIT PAS À RENDRE CE FICHIER VRAI TOUT SEUL — signalé par le
58
+ -- second hôte, qui a interrogé `has_function_privilege` au lieu de relire la migration. Chez
59
+ -- Supabase, `service_role` conserve l'exécution parce que les privilèges par défaut la lui
60
+ -- accordent explicitement : le fichier marche par une propriété de la plateforme, pas par ce qu'il
61
+ -- dit. Porté sur un Postgres nu, le `revoke ... from public` emporterait aussi le compte de
62
+ -- service — et le player perdrait sa limite EN SILENCE, puisqu'un appel qui échoue laisse passer.
63
+ --
64
+ -- On accorde donc explicitement, et seulement si le rôle existe : sur une base sans `service_role`,
65
+ -- l'exploitant accorde l'exécution au rôle que son instance utilise réellement.
66
+ do $$
67
+ begin
68
+ if exists (select 1 from pg_roles where rolname = 'service_role') then
69
+ grant execute on function public.player_rate_limit_bump(text, integer, integer) to service_role;
70
+ end if;
71
+ end
72
+ $$;