Skip to content

moqtap/moqtap-js

Repository files navigation

moqtap-js

JavaScript/TypeScript implementation of MoQT (Media over QUIC Transport), an IETF protocol for real-time media delivery over QUIC.

Packages

Package Description
@moqtap/codec Wire-format codec and session state machine
@moqtap/trace Session recorder and .moqtrace binary format

Features

  • Multi-draft support — drafts 07 through 17
  • Stateless codec — encode/decode all MoQT control messages and data stream headers
  • Session state machine — FSM-based protocol validation per draft
  • Trace recording — capture sessions with configurable detail levels
  • Cross-runtime — works in Node.js, Bun, Deno, and browsers
  • Zero dependencies — codec has no runtime dependencies

Quick Start

npm install @moqtap/codec
import { createCodec } from '@moqtap/codec';

const codec = createCodec({ draft: '17' });

// Decode
const result = codec.decodeMessage(bytes);
if (result.ok) {
  console.log(result.value.type);
}

// Encode
const encoded = codec.encodeMessage({
  type: 'setup',
  parameters: { max_request_id: 100n },
});

Or use draft-scoped imports for full type inference:

import { createDraft14Codec } from '@moqtap/codec/draft14';
const codec = createDraft14Codec();

See each package's README for full API documentation.

Development

This is a Bun workspaces monorepo.

bun install          # install dependencies
bun run build        # build all packages
bun run test         # run tests
bun run lint         # check formatting and lint rules
bun run typecheck    # type-check all packages

License

MIT

About

MoQT (Media over QUIC Transport) codec and .moqtrace import/export libraries

Topics

Resources

License

Stars

Watchers

Forks

Contributors