open-index/open-npm huggingface dataset:
npm package: @lox-audioserver/node-googlecast
Description: TypeScript Google Cast (Chromecast) discovery and control library
Latest version: 0.1.1

# @lox-audioserver/node-googlecast

TypeScript Google Cast (Chromecast) discovery and control library for Node 20+.

## Features
- mDNS discovery for `_googlecast._tcp.local`
- Cast V2 TLS transport with framing and protobuf messages
- Receiver, media, and volume controllers
- Typed events and extensible namespace controllers

## Install
```bash
npm install @lox-audioserver/node-googlecast
```

## API
- `discoverChromecasts(options)` returns a handle with `devices` and `stop()`
- `connect(device, options)` returns a `CastDevice`

### CastDevice
- `receiver`, `media`, `volume` controllers
- `on('receiverStatus' | 'castStatus' | 'mediaStatus' | 'mediaStatusModel' | 'volumeChanged' | 'connected' | 'disconnected' | 'connectionState')`
- `addController(controller)` for custom namespaces
- `launchApp(appId, timeoutMs?)` to start a custom Cast app session
- `addAppController(namespace, factory)` to bind a controller to the app transportId
- `getCastStatus()` and `getMediaStatusModel()` for convenience models

### ReceiverController
- `getStatus()`, `getCastStatus()`, `getSessions()`, `getAppAvailability(appId|appIds)`, `getVolume()`

### MediaController
- `playMedia()` convenience wrapper for metadata/subtitles/queueing
- `playCurrent()`, `pauseCurrent()`, `stopCurrent()`, `seekCurrent()` helpers using cached session