[{"data":1,"prerenderedAt":672},["ShallowReactive",2],{"content-en-\u002Fsdk\u002Fpackages":3},{"id":4,"title":5,"author":6,"body":7,"date":6,"description":664,"extension":665,"meta":666,"navigation":667,"path":668,"seo":669,"stem":670,"tags":6,"__hash__":671},"content_en\u002Fsdk\u002Fpackages.md","SDK Packages",null,{"type":8,"value":9,"toc":632},"minimark",[10,14,23,28,33,40,59,74,78,84,104,114,118,122,128,148,158,162,168,182,192,196,200,206,223,233,237,243,263,273,277,283,303,313,317,321,327,344,354,358,364,381,391,395,399,405,421,431,435,441,452,462,466,476,523,533,537,543,564,574,578,582,588,602,612,616,622],[11,12,5],"h1",{"id":13},"sdk-packages",[15,16,17,18,22],"p",{},"All packages are published under the ",[19,20,21],"code",{},"@xiboplayer"," scope on npm.",[24,25,27],"h2",{"id":26},"core","Core",[29,30,32],"h3",{"id":31},"xiboplayercore","@xiboplayer\u002Fcore",[15,34,35,39],{},[36,37,38],"strong",{},"Platform-independent orchestration"," — the central brain that wires everything together.",[41,42,43,47,50,53,56],"ul",{},[44,45,46],"li",{},"Collection cycle management (RegisterDisplay, RequiredFiles, Schedule, etc.)",[44,48,49],{},"Offline cache with IndexedDB fallback",[44,51,52],{},"CRC32 skip optimization",[44,54,55],{},"Data connector management",[44,57,58],{},"Command execution",[15,60,61,68,69],{},[62,63,67],"a",{"href":64,"rel":65},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fcore",[66],"nofollow","npm"," · ",[62,70,73],{"href":71,"rel":72},"https:\u002F\u002Fgithub.com\u002Fxibo-players\u002Fxiboplayer\u002Ftree\u002Fmain\u002Fpackages\u002Fcore",[66],"GitHub",[29,75,77],{"id":76},"xiboplayerrenderer","@xiboplayer\u002Frenderer",[15,79,80,83],{},[36,81,82],{},"XLF layout renderer"," — parses Xibo layout XML and renders it to the DOM.",[41,85,86,89,92,95,98,101],{},[44,87,88],{},"Element reuse (pre-create all widgets, toggle visibility)",[44,90,91],{},"Widget types: video, image, audio, PDF, text, clock, ticker, webpage, HLS, embedded",[44,93,94],{},"Transitions: fade, fly (8 compass directions) via Web Animations API",[44,96,97],{},"Interactive Control server (postMessage bridge)",[44,99,100],{},"Touch\u002Fkeyboard actions",[44,102,103],{},"Overlay rendering with priority-based z-index",[15,105,106,68,110],{},[62,107,67],{"href":108,"rel":109},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Frenderer",[66],[62,111,73],{"href":112,"rel":113},"https:\u002F\u002Fgithub.com\u002Fxibo-players\u002Fxiboplayer\u002Ftree\u002Fmain\u002Fpackages\u002Frenderer",[66],[24,115,117],{"id":116},"communication","Communication",[29,119,121],{"id":120},"xiboplayerxmds","@xiboplayer\u002Fxmds",[15,123,124,127],{},[36,125,126],{},"CMS communication"," — dual transport with identical API surface.",[41,129,130,136,142,145],{},[44,131,132,135],{},[36,133,134],{},"XmdsClient",": SOAP\u002FXML transport (all CMS versions)",[44,137,138,141],{},[36,139,140],{},"RestClient",": REST\u002FJSON transport (30% smaller payloads, ETag 304 caching)",[44,143,144],{},"All 10 XMDS v5 methods + GetWeather + BlackList",[44,146,147],{},"CRC32 change detection",[15,149,150,68,154],{},[62,151,67],{"href":152,"rel":153},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fxmds",[66],[62,155,73],{"href":156,"rel":157},"https:\u002F\u002Fgithub.com\u002Fxibo-players\u002Fxiboplayer\u002Ftree\u002Fmain\u002Fpackages\u002Fxmds",[66],[29,159,161],{"id":160},"xiboplayerxmr","@xiboplayer\u002Fxmr",[15,163,164,167],{},[36,165,166],{},"Real-time push messaging"," — wraps the official Xibo WebSocket library.",[41,169,170,173,176,179],{},[44,171,172],{},"14 command handlers (collectNow, screenshot, changeLayout, overlayLayout, revertToSchedule, purgeAll, etc.)",[44,174,175],{},"Exponential backoff reconnection (10 attempts)",[44,177,178],{},"TTL\u002Fexpiry checking",[44,180,181],{},"RSA key rotation via Web Crypto API",[15,183,184,68,188],{},[62,185,67],{"href":186,"rel":187},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fxmr",[66],[62,189,73],{"href":190,"rel":191},"https:\u002F\u002Fgithub.com\u002Fxibo-players\u002Fxiboplayer\u002Ftree\u002Fmain\u002Fpackages\u002Fxmr",[66],[24,193,195],{"id":194},"data","Data",[29,197,199],{"id":198},"xiboplayercache","@xiboplayer\u002Fcache",[15,201,202,205],{},[36,203,204],{},"File and media management"," — parallel downloads with integrity checking.",[41,207,208,211,214,217,220],{},[44,209,210],{},"4-chunk parallel downloads with dynamic sizing",[44,212,213],{},"MD5 validation (spark-md5)",[44,215,216],{},"Font CSS URL rewriting",[44,218,219],{},"Bad cache detection and auto-cleanup",[44,221,222],{},"Queue barriers for offline resilience",[15,224,225,68,229],{},[62,226,67],{"href":227,"rel":228},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fcache",[66],[62,230,73],{"href":231,"rel":232},"https:\u002F\u002Fgithub.com\u002Fxibo-players\u002Fxiboplayer\u002Ftree\u002Fmain\u002Fpackages\u002Fcache",[66],[29,234,236],{"id":235},"xiboplayerschedule","@xiboplayer\u002Fschedule",[15,238,239,242],{},[36,240,241],{},"Schedule management"," — parses CMS schedule XML into a playback timeline.",[41,244,245,248,251,254,257,260],{},[44,246,247],{},"Dayparting (daily, weekly, monthly recurrence)",[44,249,250],{},"Campaign scheduling with cycle playback",[44,252,253],{},"Interrupt\u002Fshare-of-voice interleaving",[44,255,256],{},"maxPlaysPerHour with even distribution",[44,258,259],{},"Overlay scheduling with priority",[44,261,262],{},"Geo-fencing and weather criteria",[15,264,265,68,269],{},[62,266,67],{"href":267,"rel":268},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fschedule",[66],[62,270,73],{"href":271,"rel":272},"https:\u002F\u002Fgithub.com\u002Fxibo-players\u002Fxiboplayer\u002Ftree\u002Fmain\u002Fpackages\u002Fschedule",[66],[29,274,276],{"id":275},"xiboplayerstats","@xiboplayer\u002Fstats",[15,278,279,282],{},[36,280,281],{},"Statistics and logging"," — proof-of-play tracking with CMS submission.",[41,284,285,288,291,294,297,300],{},[44,286,287],{},"Per-layout and per-widget duration tracking",[44,289,290],{},"Event stats (touch, webhook) with tags",[44,292,293],{},"Hour-boundary splitting for correct CMS aggregation",[44,295,296],{},"Log batching (capped at 50 per CMS spec)",[44,298,299],{},"Fault reporting with 5-minute dedup cooldown",[44,301,302],{},"IndexedDB persistence with auto-prune",[15,304,305,68,309],{},[62,306,67],{"href":307,"rel":308},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fstats",[66],[62,310,73],{"href":311,"rel":312},"https:\u002F\u002Fgithub.com\u002Fxibo-players\u002Fxiboplayer\u002Ftree\u002Fmain\u002Fpackages\u002Fstats",[66],[24,314,316],{"id":315},"configuration","Configuration",[29,318,320],{"id":319},"xiboplayersettings","@xiboplayer\u002Fsettings",[15,322,323,326],{},[36,324,325],{},"Display settings"," — parses and manages CMS-pushed settings.",[41,328,329,332,335,338,341],{},[44,330,331],{},"EventEmitter for reactive updates",[44,333,334],{},"Download window enforcement",[44,336,337],{},"Screenshot interval configuration",[44,339,340],{},"Log level from CMS",[44,342,343],{},"CMS tag config parsing",[15,345,346,68,350],{},[62,347,67],{"href":348,"rel":349},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fsettings",[66],[62,351,73],{"href":352,"rel":353},"https:\u002F\u002Fgithub.com\u002Fxibo-players\u002Fxiboplayer\u002Ftree\u002Fmain\u002Fpackages\u002Fsettings",[66],[29,355,357],{"id":356},"xiboplayerutils","@xiboplayer\u002Futils",[15,359,360,363],{},[36,361,362],{},"Shared utilities"," — the foundation used by all packages.",[41,365,366,369,372,375,378],{},[44,367,368],{},"Logger (level-based with CMS sink)",[44,370,371],{},"EventEmitter base class",[44,373,374],{},"fetchWithRetry (configurable retry with backoff, HTTP 429 Retry-After)",[44,376,377],{},"Config (hardware key generation, CMS address, localStorage)",[44,379,380],{},"CMS API client (77 methods for CMS v4 management API)",[15,382,383,68,387],{},[62,384,67],{"href":385,"rel":386},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Futils",[66],[62,388,73],{"href":389,"rel":390},"https:\u002F\u002Fgithub.com\u002Fxibo-players\u002Fxiboplayer\u002Ftree\u002Fmain\u002Fpackages\u002Futils",[66],[24,392,394],{"id":393},"platform","Platform",[29,396,398],{"id":397},"xiboplayersw","@xiboplayer\u002Fsw",[15,400,401,404],{},[36,402,403],{},"Service Worker helpers"," — media serving and caching strategies.",[41,406,407,410,413,416,418],{},[44,408,409],{},"Progressive chunk streaming with Range requests",[44,411,412],{},"XLF-driven media resolution",[44,414,415],{},"Layout-ordered download barriers",[44,417,216],{},[44,419,420],{},"Cache-first with network fallback",[15,422,423,68,427],{},[62,424,67],{"href":425,"rel":426},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fsw",[66],[62,428,73],{"href":429,"rel":430},"https:\u002F\u002Fgithub.com\u002Fxibo-players\u002Fxiboplayer\u002Ftree\u002Fmain\u002Fpackages\u002Fsw",[66],[29,432,434],{"id":433},"xiboplayercrypto","@xiboplayer\u002Fcrypto",[15,436,437,440],{},[36,438,439],{},"Cryptography"," — RSA key pair management.",[41,442,443,446,449],{},[44,444,445],{},"RSA-1024 key generation via Web Crypto API",[44,447,448],{},"Public key export for CMS registration",[44,450,451],{},"Key rotation support (XMR rekey command)",[15,453,454,68,458],{},[62,455,67],{"href":456,"rel":457},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fcrypto",[66],[62,459,73],{"href":460,"rel":461},"https:\u002F\u002Fgithub.com\u002Fxibo-players\u002Fxiboplayer\u002Ftree\u002Fmain\u002Fpackages\u002Fcrypto",[66],[29,463,465],{"id":464},"xiboplayersync","@xiboplayer\u002Fsync",[15,467,468,471,472],{},[36,469,470],{},"Multi-display synchronization"," — video wall support across tabs and devices. ",[473,474,475],"em",{},"Major update in v0.7.0.",[41,477,478,484,490,496,502,505,508,511,514,517,520],{},[44,479,480,483],{},[36,481,482],{},"\u003C8ms sync precision"," across all displays on LAN",[44,485,486,489],{},[36,487,488],{},"12 choreography effects",": diagonal cascade, wave sweep, center-out, and more (v0.7.0)",[44,491,492,495],{},[36,493,494],{},"Token-authenticated WebSocket relay"," — secure LAN sync using CMS key (v0.7.0)",[44,497,498,501],{},[36,499,500],{},"syncGroupId isolation"," — multiple video walls share one relay safely (v0.7.0)",[44,503,504],{},"Lead\u002Ffollower model with pluggable transports",[44,506,507],{},"BroadcastChannel for same-machine sync (cross-tab)",[44,509,510],{},"WebSocket transport for cross-device LAN sync",[44,512,513],{},"Synchronized layout transitions and coordinated video start",[44,515,516],{},"Stats\u002Flogs delegation through the lead",[44,518,519],{},"Offline LAN sync with persisted config (v0.7.0)",[44,521,522],{},"Auto-reconnect with exponential backoff and automatic group re-join",[15,524,525,68,529],{},[62,526,67],{"href":527,"rel":528},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fsync",[66],[62,530,73],{"href":531,"rel":532},"https:\u002F\u002Fgithub.com\u002Fxibo-players\u002Fxiboplayer\u002Ftree\u002Fmain\u002Fpackages\u002Fsync",[66],[29,534,536],{"id":535},"xiboplayerproxy","@xiboplayer\u002Fproxy",[15,538,539,542],{},[36,540,541],{},"CORS proxy"," — development, Electron\u002FChromium support, and sync relay.",[41,544,545,548,551,554,561],{},[44,546,547],{},"Express-based proxy server",[44,549,550],{},"CORS header management",[44,552,553],{},"WebSocket sync relay for cross-device video walls with group isolation",[44,555,556,557,560],{},"Standalone relay CLI (",[19,558,559],{},"xiboplayer-relay --port=9590",") for dedicated deployments",[44,562,563],{},"Used by Electron and Chromium wrappers",[15,565,566,68,570],{},[62,567,67],{"href":568,"rel":569},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fproxy",[66],[62,571,73],{"href":572,"rel":573},"https:\u002F\u002Fgithub.com\u002Fxibo-players\u002Fxiboplayer\u002Ftree\u002Fmain\u002Fpackages\u002Fproxy",[66],[24,575,577],{"id":576},"players","Players",[29,579,581],{"id":580},"xiboplayerpwa","@xiboplayer\u002Fpwa",[15,583,584,587],{},[36,585,586],{},"PWA rendering engine"," — the complete browser-based player.",[41,589,590,593,596,599],{},[44,591,592],{},"Bundles core, renderer, cache, schedule, xmds, xmr, stats, settings",[44,594,595],{},"Service Worker for offline operation",[44,597,598],{},"Setup screen for CMS registration",[44,600,601],{},"Debug overlays (timeline, download progress)",[15,603,604,68,608],{},[62,605,67],{"href":606,"rel":607},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fpwa",[66],[62,609,73],{"href":610,"rel":611},"https:\u002F\u002Fgithub.com\u002Fxibo-players\u002Fxiboplayer\u002Ftree\u002Fmain\u002Fpackages\u002Fpwa",[66],[29,613,615],{"id":614},"xiboplayerplayer","@xiboplayer\u002Fplayer",[15,617,618,621],{},[36,619,620],{},"Player meta-package"," — installs the complete SDK with all dependencies.",[15,623,624,68,628],{},[62,625,67],{"href":626,"rel":627},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fplayer",[66],[62,629,73],{"href":630,"rel":631},"https:\u002F\u002Fgithub.com\u002Fxibo-players\u002Fxiboplayer\u002Ftree\u002Fmain\u002Fpackages\u002Fplayer",[66],{"title":633,"searchDepth":634,"depth":634,"links":635},"",3,[636,641,645,650,654,660],{"id":26,"depth":637,"text":27,"children":638},2,[639,640],{"id":31,"depth":634,"text":32},{"id":76,"depth":634,"text":77},{"id":116,"depth":637,"text":117,"children":642},[643,644],{"id":120,"depth":634,"text":121},{"id":160,"depth":634,"text":161},{"id":194,"depth":637,"text":195,"children":646},[647,648,649],{"id":198,"depth":634,"text":199},{"id":235,"depth":634,"text":236},{"id":275,"depth":634,"text":276},{"id":315,"depth":637,"text":316,"children":651},[652,653],{"id":319,"depth":634,"text":320},{"id":356,"depth":634,"text":357},{"id":393,"depth":637,"text":394,"children":655},[656,657,658,659],{"id":397,"depth":634,"text":398},{"id":433,"depth":634,"text":434},{"id":464,"depth":634,"text":465},{"id":535,"depth":634,"text":536},{"id":576,"depth":637,"text":577,"children":661},[662,663],{"id":580,"depth":634,"text":581},{"id":614,"depth":634,"text":615},"All 14 @xiboplayer npm packages with descriptions and links.","md",{},true,"\u002Fsdk\u002Fpackages",{"title":5,"description":664},"sdk\u002Fpackages","aWkZ0ahRLphviwt7moiwlSSShl1r47dI--pPU-El8cQ",1775148105253]