@mostajs/waiting-room
v0.1.0
Published
Écran d'attente réutilisable (poll-until-ready) avec emplacements PUBLICITÉ (sponsors / pré-roll) — surface de monétisation alimentable par @mostajs/ads. Client ESM, zéro-dépendance, SSR-safe. Cas : direct pas encore démarré, file d'attente, maintenance.
Downloads
175
Maintainers
Readme
@mostajs/waiting-room
Auteur : Dr Hamid MADANI [email protected]
Écran d'attente réutilisable (poll-until-ready) avec emplacements PUBLICITÉ — une surface de monétisation (sponsors / pré-roll) alimentable par @mostajs/ads. Client ESM, zéro-dépendance, SSR-safe (sans document → logique de poll uniquement). Membre de mosta-browser-stack.
Cas d'usage : un direct pas encore démarré (VoxStudio Live), une file d'attente, une page de maintenance → on patiente (spinner + compte à rebours + pubs) et on bascule automatiquement dès que c'est prêt.
import { createWaitingRoom } from '@mostajs/waiting-room';
// Mode « piloté » (le lecteur gère sa connexion WebRTC, la salle d'attente l'habille) :
const wr = createWaitingRoom({
mount: document.getElementById('player'),
brand: '🏢 Hadhinat MostaJS Technopark',
title: '⏳ Le direct va bientôt commencer',
scheduledAt: '2026-06-23T18:00:00Z', // compte à rebours
ads: [{ img: '/sponsors/startupdz.png', href: 'https://…', alt: 'StartupDZ' }], // ← @mostajs/ads plus tard
});
// quand le flux arrive : wr.ready() · s'il retombe : wr.show()
// Mode « poll » (générique, autonome) :
createWaitingRoom({ mount, poll: async () => (await fetch('/status')).ok, onReady: () => location.reload() });API
createWaitingRoom(opts) → { start, stop, destroy, show, ready, hide, setMessage, isReady }
mount(DOM hôte),title,message,brand,scheduledAt(compte à rebours),ads[]({img,href,alt}ou{html}, rotationadRotateMs),poll(async→bool, interrogé toutesintervalMs),onReady,autoStart.ready()/hide(): c'est prêt → masque +onReady(idempotent).show(): ré-affiche (ex. le direct retombe).setMessage(t).- Helpers exportés (purs, testés) :
nextAd(ads,i),countdown(at[,now]).
Sans DOM/mount → aucun rendu, mais la logique poll/onReady fonctionne (testable, SSR-safe). Tests : npm test (5). AGPL-3.0-or-later.
