@svta/cml-cmcd 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +20 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SfBareItem, SfItem, SfToken } from "@svta/cml-structured-field-values";
|
|
2
|
-
import { ExclusiveRecord,
|
|
2
|
+
import { ExclusiveRecord, HttpRequest, ValueOf, ValueOrArray } from "@svta/cml-utils";
|
|
3
3
|
|
|
4
4
|
//#region src/CmcdEventType.d.ts
|
|
5
5
|
|
|
@@ -1309,6 +1309,22 @@ declare const CMCD_EVENT_KEYS: readonly ["cen", "e", "h", "ts"];
|
|
|
1309
1309
|
*/
|
|
1310
1310
|
declare const CMCD_FORMATTER_MAP: Record<string, CmcdFormatter>;
|
|
1311
1311
|
//#endregion
|
|
1312
|
+
//#region src/CmcdRequestKey.d.ts
|
|
1313
|
+
/**
|
|
1314
|
+
* A CMCD request key.
|
|
1315
|
+
*
|
|
1316
|
+
* @public
|
|
1317
|
+
*/
|
|
1318
|
+
type CmcdRequestKey = keyof CmcdRequest | "nrr";
|
|
1319
|
+
//#endregion
|
|
1320
|
+
//#region src/CMCD_HEADER_MAP.d.ts
|
|
1321
|
+
/**
|
|
1322
|
+
* The map of CMCD keys to their appropriate header shard.
|
|
1323
|
+
*
|
|
1324
|
+
* @public
|
|
1325
|
+
*/
|
|
1326
|
+
declare const CMCD_HEADER_MAP: Record<CmcdRequestKey | "nrr", CmcdHeaderField>;
|
|
1327
|
+
//#endregion
|
|
1312
1328
|
//#region src/CMCD_KEYS.d.ts
|
|
1313
1329
|
/**
|
|
1314
1330
|
* A list of all CMCD keys.
|
|
@@ -1438,22 +1454,6 @@ type CmcdEventReportConfig = CmcdReportConfig & {
|
|
|
1438
1454
|
batchSize?: number;
|
|
1439
1455
|
};
|
|
1440
1456
|
//#endregion
|
|
1441
|
-
//#region src/CmcdRequestKey.d.ts
|
|
1442
|
-
/**
|
|
1443
|
-
* A CMCD request key.
|
|
1444
|
-
*
|
|
1445
|
-
* @public
|
|
1446
|
-
*/
|
|
1447
|
-
type CmcdRequestKey = keyof CmcdRequest | "nrr";
|
|
1448
|
-
//#endregion
|
|
1449
|
-
//#region src/CMCD_HEADER_MAP.d.ts
|
|
1450
|
-
/**
|
|
1451
|
-
* The map of CMCD keys to their appropriate header shard.
|
|
1452
|
-
*
|
|
1453
|
-
* @internal
|
|
1454
|
-
*/
|
|
1455
|
-
declare const CMCD_HEADER_MAP: Record<CmcdRequestKey | "nrr", CmcdHeaderField>;
|
|
1456
|
-
//#endregion
|
|
1457
1457
|
//#region src/CmcdHeaderKey.d.ts
|
|
1458
1458
|
/**
|
|
1459
1459
|
* A CMCD header key.
|
|
@@ -1583,7 +1583,7 @@ declare class CmcdReporter {
|
|
|
1583
1583
|
* The default is a simple wrapper around the
|
|
1584
1584
|
* native `fetch` API.
|
|
1585
1585
|
*/
|
|
1586
|
-
constructor(config: Partial<CmcdReporterConfig>, requester?: (request:
|
|
1586
|
+
constructor(config: Partial<CmcdReporterConfig>, requester?: (request: HttpRequest) => Promise<{
|
|
1587
1587
|
status: number;
|
|
1588
1588
|
}>);
|
|
1589
1589
|
/**
|
|
@@ -1621,7 +1621,7 @@ declare class CmcdReporter {
|
|
|
1621
1621
|
* @param req - The request to apply the CMCD request report to.
|
|
1622
1622
|
* @returns The request with the CMCD request report applied.
|
|
1623
1623
|
*/
|
|
1624
|
-
applyRequestReport(req:
|
|
1624
|
+
applyRequestReport(req: HttpRequest): HttpRequest;
|
|
1625
1625
|
/**
|
|
1626
1626
|
* Processes the event targets. Called by the reporter when an event occurs.
|
|
1627
1627
|
*
|
|
@@ -1870,5 +1870,5 @@ declare function toCmcdUrl(cmcd: Cmcd, options?: CmcdEncodeOptions): string;
|
|
|
1870
1870
|
*/
|
|
1871
1871
|
declare function toCmcdValue<V extends SfBareItem, P>(value: V, params?: P): SfItem<V, P>;
|
|
1872
1872
|
//#endregion
|
|
1873
|
-
export { CMCD_DEFAULT_TIME_INTERVAL, CMCD_EVENT_AD_BREAK_END, CMCD_EVENT_AD_BREAK_START, CMCD_EVENT_AD_END, CMCD_EVENT_AD_START, CMCD_EVENT_BACKGROUNDED_MODE, CMCD_EVENT_BITRATE_CHANGE, CMCD_EVENT_CONTENT_ID, CMCD_EVENT_CUSTOM_EVENT, CMCD_EVENT_ERROR, CMCD_EVENT_KEYS, CMCD_EVENT_MODE, CMCD_EVENT_MUTE, CMCD_EVENT_PLAYER_COLLAPSE, CMCD_EVENT_PLAYER_EXPAND, CMCD_EVENT_PLAY_STATE, CMCD_EVENT_RESPONSE_RECEIVED, CMCD_EVENT_SKIP, CMCD_EVENT_TIME_INTERVAL, CMCD_EVENT_UNMUTE, CMCD_FORMATTER_MAP, CMCD_HEADERS, CMCD_JSON, CMCD_KEYS, CMCD_OBJECT, CMCD_PARAM, CMCD_QUERY, CMCD_REQUEST, CMCD_REQUEST_KEYS, CMCD_REQUEST_MODE, CMCD_RESPONSE_KEYS, CMCD_SESSION, CMCD_STATUS, CMCD_V1, CMCD_V1_KEYS, CMCD_V2, Cmcd, CmcdCustomKey, CmcdCustomValue, CmcdEncodeOptions, CmcdEvent, CmcdEventReportConfig, CmcdEventType, CmcdFormatter, CmcdFormatterMap, CmcdFormatterOptions, CmcdHeaderField, CmcdHeaderKey, CmcdHeaderMap, CmcdHeaderValue, CmcdKey, CmcdObjectType, CmcdObjectTypeList, CmcdPlayerState, CmcdReportConfig, CmcdReporter, CmcdReporterConfig, CmcdReportingMode, CmcdRequest, CmcdRequestKey, CmcdRequestReportConfig, CmcdResponse, CmcdStreamType, CmcdStreamingFormat, CmcdTransmissionMode, CmcdV1, CmcdValue, appendCmcdHeaders, appendCmcdQuery, decodeCmcd, encodeCmcd, fromCmcdHeaders, fromCmcdQuery, fromCmcdUrl, groupCmcdHeaders, isCmcdCustomKey, isCmcdEventKey, isCmcdRequestKey, isCmcdResponseReceivedKey, isCmcdV1Key, prepareCmcdData, toCmcdHeaders, toCmcdQuery, toCmcdUrl, toCmcdValue };
|
|
1873
|
+
export { CMCD_DEFAULT_TIME_INTERVAL, CMCD_EVENT_AD_BREAK_END, CMCD_EVENT_AD_BREAK_START, CMCD_EVENT_AD_END, CMCD_EVENT_AD_START, CMCD_EVENT_BACKGROUNDED_MODE, CMCD_EVENT_BITRATE_CHANGE, CMCD_EVENT_CONTENT_ID, CMCD_EVENT_CUSTOM_EVENT, CMCD_EVENT_ERROR, CMCD_EVENT_KEYS, CMCD_EVENT_MODE, CMCD_EVENT_MUTE, CMCD_EVENT_PLAYER_COLLAPSE, CMCD_EVENT_PLAYER_EXPAND, CMCD_EVENT_PLAY_STATE, CMCD_EVENT_RESPONSE_RECEIVED, CMCD_EVENT_SKIP, CMCD_EVENT_TIME_INTERVAL, CMCD_EVENT_UNMUTE, CMCD_FORMATTER_MAP, CMCD_HEADERS, CMCD_HEADER_MAP, CMCD_JSON, CMCD_KEYS, CMCD_OBJECT, CMCD_PARAM, CMCD_QUERY, CMCD_REQUEST, CMCD_REQUEST_KEYS, CMCD_REQUEST_MODE, CMCD_RESPONSE_KEYS, CMCD_SESSION, CMCD_STATUS, CMCD_V1, CMCD_V1_KEYS, CMCD_V2, Cmcd, CmcdCustomKey, CmcdCustomValue, CmcdEncodeOptions, CmcdEvent, CmcdEventReportConfig, CmcdEventType, CmcdFormatter, CmcdFormatterMap, CmcdFormatterOptions, CmcdHeaderField, CmcdHeaderKey, CmcdHeaderMap, CmcdHeaderValue, CmcdKey, CmcdObjectType, CmcdObjectTypeList, CmcdPlayerState, CmcdReportConfig, CmcdReporter, CmcdReporterConfig, CmcdReportingMode, CmcdRequest, CmcdRequestKey, CmcdRequestReportConfig, CmcdResponse, CmcdStreamType, CmcdStreamingFormat, CmcdTransmissionMode, CmcdV1, CmcdValue, CmcdVersion, appendCmcdHeaders, appendCmcdQuery, decodeCmcd, encodeCmcd, fromCmcdHeaders, fromCmcdQuery, fromCmcdUrl, groupCmcdHeaders, isCmcdCustomKey, isCmcdEventKey, isCmcdRequestKey, isCmcdResponseReceivedKey, isCmcdV1Key, prepareCmcdData, toCmcdHeaders, toCmcdQuery, toCmcdUrl, toCmcdValue };
|
|
1874
1874
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":["CMCD_FORMATTER_MAP: Record<string, CmcdFormatter>","CMCD_KEYS: CmcdKey[]","CMCD_HEADER_MAP: Record<CmcdRequestKey | 'nrr', CmcdHeaderField>"],"sources":["../src/CmcdEventType.ts","../src/CmcdCustomKey.ts","../src/CmcdCustomValue.ts","../src/CmcdObjectType.ts","../src/CmcdObjectTypeList.ts","../src/CmcdPlayerState.ts","../src/CmcdStreamType.ts","../src/CmcdStreamingFormat.ts","../src/CmcdRequest.ts","../src/CmcdEvent.ts","../src/CmcdResponse.ts","../src/Cmcd.ts","../src/CmcdReportingMode.ts","../src/CmcdFormatterOptions.ts","../src/CmcdValue.ts","../src/CmcdFormatter.ts","../src/CmcdV1.ts","../src/CmcdKey.ts","../src/CmcdFormatterMap.ts","../src/CmcdHeaderField.ts","../src/CmcdHeaderMap.ts","../src/CmcdEncodeOptions.ts","../src/appendCmcdHeaders.ts","../src/appendCmcdQuery.ts","../src/CMCD_DEFAULT_TIME_INTERVAL.ts","../src/CMCD_EVENT_KEYS.ts","../src/CMCD_FORMATTER_MAP.ts","../src/CMCD_KEYS.ts","../src/CMCD_PARAM.ts","../src/CMCD_REQUEST_KEYS.ts","../src/CMCD_RESPONSE_KEYS.ts","../src/CMCD_V1.ts","../src/CMCD_V1_KEYS.ts","../src/CMCD_V2.ts","../src/CmcdVersion.ts","../src/CmcdReportConfig.ts","../src/CmcdEventReportConfig.ts","../src/CmcdRequestKey.ts","../src/CMCD_HEADER_MAP.ts","../src/CmcdHeaderKey.ts","../src/CmcdHeaderValue.ts","../src/CmcdTransmissionMode.ts","../src/CmcdRequestReportConfig.ts","../src/CmcdReporterConfig.ts","../src/CmcdReporter.ts","../src/decodeCmcd.ts","../src/encodeCmcd.ts","../src/fromCmcdHeaders.ts","../src/fromCmcdQuery.ts","../src/fromCmcdUrl.ts","../src/groupCmcdHeaders.ts","../src/isCmcdCustomKey.ts","../src/isCmcdEventKey.ts","../src/isCmcdRequestKey.ts","../src/isCmcdResponseReceivedKey.ts","../src/isCmcdV1Key.ts","../src/prepareCmcdData.ts","../src/toCmcdHeaders.ts","../src/toCmcdQuery.ts","../src/toCmcdUrl.ts","../src/toCmcdValue.ts"],"sourcesContent":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":["CMCD_FORMATTER_MAP: Record<string, CmcdFormatter>","CMCD_HEADER_MAP: Record<CmcdRequestKey | 'nrr', CmcdHeaderField>","CMCD_KEYS: CmcdKey[]"],"sources":["../src/CmcdEventType.ts","../src/CmcdCustomKey.ts","../src/CmcdCustomValue.ts","../src/CmcdObjectType.ts","../src/CmcdObjectTypeList.ts","../src/CmcdPlayerState.ts","../src/CmcdStreamType.ts","../src/CmcdStreamingFormat.ts","../src/CmcdRequest.ts","../src/CmcdEvent.ts","../src/CmcdResponse.ts","../src/Cmcd.ts","../src/CmcdReportingMode.ts","../src/CmcdFormatterOptions.ts","../src/CmcdValue.ts","../src/CmcdFormatter.ts","../src/CmcdV1.ts","../src/CmcdKey.ts","../src/CmcdFormatterMap.ts","../src/CmcdHeaderField.ts","../src/CmcdHeaderMap.ts","../src/CmcdEncodeOptions.ts","../src/appendCmcdHeaders.ts","../src/appendCmcdQuery.ts","../src/CMCD_DEFAULT_TIME_INTERVAL.ts","../src/CMCD_EVENT_KEYS.ts","../src/CMCD_FORMATTER_MAP.ts","../src/CmcdRequestKey.ts","../src/CMCD_HEADER_MAP.ts","../src/CMCD_KEYS.ts","../src/CMCD_PARAM.ts","../src/CMCD_REQUEST_KEYS.ts","../src/CMCD_RESPONSE_KEYS.ts","../src/CMCD_V1.ts","../src/CMCD_V1_KEYS.ts","../src/CMCD_V2.ts","../src/CmcdVersion.ts","../src/CmcdReportConfig.ts","../src/CmcdEventReportConfig.ts","../src/CmcdHeaderKey.ts","../src/CmcdHeaderValue.ts","../src/CmcdTransmissionMode.ts","../src/CmcdRequestReportConfig.ts","../src/CmcdReporterConfig.ts","../src/CmcdReporter.ts","../src/decodeCmcd.ts","../src/encodeCmcd.ts","../src/fromCmcdHeaders.ts","../src/fromCmcdQuery.ts","../src/fromCmcdUrl.ts","../src/groupCmcdHeaders.ts","../src/isCmcdCustomKey.ts","../src/isCmcdEventKey.ts","../src/isCmcdRequestKey.ts","../src/isCmcdResponseReceivedKey.ts","../src/isCmcdV1Key.ts","../src/prepareCmcdData.ts","../src/toCmcdHeaders.ts","../src/toCmcdQuery.ts","../src/toCmcdUrl.ts","../src/toCmcdValue.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -46,7 +46,7 @@ const CmcdHeaderField = {
|
|
|
46
46
|
/**
|
|
47
47
|
* The map of CMCD keys to their appropriate header shard.
|
|
48
48
|
*
|
|
49
|
-
* @
|
|
49
|
+
* @public
|
|
50
50
|
*/
|
|
51
51
|
const CMCD_HEADER_MAP = {
|
|
52
52
|
ab: CMCD_OBJECT,
|
|
@@ -1303,5 +1303,5 @@ function toCmcdValue(value, params) {
|
|
|
1303
1303
|
}
|
|
1304
1304
|
|
|
1305
1305
|
//#endregion
|
|
1306
|
-
export { CMCD_DEFAULT_TIME_INTERVAL, CMCD_EVENT_AD_BREAK_END, CMCD_EVENT_AD_BREAK_START, CMCD_EVENT_AD_END, CMCD_EVENT_AD_START, CMCD_EVENT_BACKGROUNDED_MODE, CMCD_EVENT_BITRATE_CHANGE, CMCD_EVENT_CONTENT_ID, CMCD_EVENT_CUSTOM_EVENT, CMCD_EVENT_ERROR, CMCD_EVENT_KEYS, CMCD_EVENT_MODE, CMCD_EVENT_MUTE, CMCD_EVENT_PLAYER_COLLAPSE, CMCD_EVENT_PLAYER_EXPAND, CMCD_EVENT_PLAY_STATE, CMCD_EVENT_RESPONSE_RECEIVED, CMCD_EVENT_SKIP, CMCD_EVENT_TIME_INTERVAL, CMCD_EVENT_UNMUTE, CMCD_FORMATTER_MAP, CMCD_HEADERS, CMCD_JSON, CMCD_KEYS, CMCD_OBJECT, CMCD_PARAM, CMCD_QUERY, CMCD_REQUEST, CMCD_REQUEST_KEYS, CMCD_REQUEST_MODE, CMCD_RESPONSE_KEYS, CMCD_SESSION, CMCD_STATUS, CMCD_V1, CMCD_V1_KEYS, CMCD_V2, CmcdEventType, CmcdHeaderField, CmcdObjectType, CmcdPlayerState, CmcdReporter, CmcdReportingMode, CmcdStreamType, CmcdStreamingFormat, CmcdTransmissionMode, appendCmcdHeaders, appendCmcdQuery, decodeCmcd, encodeCmcd, fromCmcdHeaders, fromCmcdQuery, fromCmcdUrl, groupCmcdHeaders, isCmcdCustomKey, isCmcdEventKey, isCmcdRequestKey, isCmcdResponseReceivedKey, isCmcdV1Key, prepareCmcdData, toCmcdHeaders, toCmcdQuery, toCmcdUrl, toCmcdValue };
|
|
1306
|
+
export { CMCD_DEFAULT_TIME_INTERVAL, CMCD_EVENT_AD_BREAK_END, CMCD_EVENT_AD_BREAK_START, CMCD_EVENT_AD_END, CMCD_EVENT_AD_START, CMCD_EVENT_BACKGROUNDED_MODE, CMCD_EVENT_BITRATE_CHANGE, CMCD_EVENT_CONTENT_ID, CMCD_EVENT_CUSTOM_EVENT, CMCD_EVENT_ERROR, CMCD_EVENT_KEYS, CMCD_EVENT_MODE, CMCD_EVENT_MUTE, CMCD_EVENT_PLAYER_COLLAPSE, CMCD_EVENT_PLAYER_EXPAND, CMCD_EVENT_PLAY_STATE, CMCD_EVENT_RESPONSE_RECEIVED, CMCD_EVENT_SKIP, CMCD_EVENT_TIME_INTERVAL, CMCD_EVENT_UNMUTE, CMCD_FORMATTER_MAP, CMCD_HEADERS, CMCD_HEADER_MAP, CMCD_JSON, CMCD_KEYS, CMCD_OBJECT, CMCD_PARAM, CMCD_QUERY, CMCD_REQUEST, CMCD_REQUEST_KEYS, CMCD_REQUEST_MODE, CMCD_RESPONSE_KEYS, CMCD_SESSION, CMCD_STATUS, CMCD_V1, CMCD_V1_KEYS, CMCD_V2, CmcdEventType, CmcdHeaderField, CmcdObjectType, CmcdPlayerState, CmcdReporter, CmcdReportingMode, CmcdStreamType, CmcdStreamingFormat, CmcdTransmissionMode, appendCmcdHeaders, appendCmcdQuery, decodeCmcd, encodeCmcd, fromCmcdHeaders, fromCmcdQuery, fromCmcdUrl, groupCmcdHeaders, isCmcdCustomKey, isCmcdEventKey, isCmcdRequestKey, isCmcdResponseReceivedKey, isCmcdV1Key, prepareCmcdData, toCmcdHeaders, toCmcdQuery, toCmcdUrl, toCmcdValue };
|
|
1307
1307
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["CMCD_HEADER_MAP: Record<CmcdRequestKey | 'nrr', CmcdHeaderField>","keys","custom: Partial<Record<CmcdHeaderKey, CmcdHeaderField>>","CMCD_FORMATTER_MAP: Record<string, CmcdFormatter>","filterMap: Record<string, (key: string) => boolean>","item: any","item","result: Record<string, any>","results: Cmcd","keys","formatterOptions: CmcdFormatterOptions","CMCD_KEYS: CmcdKey[]"],"sources":["../src/CmcdHeaderField.ts","../src/CMCD_HEADER_MAP.ts","../src/groupCmcdHeaders.ts","../src/CMCD_FORMATTER_MAP.ts","../src/CMCD_V2.ts","../src/CmcdReportingMode.ts","../src/CMCD_EVENT_KEYS.ts","../src/CMCD_REQUEST_KEYS.ts","../src/isCmcdCustomKey.ts","../src/isCmcdRequestKey.ts","../src/CMCD_RESPONSE_KEYS.ts","../src/isCmcdResponseReceivedKey.ts","../src/isCmcdEventKey.ts","../src/CMCD_V1_KEYS.ts","../src/isCmcdV1Key.ts","../src/isTokenField.ts","../src/isValid.ts","../src/prepareCmcdData.ts","../src/toCmcdHeaders.ts","../src/appendCmcdHeaders.ts","../src/CMCD_PARAM.ts","../src/encodeCmcd.ts","../src/toCmcdUrl.ts","../src/toCmcdQuery.ts","../src/appendCmcdQuery.ts","../src/CMCD_DEFAULT_TIME_INTERVAL.ts","../src/CMCD_KEYS.ts","../src/CMCD_V1.ts","../src/CmcdEventType.ts","../src/CmcdObjectType.ts","../src/CmcdPlayerState.ts","../src/CmcdTransmissionMode.ts","../src/CmcdReporter.ts","../src/CmcdStreamingFormat.ts","../src/CmcdStreamType.ts","../src/decodeCmcd.ts","../src/fromCmcdHeaders.ts","../src/fromCmcdQuery.ts","../src/fromCmcdUrl.ts","../src/toCmcdValue.ts"],"sourcesContent":["import type { ValueOf } from '@svta/cml-utils'\n\n/**\n * CMCD object header name.\n *\n * @public\n */\nexport const CMCD_OBJECT = 'CMCD-Object' as const\n\n/**\n * CMCD request header name.\n *\n * @public\n */\nexport const CMCD_REQUEST = 'CMCD-Request' as const\n\n/**\n * CMCD session header name.\n *\n * @public\n */\nexport const CMCD_SESSION = 'CMCD-Session' as const\n\n/**\n * CMCD status header name.\n *\n * @public\n */\nexport const CMCD_STATUS = 'CMCD-Status' as const\n\n/**\n * CMCD header fields.\n *\n *\n * @enum\n *\n * @public\n */\nexport const CmcdHeaderField = {\n\t/**\n\t * keys whose values vary with the object being requested.\n\t */\n\tOBJECT: CMCD_OBJECT as typeof CMCD_OBJECT,\n\n\t/**\n\t * keys whose values vary with each request.\n\t */\n\tREQUEST: CMCD_REQUEST as typeof CMCD_REQUEST,\n\n\t/**\n\t * keys whose values are expected to be invariant over the life of the session.\n\t */\n\tSESSION: CMCD_SESSION as typeof CMCD_SESSION,\n\n\t/**\n\t * keys whose values do not vary with every request or object.\n\t */\n\tSTATUS: CMCD_STATUS as typeof CMCD_STATUS,\n} as const\n\n/**\n * @public\n */\nexport type CmcdHeaderField = ValueOf<typeof CmcdHeaderField>;\n","import { type CmcdHeaderField, CMCD_OBJECT, CMCD_REQUEST, CMCD_SESSION, CMCD_STATUS } from './CmcdHeaderField.ts'\nimport type { CmcdRequestKey } from './CmcdRequestKey.ts'\n\n/**\n * The map of CMCD keys to their appropriate header shard.\n *\n * @internal\n */\nexport const CMCD_HEADER_MAP: Record<CmcdRequestKey | 'nrr', CmcdHeaderField> = {\n\t// Object\n\tab: CMCD_OBJECT,\n\tbr: CMCD_OBJECT,\n\td: CMCD_OBJECT,\n\tlab: CMCD_OBJECT,\n\tlb: CMCD_OBJECT,\n\tot: CMCD_OBJECT,\n\ttab: CMCD_OBJECT,\n\ttb: CMCD_OBJECT,\n\ttpb: CMCD_OBJECT,\n\n\t// Request\n\tbl: CMCD_REQUEST,\n\tcs: CMCD_REQUEST,\n\tdfa: CMCD_REQUEST,\n\tdl: CMCD_REQUEST,\n\tltc: CMCD_REQUEST,\n\tmtp: CMCD_REQUEST,\n\tnor: CMCD_REQUEST,\n\tnrr: CMCD_REQUEST,\n\tpb: CMCD_REQUEST,\n\tsn: CMCD_REQUEST,\n\tsta: CMCD_REQUEST,\n\tsu: CMCD_REQUEST,\n\ttbl: CMCD_REQUEST,\n\n\t// Session\n\tcid: CMCD_SESSION,\n\tmsd: CMCD_SESSION,\n\tsf: CMCD_SESSION,\n\tsid: CMCD_SESSION,\n\tst: CMCD_SESSION,\n\tv: CMCD_SESSION,\n\n\t// Status\n\tbg: CMCD_STATUS,\n\tbs: CMCD_STATUS,\n\tbsa: CMCD_STATUS,\n\tbsd: CMCD_STATUS,\n\tbsda: CMCD_STATUS,\n\tcdn: CMCD_STATUS,\n\tec: CMCD_STATUS,\n\tnr: CMCD_STATUS,\n\tpr: CMCD_STATUS,\n\tpt: CMCD_STATUS,\n\trtp: CMCD_STATUS,\n}\n","import type { Cmcd } from './Cmcd.ts'\nimport { CMCD_HEADER_MAP } from './CMCD_HEADER_MAP.ts'\nimport { CmcdHeaderField } from './CmcdHeaderField.ts'\nimport type { CmcdHeaderKey } from './CmcdHeaderKey.ts'\nimport type { CmcdHeaderMap } from './CmcdHeaderMap.ts'\nimport type { CmcdHeaderValue } from './CmcdHeaderValue.ts'\nimport type { CmcdKey } from './CmcdKey.ts'\n\nfunction createHeaderMap(headerMap: Partial<CmcdHeaderMap>): Record<CmcdHeaderKey, CmcdHeaderField> {\n\treturn Object.keys(headerMap)\n\t\t.reduce((acc, field) => {\n\t\t\theaderMap[field as CmcdHeaderField]?.forEach(key => acc[key] = field as CmcdHeaderField)\n\t\t\treturn acc\n\t\t}, {} as Record<CmcdKey, CmcdHeaderField>)\n}\n\n/**\n * Group a CMCD data object into header shards\n *\n * @param cmcd - The CMCD data object to convert.\n * @param customHeaderMap - A map of CMCD header fields to custom CMCD keys.\n *\n * @returns The CMCD header shards.\n *\n * @public\n */\nexport function groupCmcdHeaders(cmcd: Cmcd, customHeaderMap?: Partial<CmcdHeaderMap>): Record<CmcdHeaderField, CmcdHeaderValue> {\n\tconst result = {} as Record<CmcdHeaderField, CmcdHeaderValue>\n\n\tif (!cmcd) {\n\t\treturn result\n\t}\n\n\tconst keys = Object.keys(cmcd) as CmcdHeaderKey[]\n\tconst custom: Partial<Record<CmcdHeaderKey, CmcdHeaderField>> = customHeaderMap ? createHeaderMap(customHeaderMap) : {}\n\n\treturn keys.reduce((acc: Record<CmcdHeaderField, CmcdHeaderValue>, key: CmcdHeaderKey) => {\n\t\tconst field = CMCD_HEADER_MAP[key] || custom[key] || CmcdHeaderField.REQUEST\n\t\tconst data = acc[field] ??= {};\n\t\t(data as any)[key] = (cmcd as any)[key]\n\t\treturn acc\n\t}, result)\n}\n","import { SfItem } from '@svta/cml-structured-field-values'\nimport { urlToRelativePath, type ValueOrArray } from '@svta/cml-utils'\nimport type { CmcdFormatter } from './CmcdFormatter.ts'\nimport type { CmcdFormatterOptions } from './CmcdFormatterOptions.ts'\nimport type { CmcdValue } from './CmcdValue.ts'\n\nconst roundValue = (value: CmcdValue): number | SfItem<number> => {\n\tif (value instanceof SfItem) {\n\t\treturn new SfItem(Math.round(value.value as number), value.params)\n\t}\n\treturn Math.round(value as number)\n}\n\nconst toRounded = (value: CmcdValue) => {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(roundValue)\n\t}\n\treturn roundValue(value)\n}\n\nconst toUrlSafe = (value: CmcdValue, options: CmcdFormatterOptions): ValueOrArray<string | SfItem<string>> => {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(item => toUrlSafe(item, options) as string)\n\t}\n\n\tif (value instanceof SfItem && typeof value.value === 'string') {\n\t\treturn new SfItem(toUrlSafe(value.value, options), value.params)\n\t}\n\telse {\n\t\tif (options.baseUrl) {\n\t\t\tvalue = urlToRelativePath(value as string, options.baseUrl)\n\t\t}\n\t\treturn options.version === 1 ? encodeURIComponent(value as string) : (value as string)\n\t}\n}\n\nconst hundredValue = (value: CmcdValue): number | SfItem<number> => {\n\tif (value instanceof SfItem) {\n\t\treturn new SfItem(Math.round((value.value as number) / 100) * 100, value.params)\n\t}\n\treturn Math.round((value as number) / 100) * 100\n}\n\nconst toHundred = (value: CmcdValue) => {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(hundredValue)\n\t}\n\treturn hundredValue(value)\n}\n\nconst nor = (value: CmcdValue, options: CmcdFormatterOptions) => {\n\tlet norValue = value\n\n\tif (options.version >= 2) {\n\t\tif (value instanceof SfItem && typeof value.value === 'string') {\n\t\t\tnorValue = new SfItem([value])\n\t\t}\n\t\telse if (typeof value === 'string') {\n\t\t\tnorValue = [value]\n\t\t}\n\t}\n\n\treturn toUrlSafe(norValue, options)\n}\n\n/**\n * The default formatters for CMCD values.\n *\n * @public\n */\nexport const CMCD_FORMATTER_MAP: Record<string, CmcdFormatter> = {\n\t/**\n\t * Bitrate (kbps) rounded integer\n\t */\n\tbr: toRounded,\n\n\t/**\n\t * Duration (milliseconds) rounded integer\n\t */\n\td: toRounded,\n\n\t/**\n\t * Buffer Length (milliseconds) rounded nearest 100ms\n\t */\n\tbl: toHundred,\n\n\t/**\n\t * Deadline (milliseconds) rounded nearest 100ms\n\t */\n\tdl: toHundred,\n\n\t/**\n\t * Measured Throughput (kbps) rounded nearest 100kbps\n\t */\n\tmtp: toHundred,\n\n\t/**\n\t * Next Object Request URL encoded\n\t */\n\tnor,\n\n\t/**\n\t * Requested maximum throughput (kbps) rounded nearest 100kbps\n\t */\n\trtp: toHundred,\n\n\t/**\n\t * Top Bitrate (kbps) rounded integer\n\t */\n\ttb: toRounded,\n} as const\n","/**\n * CMCD Version 2\n *\n * @public\n */\nexport const CMCD_V2 = 2 as const\n","import type { ValueOf } from '@svta/cml-utils'\n\n/**\n * CMCD event mode variable name.\n *\n * @public\n */\nexport const CMCD_EVENT_MODE = 'event' as const\n\n/**\n * CMCD request mode variable name.\n *\n * @public\n */\nexport const CMCD_REQUEST_MODE = 'request' as const\n\n/**\n * CMCD reporting mode types.\n *\n * @enum\n *\n * @public\n */\nexport const CmcdReportingMode = {\n\t/**\n\t * Request mode\n\t */\n\tREQUEST: CMCD_REQUEST_MODE as typeof CMCD_REQUEST_MODE,\n\n\t/**\n\t * Event mode\n\t */\n\tEVENT: CMCD_EVENT_MODE as typeof CMCD_EVENT_MODE,\n} as const\n\n/**\n * @public\n */\nexport type CmcdReportingMode = ValueOf<typeof CmcdReportingMode>;\n","/**\n * Defines the event-specific keys for CMCD (Common Media Client Data) version 2.\n *\n * @public\n */\nexport const CMCD_EVENT_KEYS = [\n\t'cen',\n\t'e',\n\t'h',\n\t'ts',\n] as const\n","/**\n * Defines the request-specific keys for CMCD (Common Media Client Data) version 2.\n *\n * @public\n */\nexport const CMCD_REQUEST_KEYS = [\n\t'ab',\n\t'bg',\n\t'bl',\n\t'br',\n\t'bs',\n\t'bsa',\n\t'bsd',\n\t'bsda',\n\t'cdn',\n\t'cid',\n\t'cs',\n\t'd',\n\t'dfa',\n\t'dl',\n\t'ec',\n\t'lab',\n\t'lb',\n\t'ltc',\n\t'msd',\n\t'mtp',\n\t'nor',\n\t'nr',\n\t'ot',\n\t'pb',\n\t'pr',\n\t'pt',\n\t'rtp',\n\t'sf',\n\t'sid',\n\t'sn',\n\t'st',\n\t'sta',\n\t'su',\n\t'tab',\n\t'tb',\n\t'tbl',\n\t'tpb',\n\t'v',\n] as const\n","import type { CmcdKey } from './CmcdKey.ts'\n\nconst CUSTOM_KEY_REGEX = /^[a-zA-Z0-9-.]+-[a-zA-Z0-9-.]+$/\n\n/**\n * Check if a key is a custom key.\n *\n * @param key - The key to check.\n *\n * @returns `true` if the key is a custom key, `false` otherwise.\n *\n * @public\n */\nexport function isCmcdCustomKey(key: CmcdKey): boolean {\n\treturn CUSTOM_KEY_REGEX.test(key)\n}\n","import { CMCD_REQUEST_KEYS } from './CMCD_REQUEST_KEYS.ts'\nimport type { Cmcd } from './Cmcd.ts'\nimport { isCmcdCustomKey } from './isCmcdCustomKey.ts'\n\n/**\n * Check if a key is a valid CMCD request key.\n *\n * @param key - The key to check.\n *\n * @returns `true` if the key is a valid CMCD request key, `false` otherwise.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/isCmcdRequestKey.test.ts#example}\n */\nexport function isCmcdRequestKey(key: string): key is keyof Cmcd {\n\treturn CMCD_REQUEST_KEYS.includes(key as any) ||\n\t\tisCmcdCustomKey(key as any)\n}\n","/**\n * CMCD v2 - Response-only and timing keys.\n *\n * @public\n */\nexport const CMCD_RESPONSE_KEYS = [\n\t'cmsdd',\n\t'cmsds',\n\t'rc',\n\t'smrt',\n\t'ttfb',\n\t'ttfbb',\n\t'ttlb',\n\t'url',\n] as const\n","import { CMCD_RESPONSE_KEYS } from './CMCD_RESPONSE_KEYS.js'\nimport type { Cmcd } from './Cmcd.ts'\n\n/**\n * Check if a key is a valid CMCD response key.\n *\n * @param key - The key to check.\n *\n * @returns `true` if the key is a valid CMCD request key, `false` otherwise.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/isCmcdResponseReceivedKey.test.ts#example}\n */\nexport function isCmcdResponseReceivedKey(key: string): key is keyof Cmcd {\n\treturn CMCD_RESPONSE_KEYS.includes(key as any)\n}\n","import { CMCD_EVENT_KEYS } from './CMCD_EVENT_KEYS.ts'\nimport type { Cmcd } from './Cmcd.ts'\nimport { isCmcdRequestKey } from './isCmcdRequestKey.ts'\nimport { isCmcdResponseReceivedKey } from './isCmcdResponseReceivedKey.ts'\n\n/**\n * Check if a key is a valid CMCD event key.\n *\n * @param key - The key to check.\n *\n * @returns `true` if the key is a valid CMCD event key, `false` otherwise.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/isCmcdEventKey.test.ts#example}\n */\nexport function isCmcdEventKey(key: string): key is keyof Cmcd {\n\treturn isCmcdRequestKey(key) ||\n\t\tisCmcdResponseReceivedKey(key) ||\n\t\tCMCD_EVENT_KEYS.includes(key as any)\n}\n","/**\n * Defines the keys for CMCD (Common Media Client Data) version 1.\n *\n * @public\n */\nexport const CMCD_V1_KEYS = [\n\t'bl',\n\t'br',\n\t'bs',\n\t'cid',\n\t'd',\n\t'dl',\n\t'mtp',\n\t'nor',\n\t'nrr',\n\t'ot',\n\t'pr',\n\t'rtp',\n\t'sf',\n\t'sid',\n\t'st',\n\t'su',\n\t'tb',\n\t'v',\n] as const\n","import { CMCD_V1_KEYS } from './CMCD_V1_KEYS.ts'\nimport type { CmcdKey } from './CmcdKey.ts'\nimport { isCmcdCustomKey } from './isCmcdCustomKey.ts'\n\n/**\n * Filter function for CMCD v1 keys.\n *\n * @param key - The CMCD key to filter.\n *\n * @returns `true` if the key should be included, `false` otherwise.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/isCmcdV1Key.test.ts#example}\n */\nexport function isCmcdV1Key(key: string): key is CmcdKey {\n\treturn CMCD_V1_KEYS.includes(key as any) || isCmcdCustomKey(key as any)\n}\n","/**\n * Checks if the given key is a token field.\n *\n * @param key - The key to check.\n *\n * @returns `true` if the key is a token field.\n *\n * @internal\n */\nexport function isTokenField(key: string): boolean {\n\treturn [\n\t\t'ot',\n\t\t'sf',\n\t\t'st',\n\t\t'e',\n\t\t'sta',\n\t].includes(key as any)\n}\n","/**\n * Checks if the given value is valid\n *\n * @param value - The value to check.\n *\n * @returns `true` if the key is a value is valid.\n *\n * @internal\n */\nexport function isValid(value: unknown): boolean {\n\tif (typeof value === 'number') {\n\t\treturn Number.isFinite(value)\n\t}\n\n\treturn value != null && value !== '' && value !== false\n}\n","import { SfItem, SfToken } from '@svta/cml-structured-field-values'\nimport { CMCD_FORMATTER_MAP } from './CMCD_FORMATTER_MAP.ts'\nimport { CMCD_V2 } from './CMCD_V2.ts'\nimport type { Cmcd } from './Cmcd.ts'\nimport type { CmcdEncodeOptions } from './CmcdEncodeOptions.ts'\nimport type { CmcdFormatterOptions } from './CmcdFormatterOptions.ts'\nimport type { CmcdKey } from './CmcdKey.ts'\nimport type { CmcdObjectType } from './CmcdObjectType.ts'\nimport { CMCD_EVENT_MODE, CMCD_REQUEST_MODE } from './CmcdReportingMode.ts'\nimport type { CmcdValue } from './CmcdValue.ts'\nimport { isCmcdEventKey } from './isCmcdEventKey.ts'\nimport { isCmcdRequestKey } from './isCmcdRequestKey.ts'\nimport { isCmcdResponseReceivedKey } from './isCmcdResponseReceivedKey.ts'\nimport { isCmcdV1Key } from './isCmcdV1Key.ts'\nimport { isTokenField } from './isTokenField.ts'\nimport { isValid } from './isValid.ts'\n\nconst filterMap: Record<string, (key: string) => boolean> = {\n\t[CMCD_EVENT_MODE]: isCmcdEventKey,\n\t[CMCD_REQUEST_MODE]: isCmcdRequestKey,\n}\n\n/**\n * V1 keys that use inner lists in V2 but plain numbers in V1.\n */\nconst INNER_LIST_V1_KEYS = new Set(['ab', 'bl', 'br', 'bsa', 'bsd', 'bsda', 'lab', 'lb', 'mtp', 'pb', 'tab', 'tb', 'tbl', 'tpb'])\n\n/**\n * Unwrap an inner list or SfItem value to a plain scalar.\n */\nfunction unwrapValue(value: any, ot?: CmcdObjectType): any {\n\tif (Array.isArray(value)) {\n\t\tlet item: any\n\n\t\tif (ot) {\n\t\t\titem = value.find(item => item.params?.ot === ot)\n\t\t}\n\n\t\tif (!item) {\n\t\t\titem = value[0]\n\t\t}\n\n\t\treturn unwrapValue(item)\n\t}\n\n\tif (value instanceof SfItem) {\n\t\treturn value.value\n\t}\n\n\treturn value\n}\n\n/**\n * Down-convert V2 CMCD data to V1 format.\n *\n * - Extracts `nrr` from `nor` SfItem `r` parameter.\n * - Unwraps inner-list values to plain scalars.\n */\nfunction downConvertToV1(obj: Record<string, any>): Record<string, any> {\n\tconst result: Record<string, any> = {}\n\n\tfor (const [key, value] of Object.entries(obj)) {\n\t\tif (value == null) {\n\t\t\tresult[key] = value\n\t\t\tcontinue\n\t\t}\n\n\t\tif (key === 'nor') {\n\t\t\tconst items = Array.isArray(value) ? value : [value]\n\t\t\tconst first = items[0]\n\n\t\t\tif (first instanceof SfItem) {\n\t\t\t\tresult['nor'] = first.value\n\t\t\t\tif (first.params?.r) {\n\t\t\t\t\tresult['nrr'] = first.params.r\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tresult['nor'] = first\n\t\t\t}\n\t\t}\n\t\telse if (INNER_LIST_V1_KEYS.has(key)) {\n\t\t\tresult[key] = unwrapValue(value, obj['ot'])\n\t\t}\n\t\telse {\n\t\t\tresult[key] = value\n\t\t}\n\t}\n\n\treturn result\n}\n\n/**\n * Convert a generic object to CMCD data.\n *\n * @param obj - The CMCD object to process.\n * @param options - Options for encoding.\n *\n * @public\n */\nexport function prepareCmcdData(obj: Record<string, any>, options: CmcdEncodeOptions = {}): Cmcd {\n\tconst results: Cmcd = {}\n\n\tif (obj == null || typeof obj !== 'object') {\n\t\treturn results\n\t}\n\n\tconst version = options.version || (obj['v'] as number) || CMCD_V2\n\tconst reportingMode = options.reportingMode || CMCD_REQUEST_MODE\n\n\t// Down-convert V2 data to V1 format if needed\n\tconst data = version === 1 ? downConvertToV1(obj) : obj\n\n\tconst keyFilter = version === 1 ? isCmcdV1Key : filterMap[reportingMode]\n\n\t// Filter keys based on the version, reporting mode and options\n\tlet keys = Object.keys(data).filter(keyFilter) as CmcdKey[]\n\n\tif (data['e'] && data['e'] !== 'rr') {\n\t\tkeys = keys.filter(key => !isCmcdResponseReceivedKey(key))\n\t}\n\n\tconst filter = options.filter\n\tif (typeof filter === 'function') {\n\t\tkeys = keys.filter(filter)\n\t}\n\n\t// Ensure all required event keys are present before sorting\n\tconst needsTimestamp = reportingMode === CMCD_EVENT_MODE\n\n\tif (needsTimestamp) {\n\t\tif (!keys.includes('e') && data['e'] != null) {\n\t\t\tkeys.push('e')\n\t\t}\n\n\t\tif (!keys.includes('ts')) {\n\t\t\tkeys.push('ts')\n\t\t}\n\n\t\tif (!keys.includes('cen') && data['cen'] != null) {\n\t\t\tkeys.push('cen')\n\t\t}\n\t}\n\n\tif (keys.length === 0) {\n\t\treturn results\n\t}\n\n\tif (version > 1 && !keys.includes('v')) {\n\t\tkeys.push('v')\n\t}\n\n\tconst formatters = Object.assign({}, CMCD_FORMATTER_MAP, options.formatters)\n\tconst formatterOptions: CmcdFormatterOptions = {\n\t\tversion,\n\t\treportingMode,\n\t\tbaseUrl: options.baseUrl,\n\t}\n\n\tkeys.sort().forEach(key => {\n\t\tlet value = data[key] as CmcdValue\n\n\t\tconst formatter = formatters[key]\n\t\tif (typeof formatter === 'function') {\n\t\t\tvalue = formatter(value, formatterOptions)\n\t\t}\n\n\t\t// Version should only be reported if not equal to 1.\n\t\tif (key === 'v') {\n\t\t\tif (version === 1) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvalue = version\n\t\t\t}\n\t\t}\n\n\t\t// Playback rate should only be sent if not equal to 1.\n\t\tif (key == 'pr' && value === 1) {\n\t\t\treturn\n\t\t}\n\n\t\t// Ensure a timestamp is set for response and event modes\n\t\tif (needsTimestamp && key === 'ts' && !Number.isFinite(value)) {\n\t\t\tvalue = Date.now()\n\t\t}\n\n\t\t// ignore invalid values\n\t\tif (!isValid(value)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (isTokenField(key) && typeof value === 'string') {\n\t\t\tvalue = new SfToken(value)\n\t\t}\n\n\t\t(results as any)[key] = value\n\t})\n\n\treturn results\n}\n","import { encodeSfDict } from '@svta/cml-structured-field-values'\nimport type { Cmcd } from './Cmcd.ts'\nimport type { CmcdEncodeOptions } from './CmcdEncodeOptions.ts'\nimport type { CmcdHeaderField } from './CmcdHeaderField.ts'\nimport { groupCmcdHeaders } from './groupCmcdHeaders.ts'\nimport { prepareCmcdData } from './prepareCmcdData.ts'\n\n/**\n * Convert a CMCD data object to request headers\n *\n * @param cmcd - The CMCD data object to convert.\n * @param options - Options for encoding the CMCD object.\n *\n * @returns The CMCD header shards.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/toCmcdHeaders.test.ts#example}\n */\nexport function toCmcdHeaders(cmcd: Cmcd, options: CmcdEncodeOptions = {}): Record<CmcdHeaderField, string> {\n\tconst result = {} as Record<CmcdHeaderField, string>\n\n\tif (!cmcd) {\n\t\treturn result\n\t}\n\n\tconst data = prepareCmcdData(cmcd, options)\n\tconst shards = groupCmcdHeaders(data, options?.customHeaderMap)\n\n\treturn Object.entries(shards)\n\t\t.reduce((acc, [field, value]) => {\n\t\t\tconst shard = encodeSfDict(value, { whitespace: false })\n\t\t\tif (shard) {\n\t\t\t\tacc[field as CmcdHeaderField] = shard\n\t\t\t}\n\t\t\treturn acc\n\t\t}, result)\n}\n","import type { Cmcd } from './Cmcd.ts'\nimport type { CmcdEncodeOptions } from './CmcdEncodeOptions.ts'\nimport { toCmcdHeaders } from './toCmcdHeaders.ts'\n\n/**\n * Append CMCD query args to a header object.\n *\n * @param headers - The headers to append to.\n * @param cmcd - The CMCD object to append.\n * @param options - Encode options.\n *\n * @returns The headers with the CMCD header shards appended.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/appendCmcdHeaders.test.ts#example}\n */\nexport function appendCmcdHeaders(headers: Record<string, string>, cmcd: Cmcd, options?: CmcdEncodeOptions): Record<string, string> {\n\treturn Object.assign(headers, toCmcdHeaders(cmcd, options))\n}\n","/**\n * CMCD parameter name.\n *\n * @public\n */\nexport const CMCD_PARAM = 'CMCD'\n","import { encodeSfDict } from '@svta/cml-structured-field-values'\nimport type { Cmcd } from './Cmcd.ts'\nimport type { CmcdEncodeOptions } from './CmcdEncodeOptions.ts'\nimport { prepareCmcdData } from './prepareCmcdData.ts'\n\n/**\n * Encode a CMCD object to a string.\n *\n * @param cmcd - The CMCD object to encode.\n * @param options - Options for encoding.\n *\n * @returns The encoded CMCD string.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/encodeCmcd.test.ts#example}\n */\nexport function encodeCmcd(cmcd: Cmcd, options: CmcdEncodeOptions = {}): string {\n\tif (!cmcd) {\n\t\treturn ''\n\t}\n\n\treturn encodeSfDict(prepareCmcdData(cmcd, options), { whitespace: false })\n}\n","import type { Cmcd } from './Cmcd.ts'\nimport type { CmcdEncodeOptions } from './CmcdEncodeOptions.ts'\nimport { encodeCmcd } from './encodeCmcd.ts'\n\n/**\n * Convert a CMCD data object to a URL encoded string.\n *\n * @param cmcd - The CMCD object to convert.\n * @param options - Options for encoding the CMCD object.\n *\n * @returns The URL encoded CMCD data.\n *\n * @public\n */\nexport function toCmcdUrl(cmcd: Cmcd, options: CmcdEncodeOptions = {}): string {\n\tif (!cmcd) {\n\t\treturn ''\n\t}\n\n\tconst params = encodeCmcd(cmcd, options)\n\n\treturn encodeURIComponent(params)\n}\n","import { CMCD_PARAM } from './CMCD_PARAM.ts'\nimport type { Cmcd } from './Cmcd.ts'\nimport type { CmcdEncodeOptions } from './CmcdEncodeOptions.ts'\nimport { toCmcdUrl } from './toCmcdUrl.ts'\n\n/**\n * Convert a CMCD data object to a query arg.\n *\n * @param cmcd - The CMCD object to convert.\n * @param options - Options for encoding the CMCD object.\n *\n * @returns The CMCD query arg.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/toCmcdQuery.test.ts#example}\n */\nexport function toCmcdQuery(cmcd: Cmcd, options: CmcdEncodeOptions = {}): string {\n\tif (!cmcd) {\n\t\treturn ''\n\t}\n\n\tconst value = toCmcdUrl(cmcd, options)\n\n\treturn `${CMCD_PARAM}=${value}`\n}\n","import type { Cmcd } from './Cmcd.ts'\nimport type { CmcdEncodeOptions } from './CmcdEncodeOptions.ts'\nimport { toCmcdQuery } from './toCmcdQuery.ts'\n\nconst REGEX = /CMCD=[^&#]+/\n\n/**\n * Append CMCD query args to a URL.\n *\n * @param url - The URL to append to.\n * @param cmcd - The CMCD object to append.\n * @param options - Options for encoding the CMCD object.\n *\n * @returns The URL with the CMCD query args appended.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/appendCmcdQuery.test.ts#example}\n */\nexport function appendCmcdQuery(url: string, cmcd: Cmcd, options?: CmcdEncodeOptions): string {\n\t// TODO: Replace with URLSearchParams once we drop Safari < 10.1 & Chrome < 49 support.\n\t// https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams\n\n\tconst query = toCmcdQuery(cmcd, options)\n\tif (!query) {\n\t\treturn url\n\t}\n\n\tif (REGEX.test(url)) {\n\t\treturn url.replace(REGEX, query)\n\t}\n\n\tconst separator = url.includes('?') ? '&' : '?'\n\treturn `${url}${separator}${query}`\n}\n","/**\n * The default time interval in seconds when using using event mode\n *\n * @public\n */\nexport const CMCD_DEFAULT_TIME_INTERVAL = 30\n","import { CMCD_EVENT_KEYS } from './CMCD_EVENT_KEYS.ts'\nimport { CMCD_REQUEST_KEYS } from './CMCD_REQUEST_KEYS.ts'\nimport { CMCD_RESPONSE_KEYS } from './CMCD_RESPONSE_KEYS.ts'\nimport { CMCD_V1_KEYS } from './CMCD_V1_KEYS.ts'\nimport type { CmcdKey } from './CmcdKey.ts'\n\nconst keySet = new Set([\n\t...CMCD_V1_KEYS,\n\t...CMCD_REQUEST_KEYS,\n\t...CMCD_RESPONSE_KEYS,\n\t...CMCD_EVENT_KEYS,\n])\n\n/**\n * A list of all CMCD keys.\n *\n * @public\n */\nexport const CMCD_KEYS: CmcdKey[] = Array.from(keySet)\n","/**\n * CMCD Version 1\n *\n * @public\n */\nexport const CMCD_V1 = 1 as const\n","import type { ValueOf } from '@svta/cml-utils'\n\n/**\n * CMCD event type for the 'br' key (bitrate change).\n *\n * @public\n */\nexport const CMCD_EVENT_BITRATE_CHANGE = 'br' as const\n\n/**\n * CMCD event type for the 'ps' key (play state change).\n *\n * @public\n */\nexport const CMCD_EVENT_PLAY_STATE = 'ps' as const\n\n/**\n * CMCD event type for the 'e' key (error).\n *\n * @public\n */\nexport const CMCD_EVENT_ERROR = 'e' as const\n\n/**\n * CMCD event type for the 't' key (time interval).\n *\n * @public\n */\nexport const CMCD_EVENT_TIME_INTERVAL = 't' as const\n\n/**\n * CMCD event type for the 'c' key (content ID).\n *\n * @public\n */\nexport const CMCD_EVENT_CONTENT_ID = 'c' as const\n\n/**\n * CMCD event type for the 'b' key (backgrounded mode).\n *\n * @public\n */\nexport const CMCD_EVENT_BACKGROUNDED_MODE = 'b' as const\n\n/**\n * CMCD event type for the 'm' key (mute).\n *\n * @public\n */\nexport const CMCD_EVENT_MUTE = 'm' as const\n\n/**\n * CMCD event type for the 'um' key (unmute).\n *\n * @public\n */\nexport const CMCD_EVENT_UNMUTE = 'um' as const\n\n/**\n * CMCD event type for the 'pe' key (player expand).\n *\n * @public\n */\nexport const CMCD_EVENT_PLAYER_EXPAND = 'pe' as const\n\n/**\n * CMCD event type for the 'pc' key (player collapse).\n *\n * @public\n */\nexport const CMCD_EVENT_PLAYER_COLLAPSE = 'pc' as const\n\n/**\n * CMCD event type for the 'rr' key (response received).\n *\n * @public\n */\nexport const CMCD_EVENT_RESPONSE_RECEIVED = 'rr' as const\n\n/**\n * CMCD event type for the 'as' key (ad start).\n *\n * @public\n */\nexport const CMCD_EVENT_AD_START = 'as' as const\n\n/**\n * CMCD event type for the 'ae' key (ad end).\n *\n * @public\n */\nexport const CMCD_EVENT_AD_END = 'ae' as const\n\n/**\n * CMCD event type for the 'abs' key (ad break start).\n *\n * @public\n */\nexport const CMCD_EVENT_AD_BREAK_START = 'abs' as const\n\n/**\n * CMCD event type for the 'abe' key (ad break end).\n *\n * @public\n */\nexport const CMCD_EVENT_AD_BREAK_END = 'abe' as const\n\n/**\n * CMCD event type for the 'sk' key (skip).\n *\n * @public\n */\nexport const CMCD_EVENT_SKIP = 'sk' as const\n\n/**\n * CMCD event type for the 'ce' key (custom event).\n *\n * @public\n */\nexport const CMCD_EVENT_CUSTOM_EVENT = 'ce' as const\n\n/**\n * CMCD event types for the 'e' key (event mode).\n *\n *\n * @enum\n *\n * @public\n */\nexport const CmcdEventType = {\n\t/**\n\t * A change in the bitrate.\n\t */\n\tBITRATE_CHANGE: CMCD_EVENT_BITRATE_CHANGE as typeof CMCD_EVENT_BITRATE_CHANGE,\n\n\t/**\n\t * A change in the player state.\n\t */\n\tPLAY_STATE: CMCD_EVENT_PLAY_STATE as typeof CMCD_EVENT_PLAY_STATE,\n\n\t/**\n\t * An error event.\n\t */\n\tERROR: CMCD_EVENT_ERROR as typeof CMCD_EVENT_ERROR,\n\n\t/**\n\t * A periodic report sent on a time interval.\n\t */\n\tTIME_INTERVAL: CMCD_EVENT_TIME_INTERVAL as typeof CMCD_EVENT_TIME_INTERVAL,\n\n\t/**\n\t * A change of the content ID.\n\t */\n\tCONTENT_ID: CMCD_EVENT_CONTENT_ID as typeof CMCD_EVENT_CONTENT_ID,\n\n\t/**\n\t * A change in the application's backgrounded state.\n\t */\n\tBACKGROUNDED_MODE: CMCD_EVENT_BACKGROUNDED_MODE as typeof CMCD_EVENT_BACKGROUNDED_MODE,\n\n\t/**\n\t * The player was muted.\n\t */\n\tMUTE: CMCD_EVENT_MUTE as typeof CMCD_EVENT_MUTE,\n\n\t/**\n\t * Player unmuted.\n\t */\n\tUNMUTE: CMCD_EVENT_UNMUTE as typeof CMCD_EVENT_UNMUTE,\n\n\t/**\n\t * The player view was expanded.\n\t */\n\tPLAYER_EXPAND: CMCD_EVENT_PLAYER_EXPAND as typeof CMCD_EVENT_PLAYER_EXPAND,\n\n\t/**\n\t * The player view was collapsed.\n\t */\n\tPLAYER_COLLAPSE: CMCD_EVENT_PLAYER_COLLAPSE as typeof CMCD_EVENT_PLAYER_COLLAPSE,\n\n\t/**\n\t * The receipt of a response.\n\t */\n\tRESPONSE_RECEIVED: CMCD_EVENT_RESPONSE_RECEIVED as typeof CMCD_EVENT_RESPONSE_RECEIVED,\n\n\t/**\n\t * The start of an ad.\n\t */\n\tAD_START: CMCD_EVENT_AD_START as typeof CMCD_EVENT_AD_START,\n\n\t/**\n\t * The end of an ad.\n\t */\n\tAD_END: CMCD_EVENT_AD_END as typeof CMCD_EVENT_AD_END,\n\n\t/**\n\t * The start of an ad break.\n\t */\n\tAD_BREAK_START: CMCD_EVENT_AD_BREAK_START as typeof CMCD_EVENT_AD_BREAK_START,\n\n\t/**\n\t * The end of an ad break.\n\t */\n\tAD_BREAK_END: CMCD_EVENT_AD_BREAK_END as typeof CMCD_EVENT_AD_BREAK_END,\n\n\t/**\n\t * The user skipped an ad.\n\t */\n\tSKIP: CMCD_EVENT_SKIP as typeof CMCD_EVENT_SKIP,\n\n\t/**\n\t * A custom event.\n\t */\n\tCUSTOM_EVENT: CMCD_EVENT_CUSTOM_EVENT as typeof CMCD_EVENT_CUSTOM_EVENT,\n} as const\n\n/**\n * @public\n */\nexport type CmcdEventType = ValueOf<typeof CmcdEventType>;\n","import type { ValueOf } from '@svta/cml-utils'\n\n/**\n * Common Media Client Data Object Type\n *\n * @public\n *\n * @enum\n */\nexport const CmcdObjectType = {\n\t/**\n\t * text file, such as a manifest or playlist\n\t */\n\tMANIFEST: 'm',\n\n\t/**\n\t * audio only\n\t */\n\tAUDIO: 'a',\n\n\t/**\n\t * video only\n\t */\n\tVIDEO: 'v',\n\n\t/**\n\t * muxed audio and video\n\t */\n\tMUXED: 'av',\n\n\t/**\n\t * init segment\n\t */\n\tINIT: 'i',\n\n\t/**\n\t * caption or subtitle\n\t */\n\tCAPTION: 'c',\n\n\t/**\n\t * ISOBMFF timed text track\n\t */\n\tTIMED_TEXT: 'tt',\n\n\t/**\n\t * cryptographic key, license or certificate.\n\t */\n\tKEY: 'k',\n\n\t/**\n\t * other\n\t */\n\tOTHER: 'o',\n} as const\n\n/**\n * @public\n */\nexport type CmcdObjectType = ValueOf<typeof CmcdObjectType>;\n","import type { ValueOf } from '@svta/cml-utils'\n\n/**\n * CMCD v2 player states for the 'sta' key.\n *\n *\n * @enum\n *\n * @public\n */\nexport const CmcdPlayerState = {\n\t/**\n\t * Starting: Initial startup of the player.\n\t */\n\tSTARTING: 's',\n\n\t/**\n\t * Playing: The player is actively rendering content.\n\t */\n\tPLAYING: 'p',\n\n\t/**\n\t * Seeking: The player is seeking to a new position.\n\t */\n\tSEEKING: 'k',\n\n\t/**\n\t * Rebuffering: The player is buffering data during playback.\n\t */\n\tREBUFFERING: 'r',\n\n\t/**\n\t * Paused: The player is paused.\n\t */\n\tPAUSED: 'a',\n\n\t/**\n\t * Waiting: The player is waiting for a user action or another event.\n\t */\n\tWAITING: 'w',\n\n\t/**\n\t * Ended: The media has finished playing.\n\t */\n\tENDED: 'e',\n\n\t/**\n\t * Fatal Error: The player has encountered a fatal error.\n\t */\n\tFATAL_ERROR: 'f',\n\n\t/**\n\t * Quit: User initiated end of playback before media asset completion.\n\t */\n\tQUIT: 'q',\n\n\t/**\n\t * Preloading: The player is loading assets ahead of starting in order to provide a fast startup. The expectation is that playback will commence at a future time.\n\t */\n\tPRELOADING: 'd',\n} as const\n\n/**\n * @public\n */\nexport type CmcdPlayerState = ValueOf<typeof CmcdPlayerState>;\n","import type { ValueOf } from '@svta/cml-utils'\n\n/**\n * CMCD `query` transmission mode.\n *\n * @public\n */\nexport const CMCD_QUERY = 'query' as const\n\n/**\n * CMCD `headers` transmission mode.\n *\n * @public\n */\nexport const CMCD_HEADERS = 'headers' as const\n\n/**\n * CMCD `json` transmission mode.\n *\n * @public\n *\n * @deprecated JSON transmission mode is deprecated and will be removed in future versions.\n */\nexport const CMCD_JSON = 'json' as const\n\n/**\n * CMCD transmission modes.\n *\n * @enum\n *\n * @public\n */\nexport const CmcdTransmissionMode = {\n\t/**\n\t * JSON\n\t *\n\t * @deprecated JSON transmission mode is deprecated and will be removed in future versions.\n\t */\n\tJSON: CMCD_JSON as typeof CMCD_JSON,\n\n\t/**\n\t * Query string\n\t */\n\tQUERY: CMCD_QUERY as typeof CMCD_QUERY,\n\n\t/**\n\t * Request headers\n\t */\n\tHEADERS: CMCD_HEADERS as typeof CMCD_HEADERS,\n\n} as const\n\n/**\n * @public\n */\nexport type CmcdTransmissionMode = ValueOf<typeof CmcdTransmissionMode>;\n","import type { Request } from '@svta/cml-utils'\nimport { uuid } from '@svta/cml-utils'\nimport { CMCD_DEFAULT_TIME_INTERVAL } from './CMCD_DEFAULT_TIME_INTERVAL.ts'\nimport { CMCD_PARAM } from './CMCD_PARAM.ts'\nimport { CMCD_V2 } from './CMCD_V2.ts'\nimport type { Cmcd } from './Cmcd.ts'\nimport type { CmcdEncodeOptions } from './CmcdEncodeOptions.ts'\nimport type { CmcdEventReportConfig } from './CmcdEventReportConfig.ts'\nimport { CMCD_EVENT_TIME_INTERVAL, CmcdEventType } from './CmcdEventType.ts'\nimport type { CmcdKey } from './CmcdKey.ts'\nimport type { CmcdReportConfig } from './CmcdReportConfig.ts'\nimport type { CmcdReporterConfig } from './CmcdReporterConfig.ts'\nimport type { CmcdReportingMode } from './CmcdReportingMode.ts'\nimport { CMCD_EVENT_MODE, CMCD_REQUEST_MODE } from './CmcdReportingMode.ts'\nimport { CMCD_HEADERS, CMCD_QUERY } from './CmcdTransmissionMode.ts'\nimport type { CmcdVersion } from './CmcdVersion.ts'\nimport { encodeCmcd } from './encodeCmcd.ts'\nimport { toCmcdHeaders } from './toCmcdHeaders.ts'\n\ntype CmcdReportConfigNormalized = CmcdReportConfig & {\n\tversion: CmcdVersion;\n}\n\ntype CmcdEventReportConfigNormalized = CmcdEventReportConfig & CmcdReportConfigNormalized & {\n\tevents: CmcdEventType[];\n\tinterval: number;\n\tbatchSize: number;\n}\n\ntype CmcdReporterConfigNormalized = CmcdReporterConfig & CmcdReportConfigNormalized & {\n\tsid: string;\n\teventTargets: CmcdEventReportConfigNormalized[];\n}\n\nfunction createEncodingOptions(reportingMode: CmcdReportingMode, config: CmcdReportConfig): CmcdEncodeOptions {\n\tconst { enabledKeys = [] } = config\n\n\treturn {\n\t\tversion: config.version || CMCD_V2,\n\t\treportingMode,\n\t\tfilter: (key: CmcdKey) => enabledKeys.includes(key),\n\t}\n}\n\nfunction defaultRequester(request: Request): Promise<{ status: number; }> {\n\tconst { url, ...init } = request\n\treturn fetch(url, init)\n}\n\nfunction createCmcdReporterConfig(config: Partial<CmcdReporterConfig>): CmcdReporterConfigNormalized {\n\t// Apply top-level config defaults\n\tconst {\n\t\tversion = CMCD_V2,\n\t\teventTargets = [],\n\t\tsid = uuid(),\n\t\ttransmissionMode = CMCD_QUERY,\n\t\t...rest\n\t} = config\n\n\treturn {\n\t\t...rest,\n\t\tversion,\n\t\ttransmissionMode,\n\t\tsid,\n\t\t// Apply target config defaults\n\t\teventTargets: eventTargets.reduce((acc, target) => {\n\t\t\tif (target?.url && target.events?.length) {\n\t\t\t\tacc.push({\n\t\t\t\t\tversion: target.version || CMCD_V2,\n\t\t\t\t\tenabledKeys: target.enabledKeys?.slice() || [],\n\t\t\t\t\turl: target.url,\n\t\t\t\t\tevents: target.events.slice(),\n\t\t\t\t\tinterval: target.interval ?? CMCD_DEFAULT_TIME_INTERVAL,\n\t\t\t\t\tbatchSize: target.batchSize || 1,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn acc\n\t\t}, [] as CmcdEventReportConfigNormalized[]),\n\t}\n}\n\ntype CmcdTarget = {\n\tsn: number;\n\tmsdSent: boolean;\n}\n\ntype CmcdEventTarget = CmcdTarget & {\n\tintervalId: ReturnType<typeof setInterval> | undefined;\n\tqueue: Cmcd[];\n}\n\n/**\n * The CMCD reporter.\n *\n * @public\n */\nexport class CmcdReporter {\n\tprivate data: Cmcd = {}\n\tprivate config: CmcdReporterConfigNormalized\n\tprivate requestEncodingOptions: CmcdEncodeOptions\n\tprivate msd: number = NaN\n\tprivate eventTargets = new Map<CmcdEventReportConfigNormalized, CmcdEventTarget>()\n\tprivate requestTarget: CmcdTarget = {\n\t\tsn: 0,\n\t\tmsdSent: false,\n\t}\n\n\t// TODO: Should this be an event handler?\n\tprivate requester: (request: Request) => Promise<{ status: number; }>\n\n\t/**\n\t * Creates a new CMCD reporter.\n\t *\n\t * @param config - The configuration for the CMCD reporter.\n\t * @param requester - The function to use to send the request.\n\t * The default is a simple wrapper around the\n\t * native `fetch` API.\n\t */\n\tconstructor(config: Partial<CmcdReporterConfig>, requester: (request: Request) => Promise<{ status: number; }> = defaultRequester) {\n\t\tthis.config = createCmcdReporterConfig(config)\n\t\tthis.data = {\n\t\t\tcid: this.config.cid,\n\t\t\tsid: this.config.sid,\n\t\t\tv: this.config.version,\n\t\t}\n\t\tthis.requestEncodingOptions = createEncodingOptions(CMCD_REQUEST_MODE, this.config)\n\t\tthis.requester = requester\n\n\t\tfor (const target of this.config.eventTargets) {\n\t\t\tthis.eventTargets.set(target, {\n\t\t\t\tintervalId: undefined,\n\t\t\t\tsn: 0,\n\t\t\t\tmsdSent: false,\n\t\t\t\tqueue: [],\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Starts the CMCD reporter. Called by the player when the reporter is enabled.\n\t */\n\tstart(): void {\n\t\tthis.eventTargets.forEach((target, config) => {\n\t\t\t// If the interval is 0 or the TIME_INTERVAL event is not enabled, do not start the interval.\n\t\t\tif (config.interval === 0 || !config.events.includes(CmcdEventType.TIME_INTERVAL)) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst timeIntervalEvent = () => {\n\t\t\t\tthis.recordEvent(CMCD_EVENT_TIME_INTERVAL)\n\t\t\t}\n\n\t\t\ttarget.intervalId = setInterval(timeIntervalEvent, config.interval * 1000)\n\t\t\ttimeIntervalEvent()\n\t\t})\n\t}\n\n\t/**\n\t * Stops the CMCD reporter. Called by the player when the reporter is disabled.\n\t */\n\tstop(): void {\n\t\tthis.eventTargets.forEach((target) => {\n\t\t\tclearInterval(target.intervalId)\n\t\t})\n\t}\n\n\t/**\n\t * Forces the sending of all event reports, regardless of the batch size or interval.\n\t * Useful for sending outstanding reports when the player is destroyed or a playback\n\t * session ends.\n\t */\n\tflush(): void {\n\t\tthis.processEventTargets(true)\n\t}\n\n\t/**\n\t * Updates the CMCD data. Called by the player when the data changes.\n\t *\n\t * @param data - The data to update.\n\t */\n\tupdate(data: Partial<Cmcd>): void {\n\t\tif (data.sid && data.sid !== this.data.sid) {\n\t\t\tthis.resetSession()\n\t\t\treturn\n\t\t}\n\n\t\tif (data.msd && !isNaN(data.msd)) {\n\t\t\tthis.msd = data.msd\n\t\t}\n\n\t\tthis.data = { ...this.data, ...data, msd: undefined }\n\t}\n\n\t/**\n\t * Records an event. Called by the player when an event occurs.\n\t *\n\t * @param type - The type of event to record.\n\t * @param data - Additional data to record with the event. This is\n\t * the same as calling `update()` with the same data.\n\t */\n\trecordEvent(type: CmcdEventType, data?: Partial<Cmcd>): void {\n\t\tconst { cen, ...rest } = data || {}\n\n\t\tif (rest) {\n\t\t\tthis.update(rest)\n\t\t}\n\n\t\tthis.eventTargets.forEach((target, config) => {\n\t\t\tif (!config.events.includes(type)) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst item = {\n\t\t\t\t...this.data,\n\t\t\t\te: type,\n\t\t\t\tts: Date.now(),\n\t\t\t\tsn: target.sn++,\n\t\t\t}\n\n\t\t\tif (type === CmcdEventType.CUSTOM_EVENT && cen) {\n\t\t\t\titem.cen = cen\n\t\t\t}\n\n\t\t\tif (!isNaN(this.msd) && !target.msdSent) {\n\t\t\t\titem.msd = this.msd\n\t\t\t\ttarget.msdSent = true\n\t\t\t}\n\n\t\t\ttarget.queue.push(item)\n\t\t})\n\n\t\tthis.processEventTargets()\n\t}\n\n\t/**\n\t * Applies the CMCD request report data to the request. Called by the player\n\t * before sending the request.\n\t *\n\t * @param req - The request to apply the CMCD request report to.\n\t * @returns The request with the CMCD request report applied.\n\t */\n\tapplyRequestReport(req: Request): Request {\n\t\tif (!req || !req.url || !this.config.enabledKeys?.length) {\n\t\t\treturn req\n\t\t}\n\n\t\tconst url = new URL(req.url)\n\t\tconst headers = Object.assign({}, req.headers)\n\t\tconst data = { ...this.data, sn: this.requestTarget.sn++ }\n\n\t\tif (!isNaN(this.msd) && !this.requestTarget.msdSent) {\n\t\t\tdata.msd = this.msd\n\t\t\tthis.requestTarget.msdSent = true\n\t\t}\n\n\t\tswitch (this.config.transmissionMode) {\n\t\t\tcase CMCD_QUERY:\n\t\t\t\tconst param = encodeCmcd(data, this.requestEncodingOptions)\n\t\t\t\tif (param) {\n\t\t\t\t\turl.searchParams.set(CMCD_PARAM, param)\n\t\t\t\t}\n\t\t\t\tbreak\n\n\t\t\tcase CMCD_HEADERS:\n\t\t\t\tObject.assign(headers, toCmcdHeaders(data, this.requestEncodingOptions))\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn {\n\t\t\t...req,\n\t\t\turl: url.toString(),\n\t\t\theaders,\n\t\t}\n\t}\n\n\t/**\n\t * Processes the event targets. Called by the reporter when an event occurs.\n\t *\n\t * @param flush - Whether to flush the event targets.\n\t */\n\tprivate processEventTargets(flush: boolean = false): void {\n\t\tlet reprocess = false\n\n\t\tthis.eventTargets.forEach((target, config) => {\n\t\t\tconst { queue } = target\n\n\t\t\tif (!queue.length) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (queue.length < config.batchSize && !flush) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst deleteCount = flush ? queue.length : config.batchSize\n\t\t\tconst events = queue.splice(0, deleteCount)\n\t\t\tthis.sendEventReport(config, events)\n\n\t\t\treprocess ||= queue.length > 0\n\t\t})\n\n\t\tif (reprocess) {\n\t\t\tthis.processEventTargets()\n\t\t}\n\t}\n\n\t/**\n\t * Sends an event report. Called by the reporter when a batch is ready to be sent.\n\t *\n\t * @param target - The target to send the event report to.\n\t * @param data - The data to send in the event report.\n\t */\n\tprivate async sendEventReport(target: CmcdEventReportConfigNormalized, data: Cmcd[]): Promise<void> {\n\t\tconst options = createEncodingOptions(CMCD_EVENT_MODE, target)\n\t\tconst response = await this.requester({\n\t\t\turl: target.url,\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'text/cmcd',\n\t\t\t},\n\t\t\tbody: data.reduce((acc, item) => acc += `${encodeCmcd(item, options)}\\n`, ''),\n\t\t})\n\n\t\tconst { status } = response\n\t\tswitch (status) {\n\t\t\tcase 410:\n\t\t\t\tthis.eventTargets.delete(target)\n\t\t\t\tbreak\n\n\t\t\tcase 429:\n\t\t\t\t// Needs clarification\n\t\t\t\tbreak\n\n\t\t\tdefault:\n\t\t\t\tif (status > 499 && status < 600) {\n\t\t\t\t\t// retry logic\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t/**\n\t * Resets the session related data. Called when the session ID changes.\n\t */\n\tprivate resetSession(): void {\n\t\tthis.eventTargets.forEach(target => target.sn = 0)\n\t\tthis.requestTarget.sn = 0\n\t}\n}\n","import type { ValueOf } from '@svta/cml-utils'\n\n/**\n * Common Media Client Data Streaming Format\n *\n *\n * @enum\n *\n * @public\n */\nexport const CmcdStreamingFormat = {\n\t/**\n\t * MPEG DASH\n\t */\n\tDASH: 'd',\n\n\t/**\n\t * HTTP Live Streaming (HLS)\n\t */\n\tHLS: 'h',\n\n\t/**\n\t * Smooth Streaming\n\t */\n\tSMOOTH: 's',\n\n\t/**\n\t * Other\n\t */\n\tOTHER: 'o',\n} as const\n\n/**\n * @public\n */\nexport type CmcdStreamingFormat = ValueOf<typeof CmcdStreamingFormat>;\n","import type { ValueOf } from '@svta/cml-utils'\n\n/**\n * Common Media Client Data Stream Type\n *\n *\n * @enum\n *\n * @public\n */\nexport const CmcdStreamType = {\n\t/**\n\t * All segments are available – e.g., VOD\n\t */\n\tVOD: 'v',\n\n\t/**\n\t * Segments become available over time – e.g., LIVE\n\t */\n\tLIVE: 'l',\n\n\t/**\n\t * Low latency stream\n\t */\n\tLOW_LATENCY: 'll',\n} as const\n\n/**\n * @public\n */\nexport type CmcdStreamType = ValueOf<typeof CmcdStreamType>;\n","import type { SfBareItem } from '@svta/cml-structured-field-values'\nimport { decodeSfDict, SfItem, symbolToStr } from '@svta/cml-structured-field-values'\nimport type { Cmcd } from './Cmcd.ts'\nimport type { CmcdValue } from './CmcdValue.ts'\n\n// Define the input type for reduceValue\ntype ReduceValueInput = SfBareItem | SfItem | ReduceValueInput[];\n\n// Define the output type for reduceValue - matches what CMCD values can be, including arrays\ntype ReduceValueOutput = CmcdValue | ReduceValueOutput[];\n\nfunction reduceValue(value: ReduceValueInput): ReduceValueOutput {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(reduceValue)\n\t}\n\n\tif (typeof value === 'symbol') {\n\t\treturn symbolToStr(value)\n\t}\n\n\tif (value instanceof SfItem && !value.params) {\n\t\treturn reduceValue(value.value)\n\t}\n\n\tif (typeof value === 'string') {\n\t\treturn decodeURIComponent(value)\n\t}\n\n\treturn value as ReduceValueOutput\n};\n\n/**\n * Decode a CMCD string to an object.\n *\n * @param cmcd - The CMCD string to decode.\n *\n * @returns The decoded CMCD object.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/decodeCmcd.test.ts#example}\n */\nexport function decodeCmcd<T extends Cmcd = Cmcd>(cmcd: string): T {\n\tif (!cmcd) {\n\t\treturn {} as T\n\t}\n\n\tconst sfDict = decodeSfDict(cmcd)\n\n\treturn Object\n\t\t.entries<SfItem>(sfDict as any)\n\t\t.reduce((acc, [key, item]) => {\n\t\t\tacc[key as keyof T] = reduceValue(item.value) as T[keyof T]\n\t\t\treturn acc\n\t\t}, {} as T)\n}\n","import type { Cmcd } from './Cmcd.ts'\nimport { CMCD_OBJECT, CMCD_REQUEST, CMCD_SESSION, CMCD_STATUS } from './CmcdHeaderField.ts'\nimport { decodeCmcd } from './decodeCmcd.ts'\n\nconst keys = [CMCD_OBJECT, CMCD_REQUEST, CMCD_SESSION, CMCD_STATUS]\n\n/**\n * Decode CMCD data from request headers.\n *\n * @param headers - The request headers to decode.\n *\n * @returns The decoded CMCD data.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/fromCmcdHeaders.test.ts#example}\n */\nexport function fromCmcdHeaders(headers: Record<string, string> | Headers): Cmcd {\n\tif (!(headers instanceof Headers)) {\n\t\theaders = new Headers(headers)\n\t}\n\n\treturn keys.reduce((acc, key) => {\n\t\tconst value = headers.get(key)\n\t\treturn Object.assign(acc, decodeCmcd(value as string))\n\t}, {} as Cmcd)\n}\n","import type { Cmcd } from './Cmcd.ts'\nimport { CMCD_PARAM } from './CMCD_PARAM.ts'\nimport { decodeCmcd } from './decodeCmcd.ts'\n\n/**\n * Decode CMCD data from a query string.\n *\n * @param query - The query string to decode.\n *\n * @returns The decoded CMCD data.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/fromCmcdQuery.test.ts#example}\n */\nexport function fromCmcdQuery(query: string | URLSearchParams): Cmcd {\n\tif (typeof query === 'string') {\n\t\tquery = new URLSearchParams(query)\n\t}\n\n\tconst value = query.get(CMCD_PARAM)\n\n\treturn decodeCmcd(value as string)\n}\n","import type { Cmcd } from './Cmcd.ts'\nimport { decodeCmcd } from './decodeCmcd.ts'\n\n/**\n * Decode CMCD data from a url encoded string.\n *\n * @param url - The url encoded string to decode.\n *\n * @returns The decoded CMCD data.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/fromCmcdUrl.test.ts#example}\n */\nexport function fromCmcdUrl(url: string): Cmcd {\n\treturn decodeCmcd(decodeURIComponent(url.replace(/^CMCD=/, '')))\n}\n","import { type SfBareItem, SfItem } from '@svta/cml-structured-field-values'\n\n/**\n * Convert a value to a CMCD value.\n *\n * @param value - The value to convert to a CMCD value.\n * @param params - The parameters to convert to a CMCD value.\n * @returns The CMCD value.\n *\n * @public\n */\nexport function toCmcdValue<V extends SfBareItem, P>(value: V, params?: P): SfItem<V, P> {\n\treturn new SfItem(value, params)\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["CMCD_HEADER_MAP: Record<CmcdRequestKey | 'nrr', CmcdHeaderField>","keys","custom: Partial<Record<CmcdHeaderKey, CmcdHeaderField>>","CMCD_FORMATTER_MAP: Record<string, CmcdFormatter>","filterMap: Record<string, (key: string) => boolean>","item: any","item","result: Record<string, any>","results: Cmcd","keys","formatterOptions: CmcdFormatterOptions","CMCD_KEYS: CmcdKey[]"],"sources":["../src/CmcdHeaderField.ts","../src/CMCD_HEADER_MAP.ts","../src/groupCmcdHeaders.ts","../src/CMCD_FORMATTER_MAP.ts","../src/CMCD_V2.ts","../src/CmcdReportingMode.ts","../src/CMCD_EVENT_KEYS.ts","../src/CMCD_REQUEST_KEYS.ts","../src/isCmcdCustomKey.ts","../src/isCmcdRequestKey.ts","../src/CMCD_RESPONSE_KEYS.ts","../src/isCmcdResponseReceivedKey.ts","../src/isCmcdEventKey.ts","../src/CMCD_V1_KEYS.ts","../src/isCmcdV1Key.ts","../src/isTokenField.ts","../src/isValid.ts","../src/prepareCmcdData.ts","../src/toCmcdHeaders.ts","../src/appendCmcdHeaders.ts","../src/CMCD_PARAM.ts","../src/encodeCmcd.ts","../src/toCmcdUrl.ts","../src/toCmcdQuery.ts","../src/appendCmcdQuery.ts","../src/CMCD_DEFAULT_TIME_INTERVAL.ts","../src/CMCD_KEYS.ts","../src/CMCD_V1.ts","../src/CmcdEventType.ts","../src/CmcdObjectType.ts","../src/CmcdPlayerState.ts","../src/CmcdTransmissionMode.ts","../src/CmcdReporter.ts","../src/CmcdStreamingFormat.ts","../src/CmcdStreamType.ts","../src/decodeCmcd.ts","../src/fromCmcdHeaders.ts","../src/fromCmcdQuery.ts","../src/fromCmcdUrl.ts","../src/toCmcdValue.ts"],"sourcesContent":["import type { ValueOf } from '@svta/cml-utils'\n\n/**\n * CMCD object header name.\n *\n * @public\n */\nexport const CMCD_OBJECT = 'CMCD-Object' as const\n\n/**\n * CMCD request header name.\n *\n * @public\n */\nexport const CMCD_REQUEST = 'CMCD-Request' as const\n\n/**\n * CMCD session header name.\n *\n * @public\n */\nexport const CMCD_SESSION = 'CMCD-Session' as const\n\n/**\n * CMCD status header name.\n *\n * @public\n */\nexport const CMCD_STATUS = 'CMCD-Status' as const\n\n/**\n * CMCD header fields.\n *\n *\n * @enum\n *\n * @public\n */\nexport const CmcdHeaderField = {\n\t/**\n\t * keys whose values vary with the object being requested.\n\t */\n\tOBJECT: CMCD_OBJECT as typeof CMCD_OBJECT,\n\n\t/**\n\t * keys whose values vary with each request.\n\t */\n\tREQUEST: CMCD_REQUEST as typeof CMCD_REQUEST,\n\n\t/**\n\t * keys whose values are expected to be invariant over the life of the session.\n\t */\n\tSESSION: CMCD_SESSION as typeof CMCD_SESSION,\n\n\t/**\n\t * keys whose values do not vary with every request or object.\n\t */\n\tSTATUS: CMCD_STATUS as typeof CMCD_STATUS,\n} as const\n\n/**\n * @public\n */\nexport type CmcdHeaderField = ValueOf<typeof CmcdHeaderField>;\n","import { type CmcdHeaderField, CMCD_OBJECT, CMCD_REQUEST, CMCD_SESSION, CMCD_STATUS } from './CmcdHeaderField.ts'\nimport type { CmcdRequestKey } from './CmcdRequestKey.ts'\n\n/**\n * The map of CMCD keys to their appropriate header shard.\n *\n * @public\n */\nexport const CMCD_HEADER_MAP: Record<CmcdRequestKey | 'nrr', CmcdHeaderField> = {\n\t// Object\n\tab: CMCD_OBJECT,\n\tbr: CMCD_OBJECT,\n\td: CMCD_OBJECT,\n\tlab: CMCD_OBJECT,\n\tlb: CMCD_OBJECT,\n\tot: CMCD_OBJECT,\n\ttab: CMCD_OBJECT,\n\ttb: CMCD_OBJECT,\n\ttpb: CMCD_OBJECT,\n\n\t// Request\n\tbl: CMCD_REQUEST,\n\tcs: CMCD_REQUEST,\n\tdfa: CMCD_REQUEST,\n\tdl: CMCD_REQUEST,\n\tltc: CMCD_REQUEST,\n\tmtp: CMCD_REQUEST,\n\tnor: CMCD_REQUEST,\n\tnrr: CMCD_REQUEST,\n\tpb: CMCD_REQUEST,\n\tsn: CMCD_REQUEST,\n\tsta: CMCD_REQUEST,\n\tsu: CMCD_REQUEST,\n\ttbl: CMCD_REQUEST,\n\n\t// Session\n\tcid: CMCD_SESSION,\n\tmsd: CMCD_SESSION,\n\tsf: CMCD_SESSION,\n\tsid: CMCD_SESSION,\n\tst: CMCD_SESSION,\n\tv: CMCD_SESSION,\n\n\t// Status\n\tbg: CMCD_STATUS,\n\tbs: CMCD_STATUS,\n\tbsa: CMCD_STATUS,\n\tbsd: CMCD_STATUS,\n\tbsda: CMCD_STATUS,\n\tcdn: CMCD_STATUS,\n\tec: CMCD_STATUS,\n\tnr: CMCD_STATUS,\n\tpr: CMCD_STATUS,\n\tpt: CMCD_STATUS,\n\trtp: CMCD_STATUS,\n}\n","import type { Cmcd } from './Cmcd.ts'\nimport { CMCD_HEADER_MAP } from './CMCD_HEADER_MAP.ts'\nimport { CmcdHeaderField } from './CmcdHeaderField.ts'\nimport type { CmcdHeaderKey } from './CmcdHeaderKey.ts'\nimport type { CmcdHeaderMap } from './CmcdHeaderMap.ts'\nimport type { CmcdHeaderValue } from './CmcdHeaderValue.ts'\nimport type { CmcdKey } from './CmcdKey.ts'\n\nfunction createHeaderMap(headerMap: Partial<CmcdHeaderMap>): Record<CmcdHeaderKey, CmcdHeaderField> {\n\treturn Object.keys(headerMap)\n\t\t.reduce((acc, field) => {\n\t\t\theaderMap[field as CmcdHeaderField]?.forEach(key => acc[key] = field as CmcdHeaderField)\n\t\t\treturn acc\n\t\t}, {} as Record<CmcdKey, CmcdHeaderField>)\n}\n\n/**\n * Group a CMCD data object into header shards\n *\n * @param cmcd - The CMCD data object to convert.\n * @param customHeaderMap - A map of CMCD header fields to custom CMCD keys.\n *\n * @returns The CMCD header shards.\n *\n * @public\n */\nexport function groupCmcdHeaders(cmcd: Cmcd, customHeaderMap?: Partial<CmcdHeaderMap>): Record<CmcdHeaderField, CmcdHeaderValue> {\n\tconst result = {} as Record<CmcdHeaderField, CmcdHeaderValue>\n\n\tif (!cmcd) {\n\t\treturn result\n\t}\n\n\tconst keys = Object.keys(cmcd) as CmcdHeaderKey[]\n\tconst custom: Partial<Record<CmcdHeaderKey, CmcdHeaderField>> = customHeaderMap ? createHeaderMap(customHeaderMap) : {}\n\n\treturn keys.reduce((acc: Record<CmcdHeaderField, CmcdHeaderValue>, key: CmcdHeaderKey) => {\n\t\tconst field = CMCD_HEADER_MAP[key] || custom[key] || CmcdHeaderField.REQUEST\n\t\tconst data = acc[field] ??= {};\n\t\t(data as any)[key] = (cmcd as any)[key]\n\t\treturn acc\n\t}, result)\n}\n","import { SfItem } from '@svta/cml-structured-field-values'\nimport { urlToRelativePath, type ValueOrArray } from '@svta/cml-utils'\nimport type { CmcdFormatter } from './CmcdFormatter.ts'\nimport type { CmcdFormatterOptions } from './CmcdFormatterOptions.ts'\nimport type { CmcdValue } from './CmcdValue.ts'\n\nconst roundValue = (value: CmcdValue): number | SfItem<number> => {\n\tif (value instanceof SfItem) {\n\t\treturn new SfItem(Math.round(value.value as number), value.params)\n\t}\n\treturn Math.round(value as number)\n}\n\nconst toRounded = (value: CmcdValue) => {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(roundValue)\n\t}\n\treturn roundValue(value)\n}\n\nconst toUrlSafe = (value: CmcdValue, options: CmcdFormatterOptions): ValueOrArray<string | SfItem<string>> => {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(item => toUrlSafe(item, options) as string)\n\t}\n\n\tif (value instanceof SfItem && typeof value.value === 'string') {\n\t\treturn new SfItem(toUrlSafe(value.value, options), value.params)\n\t}\n\telse {\n\t\tif (options.baseUrl) {\n\t\t\tvalue = urlToRelativePath(value as string, options.baseUrl)\n\t\t}\n\t\treturn options.version === 1 ? encodeURIComponent(value as string) : (value as string)\n\t}\n}\n\nconst hundredValue = (value: CmcdValue): number | SfItem<number> => {\n\tif (value instanceof SfItem) {\n\t\treturn new SfItem(Math.round((value.value as number) / 100) * 100, value.params)\n\t}\n\treturn Math.round((value as number) / 100) * 100\n}\n\nconst toHundred = (value: CmcdValue) => {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(hundredValue)\n\t}\n\treturn hundredValue(value)\n}\n\nconst nor = (value: CmcdValue, options: CmcdFormatterOptions) => {\n\tlet norValue = value\n\n\tif (options.version >= 2) {\n\t\tif (value instanceof SfItem && typeof value.value === 'string') {\n\t\t\tnorValue = new SfItem([value])\n\t\t}\n\t\telse if (typeof value === 'string') {\n\t\t\tnorValue = [value]\n\t\t}\n\t}\n\n\treturn toUrlSafe(norValue, options)\n}\n\n/**\n * The default formatters for CMCD values.\n *\n * @public\n */\nexport const CMCD_FORMATTER_MAP: Record<string, CmcdFormatter> = {\n\t/**\n\t * Bitrate (kbps) rounded integer\n\t */\n\tbr: toRounded,\n\n\t/**\n\t * Duration (milliseconds) rounded integer\n\t */\n\td: toRounded,\n\n\t/**\n\t * Buffer Length (milliseconds) rounded nearest 100ms\n\t */\n\tbl: toHundred,\n\n\t/**\n\t * Deadline (milliseconds) rounded nearest 100ms\n\t */\n\tdl: toHundred,\n\n\t/**\n\t * Measured Throughput (kbps) rounded nearest 100kbps\n\t */\n\tmtp: toHundred,\n\n\t/**\n\t * Next Object Request URL encoded\n\t */\n\tnor,\n\n\t/**\n\t * Requested maximum throughput (kbps) rounded nearest 100kbps\n\t */\n\trtp: toHundred,\n\n\t/**\n\t * Top Bitrate (kbps) rounded integer\n\t */\n\ttb: toRounded,\n} as const\n","/**\n * CMCD Version 2\n *\n * @public\n */\nexport const CMCD_V2 = 2 as const\n","import type { ValueOf } from '@svta/cml-utils'\n\n/**\n * CMCD event mode variable name.\n *\n * @public\n */\nexport const CMCD_EVENT_MODE = 'event' as const\n\n/**\n * CMCD request mode variable name.\n *\n * @public\n */\nexport const CMCD_REQUEST_MODE = 'request' as const\n\n/**\n * CMCD reporting mode types.\n *\n * @enum\n *\n * @public\n */\nexport const CmcdReportingMode = {\n\t/**\n\t * Request mode\n\t */\n\tREQUEST: CMCD_REQUEST_MODE as typeof CMCD_REQUEST_MODE,\n\n\t/**\n\t * Event mode\n\t */\n\tEVENT: CMCD_EVENT_MODE as typeof CMCD_EVENT_MODE,\n} as const\n\n/**\n * @public\n */\nexport type CmcdReportingMode = ValueOf<typeof CmcdReportingMode>;\n","/**\n * Defines the event-specific keys for CMCD (Common Media Client Data) version 2.\n *\n * @public\n */\nexport const CMCD_EVENT_KEYS = [\n\t'cen',\n\t'e',\n\t'h',\n\t'ts',\n] as const\n","/**\n * Defines the request-specific keys for CMCD (Common Media Client Data) version 2.\n *\n * @public\n */\nexport const CMCD_REQUEST_KEYS = [\n\t'ab',\n\t'bg',\n\t'bl',\n\t'br',\n\t'bs',\n\t'bsa',\n\t'bsd',\n\t'bsda',\n\t'cdn',\n\t'cid',\n\t'cs',\n\t'd',\n\t'dfa',\n\t'dl',\n\t'ec',\n\t'lab',\n\t'lb',\n\t'ltc',\n\t'msd',\n\t'mtp',\n\t'nor',\n\t'nr',\n\t'ot',\n\t'pb',\n\t'pr',\n\t'pt',\n\t'rtp',\n\t'sf',\n\t'sid',\n\t'sn',\n\t'st',\n\t'sta',\n\t'su',\n\t'tab',\n\t'tb',\n\t'tbl',\n\t'tpb',\n\t'v',\n] as const\n","import type { CmcdKey } from './CmcdKey.ts'\n\nconst CUSTOM_KEY_REGEX = /^[a-zA-Z0-9-.]+-[a-zA-Z0-9-.]+$/\n\n/**\n * Check if a key is a custom key.\n *\n * @param key - The key to check.\n *\n * @returns `true` if the key is a custom key, `false` otherwise.\n *\n * @public\n */\nexport function isCmcdCustomKey(key: CmcdKey): boolean {\n\treturn CUSTOM_KEY_REGEX.test(key)\n}\n","import { CMCD_REQUEST_KEYS } from './CMCD_REQUEST_KEYS.ts'\nimport type { Cmcd } from './Cmcd.ts'\nimport { isCmcdCustomKey } from './isCmcdCustomKey.ts'\n\n/**\n * Check if a key is a valid CMCD request key.\n *\n * @param key - The key to check.\n *\n * @returns `true` if the key is a valid CMCD request key, `false` otherwise.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/isCmcdRequestKey.test.ts#example}\n */\nexport function isCmcdRequestKey(key: string): key is keyof Cmcd {\n\treturn CMCD_REQUEST_KEYS.includes(key as any) ||\n\t\tisCmcdCustomKey(key as any)\n}\n","/**\n * CMCD v2 - Response-only and timing keys.\n *\n * @public\n */\nexport const CMCD_RESPONSE_KEYS = [\n\t'cmsdd',\n\t'cmsds',\n\t'rc',\n\t'smrt',\n\t'ttfb',\n\t'ttfbb',\n\t'ttlb',\n\t'url',\n] as const\n","import { CMCD_RESPONSE_KEYS } from './CMCD_RESPONSE_KEYS.js'\nimport type { Cmcd } from './Cmcd.ts'\n\n/**\n * Check if a key is a valid CMCD response key.\n *\n * @param key - The key to check.\n *\n * @returns `true` if the key is a valid CMCD request key, `false` otherwise.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/isCmcdResponseReceivedKey.test.ts#example}\n */\nexport function isCmcdResponseReceivedKey(key: string): key is keyof Cmcd {\n\treturn CMCD_RESPONSE_KEYS.includes(key as any)\n}\n","import { CMCD_EVENT_KEYS } from './CMCD_EVENT_KEYS.ts'\nimport type { Cmcd } from './Cmcd.ts'\nimport { isCmcdRequestKey } from './isCmcdRequestKey.ts'\nimport { isCmcdResponseReceivedKey } from './isCmcdResponseReceivedKey.ts'\n\n/**\n * Check if a key is a valid CMCD event key.\n *\n * @param key - The key to check.\n *\n * @returns `true` if the key is a valid CMCD event key, `false` otherwise.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/isCmcdEventKey.test.ts#example}\n */\nexport function isCmcdEventKey(key: string): key is keyof Cmcd {\n\treturn isCmcdRequestKey(key) ||\n\t\tisCmcdResponseReceivedKey(key) ||\n\t\tCMCD_EVENT_KEYS.includes(key as any)\n}\n","/**\n * Defines the keys for CMCD (Common Media Client Data) version 1.\n *\n * @public\n */\nexport const CMCD_V1_KEYS = [\n\t'bl',\n\t'br',\n\t'bs',\n\t'cid',\n\t'd',\n\t'dl',\n\t'mtp',\n\t'nor',\n\t'nrr',\n\t'ot',\n\t'pr',\n\t'rtp',\n\t'sf',\n\t'sid',\n\t'st',\n\t'su',\n\t'tb',\n\t'v',\n] as const\n","import { CMCD_V1_KEYS } from './CMCD_V1_KEYS.ts'\nimport type { CmcdKey } from './CmcdKey.ts'\nimport { isCmcdCustomKey } from './isCmcdCustomKey.ts'\n\n/**\n * Filter function for CMCD v1 keys.\n *\n * @param key - The CMCD key to filter.\n *\n * @returns `true` if the key should be included, `false` otherwise.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/isCmcdV1Key.test.ts#example}\n */\nexport function isCmcdV1Key(key: string): key is CmcdKey {\n\treturn CMCD_V1_KEYS.includes(key as any) || isCmcdCustomKey(key as any)\n}\n","/**\n * Checks if the given key is a token field.\n *\n * @param key - The key to check.\n *\n * @returns `true` if the key is a token field.\n *\n * @internal\n */\nexport function isTokenField(key: string): boolean {\n\treturn [\n\t\t'ot',\n\t\t'sf',\n\t\t'st',\n\t\t'e',\n\t\t'sta',\n\t].includes(key as any)\n}\n","/**\n * Checks if the given value is valid\n *\n * @param value - The value to check.\n *\n * @returns `true` if the key is a value is valid.\n *\n * @internal\n */\nexport function isValid(value: unknown): boolean {\n\tif (typeof value === 'number') {\n\t\treturn Number.isFinite(value)\n\t}\n\n\treturn value != null && value !== '' && value !== false\n}\n","import { SfItem, SfToken } from '@svta/cml-structured-field-values'\nimport { CMCD_FORMATTER_MAP } from './CMCD_FORMATTER_MAP.ts'\nimport { CMCD_V2 } from './CMCD_V2.ts'\nimport type { Cmcd } from './Cmcd.ts'\nimport type { CmcdEncodeOptions } from './CmcdEncodeOptions.ts'\nimport type { CmcdFormatterOptions } from './CmcdFormatterOptions.ts'\nimport type { CmcdKey } from './CmcdKey.ts'\nimport type { CmcdObjectType } from './CmcdObjectType.ts'\nimport { CMCD_EVENT_MODE, CMCD_REQUEST_MODE } from './CmcdReportingMode.ts'\nimport type { CmcdValue } from './CmcdValue.ts'\nimport { isCmcdEventKey } from './isCmcdEventKey.ts'\nimport { isCmcdRequestKey } from './isCmcdRequestKey.ts'\nimport { isCmcdResponseReceivedKey } from './isCmcdResponseReceivedKey.ts'\nimport { isCmcdV1Key } from './isCmcdV1Key.ts'\nimport { isTokenField } from './isTokenField.ts'\nimport { isValid } from './isValid.ts'\n\nconst filterMap: Record<string, (key: string) => boolean> = {\n\t[CMCD_EVENT_MODE]: isCmcdEventKey,\n\t[CMCD_REQUEST_MODE]: isCmcdRequestKey,\n}\n\n/**\n * V1 keys that use inner lists in V2 but plain numbers in V1.\n */\nconst INNER_LIST_V1_KEYS = new Set(['ab', 'bl', 'br', 'bsa', 'bsd', 'bsda', 'lab', 'lb', 'mtp', 'pb', 'tab', 'tb', 'tbl', 'tpb'])\n\n/**\n * Unwrap an inner list or SfItem value to a plain scalar.\n */\nfunction unwrapValue(value: any, ot?: CmcdObjectType): any {\n\tif (Array.isArray(value)) {\n\t\tlet item: any\n\n\t\tif (ot) {\n\t\t\titem = value.find(item => item.params?.ot === ot)\n\t\t}\n\n\t\tif (!item) {\n\t\t\titem = value[0]\n\t\t}\n\n\t\treturn unwrapValue(item)\n\t}\n\n\tif (value instanceof SfItem) {\n\t\treturn value.value\n\t}\n\n\treturn value\n}\n\n/**\n * Down-convert V2 CMCD data to V1 format.\n *\n * - Extracts `nrr` from `nor` SfItem `r` parameter.\n * - Unwraps inner-list values to plain scalars.\n */\nfunction downConvertToV1(obj: Record<string, any>): Record<string, any> {\n\tconst result: Record<string, any> = {}\n\n\tfor (const [key, value] of Object.entries(obj)) {\n\t\tif (value == null) {\n\t\t\tresult[key] = value\n\t\t\tcontinue\n\t\t}\n\n\t\tif (key === 'nor') {\n\t\t\tconst items = Array.isArray(value) ? value : [value]\n\t\t\tconst first = items[0]\n\n\t\t\tif (first instanceof SfItem) {\n\t\t\t\tresult['nor'] = first.value\n\t\t\t\tif (first.params?.r) {\n\t\t\t\t\tresult['nrr'] = first.params.r\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tresult['nor'] = first\n\t\t\t}\n\t\t}\n\t\telse if (INNER_LIST_V1_KEYS.has(key)) {\n\t\t\tresult[key] = unwrapValue(value, obj['ot'])\n\t\t}\n\t\telse {\n\t\t\tresult[key] = value\n\t\t}\n\t}\n\n\treturn result\n}\n\n/**\n * Convert a generic object to CMCD data.\n *\n * @param obj - The CMCD object to process.\n * @param options - Options for encoding.\n *\n * @public\n */\nexport function prepareCmcdData(obj: Record<string, any>, options: CmcdEncodeOptions = {}): Cmcd {\n\tconst results: Cmcd = {}\n\n\tif (obj == null || typeof obj !== 'object') {\n\t\treturn results\n\t}\n\n\tconst version = options.version || (obj['v'] as number) || CMCD_V2\n\tconst reportingMode = options.reportingMode || CMCD_REQUEST_MODE\n\n\t// Down-convert V2 data to V1 format if needed\n\tconst data = version === 1 ? downConvertToV1(obj) : obj\n\n\tconst keyFilter = version === 1 ? isCmcdV1Key : filterMap[reportingMode]\n\n\t// Filter keys based on the version, reporting mode and options\n\tlet keys = Object.keys(data).filter(keyFilter) as CmcdKey[]\n\n\tif (data['e'] && data['e'] !== 'rr') {\n\t\tkeys = keys.filter(key => !isCmcdResponseReceivedKey(key))\n\t}\n\n\tconst filter = options.filter\n\tif (typeof filter === 'function') {\n\t\tkeys = keys.filter(filter)\n\t}\n\n\t// Ensure all required event keys are present before sorting\n\tconst needsTimestamp = reportingMode === CMCD_EVENT_MODE\n\n\tif (needsTimestamp) {\n\t\tif (!keys.includes('e') && data['e'] != null) {\n\t\t\tkeys.push('e')\n\t\t}\n\n\t\tif (!keys.includes('ts')) {\n\t\t\tkeys.push('ts')\n\t\t}\n\n\t\tif (!keys.includes('cen') && data['cen'] != null) {\n\t\t\tkeys.push('cen')\n\t\t}\n\t}\n\n\tif (keys.length === 0) {\n\t\treturn results\n\t}\n\n\tif (version > 1 && !keys.includes('v')) {\n\t\tkeys.push('v')\n\t}\n\n\tconst formatters = Object.assign({}, CMCD_FORMATTER_MAP, options.formatters)\n\tconst formatterOptions: CmcdFormatterOptions = {\n\t\tversion,\n\t\treportingMode,\n\t\tbaseUrl: options.baseUrl,\n\t}\n\n\tkeys.sort().forEach(key => {\n\t\tlet value = data[key] as CmcdValue\n\n\t\tconst formatter = formatters[key]\n\t\tif (typeof formatter === 'function') {\n\t\t\tvalue = formatter(value, formatterOptions)\n\t\t}\n\n\t\t// Version should only be reported if not equal to 1.\n\t\tif (key === 'v') {\n\t\t\tif (version === 1) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvalue = version\n\t\t\t}\n\t\t}\n\n\t\t// Playback rate should only be sent if not equal to 1.\n\t\tif (key == 'pr' && value === 1) {\n\t\t\treturn\n\t\t}\n\n\t\t// Ensure a timestamp is set for response and event modes\n\t\tif (needsTimestamp && key === 'ts' && !Number.isFinite(value)) {\n\t\t\tvalue = Date.now()\n\t\t}\n\n\t\t// ignore invalid values\n\t\tif (!isValid(value)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (isTokenField(key) && typeof value === 'string') {\n\t\t\tvalue = new SfToken(value)\n\t\t}\n\n\t\t(results as any)[key] = value\n\t})\n\n\treturn results\n}\n","import { encodeSfDict } from '@svta/cml-structured-field-values'\nimport type { Cmcd } from './Cmcd.ts'\nimport type { CmcdEncodeOptions } from './CmcdEncodeOptions.ts'\nimport type { CmcdHeaderField } from './CmcdHeaderField.ts'\nimport { groupCmcdHeaders } from './groupCmcdHeaders.ts'\nimport { prepareCmcdData } from './prepareCmcdData.ts'\n\n/**\n * Convert a CMCD data object to request headers\n *\n * @param cmcd - The CMCD data object to convert.\n * @param options - Options for encoding the CMCD object.\n *\n * @returns The CMCD header shards.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/toCmcdHeaders.test.ts#example}\n */\nexport function toCmcdHeaders(cmcd: Cmcd, options: CmcdEncodeOptions = {}): Record<CmcdHeaderField, string> {\n\tconst result = {} as Record<CmcdHeaderField, string>\n\n\tif (!cmcd) {\n\t\treturn result\n\t}\n\n\tconst data = prepareCmcdData(cmcd, options)\n\tconst shards = groupCmcdHeaders(data, options?.customHeaderMap)\n\n\treturn Object.entries(shards)\n\t\t.reduce((acc, [field, value]) => {\n\t\t\tconst shard = encodeSfDict(value, { whitespace: false })\n\t\t\tif (shard) {\n\t\t\t\tacc[field as CmcdHeaderField] = shard\n\t\t\t}\n\t\t\treturn acc\n\t\t}, result)\n}\n","import type { Cmcd } from './Cmcd.ts'\nimport type { CmcdEncodeOptions } from './CmcdEncodeOptions.ts'\nimport { toCmcdHeaders } from './toCmcdHeaders.ts'\n\n/**\n * Append CMCD query args to a header object.\n *\n * @param headers - The headers to append to.\n * @param cmcd - The CMCD object to append.\n * @param options - Encode options.\n *\n * @returns The headers with the CMCD header shards appended.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/appendCmcdHeaders.test.ts#example}\n */\nexport function appendCmcdHeaders(headers: Record<string, string>, cmcd: Cmcd, options?: CmcdEncodeOptions): Record<string, string> {\n\treturn Object.assign(headers, toCmcdHeaders(cmcd, options))\n}\n","/**\n * CMCD parameter name.\n *\n * @public\n */\nexport const CMCD_PARAM = 'CMCD'\n","import { encodeSfDict } from '@svta/cml-structured-field-values'\nimport type { Cmcd } from './Cmcd.ts'\nimport type { CmcdEncodeOptions } from './CmcdEncodeOptions.ts'\nimport { prepareCmcdData } from './prepareCmcdData.ts'\n\n/**\n * Encode a CMCD object to a string.\n *\n * @param cmcd - The CMCD object to encode.\n * @param options - Options for encoding.\n *\n * @returns The encoded CMCD string.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/encodeCmcd.test.ts#example}\n */\nexport function encodeCmcd(cmcd: Cmcd, options: CmcdEncodeOptions = {}): string {\n\tif (!cmcd) {\n\t\treturn ''\n\t}\n\n\treturn encodeSfDict(prepareCmcdData(cmcd, options), { whitespace: false })\n}\n","import type { Cmcd } from './Cmcd.ts'\nimport type { CmcdEncodeOptions } from './CmcdEncodeOptions.ts'\nimport { encodeCmcd } from './encodeCmcd.ts'\n\n/**\n * Convert a CMCD data object to a URL encoded string.\n *\n * @param cmcd - The CMCD object to convert.\n * @param options - Options for encoding the CMCD object.\n *\n * @returns The URL encoded CMCD data.\n *\n * @public\n */\nexport function toCmcdUrl(cmcd: Cmcd, options: CmcdEncodeOptions = {}): string {\n\tif (!cmcd) {\n\t\treturn ''\n\t}\n\n\tconst params = encodeCmcd(cmcd, options)\n\n\treturn encodeURIComponent(params)\n}\n","import { CMCD_PARAM } from './CMCD_PARAM.ts'\nimport type { Cmcd } from './Cmcd.ts'\nimport type { CmcdEncodeOptions } from './CmcdEncodeOptions.ts'\nimport { toCmcdUrl } from './toCmcdUrl.ts'\n\n/**\n * Convert a CMCD data object to a query arg.\n *\n * @param cmcd - The CMCD object to convert.\n * @param options - Options for encoding the CMCD object.\n *\n * @returns The CMCD query arg.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/toCmcdQuery.test.ts#example}\n */\nexport function toCmcdQuery(cmcd: Cmcd, options: CmcdEncodeOptions = {}): string {\n\tif (!cmcd) {\n\t\treturn ''\n\t}\n\n\tconst value = toCmcdUrl(cmcd, options)\n\n\treturn `${CMCD_PARAM}=${value}`\n}\n","import type { Cmcd } from './Cmcd.ts'\nimport type { CmcdEncodeOptions } from './CmcdEncodeOptions.ts'\nimport { toCmcdQuery } from './toCmcdQuery.ts'\n\nconst REGEX = /CMCD=[^&#]+/\n\n/**\n * Append CMCD query args to a URL.\n *\n * @param url - The URL to append to.\n * @param cmcd - The CMCD object to append.\n * @param options - Options for encoding the CMCD object.\n *\n * @returns The URL with the CMCD query args appended.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/appendCmcdQuery.test.ts#example}\n */\nexport function appendCmcdQuery(url: string, cmcd: Cmcd, options?: CmcdEncodeOptions): string {\n\t// TODO: Replace with URLSearchParams once we drop Safari < 10.1 & Chrome < 49 support.\n\t// https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams\n\n\tconst query = toCmcdQuery(cmcd, options)\n\tif (!query) {\n\t\treturn url\n\t}\n\n\tif (REGEX.test(url)) {\n\t\treturn url.replace(REGEX, query)\n\t}\n\n\tconst separator = url.includes('?') ? '&' : '?'\n\treturn `${url}${separator}${query}`\n}\n","/**\n * The default time interval in seconds when using using event mode\n *\n * @public\n */\nexport const CMCD_DEFAULT_TIME_INTERVAL = 30\n","import { CMCD_EVENT_KEYS } from './CMCD_EVENT_KEYS.ts'\nimport { CMCD_REQUEST_KEYS } from './CMCD_REQUEST_KEYS.ts'\nimport { CMCD_RESPONSE_KEYS } from './CMCD_RESPONSE_KEYS.ts'\nimport { CMCD_V1_KEYS } from './CMCD_V1_KEYS.ts'\nimport type { CmcdKey } from './CmcdKey.ts'\n\nconst keySet = new Set([\n\t...CMCD_V1_KEYS,\n\t...CMCD_REQUEST_KEYS,\n\t...CMCD_RESPONSE_KEYS,\n\t...CMCD_EVENT_KEYS,\n])\n\n/**\n * A list of all CMCD keys.\n *\n * @public\n */\nexport const CMCD_KEYS: CmcdKey[] = Array.from(keySet)\n","/**\n * CMCD Version 1\n *\n * @public\n */\nexport const CMCD_V1 = 1 as const\n","import type { ValueOf } from '@svta/cml-utils'\n\n/**\n * CMCD event type for the 'br' key (bitrate change).\n *\n * @public\n */\nexport const CMCD_EVENT_BITRATE_CHANGE = 'br' as const\n\n/**\n * CMCD event type for the 'ps' key (play state change).\n *\n * @public\n */\nexport const CMCD_EVENT_PLAY_STATE = 'ps' as const\n\n/**\n * CMCD event type for the 'e' key (error).\n *\n * @public\n */\nexport const CMCD_EVENT_ERROR = 'e' as const\n\n/**\n * CMCD event type for the 't' key (time interval).\n *\n * @public\n */\nexport const CMCD_EVENT_TIME_INTERVAL = 't' as const\n\n/**\n * CMCD event type for the 'c' key (content ID).\n *\n * @public\n */\nexport const CMCD_EVENT_CONTENT_ID = 'c' as const\n\n/**\n * CMCD event type for the 'b' key (backgrounded mode).\n *\n * @public\n */\nexport const CMCD_EVENT_BACKGROUNDED_MODE = 'b' as const\n\n/**\n * CMCD event type for the 'm' key (mute).\n *\n * @public\n */\nexport const CMCD_EVENT_MUTE = 'm' as const\n\n/**\n * CMCD event type for the 'um' key (unmute).\n *\n * @public\n */\nexport const CMCD_EVENT_UNMUTE = 'um' as const\n\n/**\n * CMCD event type for the 'pe' key (player expand).\n *\n * @public\n */\nexport const CMCD_EVENT_PLAYER_EXPAND = 'pe' as const\n\n/**\n * CMCD event type for the 'pc' key (player collapse).\n *\n * @public\n */\nexport const CMCD_EVENT_PLAYER_COLLAPSE = 'pc' as const\n\n/**\n * CMCD event type for the 'rr' key (response received).\n *\n * @public\n */\nexport const CMCD_EVENT_RESPONSE_RECEIVED = 'rr' as const\n\n/**\n * CMCD event type for the 'as' key (ad start).\n *\n * @public\n */\nexport const CMCD_EVENT_AD_START = 'as' as const\n\n/**\n * CMCD event type for the 'ae' key (ad end).\n *\n * @public\n */\nexport const CMCD_EVENT_AD_END = 'ae' as const\n\n/**\n * CMCD event type for the 'abs' key (ad break start).\n *\n * @public\n */\nexport const CMCD_EVENT_AD_BREAK_START = 'abs' as const\n\n/**\n * CMCD event type for the 'abe' key (ad break end).\n *\n * @public\n */\nexport const CMCD_EVENT_AD_BREAK_END = 'abe' as const\n\n/**\n * CMCD event type for the 'sk' key (skip).\n *\n * @public\n */\nexport const CMCD_EVENT_SKIP = 'sk' as const\n\n/**\n * CMCD event type for the 'ce' key (custom event).\n *\n * @public\n */\nexport const CMCD_EVENT_CUSTOM_EVENT = 'ce' as const\n\n/**\n * CMCD event types for the 'e' key (event mode).\n *\n *\n * @enum\n *\n * @public\n */\nexport const CmcdEventType = {\n\t/**\n\t * A change in the bitrate.\n\t */\n\tBITRATE_CHANGE: CMCD_EVENT_BITRATE_CHANGE as typeof CMCD_EVENT_BITRATE_CHANGE,\n\n\t/**\n\t * A change in the player state.\n\t */\n\tPLAY_STATE: CMCD_EVENT_PLAY_STATE as typeof CMCD_EVENT_PLAY_STATE,\n\n\t/**\n\t * An error event.\n\t */\n\tERROR: CMCD_EVENT_ERROR as typeof CMCD_EVENT_ERROR,\n\n\t/**\n\t * A periodic report sent on a time interval.\n\t */\n\tTIME_INTERVAL: CMCD_EVENT_TIME_INTERVAL as typeof CMCD_EVENT_TIME_INTERVAL,\n\n\t/**\n\t * A change of the content ID.\n\t */\n\tCONTENT_ID: CMCD_EVENT_CONTENT_ID as typeof CMCD_EVENT_CONTENT_ID,\n\n\t/**\n\t * A change in the application's backgrounded state.\n\t */\n\tBACKGROUNDED_MODE: CMCD_EVENT_BACKGROUNDED_MODE as typeof CMCD_EVENT_BACKGROUNDED_MODE,\n\n\t/**\n\t * The player was muted.\n\t */\n\tMUTE: CMCD_EVENT_MUTE as typeof CMCD_EVENT_MUTE,\n\n\t/**\n\t * Player unmuted.\n\t */\n\tUNMUTE: CMCD_EVENT_UNMUTE as typeof CMCD_EVENT_UNMUTE,\n\n\t/**\n\t * The player view was expanded.\n\t */\n\tPLAYER_EXPAND: CMCD_EVENT_PLAYER_EXPAND as typeof CMCD_EVENT_PLAYER_EXPAND,\n\n\t/**\n\t * The player view was collapsed.\n\t */\n\tPLAYER_COLLAPSE: CMCD_EVENT_PLAYER_COLLAPSE as typeof CMCD_EVENT_PLAYER_COLLAPSE,\n\n\t/**\n\t * The receipt of a response.\n\t */\n\tRESPONSE_RECEIVED: CMCD_EVENT_RESPONSE_RECEIVED as typeof CMCD_EVENT_RESPONSE_RECEIVED,\n\n\t/**\n\t * The start of an ad.\n\t */\n\tAD_START: CMCD_EVENT_AD_START as typeof CMCD_EVENT_AD_START,\n\n\t/**\n\t * The end of an ad.\n\t */\n\tAD_END: CMCD_EVENT_AD_END as typeof CMCD_EVENT_AD_END,\n\n\t/**\n\t * The start of an ad break.\n\t */\n\tAD_BREAK_START: CMCD_EVENT_AD_BREAK_START as typeof CMCD_EVENT_AD_BREAK_START,\n\n\t/**\n\t * The end of an ad break.\n\t */\n\tAD_BREAK_END: CMCD_EVENT_AD_BREAK_END as typeof CMCD_EVENT_AD_BREAK_END,\n\n\t/**\n\t * The user skipped an ad.\n\t */\n\tSKIP: CMCD_EVENT_SKIP as typeof CMCD_EVENT_SKIP,\n\n\t/**\n\t * A custom event.\n\t */\n\tCUSTOM_EVENT: CMCD_EVENT_CUSTOM_EVENT as typeof CMCD_EVENT_CUSTOM_EVENT,\n} as const\n\n/**\n * @public\n */\nexport type CmcdEventType = ValueOf<typeof CmcdEventType>;\n","import type { ValueOf } from '@svta/cml-utils'\n\n/**\n * Common Media Client Data Object Type\n *\n * @public\n *\n * @enum\n */\nexport const CmcdObjectType = {\n\t/**\n\t * text file, such as a manifest or playlist\n\t */\n\tMANIFEST: 'm',\n\n\t/**\n\t * audio only\n\t */\n\tAUDIO: 'a',\n\n\t/**\n\t * video only\n\t */\n\tVIDEO: 'v',\n\n\t/**\n\t * muxed audio and video\n\t */\n\tMUXED: 'av',\n\n\t/**\n\t * init segment\n\t */\n\tINIT: 'i',\n\n\t/**\n\t * caption or subtitle\n\t */\n\tCAPTION: 'c',\n\n\t/**\n\t * ISOBMFF timed text track\n\t */\n\tTIMED_TEXT: 'tt',\n\n\t/**\n\t * cryptographic key, license or certificate.\n\t */\n\tKEY: 'k',\n\n\t/**\n\t * other\n\t */\n\tOTHER: 'o',\n} as const\n\n/**\n * @public\n */\nexport type CmcdObjectType = ValueOf<typeof CmcdObjectType>;\n","import type { ValueOf } from '@svta/cml-utils'\n\n/**\n * CMCD v2 player states for the 'sta' key.\n *\n *\n * @enum\n *\n * @public\n */\nexport const CmcdPlayerState = {\n\t/**\n\t * Starting: Initial startup of the player.\n\t */\n\tSTARTING: 's',\n\n\t/**\n\t * Playing: The player is actively rendering content.\n\t */\n\tPLAYING: 'p',\n\n\t/**\n\t * Seeking: The player is seeking to a new position.\n\t */\n\tSEEKING: 'k',\n\n\t/**\n\t * Rebuffering: The player is buffering data during playback.\n\t */\n\tREBUFFERING: 'r',\n\n\t/**\n\t * Paused: The player is paused.\n\t */\n\tPAUSED: 'a',\n\n\t/**\n\t * Waiting: The player is waiting for a user action or another event.\n\t */\n\tWAITING: 'w',\n\n\t/**\n\t * Ended: The media has finished playing.\n\t */\n\tENDED: 'e',\n\n\t/**\n\t * Fatal Error: The player has encountered a fatal error.\n\t */\n\tFATAL_ERROR: 'f',\n\n\t/**\n\t * Quit: User initiated end of playback before media asset completion.\n\t */\n\tQUIT: 'q',\n\n\t/**\n\t * Preloading: The player is loading assets ahead of starting in order to provide a fast startup. The expectation is that playback will commence at a future time.\n\t */\n\tPRELOADING: 'd',\n} as const\n\n/**\n * @public\n */\nexport type CmcdPlayerState = ValueOf<typeof CmcdPlayerState>;\n","import type { ValueOf } from '@svta/cml-utils'\n\n/**\n * CMCD `query` transmission mode.\n *\n * @public\n */\nexport const CMCD_QUERY = 'query' as const\n\n/**\n * CMCD `headers` transmission mode.\n *\n * @public\n */\nexport const CMCD_HEADERS = 'headers' as const\n\n/**\n * CMCD `json` transmission mode.\n *\n * @public\n *\n * @deprecated JSON transmission mode is deprecated and will be removed in future versions.\n */\nexport const CMCD_JSON = 'json' as const\n\n/**\n * CMCD transmission modes.\n *\n * @enum\n *\n * @public\n */\nexport const CmcdTransmissionMode = {\n\t/**\n\t * JSON\n\t *\n\t * @deprecated JSON transmission mode is deprecated and will be removed in future versions.\n\t */\n\tJSON: CMCD_JSON as typeof CMCD_JSON,\n\n\t/**\n\t * Query string\n\t */\n\tQUERY: CMCD_QUERY as typeof CMCD_QUERY,\n\n\t/**\n\t * Request headers\n\t */\n\tHEADERS: CMCD_HEADERS as typeof CMCD_HEADERS,\n\n} as const\n\n/**\n * @public\n */\nexport type CmcdTransmissionMode = ValueOf<typeof CmcdTransmissionMode>;\n","import type { HttpRequest } from '@svta/cml-utils'\nimport { uuid } from '@svta/cml-utils'\nimport { CMCD_DEFAULT_TIME_INTERVAL } from './CMCD_DEFAULT_TIME_INTERVAL.ts'\nimport { CMCD_PARAM } from './CMCD_PARAM.ts'\nimport { CMCD_V2 } from './CMCD_V2.ts'\nimport type { Cmcd } from './Cmcd.ts'\nimport type { CmcdEncodeOptions } from './CmcdEncodeOptions.ts'\nimport type { CmcdEventReportConfig } from './CmcdEventReportConfig.ts'\nimport { CMCD_EVENT_TIME_INTERVAL, CmcdEventType } from './CmcdEventType.ts'\nimport type { CmcdKey } from './CmcdKey.ts'\nimport type { CmcdReportConfig } from './CmcdReportConfig.ts'\nimport type { CmcdReporterConfig } from './CmcdReporterConfig.ts'\nimport type { CmcdReportingMode } from './CmcdReportingMode.ts'\nimport { CMCD_EVENT_MODE, CMCD_REQUEST_MODE } from './CmcdReportingMode.ts'\nimport { CMCD_HEADERS, CMCD_QUERY } from './CmcdTransmissionMode.ts'\nimport type { CmcdVersion } from './CmcdVersion.ts'\nimport { encodeCmcd } from './encodeCmcd.ts'\nimport { toCmcdHeaders } from './toCmcdHeaders.ts'\n\ntype CmcdReportConfigNormalized = CmcdReportConfig & {\n\tversion: CmcdVersion;\n}\n\ntype CmcdEventReportConfigNormalized = CmcdEventReportConfig & CmcdReportConfigNormalized & {\n\tevents: CmcdEventType[];\n\tinterval: number;\n\tbatchSize: number;\n}\n\ntype CmcdReporterConfigNormalized = CmcdReporterConfig & CmcdReportConfigNormalized & {\n\tsid: string;\n\teventTargets: CmcdEventReportConfigNormalized[];\n}\n\nfunction createEncodingOptions(reportingMode: CmcdReportingMode, config: CmcdReportConfig): CmcdEncodeOptions {\n\tconst { enabledKeys = [] } = config\n\n\treturn {\n\t\tversion: config.version || CMCD_V2,\n\t\treportingMode,\n\t\tfilter: (key: CmcdKey) => enabledKeys.includes(key),\n\t}\n}\n\nfunction defaultRequester(request: HttpRequest): Promise<{ status: number; }> {\n\tconst { url, ...init } = request\n\treturn fetch(url, init)\n}\n\nfunction createCmcdReporterConfig(config: Partial<CmcdReporterConfig>): CmcdReporterConfigNormalized {\n\t// Apply top-level config defaults\n\tconst {\n\t\tversion = CMCD_V2,\n\t\teventTargets = [],\n\t\tsid = uuid(),\n\t\ttransmissionMode = CMCD_QUERY,\n\t\t...rest\n\t} = config\n\n\treturn {\n\t\t...rest,\n\t\tversion,\n\t\ttransmissionMode,\n\t\tsid,\n\t\t// Apply target config defaults\n\t\teventTargets: eventTargets.reduce((acc, target) => {\n\t\t\tif (target?.url && target.events?.length) {\n\t\t\t\tacc.push({\n\t\t\t\t\tversion: target.version || CMCD_V2,\n\t\t\t\t\tenabledKeys: target.enabledKeys?.slice() || [],\n\t\t\t\t\turl: target.url,\n\t\t\t\t\tevents: target.events.slice(),\n\t\t\t\t\tinterval: target.interval ?? CMCD_DEFAULT_TIME_INTERVAL,\n\t\t\t\t\tbatchSize: target.batchSize || 1,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn acc\n\t\t}, [] as CmcdEventReportConfigNormalized[]),\n\t}\n}\n\ntype CmcdTarget = {\n\tsn: number;\n\tmsdSent: boolean;\n}\n\ntype CmcdEventTarget = CmcdTarget & {\n\tintervalId: ReturnType<typeof setInterval> | undefined;\n\tqueue: Cmcd[];\n}\n\n/**\n * The CMCD reporter.\n *\n * @public\n */\nexport class CmcdReporter {\n\tprivate data: Cmcd = {}\n\tprivate config: CmcdReporterConfigNormalized\n\tprivate requestEncodingOptions: CmcdEncodeOptions\n\tprivate msd: number = NaN\n\tprivate eventTargets = new Map<CmcdEventReportConfigNormalized, CmcdEventTarget>()\n\tprivate requestTarget: CmcdTarget = {\n\t\tsn: 0,\n\t\tmsdSent: false,\n\t}\n\n\t// TODO: Should this be an event handler?\n\tprivate requester: (request: HttpRequest) => Promise<{ status: number; }>\n\n\t/**\n\t * Creates a new CMCD reporter.\n\t *\n\t * @param config - The configuration for the CMCD reporter.\n\t * @param requester - The function to use to send the request.\n\t * The default is a simple wrapper around the\n\t * native `fetch` API.\n\t */\n\tconstructor(config: Partial<CmcdReporterConfig>, requester: (request: HttpRequest) => Promise<{ status: number; }> = defaultRequester) {\n\t\tthis.config = createCmcdReporterConfig(config)\n\t\tthis.data = {\n\t\t\tcid: this.config.cid,\n\t\t\tsid: this.config.sid,\n\t\t\tv: this.config.version,\n\t\t}\n\t\tthis.requestEncodingOptions = createEncodingOptions(CMCD_REQUEST_MODE, this.config)\n\t\tthis.requester = requester\n\n\t\tfor (const target of this.config.eventTargets) {\n\t\t\tthis.eventTargets.set(target, {\n\t\t\t\tintervalId: undefined,\n\t\t\t\tsn: 0,\n\t\t\t\tmsdSent: false,\n\t\t\t\tqueue: [],\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Starts the CMCD reporter. Called by the player when the reporter is enabled.\n\t */\n\tstart(): void {\n\t\tthis.eventTargets.forEach((target, config) => {\n\t\t\t// If the interval is 0 or the TIME_INTERVAL event is not enabled, do not start the interval.\n\t\t\tif (config.interval === 0 || !config.events.includes(CmcdEventType.TIME_INTERVAL)) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst timeIntervalEvent = () => {\n\t\t\t\tthis.recordEvent(CMCD_EVENT_TIME_INTERVAL)\n\t\t\t}\n\n\t\t\ttarget.intervalId = setInterval(timeIntervalEvent, config.interval * 1000)\n\t\t\ttimeIntervalEvent()\n\t\t})\n\t}\n\n\t/**\n\t * Stops the CMCD reporter. Called by the player when the reporter is disabled.\n\t */\n\tstop(): void {\n\t\tthis.eventTargets.forEach((target) => {\n\t\t\tclearInterval(target.intervalId)\n\t\t})\n\t}\n\n\t/**\n\t * Forces the sending of all event reports, regardless of the batch size or interval.\n\t * Useful for sending outstanding reports when the player is destroyed or a playback\n\t * session ends.\n\t */\n\tflush(): void {\n\t\tthis.processEventTargets(true)\n\t}\n\n\t/**\n\t * Updates the CMCD data. Called by the player when the data changes.\n\t *\n\t * @param data - The data to update.\n\t */\n\tupdate(data: Partial<Cmcd>): void {\n\t\tif (data.sid && data.sid !== this.data.sid) {\n\t\t\tthis.resetSession()\n\t\t\treturn\n\t\t}\n\n\t\tif (data.msd && !isNaN(data.msd)) {\n\t\t\tthis.msd = data.msd\n\t\t}\n\n\t\tthis.data = { ...this.data, ...data, msd: undefined }\n\t}\n\n\t/**\n\t * Records an event. Called by the player when an event occurs.\n\t *\n\t * @param type - The type of event to record.\n\t * @param data - Additional data to record with the event. This is\n\t * the same as calling `update()` with the same data.\n\t */\n\trecordEvent(type: CmcdEventType, data?: Partial<Cmcd>): void {\n\t\tconst { cen, ...rest } = data || {}\n\n\t\tif (rest) {\n\t\t\tthis.update(rest)\n\t\t}\n\n\t\tthis.eventTargets.forEach((target, config) => {\n\t\t\tif (!config.events.includes(type)) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst item = {\n\t\t\t\t...this.data,\n\t\t\t\te: type,\n\t\t\t\tts: Date.now(),\n\t\t\t\tsn: target.sn++,\n\t\t\t}\n\n\t\t\tif (type === CmcdEventType.CUSTOM_EVENT && cen) {\n\t\t\t\titem.cen = cen\n\t\t\t}\n\n\t\t\tif (!isNaN(this.msd) && !target.msdSent) {\n\t\t\t\titem.msd = this.msd\n\t\t\t\ttarget.msdSent = true\n\t\t\t}\n\n\t\t\ttarget.queue.push(item)\n\t\t})\n\n\t\tthis.processEventTargets()\n\t}\n\n\t/**\n\t * Applies the CMCD request report data to the request. Called by the player\n\t * before sending the request.\n\t *\n\t * @param req - The request to apply the CMCD request report to.\n\t * @returns The request with the CMCD request report applied.\n\t */\n\tapplyRequestReport(req: HttpRequest): HttpRequest {\n\t\tif (!req || !req.url || !this.config.enabledKeys?.length) {\n\t\t\treturn req\n\t\t}\n\n\t\tconst url = new URL(req.url)\n\t\tconst headers = Object.assign({}, req.headers)\n\t\tconst data = { ...this.data, sn: this.requestTarget.sn++ }\n\n\t\tif (!isNaN(this.msd) && !this.requestTarget.msdSent) {\n\t\t\tdata.msd = this.msd\n\t\t\tthis.requestTarget.msdSent = true\n\t\t}\n\n\t\tswitch (this.config.transmissionMode) {\n\t\t\tcase CMCD_QUERY:\n\t\t\t\tconst param = encodeCmcd(data, this.requestEncodingOptions)\n\t\t\t\tif (param) {\n\t\t\t\t\turl.searchParams.set(CMCD_PARAM, param)\n\t\t\t\t}\n\t\t\t\tbreak\n\n\t\t\tcase CMCD_HEADERS:\n\t\t\t\tObject.assign(headers, toCmcdHeaders(data, this.requestEncodingOptions))\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn {\n\t\t\t...req,\n\t\t\turl: url.toString(),\n\t\t\theaders,\n\t\t}\n\t}\n\n\t/**\n\t * Processes the event targets. Called by the reporter when an event occurs.\n\t *\n\t * @param flush - Whether to flush the event targets.\n\t */\n\tprivate processEventTargets(flush: boolean = false): void {\n\t\tlet reprocess = false\n\n\t\tthis.eventTargets.forEach((target, config) => {\n\t\t\tconst { queue } = target\n\n\t\t\tif (!queue.length) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (queue.length < config.batchSize && !flush) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst deleteCount = flush ? queue.length : config.batchSize\n\t\t\tconst events = queue.splice(0, deleteCount)\n\t\t\tthis.sendEventReport(config, events)\n\n\t\t\treprocess ||= queue.length > 0\n\t\t})\n\n\t\tif (reprocess) {\n\t\t\tthis.processEventTargets()\n\t\t}\n\t}\n\n\t/**\n\t * Sends an event report. Called by the reporter when a batch is ready to be sent.\n\t *\n\t * @param target - The target to send the event report to.\n\t * @param data - The data to send in the event report.\n\t */\n\tprivate async sendEventReport(target: CmcdEventReportConfigNormalized, data: Cmcd[]): Promise<void> {\n\t\tconst options = createEncodingOptions(CMCD_EVENT_MODE, target)\n\t\tconst response = await this.requester({\n\t\t\turl: target.url,\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'text/cmcd',\n\t\t\t},\n\t\t\tbody: data.reduce((acc, item) => acc += `${encodeCmcd(item, options)}\\n`, ''),\n\t\t})\n\n\t\tconst { status } = response\n\t\tswitch (status) {\n\t\t\tcase 410:\n\t\t\t\tthis.eventTargets.delete(target)\n\t\t\t\tbreak\n\n\t\t\tcase 429:\n\t\t\t\t// Needs clarification\n\t\t\t\tbreak\n\n\t\t\tdefault:\n\t\t\t\tif (status > 499 && status < 600) {\n\t\t\t\t\t// retry logic\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t/**\n\t * Resets the session related data. Called when the session ID changes.\n\t */\n\tprivate resetSession(): void {\n\t\tthis.eventTargets.forEach(target => target.sn = 0)\n\t\tthis.requestTarget.sn = 0\n\t}\n}\n","import type { ValueOf } from '@svta/cml-utils'\n\n/**\n * Common Media Client Data Streaming Format\n *\n *\n * @enum\n *\n * @public\n */\nexport const CmcdStreamingFormat = {\n\t/**\n\t * MPEG DASH\n\t */\n\tDASH: 'd',\n\n\t/**\n\t * HTTP Live Streaming (HLS)\n\t */\n\tHLS: 'h',\n\n\t/**\n\t * Smooth Streaming\n\t */\n\tSMOOTH: 's',\n\n\t/**\n\t * Other\n\t */\n\tOTHER: 'o',\n} as const\n\n/**\n * @public\n */\nexport type CmcdStreamingFormat = ValueOf<typeof CmcdStreamingFormat>;\n","import type { ValueOf } from '@svta/cml-utils'\n\n/**\n * Common Media Client Data Stream Type\n *\n *\n * @enum\n *\n * @public\n */\nexport const CmcdStreamType = {\n\t/**\n\t * All segments are available – e.g., VOD\n\t */\n\tVOD: 'v',\n\n\t/**\n\t * Segments become available over time – e.g., LIVE\n\t */\n\tLIVE: 'l',\n\n\t/**\n\t * Low latency stream\n\t */\n\tLOW_LATENCY: 'll',\n} as const\n\n/**\n * @public\n */\nexport type CmcdStreamType = ValueOf<typeof CmcdStreamType>;\n","import type { SfBareItem } from '@svta/cml-structured-field-values'\nimport { decodeSfDict, SfItem, symbolToStr } from '@svta/cml-structured-field-values'\nimport type { Cmcd } from './Cmcd.ts'\nimport type { CmcdValue } from './CmcdValue.ts'\n\n// Define the input type for reduceValue\ntype ReduceValueInput = SfBareItem | SfItem | ReduceValueInput[];\n\n// Define the output type for reduceValue - matches what CMCD values can be, including arrays\ntype ReduceValueOutput = CmcdValue | ReduceValueOutput[];\n\nfunction reduceValue(value: ReduceValueInput): ReduceValueOutput {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(reduceValue)\n\t}\n\n\tif (typeof value === 'symbol') {\n\t\treturn symbolToStr(value)\n\t}\n\n\tif (value instanceof SfItem && !value.params) {\n\t\treturn reduceValue(value.value)\n\t}\n\n\tif (typeof value === 'string') {\n\t\treturn decodeURIComponent(value)\n\t}\n\n\treturn value as ReduceValueOutput\n};\n\n/**\n * Decode a CMCD string to an object.\n *\n * @param cmcd - The CMCD string to decode.\n *\n * @returns The decoded CMCD object.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/decodeCmcd.test.ts#example}\n */\nexport function decodeCmcd<T extends Cmcd = Cmcd>(cmcd: string): T {\n\tif (!cmcd) {\n\t\treturn {} as T\n\t}\n\n\tconst sfDict = decodeSfDict(cmcd)\n\n\treturn Object\n\t\t.entries<SfItem>(sfDict as any)\n\t\t.reduce((acc, [key, item]) => {\n\t\t\tacc[key as keyof T] = reduceValue(item.value) as T[keyof T]\n\t\t\treturn acc\n\t\t}, {} as T)\n}\n","import type { Cmcd } from './Cmcd.ts'\nimport { CMCD_OBJECT, CMCD_REQUEST, CMCD_SESSION, CMCD_STATUS } from './CmcdHeaderField.ts'\nimport { decodeCmcd } from './decodeCmcd.ts'\n\nconst keys = [CMCD_OBJECT, CMCD_REQUEST, CMCD_SESSION, CMCD_STATUS]\n\n/**\n * Decode CMCD data from request headers.\n *\n * @param headers - The request headers to decode.\n *\n * @returns The decoded CMCD data.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/fromCmcdHeaders.test.ts#example}\n */\nexport function fromCmcdHeaders(headers: Record<string, string> | Headers): Cmcd {\n\tif (!(headers instanceof Headers)) {\n\t\theaders = new Headers(headers)\n\t}\n\n\treturn keys.reduce((acc, key) => {\n\t\tconst value = headers.get(key)\n\t\treturn Object.assign(acc, decodeCmcd(value as string))\n\t}, {} as Cmcd)\n}\n","import type { Cmcd } from './Cmcd.ts'\nimport { CMCD_PARAM } from './CMCD_PARAM.ts'\nimport { decodeCmcd } from './decodeCmcd.ts'\n\n/**\n * Decode CMCD data from a query string.\n *\n * @param query - The query string to decode.\n *\n * @returns The decoded CMCD data.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/fromCmcdQuery.test.ts#example}\n */\nexport function fromCmcdQuery(query: string | URLSearchParams): Cmcd {\n\tif (typeof query === 'string') {\n\t\tquery = new URLSearchParams(query)\n\t}\n\n\tconst value = query.get(CMCD_PARAM)\n\n\treturn decodeCmcd(value as string)\n}\n","import type { Cmcd } from './Cmcd.ts'\nimport { decodeCmcd } from './decodeCmcd.ts'\n\n/**\n * Decode CMCD data from a url encoded string.\n *\n * @param url - The url encoded string to decode.\n *\n * @returns The decoded CMCD data.\n *\n * @public\n *\n * @example\n * {@includeCode ../test/fromCmcdUrl.test.ts#example}\n */\nexport function fromCmcdUrl(url: string): Cmcd {\n\treturn decodeCmcd(decodeURIComponent(url.replace(/^CMCD=/, '')))\n}\n","import { type SfBareItem, SfItem } from '@svta/cml-structured-field-values'\n\n/**\n * Convert a value to a CMCD value.\n *\n * @param value - The value to convert to a CMCD value.\n * @param params - The parameters to convert to a CMCD value.\n * @returns The CMCD value.\n *\n * @public\n */\nexport function toCmcdValue<V extends SfBareItem, P>(value: V, params?: P): SfItem<V, P> {\n\treturn new SfItem(value, params)\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@svta/cml-cmcd",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "Common Media Client Data (CMCD) encoding and decoding",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
}
|
|
53
53
|
},
|
|
54
54
|
"peerDependencies": {
|
|
55
|
-
"@svta/cml-structured-field-values": "1.1.
|
|
56
|
-
"@svta/cml-utils": "1.
|
|
55
|
+
"@svta/cml-structured-field-values": "1.1.1",
|
|
56
|
+
"@svta/cml-utils": "1.3.0"
|
|
57
57
|
}
|
|
58
58
|
}
|