Skip to content

Type Alias: CmcdRequestReportConfig<C> ​

ts
type CmcdRequestReportConfig<C> = CmcdReportConfig & object;

Defined in: CmcdRequestReportConfig.ts:15

Configuration for a CMCD request report.

Type Parameters ​

C ​

C = Record<string, unknown>

The type of the player's customData on the requests passed to CmcdReporter.createRequestReport. Defaults to Record<string, unknown>.

Type Declaration ​

customHeaderMap? ​

ts
customHeaderMap?: Partial<CmcdHeaderMap>;

A map of CMCD header fields to the custom keys to emit in them. Applies when the transmission mode is CmcdTransmissionMode.HEADERS. Custom keys not listed in any shard are emitted in the CMCD-Request header. Standard keys have fixed shards per the CMCD specification and cannot be moved. Has no effect in query transmission mode or on event reports.

Default Value ​

undefined

transform? ​

ts
transform?: CmcdRequestReportTransform<C>;

Transform applied to each request-mode report before encoding. Return the data to continue, or null to skip CMCD decoration for that request.

Applies only to reports created by CmcdReporter.createRequestReport. To transform event reports, set transform on the event target instead.

Default Value ​

undefined

Example ​

ts
const { requester } = createMockRequester()

const reporter = new CmcdReporter(
	{
		sid: 'session-id',
		cid: 'content-id',
		enabledKeys: ['br', 'sid', 'cid', 'v', 'sn'],
		// Request mode: never decorate license requests with CMCD
		transform: (data, request) => (request.url.includes('/license') ? null : data),
		eventTargets: [
			{
				url: 'https://collector.example.com/cmcd',
				events: [CmcdEventType.RESPONSE_RECEIVED],
				enabledKeys: ['url', 'rc', 'sid', 'v', 'e', 'ts', 'sn'],
				batchSize: 1,
				// Event mode, this target only: segment responses only
				transform: (data, request) =>
					request?.customData?.['requestType'] === 'segment' ? data : null,
			},
		],
	},
	requester,
)

const license = reporter.createRequestReport({ url: 'https://drm.example.com/license' })
ok(!license.url.includes('CMCD='))

const segment = reporter.createRequestReport({ url: 'https://cdn.example.com/segment.mp4' })
ok(segment.url.includes('CMCD='))

transmissionMode? ​

ts
transmissionMode?: CmcdTransmissionMode;

The transmission mode to use.

Default Value ​

CmcdTransmissionMode.QUERY

A Streaming Video Technology Alliance project.