SDK Packages
All packages are published under the @xiboplayer scope on npm.
Core
@xiboplayer/core
Platform-independent orchestration — the central brain that wires everything together.
- Collection cycle management (RegisterDisplay, RequiredFiles, Schedule, etc.)
- Offline cache with IndexedDB fallback
- CRC32 skip optimization
- Data connector management
- Command execution
@xiboplayer/renderer
XLF layout renderer — parses Xibo layout XML and renders it to the DOM.
- Element reuse (pre-create all widgets, toggle visibility)
- Widget types: video, image, audio, PDF, text, clock, ticker, webpage, HLS, embedded
- Transitions: fade, fly (8 compass directions) via Web Animations API
- Interactive Control server (postMessage bridge)
- Touch/keyboard actions
- Overlay rendering with priority-based z-index
Communication
@xiboplayer/xmds
CMS communication — dual transport with identical API surface.
- XmdsClient: SOAP/XML transport (all CMS versions)
- RestClient: REST/JSON transport (30% smaller payloads, ETag 304 caching)
- All 10 XMDS v5 methods + GetWeather + BlackList
- CRC32 change detection
@xiboplayer/xmr
Real-time push messaging — wraps the official Xibo WebSocket library.
- 14 command handlers (collectNow, screenshot, changeLayout, overlayLayout, revertToSchedule, purgeAll, etc.)
- Exponential backoff reconnection (10 attempts)
- TTL/expiry checking
- RSA key rotation via Web Crypto API
Data
@xiboplayer/cache
File and media management — parallel downloads with integrity checking.
- 4-chunk parallel downloads with dynamic sizing
- MD5 validation (spark-md5)
- Font CSS URL rewriting
- Bad cache detection and auto-cleanup
- Queue barriers for offline resilience
@xiboplayer/schedule
Schedule management — parses CMS schedule XML into a playback timeline.
- Dayparting (daily, weekly, monthly recurrence)
- Campaign scheduling with cycle playback
- Interrupt/share-of-voice interleaving
- maxPlaysPerHour with even distribution
- Overlay scheduling with priority
- Geo-fencing and weather criteria
@xiboplayer/stats
Statistics and logging — proof-of-play tracking with CMS submission.
- Per-layout and per-widget duration tracking
- Event stats (touch, webhook) with tags
- Hour-boundary splitting for correct CMS aggregation
- Log batching (capped at 50 per CMS spec)
- Fault reporting with 5-minute dedup cooldown
- IndexedDB persistence with auto-prune
Configuration
@xiboplayer/settings
Display settings — parses and manages CMS-pushed settings.
- EventEmitter for reactive updates
- Download window enforcement
- Screenshot interval configuration
- Log level from CMS
- CMS tag config parsing
@xiboplayer/utils
Shared utilities — the foundation used by all packages.
- Logger (level-based with CMS sink)
- EventEmitter base class
- fetchWithRetry (configurable retry with backoff, HTTP 429 Retry-After)
- Config (hardware key generation, CMS address, localStorage)
- CMS API client (77 methods for CMS v4 management API)
Platform
@xiboplayer/sw
Service Worker helpers — media serving and caching strategies.
- Progressive chunk streaming with Range requests
- XLF-driven media resolution
- Layout-ordered download barriers
- Font CSS URL rewriting
- Cache-first with network fallback
@xiboplayer/crypto
Cryptography — RSA key pair management.
- RSA-1024 key generation via Web Crypto API
- Public key export for CMS registration
- Key rotation support (XMR rekey command)
@xiboplayer/sync
Multi-display synchronization — video wall support across tabs and devices. Major update in v0.7.0.
- <8ms sync precision across all displays on LAN
- 12 choreography effects: diagonal cascade, wave sweep, center-out, and more (v0.7.0)
- Token-authenticated WebSocket relay — secure LAN sync using CMS key (v0.7.0)
- syncGroupId isolation — multiple video walls share one relay safely (v0.7.0)
- Lead/follower model with pluggable transports
- BroadcastChannel for same-machine sync (cross-tab)
- WebSocket transport for cross-device LAN sync
- Synchronized layout transitions and coordinated video start
- Stats/logs delegation through the lead
- Offline LAN sync with persisted config (v0.7.0)
- Auto-reconnect with exponential backoff and automatic group re-join
@xiboplayer/proxy
CORS proxy — development, Electron/Chromium support, and sync relay.
- Express-based proxy server
- CORS header management
- WebSocket sync relay for cross-device video walls with group isolation
- Standalone relay CLI (
xiboplayer-relay --port=9590) for dedicated deployments - Used by Electron and Chromium wrappers
Players
@xiboplayer/pwa
PWA rendering engine — the complete browser-based player.
- Bundles core, renderer, cache, schedule, xmds, xmr, stats, settings
- Service Worker for offline operation
- Setup screen for CMS registration
- Debug overlays (timeline, download progress)
@xiboplayer/player
Player meta-package — installs the complete SDK with all dependencies.
