@trillboards/edge-ads
v0.2.1
Published
Browser lifecycle, display management, and ad delivery for Trillboards Edge AI SDK
Maintainers
Readme
@trillboards/edge-ads
Ad delivery and display management for DOOH/CTV screens. Chromium browser lifecycle, multi-display detection, and content state tracking for digital signage ad serving.
Install
npm install @trillboards/edge-adsWhat This Does
Manages the ad playback layer on digital signage hardware:
- Browser Manager — launches and controls a Chromium instance for ad rendering (VAST/VPAID), handles crashes, auto-restarts, and navigation
- Display Manager — detects connected displays (HDMI, DisplayPort, virtual), reports resolution, DPI, and refresh rate
- Content State Tracker — polls the browser for current ad ID, content type, stream ID, and impression ID for proof-of-play attestation
Usage
import { BrowserManager, DisplayManager, ContentStateTracker } from '@trillboards/edge-ads';
// Detect connected displays
const displays = new DisplayManager();
displays.on('displayConnected', (info) => {
console.log(`${info.name}: ${info.width}x${info.height} @ ${info.refreshRate}Hz`);
});
const screens = await displays.enumerate();
// Launch Chromium for ad rendering
const browser = new BrowserManager({
url: 'https://screen.trillboards.com',
chromiumPath: '/usr/bin/chromium-browser',
windowSize: { width: 1920, height: 1080 },
headless: false
});
browser.on('started', () => console.log('Browser ready'));
browser.on('crashed', () => console.log('Browser crashed — auto-restarting'));
await browser.start();
// Track current ad state
const tracker = new ContentStateTracker(browser);
const state = await tracker.poll();
// → { adId: 'ad_123', contentType: 'video', impressionId: 'imp_456' }Display Info
interface DisplayInfo {
id: string;
name: string;
width: number;
height: number;
dpi: number;
refreshRate: number;
isPrimary: boolean;
}Browser Events
| Event | When |
|-------|------|
| started | Chromium launched and navigated |
| stopped | Browser closed gracefully |
| crashed | Browser process died (auto-restart triggered) |
| reloaded | Page reloaded |
| navigationError | URL failed to load |
License
MIT
