TypeScript SDK
| Package | Content |
|---|---|
@freedome/protocol |
Types generated from the contract: OpenAPI, JSON Schemas, AsyncAPI topics, error codes, scopes |
@freedome/client |
FreedomeClient over fetch, WebSocket, graphql-ws and socket.io, discovery, codecs |
react-native-freedome |
FreeDomeProvider, useFreeDome() and hooks over @freedome/client |
Connect
Section titled “Connect”import { Credentials, FreedomeClient, FreedomeEndpoint, PlayTargets } from '@freedome/client';
const client = new FreedomeClient({ endpoint: FreedomeEndpoint.parse('dome.local'), credentials: Credentials.password('operator', '…'), options: { appName: 'my-app', appVersion: '1.0.0' },});await client.open(); // negotiating → authenticating → online (WS freedome.v1 by default)const off = client.playback.watch((s) => render(s.state));await client.playback.play(PlayTargets.show(showId));Entry points
Section titled “Entry points”| Import | Content |
|---|---|
@freedome/client/codecs |
.dome, .zelim, .boranko, .comics |
@freedome/client/node |
mDNS, ws, file inputs |
@freedome/client/testing |
createFakeTransport() |
@freedome/protocol/validate |
Ajv validators |
What was tested
Section titled “What was tested”The suites run with the fake transport and against the fake-dome image. No package has run against a real dome.
Licence
Section titled “Licence”NativeMindNONC. Commercial use needs a licence from NativeMind sales.