npm.io
2.4.1 • Published 1h ago

@svta/cml-cmcd

Licence
Apache-2.0
Version
2.4.1
Deps
0
Size
366 kB
Vulns
0
Weekly
0
Stars
80

@svta/cml-cmcd

Common Media Client Data (CMCD) encoding and decoding.

Installation

npm i @svta/cml-cmcd

Usage

import { CmcdReportingMode, encodeCmcd } from "@svta/cml-cmcd";

const input = {
	br: 1000,
	"com.example-hello": "world",
	ec: ["ERR001", "ERR002"],
	su: true,
};
const options = { version: 2, reportingMode: CmcdReportingMode.REQUEST };
const result = encodeCmcd(input, options);
// result === 'br=1000,com.example-hello="world",ec=("ERR001" "ERR002"),su,v=2'

Testing CMCD output with CmcdReportRecorder

CmcdReportRecorder captures CMCD-bearing requests emitted by a player under test, regardless of whether the player uses XMLHttpRequest or fetch. Each capture is normalized to HttpRequest, so tests work identically across transports.

import { CmcdReportRecorder, validateCmcdRequest } from '@svta/cml-cmcd'

const recorder = new CmcdReportRecorder()
recorder.attach({ eventTargetUrls: ['https://events.example.com'] })

// ... configure and start the player under test ...

const segments = await recorder.waitForSegments({ count: 3 })
for (const r of segments) {
  const result = validateCmcdRequest(r.request)
  if (!result.valid) {
    console.error(result.issues)
  }
}

recorder.detach()

Keywords