@ceeblue/web-utils 7.2.0 → 7.3.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.
@@ -1 +1 @@
1
- {"version":3,"file":"web-utils.js","sources":["../src/BinaryReader.ts","../node_modules/tslib/tslib.es6.js","../src/Util.ts","../src/BinaryWriter.ts","../src/Log.ts","../src/BitReader.ts","../src/ByteRate.ts","../src/NetAddress.ts","../src/Connect.ts","../src/EventEmitter.ts","../src/FixMap.ts","../src/Queue.ts","../src/Numbers.ts","../src/SDP.ts","../src/WebSocketReliable.ts","../src/EpochTime.ts","../src/ui/UIMetrics.ts","../index.ts"],"sourcesContent":["/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n/**\n * BinaryReader allows to read binary data\n */\nconst _decoder = new TextDecoder();\n\nexport class BinaryReader {\n private _data: Uint8Array;\n private _size: number;\n private _position: number;\n private _view: DataView;\n\n constructor(data: BufferSource) {\n this._data =\n 'buffer' in data ? new Uint8Array(data.buffer, data.byteOffset, data.byteLength) : new Uint8Array(data);\n this._size = this._data.byteLength;\n this._position = 0;\n this._view = new DataView(this._data.buffer, this._data.byteOffset, this._size);\n }\n\n data(): Uint8Array {\n return this._data;\n }\n size(): number {\n return this._size;\n }\n\n available(): number {\n return this._size - this._position;\n }\n value(position: number = this._position): number {\n return this._data[position];\n }\n position(): number {\n return this._position;\n }\n reset(position = 0) {\n this._position = Math.max(0, position > this._size ? this._size : position);\n }\n\n shrink(available: number): number {\n const rest = this._size - this._position;\n if (available > rest) {\n return rest;\n }\n this._size = this._position + available;\n return available;\n }\n\n next(count = 1): number {\n const rest = this._size - this._position;\n if (count > rest) {\n count = rest;\n }\n this._position = Math.max(0, this._position + count);\n return count;\n }\n\n read8(): number {\n return this.next(1) === 1 ? this._view.getUint8(this._position - 1) : 0;\n }\n read16(): number {\n return this.next(2) === 2 ? this._view.getUint16(this._position - 2) : 0;\n }\n read24(): number {\n return this.next(3) === 3\n ? (this._view.getUint16(this._position - 3) << 8) | (this._view.getUint8(this._position - 1) & 0xff)\n : 0;\n }\n read32(): number {\n return this.next(4) === 4 ? this._view.getUint32(this._position - 4) : 0;\n }\n read64(): number {\n if (this.next(8) !== 8) {\n return 0;\n }\n return this._view.getUint32(this._position - 8) * 4294967296 + this._view.getUint32(this._position - 4);\n }\n readFloat(): number {\n return this.next(4) === 4 ? this._view.getFloat32(this._position - 4) : 0;\n }\n readDouble(): number {\n return this.next(8) === 8 ? this._view.getFloat64(this._position - 8) : 0;\n }\n read7Bit(bytes = 5): number {\n let result: number = 0;\n let factor: number = 1;\n while (this.available()) {\n const byte = this.read8();\n result += (byte & 0x7f) * factor;\n if (!(byte & 0x80)) {\n break;\n }\n factor *= 128;\n }\n return result;\n }\n readString(): string {\n let i = this._position;\n while (i < this._size && this._data[i]) {\n ++i;\n }\n const result = this.read(i - this._position);\n this.next(); // skip the 0 termination\n return _decoder.decode(result);\n }\n\n readHex(size: number): string {\n let hex = '';\n while (size-- > 0) {\n hex += ('0' + this.read8().toString(16)).slice(-2);\n }\n return hex;\n }\n\n /**\n * Read bytes, to convert bytes to string use String.fromCharCode(...reader.read(size)) or Util.stringify\n * @param {UInt32} size\n */\n read(size = this.available()): Uint8Array {\n if (this.available() < size) {\n return new Uint8Array(size); // default value = empty bytearray!\n }\n const pos = this._position;\n return this._data.subarray(pos, Math.max(pos, (this._position += size)));\n }\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\nconst _decoder = new TextDecoder();\nconst _encoder = new TextEncoder();\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nconst _perf = performance; // to increase x10 now performance!\n\n/**\n * Some basic utility functions\n */\n\n/**\n * An empty lambda function, pratical to disable default behavior of function or events which are not expected to be null\n * @example\n * console.log = Util.EMPTY_FUNCTION; // disable logs without breaking calls\n */\nexport const EMPTY_FUNCTION = () => {};\n\n/**\n * Returns an efficient timestamp in milliseconds elapsed since {@link performance.timeOrigin},\n * representing the start of the current JavaScript execution context.\n *\n * Note: Each Web Worker runs in a separate JS context, so timestamps\n * are not directly comparable between different workers. Use {@link unixTime}\n * for comparable timestamps across different Web Workers.\n */\nexport function time(): number {\n return Math.floor(_perf.now());\n}\n\n/**\n * Returns an efficient Unix timestamp in milliseconds.\n *\n * Unix timestamps are universally comparable across different JavaScript\n * contexts (e.g., Web Workers), as they reference the number of milliseconds\n * elapsed since January 1, 1970 (UNIX epoch).\n */\nexport function unixTime(): number {\n return Math.floor(_perf.timeOrigin + _perf.now());\n}\n\n/**\n * Parse query and returns it in an easy-to-use Javascript object form\n * @param urlOrQueryOrSearch string, url, or searchParams containing query. If not set it uses `location.search` to determinate query.\n * @returns An javascript object containing each option\n */\nexport function options(\n urlOrQueryOrSearch: URL | URLSearchParams | string | object | undefined = typeof location === 'undefined'\n ? undefined\n : location\n): any {\n if (!urlOrQueryOrSearch) {\n return {};\n }\n try {\n const url: any = urlOrQueryOrSearch;\n urlOrQueryOrSearch = new URL(url).searchParams;\n } catch (e) {\n if (typeof urlOrQueryOrSearch == 'string') {\n if (urlOrQueryOrSearch.startsWith('?')) {\n urlOrQueryOrSearch = urlOrQueryOrSearch.substring(1);\n }\n urlOrQueryOrSearch = new URLSearchParams(urlOrQueryOrSearch);\n }\n }\n // works same if urlOrQueryOrSearch is null, integer, or a already object etc...\n return objectFrom(urlOrQueryOrSearch, { withType: true, noEmptyString: true });\n}\n\n/**\n * Returns an easy-to-use Javascript object something iterable, such as a Map, Set, or Array\n * @param value iterable input\n * @param params.withType `false`, if set it tries to cast string value to a JS number/boolean/undefined/null type.\n * @param params.noEmptyString `false`, if set it converts empty string value to a true boolean, usefull to allow a `if(result.key)` check for example\n * @returns An javascript object\n */\nexport function objectFrom(value: any, params: { withType: boolean; noEmptyString: boolean }): any {\n params = Object.assign({ withType: false, noEmptyString: false }, params);\n const obj: any = {};\n if (!value) {\n return obj;\n }\n for (const [key, val] of iterableEntries(value)) {\n value = val;\n if (params.withType && value != null && value.substring) {\n if (value) {\n const number = Number(value);\n if (isNaN(number)) {\n switch (value.toLowerCase()) {\n case 'true':\n value = true;\n break;\n case 'false':\n value = false;\n break;\n case 'null':\n value = null;\n break;\n case 'undefined':\n value = undefined;\n break;\n }\n } else {\n value = number;\n }\n } else if (params.noEmptyString) {\n // if empty string => TRUE to allow a if(options.key) check for example\n value = true;\n }\n }\n if (obj[key]) {\n if (!Array.isArray(obj[key])) {\n obj[key] = new Array(obj[key]);\n }\n obj[key].push(value);\n } else {\n obj[key] = value;\n }\n }\n return obj;\n}\n\n/**\n * Returns a IterableIterator<[string, any]> from any iterable input like Map, Set, Array, or Object.\n *\n * For all other types of values (including `null` or `undefined`) it returns an empty iterator.\n *\n * @param value An iterable input\n * @returns a IterableIterator<[string, any]>\n */\nexport function iterableEntries(value: any): IterableIterator<[string, any]> {\n if (!value) {\n return (function* () {})();\n }\n if (typeof value.entries === 'function') {\n value = value.entries();\n }\n if (typeof value[Symbol.iterator] === 'function') {\n return value;\n }\n return (function* () {\n for (const key in value) {\n yield [key.toString(), value[key]];\n }\n })();\n}\n\n/**\n * Converts various data types, such as objects, strings, exceptions, errors,\n * or numbers, into a string representation. Since it offers a more comprehensive format,\n * this function is preferred to `JSON.stringify()`.\n * @param obj Any objects, strings, exceptions, errors, or number\n * @param params.space `''`, allows to configure space in the string representation\n * @param params.decimal `2`, allows to choose the number of decimal to display in the string representation\n * @param params.recursion `1`, recursion depth to stringify recursively every object value until this depth, beware if a value refers to a already parsed value an infinite loop will occur\n * @param params.noBin `false`, when set skip binary encoding and write inplace a bin-length information\n * @returns the final string representation\n */\n// Online Javascript Editor for free\n// Write, Edit and Run your Javascript code using JS Online Compiler\nexport function stringify(\n obj: any,\n params: { space?: string; decimal?: number; recursion?: number; noBin?: boolean } = {}\n): string {\n params = Object.assign({ space: ' ', decimal: 2, recursion: 1, noBin: false }, params);\n if (obj == null) {\n return String(obj);\n }\n const error = obj.error || obj.message;\n if (error) {\n // is a error!\n obj = error;\n }\n // number\n if (obj.toFixed) {\n return obj.toFixed(Number(params.decimal) || 0);\n }\n if (obj.byteLength != null && obj?.[Symbol.iterator]) {\n // Binary!\n if (!params.noBin) {\n return _decoder.decode(obj);\n }\n return '[' + obj.byteLength + '#bytes]';\n }\n // boolean or string type or stop recursivity\n if (typeof obj === 'boolean' || obj.substring || !params.recursion) {\n // is already a string OR has to be stringified\n return String(obj);\n }\n\n const space = params.space || '';\n\n if (Array.isArray(obj)) {\n // Array!\n let res = '';\n for (const value of obj) {\n res += (res ? ',' : '[') + space;\n res += stringify(value, Object.assign({ ...params }, { recursion: params.recursion - 1 }));\n }\n return (res += space + ']');\n }\n let res = '{';\n for (const name in obj) {\n if (res.length > 1) {\n res += ',';\n }\n res += space + name + ':';\n res += stringify(obj[name], Object.assign({ ...params }, { recursion: params.recursion - 1 })) + space;\n }\n return (res += '}');\n}\n\n/**\n * Encode a string to a binary representation\n * @param value string value to convert\n * @returns binary conversion\n */\nexport function toBin(value: string): Uint8Array {\n return _encoder.encode(value);\n}\n\n/**\n * Execute a promise in a safe way with a timeout if caller doesn't resolve it in the accurate time\n */\nexport function safePromise<T>(timeout: number, promise: Promise<T>) {\n // Returns a race between our timeout and the passed in promise\n let timer: NodeJS.Timeout;\n return Promise.race([\n promise instanceof Promise ? promise : new Promise(promise),\n new Promise((resolve, reject) => (timer = setTimeout(() => reject('timed out in ' + timeout + 'ms'), timeout)))\n ]).finally(() => clearTimeout(timer));\n}\n\n/**\n * Wait in milliseconds, requires a call with await keyword!\n */\nexport async function sleep(ms: number) {\n return new Promise(resolve => {\n setTimeout(resolve, ms);\n });\n}\n\n/**\n * Test equality between two value whatever their type, object and array included\n */\nexport function equal(a: any, b: any, seen = new WeakMap()): boolean {\n // 1. Check primitve identiy or NaN\n if (a === b) {\n return true;\n }\n if (Number.isNaN(a) && Number.isNaN(b)) {\n return true;\n }\n\n // 2. Check the both are complexe object\n if (Object(a) !== a || Object(b) !== b) {\n return false;\n }\n\n // 3. Catch circular reference\n if (seen.has(a)) {\n return seen.get(a) === b;\n }\n seen.set(a, b);\n\n // 4. Check « toStringTag » (Date, RegExp, Map, Set…)\n const tagA = Object.prototype.toString.call(a);\n if (tagA !== Object.prototype.toString.call(b)) {\n return false;\n }\n\n // 5. Special Case\n switch (tagA) {\n case '[object Date]':\n return a.getTime() === b.getTime();\n case '[object RegExp]':\n return a.source === b.source && a.flags === b.flags;\n case '[object Set]':\n case '[object Map]': {\n if (a.size !== b.size) {\n return false;\n }\n const aKeys = a.keys();\n const bKeys = a.keys();\n const aValues = a.values();\n const bValues = b.values();\n let aKey;\n while (!(aKey = aKeys.next()).done) {\n if (!equal(aKey.value, bKeys.next().value)) {\n return false;\n }\n const aValue = aValues.next().value;\n const bValue = bValues.next().value;\n if (aValue !== aKey && !equal(aValue, bValue)) {\n return false;\n }\n }\n return true;\n }\n }\n\n // 6. Arrays\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (!equal(a[i], b[i], seen)) {\n return false;\n }\n }\n return true;\n }\n\n // 7. Generic object : keys + symbols\n const keysA = [...Object.keys(a), ...Object.getOwnPropertySymbols(a)];\n if (keysA.length !== Object.keys(b).length + Object.getOwnPropertySymbols(b).length) {\n return false;\n }\n for (const key of keysA) {\n if (!equal(a[key], b[key], seen)) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Fetch help method adding an explicit error property when Response is NOK, with the more accurate textual error inside\n */\nexport async function fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response & { error?: string }> {\n const response = (await self.fetch(input, init)) as Response & { error?: string };\n if (!response.ok) {\n if (response.body) {\n response.error = await response.text();\n }\n if (!response.error) {\n response.error = response.statusText || response.status.toString() || 'Unknown error';\n }\n }\n return response;\n}\n\n/**\n * Fetch help method adding an explicit error property when Response is NOK, with the more accurate textual error inside\n * Also measure the rtt of fetching and returns it in the property Response.rtt (guaranteed to be ≥ 1),\n * supports subtracting server processing time using either the Response-Delay or CMSD-rd header when available\n *\n * WIP => replace the current implementation to use Resource Timing API\n */\nexport async function fetchWithRTT(\n input: RequestInfo | URL,\n init?: RequestInit\n): Promise<Response & { rtt: number; error?: string }> {\n // A first OPTIONS request to establish a connection (keep-alive)\n await fetch(input, { ...init, method: 'OPTIONS' });\n // Actual RTT measurement\n const startTime = time();\n const response = (await fetch(input, init)) as Response & { rtt: number; error?: string };\n response.rtt = time() - startTime;\n // remove the ResponseDelay if indicated by the server\n let responseDelay = Number(response.headers.get('Response-Delay')) || 0;\n if (!responseDelay) {\n // search if we have a CMSD info?\n // cmsd-dynamic \"fly\";rd=1\n const cmsd = response.headers.get('cmsd-dynamic');\n if (cmsd) {\n for (const param of cmsd.split(';')) {\n const [name, value] = param.split('=');\n if (name.trim().toLowerCase() === 'rd') {\n responseDelay = Number(value) || responseDelay;\n }\n }\n }\n }\n response.rtt = Math.max(1, response.rtt - responseDelay);\n return response;\n}\n\n/**\n * Get Extension part from path\n * @param path path to parse\n * @returns the extension\n */\nexport function getExtension(path: string): string {\n const dot = path.lastIndexOf('.');\n const ext = dot >= 0 && dot > path.lastIndexOf('/') ? path.substring(dot) : '';\n return ext;\n}\n\n/**\n * Get File part from path\n * @param path path to parse\n * @returns the file name\n */\nexport function getFile(path: string): string {\n return path.substring(path.lastIndexOf('/') + 1);\n}\n\n/**\n * Get Base File part from path, without extension\n * @param path path to parse\n * @returns the base file name\n */\nexport function getBaseFile(path: string): string {\n const dot = path.lastIndexOf('.');\n const file = path.lastIndexOf('/') + 1;\n return dot >= 0 && dot >= file ? path.substring(file, dot) : path.substring(file);\n}\n\nfunction codesFromString(value: string): Array<number> {\n const codes = [];\n for (let i = 0; i < value.length; ++i) {\n codes.push(value.charCodeAt(i));\n }\n return codes;\n}\n\n/**\n * String Trim function with customizable chars\n * @param value string to trim\n * @param chars chars to use to trim\n * @returns string trimmed\n */\nexport function trim(value: string, chars: string = ' '): string {\n const codes = codesFromString(chars);\n let start = 0;\n while (start < value.length && codes.includes(value.charCodeAt(start))) {\n ++start;\n }\n let end = value.length;\n while (end > 0 && codes.includes(value.charCodeAt(end - 1))) {\n --end;\n }\n return value.substring(start, end);\n}\n\n/**\n * String Trim Start function with customizable chars\n * @param value string to trim start\n * @param chars chars to use to trim start\n * @returns string trimmed\n */\nexport function trimStart(value: string, chars: string = ' '): string {\n const codes = codesFromString(chars);\n let i = 0;\n while (i < value.length && codes.includes(value.charCodeAt(i))) {\n ++i;\n }\n return value.substring(i);\n}\n\n/**\n * String Trim End function with customizable chars\n * @param value string to trim end\n * @param chars chars to use to trim end\n * @returns string trimmed\n */\nexport function trimEnd(value: string, chars: string = ' '): string {\n const codes = codesFromString(chars);\n let i = value.length;\n while (i > 0 && codes.includes(value.charCodeAt(i - 1))) {\n --i;\n }\n return value.substring(0, i);\n}\n\n/**\n * Wraps an object with a Proxy that makes property access case-insensitive.\n *\n * Property lookup (e.g. `obj.Foo` or `obj.foo`) will resolve to the same underlying key, regardless of casing.\n * Only affects string-based property access (not symbols).\n *\n * @template T\n * @param {T} obj - The original object.\n * @returns {T} A proxied object with case-insensitive property access.\n */\nexport function caseInsensitive<T extends Record<string, any>>(obj: any): T {\n return new Proxy(obj, {\n get(target, prop, receiver) {\n if (typeof prop === 'string') {\n const key = Object.keys(target).find(k => k.toLowerCase() === prop.toLowerCase());\n if (key !== undefined) {\n return Reflect.get(target, key, receiver);\n }\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\nimport * as Util from './Util';\n\n/**\n * BinaryWriter allows to write data in its binary form\n */\nexport class BinaryWriter {\n get view(): DataView {\n if (!this._view) {\n this._view = new DataView(this._data.buffer, this._data.byteOffset, this._data.byteLength);\n }\n return this._view;\n }\n get capacity(): number {\n return this._data.byteLength;\n }\n\n private _data: Uint8Array;\n private _size: number;\n private _view?: DataView;\n private _isConst?: boolean;\n\n constructor(dataOrSize: BufferSource | number = 64, offset: number = 0, length?: number) {\n if (typeof dataOrSize == 'number') {\n // allocate new buffer\n this._data = new Uint8Array(dataOrSize);\n this._size = 0;\n } else if ('buffer' in dataOrSize) {\n // append to existing data!\n this._data = new Uint8Array(dataOrSize.buffer, dataOrSize.byteOffset, dataOrSize.byteLength);\n this._size = dataOrSize.byteLength;\n } else {\n // overrides data\n this._isConst = true; // better than boolean for memory usage\n if (length == null) {\n // /!\\ Safari does not support undefined length, so we need to use byteLength instead\n length = dataOrSize.byteLength;\n }\n this._data = new Uint8Array(dataOrSize, offset, length);\n this._size = 0;\n }\n }\n\n data(): Uint8Array {\n return new Uint8Array(this._data.buffer, this._data.byteOffset, this._size);\n }\n size(): number {\n return this._size || 0;\n }\n\n next(count = 1): BinaryWriter {\n return this.reserve((this._size += count));\n }\n clear(size = 0): BinaryWriter {\n return this.reserve((this._size = size));\n }\n\n /**\n * Write binary data\n * @param data\n */\n write(data: ArrayLike<number> | BufferSource | string): BinaryWriter {\n let bin: Uint8Array | ArrayLike<number>;\n if (typeof data === 'string') {\n // Convertit la chaîne en Uint8Array\n bin = Util.toBin(data);\n } else if (data instanceof ArrayBuffer) {\n bin = new Uint8Array(data);\n } else if ('buffer' in data) {\n bin = new Uint8Array(data.buffer, data.byteOffset ?? 0, data.byteLength);\n } else {\n bin = data;\n }\n this.reserve(this._size + bin.length);\n this._data.set(bin, this._size);\n this._size += bin.length;\n return this;\n }\n\n write8(value: number): BinaryWriter {\n if (value > 0xff) {\n // cast to 8bits range\n value = 0xff;\n }\n this.reserve(this._size + 1);\n this._data[this._size++] = value;\n return this;\n }\n\n write16(value: number): BinaryWriter {\n if (value > 0xffff) {\n // cast to 16bits range\n value = 0xffff;\n }\n this.reserve(this._size + 2);\n this.view.setUint16(this._size, value);\n this._size += 2;\n return this;\n }\n\n write24(value: number): BinaryWriter {\n if (value > 0xffffff) {\n // cast to 24bits range\n value = 0xffffff;\n }\n this.reserve(this._size + 3);\n this.view.setUint16(this._size, value >> 8);\n this.view.setUint8((this._size += 2), value & 0xff);\n ++this._size;\n return this;\n }\n write32(value: number): BinaryWriter {\n if (value > 0xffffffff) {\n // cast to 32bits range\n value = 0xffffffff;\n }\n this.reserve(this._size + 4);\n this.view.setUint32(this._size, value);\n this._size += 4;\n return this;\n }\n\n write64(value: number): BinaryWriter {\n this.write32(value / 4294967296);\n return this.write32(value & 0xffffffff);\n }\n\n writeFloat(value: number): BinaryWriter {\n this.reserve(this._size + 4);\n this.view.setFloat32(this._size, value);\n this._size += 4;\n return this;\n }\n\n writeDouble(value: number): BinaryWriter {\n this.reserve(this._size + 8);\n this.view.setFloat64(this._size, value);\n this._size += 8;\n return this;\n }\n\n write7Bit(value: number): BinaryWriter {\n let byte = value & 0x7f;\n while ((value = Math.floor(value / 0x80))) {\n // equivalent to >>=7 for JS!\n this.write8(0x80 | byte);\n byte = value & 0x7f;\n }\n return this.write8(byte);\n }\n\n writeString(value: string): BinaryWriter {\n return this.write(Util.toBin(value)).write8(0);\n }\n\n writeHex(value: string): BinaryWriter {\n for (let i = 0; i < value.length; i += 2) {\n this.write8(parseInt(value.substring(i, i + 2), 16));\n }\n return this;\n }\n\n reserve(size: number): BinaryWriter {\n if (!this._data) {\n throw Error('buffer not writable');\n }\n if (size <= this._data.byteLength) {\n return this;\n }\n if (this._isConst) {\n throw Error('writing exceeds maximum ' + this._data.byteLength + ' bytes limit');\n }\n\n --size;\n size |= size >> 1;\n size |= size >> 2;\n size |= size >> 4;\n size |= size >> 8;\n size |= size >> 16;\n ++size;\n\n const data = new Uint8Array(size);\n data.set(this._data); // copy old buffer!\n this._data = data;\n this._view = undefined; // release view\n return this;\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\nimport * as Util from './Util';\n\n/**\n * Log levels\n */\nexport enum LogLevel {\n ERROR = 'error',\n WARN = 'warn',\n INFO = 'info',\n DEBUG = 'debug'\n}\n\n/**\n * Log interface to deal with log everywhere:\n * - filter log level: filter log level independantly of the browser\n * - subscribe logs: listen logs to effectuate some specific job related logs\n * - intercept logs: intercept logs to change the default behavior\n * - redirect logs: redirect logs to one other logger engine\n * - redefine logs: change log text like adding a prefix\n *\n * You have 4 {@link LogLevel} 'error','warn','info',and 'debug', as commonly managed by browsers.\n * You can use {@link ILog.level} or {@link ILog.on} to customer log level and behavior.\n *\n * @example\n * // filter log level globally, independantly of the browser\n * import { log } from '@ceeblue/web-utils';\n * log.level = LogLevel.WARN; // displays errors and warns\n *\n * // filter log level only for Player compoment\n * player.log.level = false; // no logs at all for player compoment\n *\n * // Intercept and redirect all the logs to the console (default behavior)\n * import { log } from '@ceeblue/web-utils';\n * log.on = (level:LogLevel,args:unknown[]) => {\n * console[level](...args.splice(0)); // args is empty after this call = final interception\n * }\n *\n * // Intercept the logs from Player compoment and displays only WARN logs\n * player.log.on = (level:LogLevel,args:unknown[]) => {\n * if (level !== LogLevel.WARN) {\n * args.length = 0; // args is empty after this call = final interception\n * }\n * }\n *\n * // Subscribe and redirect all the logs to a file logger\n * import { log } from '@ceeblue/web-utils';\n * log.on = (level:LogLevel,args:unknown[]) => {\n * fileLogger[level](...args); // args stays unchanged to let's continue the default behavior\n * }\n *\n * // Redefine the log to add some prefix indication\n * class Player {\n * connector = new Connector();\n * constructor() {\n * connector.log = this.log.bind(this,\"Connector log:\");\n * }\n * }\n *\n */\nexport interface ILog {\n /**\n * Build a log\n */\n (...args: unknown[]): Log;\n /**\n * Intercept,redefine or redirect any log\n * If you clear args you intercept the log and nothing happen more after this call.\n * @param type log level\n * @param args args\n * @returns\n */\n on: (level: LogLevel, args: unknown[]) => void;\n /**\n * Change log level, default log level is {@link LogLevel.INFO},\n * Boolean can be user to lets pass all the logs with `true` or disables all the logs with `false`.\n * @note To debug production code without modifying it you can use a special query parameter\n * called !cb-override-log-level to override this configuration.\n */\n level?: LogLevel | boolean;\n}\n\n// check coder issuer: everytime we don't forget to use the built Log\nlet _logging = 0;\nsetInterval(() => {\n console.assert(_logging === 0, _logging.toFixed(), 'calls to log was useless');\n}, 10000);\n\n// !cb-override-log-level\nconst _overrideLogLevel = Util.options()['!cb-override-log-level'];\n\nconst _charLevels = new Array(128);\n_charLevels[101] = _charLevels[69] = 1; // error\n_charLevels[119] = _charLevels[87] = 2; // warn\n_charLevels[105] = _charLevels[73] = 3; // info\n_charLevels[100] = _charLevels[68] = 4; // debug\n\n/**\n * Log instance\n */\nexport class Log {\n get error() {\n return this._bind(LogLevel.ERROR);\n }\n get warn() {\n return this._bind(LogLevel.WARN);\n }\n get info() {\n return this._bind(LogLevel.INFO);\n }\n get debug() {\n return this._bind(LogLevel.DEBUG);\n }\n\n private _args: unknown[];\n private _done?: boolean;\n private _log: ILog;\n\n constructor(log: ILog, ...args: unknown[]) {\n if (!args.length) {\n // cannot have 0 args to be called correctly!\n args.push(undefined);\n }\n this._args = args;\n this._log = log;\n ++_logging;\n }\n\n private _onLog(localLog: ILog, level: LogLevel): boolean {\n // we take like log-level by priority order:\n // 1- the overrideLogLevel\n // 2- the localLog.level\n // 3- the global log.level\n // 4- LogLevel.INFO\n const logLevel = _overrideLogLevel ?? localLog.level ?? log.level ?? LogLevel.INFO;\n if (logLevel === false) {\n // explicit null, no log at all!\n return false;\n }\n if (logLevel !== true && _charLevels[level.charCodeAt(0)] > _charLevels[logLevel.charCodeAt(0)]) {\n return false;\n }\n if (localLog.on) {\n localLog.on(level, this._args);\n }\n return this._args.length ? true : false;\n }\n\n private _bind(level: LogLevel) {\n if (!this._done) {\n this._done = true;\n --_logging;\n }\n // call the global onLog in first (global filter)\n if (!this._onLog(log, level)) {\n return Util.EMPTY_FUNCTION;\n }\n // call the local onLog (local filter)\n if (this._log !== log && !this._onLog(this._log, level)) {\n return Util.EMPTY_FUNCTION;\n }\n // if not intercepted display the log\n return console[level].bind(console, ...this._args);\n }\n}\n\n/**\n * Inherits from this class to use logs\n */\nexport class Loggable {\n /**\n * Start a log\n * @param args\n * @returns a Log object with the levels of log to call\n */\n log = ((...args: unknown[]): Log => {\n return new Log(this.log, ...args);\n }) as ILog;\n}\n\n/**\n * Global log\n */\nexport const log = ((...args: unknown[]) => {\n return new Log(log, ...args);\n}) as ILog;\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\nimport { Loggable } from './Log';\n\n/**\n * BitReader allows to read binary data bit by bit\n */\nexport class BitReader extends Loggable {\n private _data: Uint8Array;\n private _size: number;\n private _position: number;\n private _bit: number;\n\n constructor(data: BufferSource) {\n super();\n if ('buffer' in data) {\n this._data = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n } else {\n this._data = new Uint8Array(data);\n }\n this._size = this._data.byteLength;\n this._position = 0;\n this._bit = 0;\n }\n\n data(): Uint8Array {\n return this._data;\n }\n size(): number {\n return this._size;\n }\n available(): number {\n return (this._size - this._position) * 8 - this._bit;\n }\n\n next(count = 1): number {\n let gotten = 0;\n while (this._position !== this._size && count--) {\n ++gotten;\n if (++this._bit === 8) {\n this._bit = 0;\n ++this._position;\n }\n }\n return gotten;\n }\n read(count = 1): number {\n let result = 0;\n while (this._position !== this._size && count--) {\n result <<= 1;\n if (this._data[this._position] & (0x80 >> this._bit++)) {\n result |= 1;\n }\n if (this._bit === 8) {\n this._bit = 0;\n ++this._position;\n }\n }\n return result;\n }\n read8(): number {\n return this.read(8);\n }\n read16(): number {\n return this.read(16);\n }\n read24(): number {\n return this.read(24);\n }\n read32(): number {\n return this.read(32);\n }\n\n readExpGolomb(): number {\n let i = 0;\n while (!this.read()) {\n if (!this.available()) {\n return 0;\n }\n ++i;\n }\n const result = this.read(i);\n if (i > 15) {\n this.log('Exponential-Golomb code exceeding unsigned 16 bits').warn();\n return 0;\n }\n return result + (1 << i) - 1;\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\nimport * as Util from './Util';\n\n/**\n * Class to compute a weighted average byte rate over a specified time interval.\n *\n * This class continuously tracks data transmission and computes the byte rate\n * based on a weighted average, considering both the duration and the number of\n * bytes in each sample. It allows for real-time monitoring of bandwidth usage\n * and provides mechanisms to dynamically adjust the measurement interval.\n *\n * Features:\n * - Computes the byte rate using a **weighted average** approach.\n * - Allows setting a custom interval for tracking.\n * - Supports dynamic clipping to manually shrink the observation window.\n */\nexport class ByteRate {\n /**\n * Raised when new bytes are added\n */\n onBytes(bytes: number) {}\n\n /**\n * Returns the interval used for computing the byte rate\n */\n get interval() {\n return this._interval;\n }\n\n /**\n * Sets a new interval for computing the average byte rate\n */\n set interval(value: number) {\n this._interval = value;\n this.updateSamples();\n }\n\n private _interval: number;\n private _bytes!: number;\n private _time!: number; // beginning of the samples !\n private _samples!: Array<{ time: number; bytes: number; clip: boolean }>;\n private _clip!: boolean;\n\n /**\n * Constructor initializes the ByteRate object with a specified interval (default: 1000ms).\n * It sets up necessary variables to track byte rate over time.\n *\n * @param interval - Time interval in milliseconds to compute the byte rate.\n */\n constructor(interval = 1000) {\n this._interval = interval;\n this.clear();\n }\n\n /**\n * Returns the computed byte rate rounded to the nearest integer\n */\n value(): number {\n return Math.round(this.exact());\n }\n\n /**\n * Computes the exact byte rate in bytes per second\n */\n exact(): number {\n // compute rate/s\n this.updateSamples();\n const duration = Util.time() - this._time;\n return duration ? (this._bytes / duration) * 1000 : 0;\n }\n\n /**\n * Adds a new byte sample to the tracking system.\n * Updates the list of samples and recomputes the byte rate\n *\n * @param bytes - Number of bytes added in this interval\n */\n addBytes(bytes: number): ByteRate {\n const time = Util.time();\n const lastSample = this.updateSamples(time)[this._samples.length - 1];\n const lastTime = lastSample?.time ?? this._time;\n if (time > lastTime) {\n this._samples.push({ bytes, time, clip: false });\n } else {\n // no new duration => attach byte to last-one\n if (!lastSample) {\n // Ignore, was before our ByteRate scope !\n return this;\n }\n lastSample.bytes += bytes;\n }\n this._bytes += bytes;\n this.onBytes(bytes);\n return this;\n }\n\n /**\n * Clears all recorded byte rate data.\n */\n clear(): ByteRate {\n this._bytes = 0;\n this._time = Util.time();\n this._samples = [];\n this._clip = false;\n return this;\n }\n\n /**\n * Clips the byte rate tracking by marking the last sample as clipped.\n * If a previous clip exists, removes the clipped sample and all preceding samples.\n * Allows to shrink the interval manually between two positions.\n */\n clip(): ByteRate {\n if (this._clip) {\n this._clip = false;\n let removes = 0;\n for (const sample of this._samples) {\n this._bytes -= sample.bytes;\n ++removes;\n this._time = sample.time;\n if (sample.clip) {\n break;\n }\n }\n this._samples.splice(0, removes);\n }\n const lastSample = this._samples[this._samples.length - 1];\n if (lastSample) {\n lastSample.clip = true;\n this._clip = true;\n }\n return this;\n }\n\n private updateSamples(now = Util.time()) {\n // Remove obsolete sample\n const timeOK = now - this._interval;\n let removes = 0;\n let sample;\n while (this._time < timeOK && (sample = this._samples[removes])) {\n this._bytes -= sample.bytes;\n if (sample.clip) {\n this._clip = sample.clip = false;\n }\n if (sample.time > timeOK) {\n // only a part of the sample to delete !\n sample.bytes *= (sample.time - timeOK) / (sample.time - this._time);\n this._time = timeOK;\n this._bytes += sample.bytes;\n break;\n }\n ++removes;\n this._time = sample.time;\n }\n\n this._samples.splice(0, removes);\n return this._samples;\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\n/**\n * Help class to manipulate and parse a net address. The Address can be only the domain field,\n * or a URL format with protocol and path part `(http://)domain(:port/path)`\n * @example\n * const address = new Address('nl-ams-42.live.ceeblue.tv:80');\n * console.log(address.domain) // 'nl-ams-42.live.ceeblue.tv'\n * console.log(address.port) // '80'\n * console.log(address) // 'nl-ams-42.live.ceeblue.tv:80'\n */\nexport class NetAddress {\n /**\n * Static help function to build an end point from an address `(proto://)domain(:port/path)`\n *\n * Mainly it fix the protocol, in addition if:\n * - the address passed is securized (TLS) and protocol is not => it tries to fix protocol to get its securize version\n * - the address passed is non securized and protocol is (TLS) => it tries to fix protocol to get its unsecurized version\n * @param protocol protocol to set in the end point returned\n * @param address string address to fix with protocol as indicated\n * @returns the end point built\n * @example\n * console.log(NetAddress.fixProtocol('ws','http://domain/path')) // 'ws://domain/path'\n * console.log(NetAddress.fixProtocol('ws','https://domain/path')) // 'wss://domain/path'\n * console.log(NetAddress.fixProtocol('wss','http://domain/path')) // 'ws://domain/path'\n */\n static fixProtocol(protocol: string, address: string): string {\n // Remove leading slashes for absolute pathes!\n address = address.replace(/^[\\/]+/, '');\n const found = address.indexOf('://');\n // isolate protocol is present in address\n if (found >= 0) {\n // In this case replace by protocol in keeping SSL like given in address\n if (found > 2 && address.charAt(found - 1).toLowerCase() === 's') {\n // SSL!\n if (protocol.length <= 2 || !protocol.endsWith('s')) {\n protocol += 's'; // Add SSL\n }\n } else {\n // Not SSL!\n if (protocol.length > 2 && protocol.endsWith('s')) {\n protocol = protocol.slice(0, -1); // Remove SSL\n }\n }\n // Build address!\n address = address.substring(found + 3);\n }\n return protocol + '://' + address;\n }\n\n /**\n * The host part from address `(http://)domain:port/path)`\n */\n get host(): string {\n return this._host;\n }\n\n /**\n * The domain part from address `(http://)domain(:port/path)`\n */\n get domain(): string {\n return this._domain;\n }\n /**\n * The port part from address `(http://)domain(:port/path)`, or defaultPort if passed in NetAddress constructor\n */\n get port(): number | undefined {\n return this._port;\n }\n\n toString(): string {\n return this._address;\n }\n /**\n * @returns the string address as passed in the constructor\n * @override\n */\n valueOf(): string {\n return this._address;\n }\n\n private _address: string;\n private _domain: string;\n private _host: string;\n private _port?: number;\n /**\n * Build a NetAddress object and parse address\n * @param address string address to parse, accept an url format with protocol and path `(http://)domain(:port/path)`\n * @param defaultPort set a default port to use if there is no port in the string address parsed\n */\n constructor(address: string, defaultPort?: number) {\n this._address = address;\n\n // Remove Protocol\n let pos = address.indexOf('/');\n if (pos >= 0) {\n // Remove ://\n if (address.charCodeAt(pos + 1) === 47) {\n // has //\n if (pos > 0) {\n if (address.charCodeAt(pos - 1) === 58) {\n // has ://\n address = address.substring(pos + 2);\n } // something else #//\n } else {\n // otherwise starts by //\n address = address.substring(2);\n }\n } else if (!pos) {\n // starts by /, remove it\n address = address.substring(1);\n } // else something else #/\n }\n\n // Remove Path!\n pos = address.indexOf('/');\n if (pos >= 0) {\n address = address.substring(0, pos);\n }\n\n this._host = address;\n this._domain = address;\n this._port = defaultPort;\n\n const domainPortMatch = this._host.match(/^(?:\\[([0-9a-fA-F:]+)\\]|([^:/?#]+))(?::(\\d+))?(?=[/#?]|$)/);\n if (domainPortMatch) {\n this._domain = domainPortMatch[1] || domainPortMatch[2];\n if (domainPortMatch[3]) {\n const port = parseInt(domainPortMatch[3]);\n if (port >= 0 && port <= 0xffff) {\n this._port = port;\n }\n }\n }\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\nimport * as Util from './Util';\nimport { NetAddress } from './NetAddress';\nimport { log } from './Log';\n\n/**\n * Parameters of a key system for encrypted streams (DRM)\n *\n * If the key system is a string, it's the URL of the license server.\n *\n * If the key system is an object, it's a key system configuration with more parameters.\n */\nexport type KeySystem =\n | string\n | {\n /**\n * The license server URL\n */\n licenseUrl: string;\n /**\n * The certificate URL if needed (for FairPlay)\n *\n * Or directly the certificate\n */\n certificate?: string | Uint8Array;\n /**\n * The additional HTTP headers to send to the license server\n */\n headers?: Record<string, string>;\n /**\n * Audio robustness level\n *\n * A list of robustness levels, prioritized by the order of the array.\n */\n audioRobustness?: string[];\n /**\n * Video robustness level\n *\n * A list of robustness levels, prioritized by the order of the array.\n */\n videoRobustness?: string[];\n };\n\n/**\n * Parameters of connections\n */\nexport type Params = {\n /**\n * endPoint to connect. Can be only a host(:port) but accept also a full url of connection,\n * it can help to force a path or indicate a protocol preference\n */\n endPoint: string;\n /**\n * The name of the stream to join.\n * If `endPoint` is a complete URL and `streamName` is not provided, {@link buildURL} will set this parameter automatically\n * using the second part of the URL's path (the first part being the protocol name), or the first path if no other part exists.\n */\n streamName?: string;\n /**\n * Optional access token to use to join a private stream\n */\n accessToken?: string;\n /**\n * iceServer to use while connecting to a WebRTC stream\n */\n iceServer?: RTCIceServer; // Authentication value\n /**\n * Map of keys to content protection settings for encrypted streams\n * The key can be \"com.apple.fps\" for example for FairPlay\n */\n contentProtection?: Record<string, KeySystem>;\n /**\n * Optional media extension (mp4, flv, ts, rts), usefull for protocol like WebRTS which supports different container type.\n * When not set, it's also an output parameter for {@link defineMediaExt} to indicate what is the media type selected\n */\n mediaExt?: string;\n /**\n * Optional query to add into the generated url of connection\n */\n query?: URLSearchParams;\n};\n\n/**\n * Type of connection\n */\nexport enum Type {\n HESP = 'HESP',\n WRTS = 'WebRTS',\n WEBRTC = 'WebRTC',\n META = 'Meta',\n DATA = 'Data'\n}\n\n/**\n * Some connection utility functions\n */\n\n/**\n * Defines the {@link Params.mediaExt} based on the type of parameters and its endpoint.\n * This method always assigns a value to params.mediaExt, defaulting to an empty string if indeterminable,\n * allowing detection of whether the function has been applied to the parameters.\n * @param type The type of parameters to define.\n * @param params The parameters for which the media extension is to be defined\n */\nexport function defineMediaExt(type: Type, params: Params) {\n // Compute appropriate mediaExt out parameter\n if (!params.mediaExt) {\n try {\n const url = new URL(params.endPoint);\n // Set mediaExt with ?ext= param when set OR url extension\n params.mediaExt = url.searchParams.get('ext') ?? Util.getExtension(Util.getFile(url.pathname));\n } catch (_) {\n // not an URL, it's only a host\n params.mediaExt = '';\n }\n }\n // Normalize mediaExt in removing the possible '.' prefix and change it to lower case\n params.mediaExt = Util.trimStart(params.mediaExt, '.').toLowerCase();\n switch (type) {\n case Type.HESP:\n params.mediaExt = 'mp4';\n break;\n case Type.WEBRTC:\n params.mediaExt = 'rtp';\n break;\n case Type.WRTS: {\n // json means a manifest file endPoint, replace with default rts media extension\n if (!params.mediaExt || params.mediaExt === 'json') {\n params.mediaExt = 'rts';\n }\n break;\n }\n case Type.META:\n params.mediaExt = 'js';\n break;\n case Type.DATA:\n params.mediaExt = 'json';\n break;\n default:\n log('Unknown params type ' + type).warn();\n break;\n }\n}\n\n/**\n * Build an URL from {@link Type | type} and {@link Params | params}\n * Can assign {@link Params.mediaExt | params.mediaExt} or {@link Params.streamName | params.streamName}\n * @param type Type of the connection wanted\n * @param params Connection parameters\n * @param protocol Optional parameter to choose the prefered protocol to connect\n * @returns The URL of connection\n */\nexport function buildURL(type: Type, params: Params, protocol: string = 'wss'): URL {\n defineMediaExt(type, params);\n\n const url = new URL(NetAddress.fixProtocol(protocol, params.endPoint));\n\n if (url.pathname.length <= 1) {\n // build ceeblue path!\n switch (type) {\n case Type.HESP:\n url.pathname = '/hesp/' + params.streamName + '/index.json';\n break;\n case Type.WEBRTC:\n url.pathname = '/webrtc/' + params.streamName;\n break;\n case Type.WRTS:\n url.pathname = '/wrts/' + params.streamName + '.' + params.mediaExt;\n break;\n case Type.META:\n url.pathname = '/json_' + params.streamName + '.js';\n break;\n case Type.DATA:\n url.pathname = '/' + params.streamName + '.json';\n break;\n default:\n log('Unknown url type ' + type).warn();\n break;\n }\n } else {\n // Host has already a path! keep it unchanged, it's user intentionnal (used with some other WHIP/WHEP server?)\n if (!params.streamName) {\n // extract the second part of the URL's path (the first part being the protocol name), or the first path if no other part exists\n const parts = url.pathname.split('/');\n params.streamName = Util.getBaseFile(parts[2] || parts[1] || parts[0]);\n }\n }\n if (params.accessToken) {\n url.searchParams.set('id', params.accessToken);\n }\n for (const [key, value] of params.query ?? []) {\n url.searchParams.set(key, value);\n }\n return url;\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\nimport { Loggable } from './Log';\n\ntype FilterOnKey<T> = T extends 'once' | 'on' ? never : T extends `on${infer R}` ? R : never;\ntype CaseVariations<T extends string> = string extends T ? string : Lowercase<T> | Capitalize<T>;\n/**\n * Extract all event keys from a class.\n * @example\n * class Logger extends EventEmitter {\n * onLog(log:string) { console.log(log); }\n * onClick(log:string) { console.log(log); }\n * }\n * type LoggerEvents = EventKeys<Logger>; // \"log\" | \"click\"\n */\ntype EventKeys<Keys> = keyof {\n [K in keyof Keys as CaseVariations<FilterOnKey<K>>]: never;\n};\n\n/**\n * A advanced EventEmitter which allows to declare event as natural function in the inheriting children class,\n * function must start by `on` prefix to be recognized as an event.\n * The function can define a behavior by default, and user can choose to redefine this behavior,\n * or add an additionnal subscription for this event.\n * In addition you can unsubscribe to multiple events with an `AbortController`\n * @example\n * class Logger extends EventEmitter {\n * onLog(log:string) { console.log(log); } // behavior by default\n *\n * test() {\n * // raise event onLog\n * this.onLog('test');\n * }\n * }\n *\n * const logger = new Logger();\n * logger.test(); // displays a log 'test'\n *\n * // redefine default behavior to display nothing\n * logger.onLog = () => {}\n * logger.test(); // displays nothing\n *\n * // add an additionnal subscription\n * logger.on('log', console.log);\n * logger.test(); // displays a log 'test'\n *\n * // remove the additionnal subscription\n * logger.off('log', console.log);\n * logger.test(); // displays nothing\n *\n * // add two additionnal subscriptions with a AbortController\n * const controller = new AbortController();\n * logger.on('log', log => console.log(log), controller);\n * logger.on('log', log => console.error(log), controller);\n * logger.test(); // displays a log 'test' + an error 'test'\n *\n * // Unsubscribe all the subscription with the AbortController\n * controller.abort();\n * logger.test(); // displays nothing\n */\nexport class EventEmitter extends Loggable {\n private _events: Map<string, Set<Function>>;\n\n /**\n * Build our EventEmitter, usually call from children class\n */\n constructor() {\n super();\n this._events = new Map();\n // Fill events with events as defined!\n let proto = Object.getPrototypeOf(this);\n while (proto && proto !== Object.prototype) {\n for (const name of Object.getOwnPropertyNames(proto)) {\n if (name.length < 3 || !name.startsWith('on')) {\n continue;\n }\n let defaultEvent = proto[name];\n if (defaultEvent instanceof Function) {\n const events = new Set<Function>();\n this._events.set(name.substring(2).toLowerCase(), events);\n const raise = (...args: unknown[]) => {\n // Call default event if not undefined, can happen if assigned to null/undefined\n const result = defaultEvent ? defaultEvent.call(this, ...args) : undefined;\n // Call subscribers\n for (const event of events) {\n event(...args);\n }\n return result;\n };\n Object.defineProperties(this, {\n [name]: {\n get: () => raise,\n set: (value: Function | undefined) => {\n // Assign a default behavior!\n defaultEvent = value;\n }\n }\n });\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n }\n\n /**\n * Event subscription\n * @param name Name of event without the `on` prefix (ex: `log` to `onLog` event declared)\n * @param event Subscriber Function\n * @param options.signal Optional `AbortSignal` to stop this or multiple subscriptions in same time\n */\n on(name: EventKeys<this>, event: Function, options?: { signal?: AbortSignal }) {\n if (typeof event !== 'function') {\n throw Error('event callback must be a function');\n }\n const events = this._event(name as string);\n events.add(event);\n options?.signal?.addEventListener('abort', () => events.delete(event), { once: true });\n }\n\n /**\n * Event subscription only one time, once time fired it's automatically unsubscribe\n * @param name Name of event without the `on` prefix (ex: `log` to `onLog` event declared)\n * @param event Subscriber Function\n * @param options.signal Optional `AbortSignal` to stop this or multiple subscriptions in same time\n */\n once(name: EventKeys<this>, event: Function, options?: { signal?: AbortSignal }) {\n if (typeof event !== 'function') {\n throw Error('event callback must be a function');\n }\n const events = this._event(name as string);\n const wrapper = (...args: unknown[]) => {\n events.delete(wrapper); // delete the wrapper from events\n event(...args); // execute event\n };\n events.add(wrapper);\n options?.signal?.addEventListener('abort', () => events.delete(wrapper), { once: true });\n }\n\n /**\n * Event unsubscription\n * @param name Name of event without the 'on' prefix (ex: 'log' to 'onLog' event declared)\n * @param event Unsubscriber Function, must be the one passed to {@link on} or {@link once} subscription methods\n */\n off(name: EventKeys<this>, event: Function) {\n if (!event) {\n throw Error('event to unsubscribe cannot be null');\n }\n\n return this._event(name as string).delete(event);\n }\n\n private _event(name: string): Set<Function> {\n const events = this._events.get(name.toLowerCase());\n if (!events) {\n throw Error('No event on' + name + ' on class ' + this.constructor.name);\n }\n return events;\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n/**\n * Some fix for JS MAP:\n * - find(key) search an item in the map and returns undefined if not found\n * - get(key) return the item if exists or otherwise create and returns it\n * - set(key, value) returns the value of the item (rather the MAP)\n */\nexport class FixMap<KeyType, ValueType> {\n [Symbol.iterator](): IterableIterator<[KeyType, ValueType]> {\n return this._map[Symbol.iterator]();\n }\n get size() {\n return this._map.size;\n }\n private _map: Map<KeyType, ValueType>;\n constructor(private _initValue: () => ValueType) {\n this._map = new Map<KeyType, ValueType>();\n }\n get(key: KeyType): ValueType {\n let value = this.find(key);\n if (value === undefined) {\n this._map.set(key, (value = this._initValue()));\n }\n return value;\n }\n find(key: KeyType): ValueType | undefined {\n return this._map.get(key);\n }\n has(key: KeyType): boolean {\n return this._map.has(key);\n }\n clear() {\n this._map.clear();\n }\n delete(key: KeyType): boolean {\n return this._map.delete(key);\n }\n set(key: KeyType, value: ValueType): ValueType {\n this._map.set(key, value);\n return value;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n forEach(callbackfn: (value: ValueType, key: KeyType, map: Map<KeyType, ValueType>) => void, thisArg?: any) {\n this._map.forEach(callbackfn, thisArg);\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\n/**\n * Queue typed similar to a {@link https://en.cppreference.com/w/cpp/container/queue | std::queue<Type>} with possibility to limit the capacity like a FIFO\n * @example\n * const queue = new Queue<number>(2);\n * queue.push(1); // [1]\n * queue.push(2); // [1,2]\n * queue.push(3); // [2,3] 1 has been removed to respect 2 capacity\n */\nexport class Queue<Type> {\n /**\n * Number of element in the queue\n */\n get size(): number {\n return this._queue.length;\n }\n\n /**\n * Maximum capacity for the queue, if not set queue has unlimited capacity\n */\n get capacity(): number | undefined {\n return this._capacity;\n }\n\n /**\n * Set a maximum capacity for the queue,\n * if you push new value exceding this capacity the firsts are removed (FIFO)\n * if set to undefined the queue is unlimited\n */\n set capacity(value: number | undefined) {\n this._capacity = value;\n if (value != null && this._queue.length > value) {\n this._queue.splice(0, this._queue.length - value);\n }\n }\n\n /**\n * The front element\n */\n get front(): Type {\n return this._queue[0];\n }\n\n /**\n * The back element\n */\n get back(): Type {\n return this._queue[this._queue.length - 1];\n }\n\n /**\n * Iterator though queue's elements\n */\n [Symbol.iterator](): IterableIterator<Type> {\n return this._queue[Symbol.iterator]();\n }\n\n private _capacity?: number;\n private _queue: Array<Type>;\n /**\n * Instanciate a new queue object with the type passed as template\n * @param capacity if set it limits the size of the queue, any exceding element pops the first element pushed (FIFO)\n */\n constructor(capacity?: number) {\n this._capacity = capacity;\n this._queue = new Array<Type>();\n }\n\n /**\n * Push a new element in the queue\n * @param value value of the element\n * @returns this\n */\n push(value: Type): Queue<Type> {\n if (this._capacity != null && this._queue.push(value) > this._capacity) {\n this.pop();\n }\n return this;\n }\n\n /**\n * Pop the first element from the queue\n * @returns The first element removed\n */\n pop(): Type | undefined {\n return this._queue.shift();\n }\n\n /**\n * Clear all the elements, queue becomes empty\n * @returns this\n */\n clear(): Queue<Type> {\n this._queue.length = 0;\n return this;\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\nimport { Queue } from './Queue';\n\n/**\n * A collection of number Queue<number> with the following efficient mathematic computation:\n * - minimum value in the collection\n * - maximum value in the collection\n * - average value of the collection\n */\nexport class Numbers extends Queue<number> {\n /**\n * minimum value in the collection, or 0 if colleciton is empty\n */\n get minimum(): number {\n return this._min;\n }\n\n /**\n * maximum value in the collection, or 0 if colleciton is empty\n */\n get maximum(): number {\n return this._max;\n }\n\n /**\n * average value of the collection, or 0 if collection if empty\n */\n get average(): number {\n if (this._average == null) {\n this._average = this.size ? this._sum / this.size : 0;\n }\n return this._average;\n }\n\n private _average?: number;\n private _sum: number = 0;\n private _min: number = 0;\n private _max: number = 0;\n /**\n * Instantiate the collection of the number\n * @param capacity if set it limits the number of values stored, any exceding number pops the first number pushed (FIFO)\n */\n constructor(capacity?: number) {\n super(capacity);\n }\n\n /**\n * Push a value to the back to the collection\n * @param value number to add\n * @returns this\n */\n push(value: number): Numbers {\n if (value > this._max) {\n this._max = value;\n } else if (value < this._min) {\n this._min = value;\n }\n this._average = undefined;\n this._sum += value;\n super.push(value);\n return this;\n }\n\n /**\n * Pop the front number from the collection\n * @returns the front number removed\n */\n pop(): number | undefined {\n const front = super.pop();\n if (front === this._max) {\n this._max = Math.max(0, ...this);\n } else if (front === this._min) {\n this._min = Math.min(0, ...this);\n }\n this._average = undefined;\n this._sum -= front || 0;\n return front;\n }\n\n /**\n * Clear all the numbers, collection becomes empty\n * @returns this\n */\n clear() {\n this._min = this._max = this._sum = 0;\n super.clear();\n return this;\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Toolkit to deal with Session Description Protocol (SDP),\n * mainly to tranform a SDP string Offer/Answer to a manipulable JS object representation\n * @example\n * const peerConnection = new RTCPeerConnection();\n * peerConnection.createOffer()\n * .then( offer =>\n * // Change offer.sdp string to a JS manipulable object\n * const sdp = SDP.fromString(offer.sdp || '');\n * // Change a property of SDP\n * sdp.v = 2; // change SDP version\n * // Reserialize to the legal SDP string format\n * offer.sdp = SDP.toString(sdp);\n * // Set SDP offer to peerConnection\n * peerConnection.setLocalDescription(offer);\n * )\n */\nexport const SDP = {\n /**\n * Unserialize SDP string to a manipulable JS object representation\n * It's an object with:\n * - root SDP properties\n * - media description iterable\n * @param lines SDP string reprensentation\n * @returns SDP object representation, iterable through media description\n * @example\n * [\n * group: \"DUNBLE 0 1\",\n * o: \"- 1699450751193623 0 IN IP4 0.0.0.0\",\n * s: \"-\",\n * t: \"0 0\",\n * v: \"0\",\n * ice-lite: \"\",\n * length: 2,\n * {\n * m: \"audio 9 UDP/TLS/RTP/SAVPF 111\",\n * c: \"IN IP4 0.0.0.0\",\n * rtcp: \"9\",\n * sendonly: \"\",\n * setup: \"passive\",\n * fingerprint: \"sha-256 51:36:ED:78:A4:9F:25:8C:39:9A:0E:A0:B4:9B:6E:04:37:FF:AD:96:93:71:43:88:2C:0B:0F:AB:6F:9A:52:B8\",\n * ice-ufrag: \"fa37\",\n * ice-pwd: \"JncCHryDsbzayy4cBWDxS2\",\n * rtcp-mux: \"\",\n * rtcp-rsize: \"\",\n * rtpmap: \"111 opus/48000/2\",\n * rtcp-fb: \"111 nack\",\n * id: \"0\",\n * fmtp: \"111 minptime=10;useinbandfec=1\",\n * candidate: \"1 1 udp 2130706431 89.105.221.108 56643 typ host\",\n * end-of-candidates: \"\"\n * },\n * {\n * m: \"video 9 UDP/TLS/RTP/SAVPF 106\",\n * c: \"IN IP4 0.0.0.0\",\n * rtcp: \"9\",\n * sendonly: \"\",\n * setup: \"passive\",\n * fingerprint: \"sha-256 51:36:ED:78:A4:9F:25:8C:39:9A:0E:A0:B4:9B:6E:04:37:FF:AD:96:93:71:43:88:2C:0B:0F:AB:6F:9A:52:B8\",\n * ice-ufrag: \"fa37\",\n * ice-pwd: \"JncCHryDsbzayy4cBWDxS2\",\n * rtcp-mux: \"\",\n * rtcp-rsize: \"\",\n * rtpmap: \"106 H264/90000\",\n * rtcp-fb: [\n * \"106 nack\",\n * \"106 goog-remb\"\n * ],\n * mid: \"1\",\n * fmtp: \"106 profile-level-id=42e01f;level-asymmetry-allowed=1;packetization-mode=1\",\n * candidate: \"1 1 udp 2130706431 89.105.221.108 56643 typ host\",\n * end-of-candidates: \"\"\n * }\n * ]\n */\n fromString(lines: string): any {\n if (Array.isArray(lines)) {\n return lines; // already converted\n }\n const sdp = new Array<any>();\n let media: any = sdp;\n let fingerprint;\n for (let line of lines.toString().split('\\n')) {\n line = line.trim();\n if (!line) {\n continue;\n }\n\n let key = line[0];\n const value = line.substring(line.indexOf('=') + 1).trim();\n switch (key.toLowerCase()) {\n case 'a': {\n if (!value) {\n continue;\n } // empty attribute!\n key = this.addAttribute(media, value);\n // save fingerprint to repeat it in medias\n if (sdp === media && key.toLowerCase() === 'fingerprint') {\n fingerprint = media.fingerprint;\n }\n break;\n }\n case 'm':\n if (sdp.length && fingerprint && !sdp[sdp.length - 1].fingerprint) {\n media.fingerprint = fingerprint;\n }\n sdp.push((media = { m: value }));\n break;\n default:\n media[key] = value;\n }\n }\n if (sdp.length && fingerprint && !sdp[sdp.length - 1].fingerprint) {\n media.fingerprint = fingerprint;\n }\n return sdp;\n },\n\n /**\n * Serialize SDP JS object to a SDP string legal representation\n * @param sdp SDP object reprensetation\n * @returns SDP string reprensentation\n */\n toString(sdp: any): string {\n if (typeof sdp === 'string') {\n return sdp; // already converted\n }\n const medias = [];\n // https://www.cl.cam.ac.uk/~jac22/books/mm/book/node182.html\n let lines = 'v' in sdp ? 'v=' + sdp.v + '\\n' : '';\n if ('o' in sdp) {\n lines += 'o=' + sdp.o + '\\n';\n }\n if ('s' in sdp) {\n lines += 's=' + sdp.s + '\\n';\n }\n const obj: any = sdp;\n for (const key of Object.keys(sdp)) {\n if (key === 'v' || key === 'o' || key === 's') {\n continue;\n }\n const value = obj[key];\n if (value == null) {\n continue;\n } // ignore this key/value\n const index = parseInt(key);\n if (!isNaN(index)) {\n // Is a number! Media object!\n medias[index] = value;\n continue;\n }\n const count = (Array.isArray(value) && value.length) || 1; // value can be numeric!\n for (let i = 0; i < count; ++i) {\n const line = Array.isArray(value) && value.length ? value[i] : value;\n if (key.length > 1) {\n // when key is superior to 1 letter it's a attribute!\n lines += 'a=' + key;\n if (line) {\n lines += ':';\n }\n } else {\n lines += key + '=';\n }\n lines += line + '\\n';\n }\n }\n for (const media of medias) {\n lines += this.toString(media);\n }\n return lines;\n },\n\n /**\n * While set a property to a SDP object representation is possible directly,\n * we could prefer add a new property without overload a possible already existing value.\n * This function allows to add a property to our SDP representation:\n * - if the key's attribute doesn't exists yet it adds it like a simple JS property sdp[key] = value\n * - if the key's attribute exists already it morphs the value to a Array and push it inside\n * @param sdp the SDP object representation on which added the attribute\n * @param attribute the string attribut in a format \"key:value\" or just \"key\" to add an attribute without value\n * @returns the key part of the attribute added (or if value is empty it returns the same attribute as passed in argument)\n */\n addAttribute(sdp: object, attribute: string): string {\n const a = SDP.parseAttribute(attribute);\n const value = a.value ?? ''; // to allow to test if key exists even without value with if(sdp.key != null)\n const obj: any = sdp;\n const oldValue = obj[a.key];\n if (!oldValue) {\n obj[a.key] = value;\n } else if (Array.isArray(oldValue)) {\n oldValue.push(value);\n } else if (value !== oldValue) {\n obj[a.key] = [oldValue, value];\n }\n return a.key;\n },\n\n /**\n * While it's possible to delete a attribute manually on the SDP object representation with a delete sdp.key,\n * we could prefer remove only a value in a sdp.key array containing multiple values.\n * Like opposite to addAttribute this method allows to remove an unique attribute value.\n * @param sdp the SDP object representation on which removed the attribute\n * @param attribute the string attribut in a format \"key:value\" or just \"key\" to remove the whole attribute and all its values\n * @returns the key part of the attribute removed (or if value is empty it returns the same attribute as passed in argument)\n */\n removeAttribute(sdp: object, attribute: string): string {\n const a = SDP.parseAttribute(attribute);\n const obj: any = sdp;\n if (a.value === undefined) {\n delete obj[attribute];\n return attribute;\n }\n const current = obj[attribute];\n if (Array.isArray(a.value)) {\n const i = current.findIndex((current: string) => current === a.value);\n if (i >= 0) {\n current.splice(i, 1);\n }\n } else if (current === a.value) {\n delete obj[attribute];\n }\n return a.key;\n },\n\n /**\n * Parse an attribute in a format \"key:value\"\n * @param attribute string attribute to parse\n * @returns the {key, value} result, with value undefined if attribute was a \"key\" without value\n */\n parseAttribute(attribute: string): { key: string; value: string | undefined } {\n const found = attribute.indexOf(':');\n return {\n key: (found >= 0 ? attribute.substring(0, found) : attribute).trim(),\n value: found >= 0 ? attribute.substring(found + 1).trim() : undefined\n };\n }\n};\nObject.freeze(SDP);\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\nimport { ByteRate } from './ByteRate';\nimport { EventEmitter } from './EventEmitter';\n\nexport type WebSocketReliableError =\n /**\n * Represents a WebSocket disconnection error.\n */\n | { type: 'WebSocketReliableError'; name: 'Socket disconnection'; url: string; reason: string }\n /**\n * Represents a server shutdown error.\n */\n | { type: 'WebSocketReliableError'; name: 'Server shutdown'; url: string }\n /**\n * Represents a connection failure error.\n */\n | { type: 'WebSocketReliableError'; name: 'Connection failed'; url: string; reason: string };\n\n/**\n * The WebSocketReliable class extends WebSocket to bring up the following improvements:\n * - Fix all possible unintentional closing ways to get always a related error message, {@link onClose | onClose(error?) event}\n * - Make possible message sending while connecting. Indeed no need to wait {@link onOpen} before to send message,\n * you can open the socket and immediately send messages, it will be queue and flushs on connection etablishment\n * - Make possible a delayed connection, or a reconnection. Indeed you can create an unconnected Websocket instance\n * without passing any url argument and starts the conneciton more later with {@link WebSocketReliable.open(url) | open(url)} method\n * - Make possible to control sending/queueing message: send method take an optional queueing=true argument to\n * queue message rather send it, a futur call to flush will send it. Then queueing getter allows to handle the queue\n * if need to purge it or remove some queued message. Use it all together can help to prioritize messages or control overload.\n * @example\n * const ws = new WebSocketReliable(url);\n * ws.onClose = (error?:string) => {\n * if(error) {\n * console.error(error);\n * }\n * // reconnection attempt every seconds\n * setTimeout(() => ws.open(url), 1000);\n * }\n * ws.onMessage = (message:string) => {\n * console.log(message);\n * }\n * ws.send('hello'); // send immediatly a hello message is possible (no need to wait onOpen)\n */\nexport class WebSocketReliable extends EventEmitter {\n /**\n * Fired when socket is connected\n * @event\n */\n onOpen() {}\n\n /**\n * Fired on message reception\n * @param message can be binary or string.\n * If you subscribe to the event with message as string type (and not union),\n * it means that you know that all your messages are distributed in a string format\n * @event\n */\n onMessage(message: ArrayBuffer | string) {}\n\n /**\n * Fired on websocket close\n * @param error error description on an improper closure\n * @event\n */\n onClose(error?: WebSocketReliableError) {\n if (error) {\n this.log('onClose', error).error();\n } else {\n this.log('onClose').info();\n }\n }\n\n /**\n * binaryType, fix binary type to arrayBuffer\n */\n get binaryType(): BinaryType {\n return 'arraybuffer';\n }\n\n get recvByteRate(): number {\n return this._recvByteRate.value();\n }\n\n get sendByteRate(): number {\n return this._sendByteRate.value();\n }\n\n /**\n * url of connection\n */\n get url(): string {\n return this._ws?.url ?? '';\n }\n\n /**\n * extensions negociated by the server\n */\n get extensions(): string {\n return this._ws?.extensions ?? '';\n }\n\n /**\n * protocol negociated by the server\n */\n get protocol(): string {\n return this._ws?.protocol ?? '';\n }\n\n /**\n * opened equals true when connection is etablished, in other word when onOpen event is fired\n */\n get opened(): boolean {\n return this._opened;\n }\n\n /**\n * {@link https://developer.mozilla.org/docs/Web/API/WebSocket/readyState | Official websocket readyState}\n */\n get readyState(): number {\n return this._ws ? this._ws.readyState : 3;\n }\n\n /**\n * True when connection is closed, in other words when {@link onClose} event is fired\n * or when WebSocketReliable is build without url (disconnected creation)\n */\n get closed(): boolean {\n return this._closed;\n }\n\n /**\n * The number of bytes of data that were queued during calls to send() but not yet transmitted to the network\n */\n get bufferedAmount(): number {\n return this._queueingBytes + (this._ws?.bufferedAmount || 0);\n }\n\n /**\n * Queued messages from a call to send() waiting to be transmit one time websocket connection opened (or with an explicit call to flush() method)\n */\n get queueing(): Array<string | ArrayBuffer | ArrayBufferView> {\n return this._queueing;\n }\n\n private _opened: boolean;\n private _closed: boolean;\n private _queueing: Array<string | ArrayBuffer | ArrayBufferView>;\n private _queueingBytes: number;\n private _ws?: WebSocket;\n private _recvByteRate: ByteRate;\n private _sendByteRate: ByteRate;\n /**\n * Create a WebSocketReliable object, and open it if an url is passed in argument\n * @param url URL of the WebSocket endpoint or null to start the connection later\n */\n constructor(url?: string | URL, protocols?: string | string[]) {\n super();\n this._queueing = [];\n this._queueingBytes = 0;\n this._opened = false;\n this._closed = true;\n this._recvByteRate = new ByteRate();\n this._sendByteRate = new ByteRate();\n if (url) {\n this.open(url, protocols);\n }\n }\n\n /**\n * Open a WebSocket connection\n * @param url url of the websocket endpoint\n * @returns this\n */\n open(url: URL | string, protocols?: string | string[]) {\n this._closed = false;\n const ws = (this._ws = new WebSocket(url, protocols));\n ws.binaryType = this.binaryType;\n ws.onmessage = e => {\n this._recvByteRate.addBytes(e.data.byteLength ?? e.data.length);\n this.onMessage(e.data);\n };\n // Add details and fix close ways\n ws.onclose = (e: CloseEvent) => {\n if (!this._opened) {\n // close during connection!\n this.close({\n type: 'WebSocketReliableError',\n name: 'Connection failed',\n url: url.toString(),\n reason: String(e.reason || e.code)\n });\n } else if (e.code === 1000 || e.code === 1005) {\n // normal disconnection from server\n this.close({\n type: 'WebSocketReliableError',\n name: 'Server shutdown',\n url: url.toString()\n });\n } else {\n // abnormal disconnection from server\n this.close({\n type: 'WebSocketReliableError',\n name: 'Socket disconnection',\n url: url.toString(),\n reason: String(e.reason || e.code)\n });\n }\n };\n // Wrap send method to queue messages until connection is established.\n ws.onopen = _ => {\n this._opened = true;\n this.flush();\n this.onOpen();\n };\n return this;\n }\n\n /**\n * Send a message\n * @param message\n * @param queueing When set it reports the sending to a more later call to flush\n * @returns this\n */\n send(message: string | ArrayBuffer | ArrayBufferView, queueing: boolean = false) {\n if (this._closed) {\n throw Error('Open socket before to send data');\n }\n if (queueing || !this._opened) {\n this._queueing.push(message);\n this._queueingBytes += typeof message === 'string' ? message.length : message.byteLength;\n } else {\n this._send(message);\n }\n return this;\n }\n\n /**\n * Send queueing messages\n */\n flush() {\n if (this._ws) {\n for (const message of this._queueing) {\n this._send(message);\n }\n }\n this._queueing.length = 0;\n this._queueingBytes = 0;\n }\n\n /**\n * Close websocket\n * @param error the error reason if is not a proper close\n */\n close(error?: WebSocketReliableError) {\n if (!this._ws || this._closed) {\n return;\n }\n this._closed = true;\n this._ws.onopen = this._ws.onclose = this._ws.onmessage = null; // otherwise can receive message AFTER close!\n this._ws.close(); // Don't set to undefined to keep this._ws properties valid!\n // release resources!\n\n this._queueing.length = 0;\n this._queueingBytes = 0;\n this.onClose(error);\n // Reset _opened in last to allow to differenciate in onClose an error while connecting OR while connected\n this._opened = false;\n }\n\n private _send(message: string | ArrayBuffer | ArrayBufferView) {\n if (!this._ws) {\n return;\n }\n this._sendByteRate.addBytes(typeof message === 'string' ? message.length : message.byteLength);\n this._ws.send(message);\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\n// Fixed blocks to 32 because timestamp is encoded on 32 bits\nconst _blocksPerRow = 32;\n\n/**\n * Decode the timestamp from a video element and compute the latency between the timestamp and the current date.\n *\n * @param {HTMLVideoElement} sourceEl the video element to get the image from\n * @param {HTMLCanvasElement} canvas\n * @param {CanvasRenderingContext2D} context\n * @param {Date} now current date, new Date() by default\n * @param {Number} tolerance percentage of tolerance for the black and white threshold, 0.2 by default\n * @returns {Number} The latency in millisecond between 'now' and the decoded timestamp, 0 if the timestamp cannot be decoded\n */\nexport function getLatency(\n sourceEl: HTMLVideoElement,\n canvas: HTMLCanvasElement,\n context: CanvasRenderingContext2D,\n now: Date = new Date(),\n tolerance: number = 0.2\n) {\n canvas.width = sourceEl.videoWidth;\n canvas.height = Math.floor(canvas.width / _blocksPerRow);\n if (!canvas.width || !canvas.height) {\n // No pixel to parse!\n return 0;\n }\n\n context.drawImage(sourceEl, 0, 0, canvas.width, canvas.height, 0, 0, canvas.width, canvas.height);\n\n const timestamp = decodeTimestamp(context, canvas.width, tolerance);\n return timestamp == null ? 0 : now.getTime() - timestamp.getTime();\n}\n\n/**\n * Decode a previously encoded timestamp from a canvas\n *\n * @param {CanvasRenderingContext2D} context\n * @param {Number} lineWidth width of the line in pixels\n * @param {Number} tolerance percentage of tolerance for the black and white threshold, 0.2 by default\n * @returns {Date|null} The Date object representing the timestamp or null if the timestamp cannot be decoded\n */\nexport function decodeTimestamp(context: CanvasRenderingContext2D, lineWidth: number, tolerance: number = 0.2) {\n // Integer block width and ignore the right-hand remainder.\n const blockSize = Math.floor(lineWidth / _blocksPerRow);\n let binaryTime = '';\n if (blockSize < 1) {\n return null;\n }\n\n const effectiveWidth = blockSize * _blocksPerRow;\n const midBlock = Math.floor(blockSize / 2);\n const data = context.getImageData(0, midBlock, effectiveWidth, 1).data;\n const pixels = new Uint32Array(data.buffer);\n const blackThreshold = 0xff * tolerance;\n const whiteThreshold = 0xff * (1 - tolerance);\n\n // Sample the center pixel of each integer-sized block that the encoder painted.\n for (let i = 0; i < effectiveWidth; i += blockSize) {\n const pixel = pixels[i + midBlock] & 0xffffff;\n // Extract luminance from RGB\n const Y = 0.299 * ((pixel >> 16) & 0xff) + 0.587 * ((pixel >> 8) & 0xff) + 0.114 * (pixel & 0xff);\n if (Y < blackThreshold) {\n // Black\n binaryTime += '1';\n } else if (Y > whiteThreshold) {\n // White\n binaryTime += '0';\n } else {\n return null;\n }\n }\n\n const day = parseInt(binaryTime.slice(0, 5), 2);\n const hour = parseInt(binaryTime.slice(5, 10), 2);\n const minute = parseInt(binaryTime.slice(10, 16), 2);\n const second = parseInt(binaryTime.slice(16, 22), 2);\n const millisecond = parseInt(binaryTime.slice(22, 32), 2);\n\n // Basic sanity checks (match encoder ranges)\n if (day < 1 || day > 31 || hour > 23 || minute > 59 || second > 59 || millisecond > 999) {\n return null;\n }\n\n const now = new Date();\n return new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), day, hour, minute, second, millisecond));\n}\n\n/**\n * Encode the given date (excluding year and month) into a line composed of blocks\n * of black and white pixels written on the top of the canvas.\n *\n * @param {CanvasRenderingContext2D} context\n * @param {Number} lineWidth width of the line in pixels\n * @param {Number} blocksPerRow number of blocks in the line, 32 by default\n * @param {Date} now current date, new Date() by default\n */\nexport function encodeTimestamp(\n context: CanvasRenderingContext2D,\n lineWidth: number,\n blocksPerRow: number = 32,\n now: Date = new Date()\n) {\n const blockSize = Math.floor(lineWidth / blocksPerRow);\n\n const day = now.getUTCDate();\n const hour = now.getUTCHours();\n const minute = now.getUTCMinutes();\n const second = now.getUTCSeconds();\n const millisecond = now.getUTCMilliseconds();\n\n const binaryDay = day.toString(2).padStart(5, '0'); // 31 possible days/32\n const binaryHour = hour.toString(2).padStart(5, '0'); // 24 possible hours/32\n const binaryMinute = minute.toString(2).padStart(6, '0'); // 60 possible minutes/64\n const binarySecond = second.toString(2).padStart(6, '0'); // 60 possible seconds/64\n const binaryMillisecond = millisecond.toString(2).padStart(10, '0'); // 1000 possible milliseconds/1024\n const binaryTime = binaryDay + binaryHour + binaryMinute + binarySecond + binaryMillisecond;\n\n for (let i = 0; i < binaryTime.length; i++) {\n const x = (i % blocksPerRow) * blockSize;\n const y = Math.floor(i / blocksPerRow) * blockSize;\n\n context.fillStyle = binaryTime[i] === '1' ? 'black' : 'white';\n context.fillRect(x, y, blockSize, blockSize);\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\n/**\n * An user-interface compoment to vizualize real-time metrics\n */\nexport class UIMetrics {\n /**\n * get graph margin in pixels\n */\n get graphMargin(): number {\n return this._graphMargin;\n }\n /**\n * set graph margin in pixels\n */\n set graphMargin(value: number) {\n this._graphMargin = value;\n }\n\n /**\n * get text margin in pixels\n */\n get textMargin(): number {\n return this._textMargin;\n }\n /**\n * set text margin in pixels\n */\n set textMargin(value: number) {\n this._textMargin = value;\n }\n\n /**\n * get metric line height in pixels\n */\n get lineHeight(): number {\n return this._lineHeight;\n }\n /**\n * set metric line height in pixels\n */\n set lineHeight(value: number) {\n this._lineHeight = value;\n }\n\n /**\n * get label width in pixels\n */\n get labelWidth(): number {\n return this._labelWidth;\n }\n /**\n * set label width in pixels\n */\n set labelWidth(value: number) {\n this._labelWidth = value;\n }\n\n /**\n * get legend font size in pixels\n */\n get legendFontSize(): number {\n return this._legendFontSize;\n }\n /**\n * set legend font size in pixels\n */\n set legendFontSize(value: number) {\n this._legendFontSize = value;\n }\n\n /**\n * get the metric unit-step in pixels\n */\n get stepSize(): number {\n return this._stepSize;\n }\n /**\n * set the metric unit-step in pixels\n */\n set stepSize(value: number) {\n this._stepSize = value;\n }\n\n /**\n * Return the space width available to display average metric\n */\n get averageDisplayWidth(): number {\n // 7 chars (1 char width ≈ fontSize/2)\n return (this._legendFontSize / 2) * 7;\n }\n\n /**\n * Return the count of displayable metrics regarding the space available on the screen\n */\n get displayableCount(): number {\n const width = this._ui.clientWidth - this.averageDisplayWidth;\n return Math.ceil((width - this._labelWidth) / this._stepSize);\n }\n\n private _ui: HTMLElement;\n private _html?: string;\n private _lineHeight: number;\n private _labelWidth: number;\n private _graphMargin: number;\n private _textMargin: number;\n private _legendFontSize: number;\n private _stepSize: number;\n private _ranges: { [key: string]: { min: number; max: number } };\n private _mouseX?: number;\n\n constructor(ui: HTMLElement) {\n this._ui = ui;\n ui.addEventListener('mousemove', (event: MouseEvent) => {\n this._mouseX = event.offsetX;\n });\n ui.addEventListener('mouseleave', (event: MouseEvent) => {\n this._mouseX = undefined;\n });\n // default values in pixels\n this._lineHeight = 40;\n this._labelWidth = 170;\n this._graphMargin = 5;\n this._textMargin = 5;\n this._legendFontSize = 13;\n this._stepSize = 10;\n this._ranges = {};\n }\n\n /**\n * Reset metrics stats, essentially rescaling the metrics\n */\n reset() {\n this._ranges = {};\n }\n\n /**\n * build metric from stats\n * @param stats Map with stats per entry\n * @returns\n */\n display(stats: Map<string, Array<string | number>>) {\n if (this._html != null) {\n // CPU processing, skip one stats!\n return;\n }\n this._html = '';\n\n const averageDisplayWidth = this.averageDisplayWidth;\n const averageCenter = averageDisplayWidth / 2;\n const width = this._ui.clientWidth - averageDisplayWidth;\n const graphHeight = this._lineHeight - 2 * this._graphMargin;\n const graphMiddle = Math.round(this._lineHeight / 2);\n const textY = Math.round(this._lineHeight / 2 + this._textMargin);\n const titleWidth = this._labelWidth - 2 * this._textMargin;\n\n for (const [key, fullValues] of stats) {\n const displayableCount = Math.ceil((width - this._labelWidth) / this._stepSize);\n const values = fullValues.slice(Math.max(0, fullValues.length - displayableCount));\n if (!values.length) {\n continue;\n }\n\n let x = this._labelWidth + values.length * this._stepSize;\n\n /*\n\t\t\t<svg class=\"list-group-item p-0\" style=\"height: 40px;\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t<text x=\"5\" y=\"22\">M text</text>\n\t\t\t\t<path fill=\"none\" d=\"M100 0 110 22 120 0 130 20\" stroke-width=\"1\" stroke=\"brown\"/>\n\t\t\t</svg>\n\t\t\t*/\n this._html +=\n '<svg class=\"list-group-item p-0\" style=\"height: ' +\n this._lineHeight +\n 'px\" xmlns=\"http://www.w3.org/2000/svg\">';\n this._html += '<text x=\"' + this._textMargin + '\" y=\"' + textY + '\">' + key + '</text>';\n this._html +=\n '<text x=\"' +\n titleWidth +\n '\" y=\"' +\n textY +\n '\" text-anchor=\"end\">' +\n values[values.length - 1].toString() +\n '</text>';\n\n this._html += '<path fill=\"none\" d=\"M' + this._labelWidth + ' ' + graphMiddle;\n this._html += 'H' + (width + averageCenter);\n this._html += '\" stroke-width=\"1\" stroke=\"lightgray\" stroke-dasharray=\"10,10\"/>';\n\n this._html += '<path fill=\"none\" stroke-width=\"1\" stroke=\"brown\" d=\"M';\n\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n for (let i = 0; i < values.length; ++i) {\n const value = parseFloat(values[i].toString());\n if (value < min) {\n min = value;\n }\n if (value > max) {\n max = value;\n }\n }\n let range = this._ranges[key];\n if (!range) {\n this._ranges[key] = range = { min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY };\n }\n range.min = Math.min(range.min, min);\n range.max = Math.max(range.max, max);\n const delta = range.max - range.min;\n\n let minCircle = '';\n let maxCircle = '';\n\n let mouseCircle = this._mouseX == null || this._mouseX > x ? null : '';\n for (let i = 0; i < values.length; ++i) {\n x -= this._stepSize;\n const value = parseFloat(values[i].toString());\n const y = graphMiddle + (delta ? Math.round((0.5 - (value - range.min) / delta) * graphHeight) : 0);\n this._html += x + ' ' + y + ' ';\n if (value === min) {\n maxCircle = maxCircle || this._drawCircle(x, y, value);\n } else if (value === max) {\n minCircle = minCircle || this._drawCircle(x, y, value);\n }\n if (mouseCircle === '' && x <= (this._mouseX || 0)) {\n mouseCircle = this._drawCircle(x, y, value, 'blue', '');\n }\n }\n\n this._html += '\" />'; // end path\n\n // Average\n const average = Math.round((max - min) / 2);\n this._html += '<text text-anchor=\"middle\" font-size=\"' + this._legendFontSize + '\" y=\"' + textY + '\">';\n this._html +=\n '<tspan x=\"' +\n (width + averageCenter) +\n '\" dy=\"-0.5em\">' +\n (min !== max ? '≈' : '=') +\n (min + average) +\n '</tspan>';\n this._html += '<tspan x=\"' + (width + averageCenter) + '\" dy=\"1em\">±' + average + '</tspan>';\n this._html += '</text>';\n\n this._html += minCircle + maxCircle + (mouseCircle ?? '');\n if (mouseCircle) {\n this._html += mouseCircle;\n }\n this._html += '</svg>';\n }\n requestAnimationFrame(() => {\n if (this._html != null) {\n this._ui.innerHTML = this._html;\n this._html = undefined;\n }\n });\n }\n\n private _drawCircle(x: number, y: number, value: number, color = 'green', fontStyle = 'italic') {\n let circle = '<circle cx=\"' + x + '\" cy=\"' + y + '\" r=\"2\" fill=\"' + color + '\" />';\n const legendFontHeight = 0.7 * this._legendFontSize;\n const graphMiddle = Math.round(this._lineHeight / 2);\n if (y < graphMiddle) {\n // legend below\n y += this.textMargin + legendFontHeight;\n } else {\n // legend above\n y -= this.textMargin;\n }\n circle +=\n '<text font-style=\"' +\n fontStyle +\n '\" font-size=\"' +\n this._legendFontSize +\n '\" x=\"' +\n (x - this._legendFontSize) +\n '\" y=\"' +\n y +\n '\">' +\n value +\n '</text>';\n return circle;\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\nexport { BinaryReader } from './src/BinaryReader';\nexport { BinaryWriter } from './src/BinaryWriter';\nexport { BitReader } from './src/BitReader';\nexport { ByteRate } from './src/ByteRate';\nexport * as Connect from './src/Connect';\nexport { EventEmitter } from './src/EventEmitter';\nexport { FixMap } from './src/FixMap';\nexport { NetAddress } from './src/NetAddress';\nexport { Numbers } from './src/Numbers';\nexport { Queue } from './src//Queue';\nexport { SDP } from './src/SDP';\nexport * as Util from './src/Util';\nexport { WebSocketReliable, WebSocketReliableError } from './src/WebSocketReliable';\nexport * as EpochTime from './src/EpochTime';\nexport { LogLevel, ILog, Log, Loggable, log } from './src/Log';\n\nexport { UIMetrics } from './src/ui/UIMetrics';\n\nconst __lib__version__ = '?'; // will be replaced on building by project version\n\nexport const VERSION: string = __lib__version__;\n"],"names":["_decoder","Util.toBin","Util.options","Util.EMPTY_FUNCTION","Util.time","time","Util.getExtension","Util.getFile","Util.trimStart","Util.getBaseFile"],"mappings":"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","x_google_ignoreList":[1]}
1
+ {"version":3,"file":"web-utils.js","sources":["../src/BinaryReader.ts","../node_modules/tslib/tslib.es6.js","../src/Util.ts","../src/BinaryWriter.ts","../src/Log.ts","../src/BitReader.ts","../src/ByteRate.ts","../src/NetAddress.ts","../src/Connect.ts","../src/EventEmitter.ts","../src/FixMap.ts","../src/Queue.ts","../src/Numbers.ts","../src/SDP.ts","../src/WebSocketReliable.ts","../src/EpochTime.ts","../node_modules/@svta/common-media-library/dist/cta/608/VerboseLevel.js","../node_modules/@svta/common-media-library/dist/cta/608/CaptionsLogger.js","../node_modules/@svta/common-media-library/dist/cta/608/PenState.js","../node_modules/@svta/common-media-library/dist/cta/608/StyledUnicodeChar.js","../node_modules/@svta/common-media-library/dist/cta/608/utils/NR_COLS.js","../node_modules/@svta/common-media-library/dist/cta/608/utils/specialCea608CharsCodes.js","../node_modules/@svta/common-media-library/dist/cta/608/utils/getCharForByte.js","../node_modules/@svta/common-media-library/dist/cta/608/Row.js","../node_modules/@svta/common-media-library/dist/cta/608/utils/NR_ROWS.js","../node_modules/@svta/common-media-library/dist/cta/608/CaptionScreen.js","../node_modules/@svta/common-media-library/dist/cta/608/Cta608Channel.js","../node_modules/@svta/common-media-library/dist/cta/608/utils/backgroundColors.js","../node_modules/@svta/common-media-library/dist/cta/608/utils/createCmdHistory.js","../node_modules/@svta/common-media-library/dist/cta/608/utils/hasCmdRepeated.js","../node_modules/@svta/common-media-library/dist/cta/608/utils/numArrayToHexArray.js","../node_modules/@svta/common-media-library/dist/cta/608/utils/rowsHighCh1.js","../node_modules/@svta/common-media-library/dist/cta/608/utils/rowsHighCh2.js","../node_modules/@svta/common-media-library/dist/cta/608/utils/rowsLowCh1.js","../node_modules/@svta/common-media-library/dist/cta/608/utils/rowsLowCh2.js","../node_modules/@svta/common-media-library/dist/cta/608/utils/setLastCmd.js","../node_modules/@svta/common-media-library/dist/cta/608/Cta608Parser.js","../node_modules/@svta/common-media-library/dist/cta/608/extractCta608Data.js","../node_modules/@svta/common-media-library/dist/cta/608/findCta608Nalus.js","../node_modules/@svta/common-media-library/dist/cta/608/SccParser.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/utils/dash/parseDashManifest.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/utils/dash/serializeDashManifest.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/utils/hls/parseHlsManifest.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/utils/dash/iso8601DurationToNumber.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapDashToHam/utils/getContentType.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapDashToHam/utils/getGroup.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapDashToHam/utils/getInitializationUrl.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapDashToHam/utils/getPresentationId.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapDashToHam/mapSegmentBase.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapDashToHam/utils/calculateDuration.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapDashToHam/mapSegmentList.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapDashToHam/utils/getNumberOfSegments.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapDashToHam/utils/getUrlFromTemplate.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapDashToHam/mapSegmentTemplate.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapDashToHam/mapSegments.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapDashToHam/utils/getChannels.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapDashToHam/utils/getCodec.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/utils/constants.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapDashToHam/utils/getFrameRate.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapDashToHam/utils/getLanguage.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapDashToHam/utils/getSampleRate.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapDashToHam/utils/getSar.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapDashToHam/utils/getTrackDuration.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapDashToHam/mapTracks.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapDashToHam/mapDashToHam.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapHamToDash/trackToSegmentBase.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapHamToDash/utils/getTimescale.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapHamToDash/trackToSegmentList.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapHamToDash/utils/getFrameRate.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapHamToDash/tracksToRepresentation.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapHamToDash/selectionSetsToAdaptationSet.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/utils/dash/numberToIso8601Duration.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapHamToDash/presentationsToPeriods.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/mapHamToDash/mapHamToDash.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/utils/manifest/addMetadataToDash.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/utils/manifest/getMetadata.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/dash/DashMapper.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/MapperContext.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/services/converters/dashToHam.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/services/converters/hamToDash.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/hls/mapHamToHls/utils/getByterange.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/hls/mapHamToHls/utils/getUrlInitialization.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/hls/mapHamToHls/utils/getPlaylistData.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/hls/mapHamToHls/utils/getSegments.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/hls/mapHamToHls/generateManifestPlaylistPiece.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/hls/mapHamToHls/mapHamToHls.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/hls/mapHlsToHam/utils/getByterange.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/hls/mapHlsToHam/utils/formatSegments.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/hls/mapHlsToHam/utils/getCodec.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/hls/mapHlsToHam/utils/getDuration.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/hls/mapHlsToHam/audioGroupsToSwitchingSets.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/hls/mapHlsToHam/subtitleGroupsToSwitchingSets.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/hls/mapHlsToHam/videoPlaylistsToSwitchingSets.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/utils/manifest/addMetadataToHls.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/hls/mapHlsToHam/mapHlsToHam.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/mapper/hls/HlsMapper.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/services/converters/hamToHls.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/services/converters/hlsToHam.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/services/getters/getTracksFromSwitchingSet.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/services/getters/getTracksFromSelectionSet.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/services/getters/getTracksFromPresentation.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/services/validators/validateSegment.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/services/validators/validateSegments.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/services/validators/validateTrack.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/services/validators/validateTracks.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/services/validators/validateSwitchingSet.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/services/validators/validateSwitchingSets.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/services/validators/validateSelectionSet.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/services/validators/validateSelectionSets.js","../node_modules/@svta/common-media-library/dist/cmaf/ham/services/validators/validatePresentation.js","../node_modules/@svta/common-media-library/dist/structuredfield/SfItem.js","../node_modules/@svta/common-media-library/dist/structuredfield/utils/DICT.js","../node_modules/@svta/common-media-library/dist/structuredfield/utils/throwError.js","../node_modules/@svta/common-media-library/dist/structuredfield/serialize/serializeError.js","../node_modules/@svta/common-media-library/dist/structuredfield/SfToken.js","../node_modules/@svta/common-media-library/dist/structuredfield/utils/BARE_ITEM.js","../node_modules/@svta/common-media-library/dist/structuredfield/utils/BOOLEAN.js","../node_modules/@svta/common-media-library/dist/structuredfield/serialize/serializeBoolean.js","../node_modules/@svta/common-media-library/dist/utils/encodeBase64.js","../node_modules/@svta/common-media-library/dist/structuredfield/utils/BYTES.js","../node_modules/@svta/common-media-library/dist/structuredfield/serialize/serializeByteSequence.js","../node_modules/@svta/common-media-library/dist/structuredfield/utils/INTEGER.js","../node_modules/@svta/common-media-library/dist/structuredfield/utils/isInvalidInt.js","../node_modules/@svta/common-media-library/dist/structuredfield/serialize/serializeInteger.js","../node_modules/@svta/common-media-library/dist/structuredfield/serialize/serializeDate.js","../node_modules/@svta/common-media-library/dist/utils/roundToEven.js","../node_modules/@svta/common-media-library/dist/structuredfield/utils/DECIMAL.js","../node_modules/@svta/common-media-library/dist/structuredfield/serialize/serializeDecimal.js","../node_modules/@svta/common-media-library/dist/structuredfield/utils/STRING.js","../node_modules/@svta/common-media-library/dist/structuredfield/utils/STRING_REGEX.js","../node_modules/@svta/common-media-library/dist/structuredfield/serialize/serializeString.js","../node_modules/@svta/common-media-library/dist/cta/utils/symbolToStr.js","../node_modules/@svta/common-media-library/dist/structuredfield/utils/TOKEN.js","../node_modules/@svta/common-media-library/dist/structuredfield/serialize/serializeToken.js","../node_modules/@svta/common-media-library/dist/structuredfield/serialize/serializeBareItem.js","../node_modules/@svta/common-media-library/dist/structuredfield/utils/KEY.js","../node_modules/@svta/common-media-library/dist/structuredfield/serialize/serializeKey.js","../node_modules/@svta/common-media-library/dist/structuredfield/serialize/serializeParams.js","../node_modules/@svta/common-media-library/dist/structuredfield/serialize/serializeItem.js","../node_modules/@svta/common-media-library/dist/structuredfield/serialize/serializeInnerList.js","../node_modules/@svta/common-media-library/dist/structuredfield/serialize/serializeDict.js","../node_modules/@svta/common-media-library/dist/structuredfield/encodeSfDict.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_OBJECT.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_REQUEST.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_SESSION.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_STATUS.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_HEADER_MAP.js","../node_modules/@svta/common-media-library/dist/cmcd/CmcdHeaderField.js","../node_modules/@svta/common-media-library/dist/cmcd/groupCmcdHeaders.js","../node_modules/@svta/common-media-library/dist/cta/utils/isTokenField.js","../node_modules/@svta/common-media-library/dist/cta/utils/isValid.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_EVENT_MODE.js","../node_modules/@svta/common-media-library/dist/utils/urlToRelativePath.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_FORMATTER_MAP.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_REQUEST_MODE.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_RESPONSE_MODE.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_COMMON_KEYS.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_EVENT_KEYS.js","../node_modules/@svta/common-media-library/dist/cmcd/isCmcdCustomKey.js","../node_modules/@svta/common-media-library/dist/cmcd/isCmcdEventKey.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_REQUEST_KEYS.js","../node_modules/@svta/common-media-library/dist/cmcd/isCmcdRequestKey.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_RESPONSE_KEYS.js","../node_modules/@svta/common-media-library/dist/cmcd/isCmcdResponseKey.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_V1_KEYS.js","../node_modules/@svta/common-media-library/dist/cmcd/isCmcdV1Key.js","../node_modules/@svta/common-media-library/dist/cmcd/prepareCmcdData.js","../node_modules/@svta/common-media-library/dist/cmcd/toCmcdHeaders.js","../node_modules/@svta/common-media-library/dist/cmcd/appendCmcdHeaders.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_PARAM.js","../node_modules/@svta/common-media-library/dist/cmcd/encodeCmcd.js","../node_modules/@svta/common-media-library/dist/cmcd/toCmcdUrl.js","../node_modules/@svta/common-media-library/dist/cmcd/toCmcdQuery.js","../node_modules/@svta/common-media-library/dist/cmcd/appendCmcdQuery.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_DEFAULT_TIME_INTERVAL.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_HEADERS.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_JSON.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_KEYS.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_QUERY.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_V1.js","../node_modules/@svta/common-media-library/dist/cmcd/CMCD_V2.js","../node_modules/@svta/common-media-library/dist/cmcd/CmcdTransmissionMode.js","../node_modules/@svta/common-media-library/dist/cmcd/CmcdEncoding.js","../node_modules/@svta/common-media-library/dist/cmcd/CmcdEventType.js","../node_modules/@svta/common-media-library/dist/cmcd/CmcdFormatters.js","../node_modules/@svta/common-media-library/dist/cta/CmObjectType.js","../node_modules/@svta/common-media-library/dist/cmcd/CmcdObjectType.js","../node_modules/@svta/common-media-library/dist/cmcd/CmcdPlayerState.js","../node_modules/@svta/common-media-library/dist/cmcd/CmcdReportingMode.js","../node_modules/@svta/common-media-library/dist/cta/CmStreamingFormat.js","../node_modules/@svta/common-media-library/dist/cmcd/CmcdStreamingFormat.js","../node_modules/@svta/common-media-library/dist/cta/CmStreamType.js","../node_modules/@svta/common-media-library/dist/cmcd/CmcdStreamType.js","../node_modules/@svta/common-media-library/dist/structuredfield/parse/ParsedValue.js","../node_modules/@svta/common-media-library/dist/structuredfield/parse/parseError.js","../node_modules/@svta/common-media-library/dist/structuredfield/utils/INNER.js","../node_modules/@svta/common-media-library/dist/structuredfield/parse/parseBoolean.js","../node_modules/@svta/common-media-library/dist/utils/decodeBase64.js","../node_modules/@svta/common-media-library/dist/structuredfield/parse/parseByteSequence.js","../node_modules/@svta/common-media-library/dist/structuredfield/utils/DATE.js","../node_modules/@svta/common-media-library/dist/structuredfield/utils/INTEGER_DECIMAL.js","../node_modules/@svta/common-media-library/dist/structuredfield/parse/parseIntegerOrDecimal.js","../node_modules/@svta/common-media-library/dist/structuredfield/parse/parseDate.js","../node_modules/@svta/common-media-library/dist/structuredfield/parse/parseString.js","../node_modules/@svta/common-media-library/dist/structuredfield/parse/parseToken.js","../node_modules/@svta/common-media-library/dist/structuredfield/parse/parseBareItem.js","../node_modules/@svta/common-media-library/dist/structuredfield/parse/parseKey.js","../node_modules/@svta/common-media-library/dist/structuredfield/parse/parseParameters.js","../node_modules/@svta/common-media-library/dist/structuredfield/parse/parseItem.js","../node_modules/@svta/common-media-library/dist/structuredfield/parse/parseInnerList.js","../node_modules/@svta/common-media-library/dist/structuredfield/parse/parseItemOrInnerList.js","../node_modules/@svta/common-media-library/dist/structuredfield/parse/parseDict.js","../node_modules/@svta/common-media-library/dist/structuredfield/decodeSfDict.js","../node_modules/@svta/common-media-library/dist/cmcd/decodeCmcd.js","../node_modules/@svta/common-media-library/dist/cmcd/fromCmcdHeaders.js","../node_modules/@svta/common-media-library/dist/cmcd/fromCmcdQuery.js","../node_modules/@svta/common-media-library/dist/cmcd/fromCmcdUrl.js","../node_modules/@svta/common-media-library/dist/cmcd/toCmcdJson.js","../node_modules/@svta/common-media-library/dist/cmcd/toCmcdReport.js","../node_modules/@svta/common-media-library/dist/cmsd/CMSD_DYNAMIC.js","../node_modules/@svta/common-media-library/dist/cmsd/CMSD_STATIC.js","../node_modules/@svta/common-media-library/dist/cmsd/CMSD_V1.js","../node_modules/@svta/common-media-library/dist/cmsd/CmsdHeaderField.js","../node_modules/@svta/common-media-library/dist/cmsd/CmsdObjectType.js","../node_modules/@svta/common-media-library/dist/cmsd/CmsdStreamingFormat.js","../node_modules/@svta/common-media-library/dist/cmsd/CmsdStreamType.js","../node_modules/@svta/common-media-library/dist/structuredfield/utils/LIST.js","../node_modules/@svta/common-media-library/dist/structuredfield/parse/parseList.js","../node_modules/@svta/common-media-library/dist/structuredfield/decodeSfList.js","../node_modules/@svta/common-media-library/dist/cmsd/decodeCmsdDynamic.js","../node_modules/@svta/common-media-library/dist/cmsd/decodeCmsdStatic.js","../node_modules/@svta/common-media-library/dist/structuredfield/serialize/serializeList.js","../node_modules/@svta/common-media-library/dist/structuredfield/encodeSfList.js","../node_modules/@svta/common-media-library/dist/cmsd/encodeCmsdDynamic.js","../node_modules/@svta/common-media-library/dist/cmsd/utils/processCmsd.js","../node_modules/@svta/common-media-library/dist/cmsd/encodeCmsdStatic.js","../node_modules/@svta/common-media-library/dist/contentsteering/DEFAULT_PATHWAY_PENALTY.js","../node_modules/@svta/common-media-library/dist/contentsteering/DEFAULT_TTL.js","../node_modules/@svta/common-media-library/dist/contentsteering/isValidPathwayClone.js","../node_modules/@svta/common-media-library/dist/contentsteering/isValidSteeringManifest.js","../node_modules/@svta/common-media-library/dist/dash/parseFrameRate.js","../node_modules/@svta/common-media-library/dist/dash/processUriTemplate.js","../node_modules/@svta/common-media-library/dist/dash/THUMBNAIL_TILE_SCHEME_ID_URI.js","../node_modules/@svta/common-media-library/dist/drm/common/CBCS.js","../node_modules/@svta/common-media-library/dist/drm/common/CENC.js","../node_modules/@svta/common-media-library/dist/drm/common/MP4_PROTECTION_SCHEME.js","../node_modules/@svta/common-media-library/dist/drm/cenc/findCencContentProtection.js","../node_modules/@svta/common-media-library/dist/drm/cenc/getLicenseServerUrlFromContentProtection.js","../node_modules/@svta/common-media-library/dist/drm/cenc/getPsshData.js","../node_modules/@svta/common-media-library/dist/drm/cenc/parsePsshList.js","../node_modules/@svta/common-media-library/dist/drm/cenc/getPsshForKeySystem.js","../node_modules/@svta/common-media-library/dist/drm/cenc/parseInitDataFromContentProtection.js","../node_modules/@svta/common-media-library/dist/drm/keysystem/createMediaKeySystemConfiguration.js","../node_modules/@svta/common-media-library/dist/drm/keysystem/getKeySystemAccess.js","../node_modules/@svta/common-media-library/dist/drm/keysystem/getSupportedKeySystemConfiguration.js","../node_modules/@svta/common-media-library/dist/drm/keysystem/getLegacyKeySystemAccess.js","../node_modules/@svta/common-media-library/dist/utils/stringToUint16.js","../node_modules/@svta/common-media-library/dist/drm/fairplay/concatInitDataIdAndCertificate.js","../node_modules/@svta/common-media-library/dist/drm/fairplay/decodeFairPlayLicense.js","../node_modules/@svta/common-media-library/dist/utils/UTF_16.js","../node_modules/@svta/common-media-library/dist/utils/UTF_16_BE.js","../node_modules/@svta/common-media-library/dist/utils/UTF_16_LE.js","../node_modules/@svta/common-media-library/dist/utils/UTF_8.js","../node_modules/@svta/common-media-library/dist/utils/decodeText.js","../node_modules/@svta/common-media-library/dist/drm/fairplay/extractContentId.js","../node_modules/@svta/common-media-library/dist/drm/fairplay/getId.js","../node_modules/@svta/common-media-library/dist/drm/fairplay/getLicenseServerUrl.js","../node_modules/@svta/common-media-library/dist/xml/getElementsByName.js","../node_modules/@svta/common-media-library/dist/utils/unescapeHtml.js","../node_modules/@svta/common-media-library/dist/xml/parseXml.js","../node_modules/@svta/common-media-library/dist/drm/common/CHALLENGE.js","../node_modules/@svta/common-media-library/dist/drm/common/PLAYREADY_KEY_MESSAGE.js","../node_modules/@svta/common-media-library/dist/drm/playready/getLicenseRequestFromMessage.js","../node_modules/@svta/common-media-library/dist/drm/common/CONTENT_TYPE.js","../node_modules/@svta/common-media-library/dist/drm/common/HTTP_HEADERS.js","../node_modules/@svta/common-media-library/dist/drm/common/TEXT_XML_UTF8.js","../node_modules/@svta/common-media-library/dist/drm/playready/getRequestHeadersFromMessage.js","../node_modules/@svta/common-media-library/dist/drm/playready/toBigEndianKeyId.js","../node_modules/@svta/common-media-library/dist/drm/common/CLEAR_KEY_SYSTEM.js","../node_modules/@svta/common-media-library/dist/drm/common/CLEAR_KEY_UUID.js","../node_modules/@svta/common-media-library/dist/drm/common/EncryptionScheme.js","../node_modules/@svta/common-media-library/dist/drm/common/EXPIRED.js","../node_modules/@svta/common-media-library/dist/drm/common/FAIRPLAY_KEY_SYSTEM.js","../node_modules/@svta/common-media-library/dist/drm/common/FAIRPLAY_UUID.js","../node_modules/@svta/common-media-library/dist/drm/common/HW_SECURE_ALL.js","../node_modules/@svta/common-media-library/dist/drm/common/HW_SECURE_CRYPTO.js","../node_modules/@svta/common-media-library/dist/drm/common/HW_SECURE_DECODE.js","../node_modules/@svta/common-media-library/dist/drm/common/INDIVIDUALIZATION_REQUEST.js","../node_modules/@svta/common-media-library/dist/drm/common/KEYIDS.js","../node_modules/@svta/common-media-library/dist/drm/common/WEBM.js","../node_modules/@svta/common-media-library/dist/drm/common/InitializationDataType.js","../node_modules/@svta/common-media-library/dist/drm/common/INTERNAL_ERROR.js","../node_modules/@svta/common-media-library/dist/drm/common/LICENSE_ACQUISITION.js","../node_modules/@svta/common-media-library/dist/drm/common/LICENSE_RELEASE.js","../node_modules/@svta/common-media-library/dist/drm/common/LICENSE_RENEWAL.js","../node_modules/@svta/common-media-library/dist/drm/common/LICENSE_REQUEST.js","../node_modules/@svta/common-media-library/dist/drm/common/MediaKeyMessageType.js","../node_modules/@svta/common-media-library/dist/drm/common/OUTPUT_DOWNSCALED.js","../node_modules/@svta/common-media-library/dist/drm/common/OUTPUT_RESTRICTED.js","../node_modules/@svta/common-media-library/dist/drm/common/RELEASED.js","../node_modules/@svta/common-media-library/dist/drm/common/STATUS_PENDING.js","../node_modules/@svta/common-media-library/dist/drm/common/USABLE.js","../node_modules/@svta/common-media-library/dist/drm/common/MediaKeyStatus.js","../node_modules/@svta/common-media-library/dist/drm/common/PLAYREADY_KEY_SYSTEM.js","../node_modules/@svta/common-media-library/dist/drm/common/PLAYREADY_RECOMMENDATION_KEY_SYSTEM.js","../node_modules/@svta/common-media-library/dist/drm/common/PLAYREADY_UUID.js","../node_modules/@svta/common-media-library/dist/drm/common/SW_SECURE_CRYPTO.js","../node_modules/@svta/common-media-library/dist/drm/common/SW_SECURE_DECODE.js","../node_modules/@svta/common-media-library/dist/drm/common/W3C_CLEAR_KEY_UUID.js","../node_modules/@svta/common-media-library/dist/drm/common/WIDEVINE_KEY_SYSTEM.js","../node_modules/@svta/common-media-library/dist/drm/common/WIDEVINE_UUID.js","../node_modules/@svta/common-media-library/dist/drm/common/WidevineRobustness.js","../node_modules/@svta/common-media-library/dist/id3/util/isId3Header.js","../node_modules/@svta/common-media-library/dist/id3/util/readId3Size.js","../node_modules/@svta/common-media-library/dist/id3/canParseId3.js","../node_modules/@svta/common-media-library/dist/id3/util/isId3Footer.js","../node_modules/@svta/common-media-library/dist/id3/getId3Data.js","../node_modules/@svta/common-media-library/dist/utils/utf8ArrayToStr.js","../node_modules/@svta/common-media-library/dist/id3/util/toArrayBuffer.js","../node_modules/@svta/common-media-library/dist/id3/util/utf8.js","../node_modules/@svta/common-media-library/dist/id3/util/decodeId3ImageFrame.js","../node_modules/@svta/common-media-library/dist/id3/util/decodeId3PrivFrame.js","../node_modules/@svta/common-media-library/dist/id3/util/decodeId3TextFrame.js","../node_modules/@svta/common-media-library/dist/id3/util/decodeId3UrlFrame.js","../node_modules/@svta/common-media-library/dist/id3/util/decodeId3Frame.js","../node_modules/@svta/common-media-library/dist/id3/util/getId3FrameData.js","../node_modules/@svta/common-media-library/dist/id3/getId3Frames.js","../node_modules/@svta/common-media-library/dist/id3/isId3TimestampFrame.js","../node_modules/@svta/common-media-library/dist/id3/util/readId3Timestamp.js","../node_modules/@svta/common-media-library/dist/id3/getId3Timestamp.js","../node_modules/@svta/common-media-library/dist/id3/ID3_SCHEME_ID_URI.js","../node_modules/@svta/common-media-library/dist/iso/8601/decodeIso8601Duration.js","../node_modules/@svta/common-media-library/dist/iso/8601/encodeIso8601Duration.js","../node_modules/@svta/common-media-library/dist/iso/bmff/CONTAINERS.js","../node_modules/@svta/common-media-library/dist/iso/bmff/fields/DATA.js","../node_modules/@svta/common-media-library/dist/iso/bmff/fields/INT.js","../node_modules/@svta/common-media-library/dist/iso/bmff/fields/STRING.js","../node_modules/@svta/common-media-library/dist/iso/bmff/fields/TEMPLATE.js","../node_modules/@svta/common-media-library/dist/iso/bmff/fields/UINT.js","../node_modules/@svta/common-media-library/dist/iso/bmff/fields/UTF8.js","../node_modules/@svta/common-media-library/dist/iso/bmff/readers/readData.js","../node_modules/@svta/common-media-library/dist/iso/bmff/readers/readInt.js","../node_modules/@svta/common-media-library/dist/iso/bmff/readers/readUint.js","../node_modules/@svta/common-media-library/dist/iso/bmff/readers/readString.js","../node_modules/@svta/common-media-library/dist/iso/bmff/readers/readTemplate.js","../node_modules/@svta/common-media-library/dist/iso/bmff/readers/readTerminatedString.js","../node_modules/@svta/common-media-library/dist/iso/bmff/readers/readUtf8String.js","../node_modules/@svta/common-media-library/dist/iso/bmff/readers/readUtf8TerminatedString.js","../node_modules/@svta/common-media-library/dist/iso/bmff/IsoView.js","../node_modules/@svta/common-media-library/dist/iso/bmff/createIsoView.js","../node_modules/@svta/common-media-library/dist/iso/bmff/filterBoxes.js","../node_modules/@svta/common-media-library/dist/iso/bmff/filterBoxesByType.js","../node_modules/@svta/common-media-library/dist/iso/bmff/findBox.js","../node_modules/@svta/common-media-library/dist/iso/bmff/findBoxByType.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parseBoxes.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/ardi.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/avc1.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/avc2.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/avc3.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/avc4.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/ctts.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/dref.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/elng.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/elst.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/emsg.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/mp4a.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/enca.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/encv.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/free.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/frma.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/ftyp.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/hdlr.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/hev1.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/hvc1.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/iden.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/imda.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/kind.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/labl.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/mdat.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/mdhd.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/mehd.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/meta.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/mfhd.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/mfro.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/mvhd.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/payl.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/prft.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/prsl.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/pssh.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/schm.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/sdtp.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/sidx.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/skip.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/smhd.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/ssix.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/sthd.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/stsd.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/stss.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/sttg.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/stts.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/styp.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/subs.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/tenc.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/tfdt.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/tfhd.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/tfra.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/tkhd.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/trex.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/trun.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/url.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/urn.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/vlab.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/vmhd.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/vttC.js","../node_modules/@svta/common-media-library/dist/iso/bmff/parsers/vtte.js","../node_modules/@svta/common-media-library/dist/structuredfield/utils/ITEM.js","../node_modules/@svta/common-media-library/dist/structuredfield/decodeSfItem.js","../node_modules/@svta/common-media-library/dist/structuredfield/encodeSfItem.js","../node_modules/@svta/common-media-library/dist/utils/getBandwidthBps.js","../node_modules/@svta/common-media-library/dist/throughput/ArithmeticMeanEstimator.js","../node_modules/@svta/common-media-library/dist/throughput/Ewma.js","../node_modules/@svta/common-media-library/dist/throughput/EwmaEstimator.js","../node_modules/@svta/common-media-library/dist/throughput/HarmonicMeanEstimator.js","../node_modules/@svta/common-media-library/dist/throughput/ZlemaEstimator.js","../node_modules/@svta/common-media-library/dist/utils/arrayBufferToHex.js","../node_modules/@svta/common-media-library/dist/utils/arrayBufferToUuid.js","../node_modules/@svta/common-media-library/dist/utils/base64decode.js","../node_modules/@svta/common-media-library/dist/utils/base64encode.js","../node_modules/@svta/common-media-library/dist/utils/convertUint8ToUint16.js","../node_modules/@svta/common-media-library/dist/utils/Encoding.js","../node_modules/@svta/common-media-library/dist/utils/hexToArrayBuffer.js","../node_modules/@svta/common-media-library/dist/utils/uuid.js","../node_modules/@svta/common-media-library/dist/utils/uuidToArrayBuffer.js","../node_modules/@svta/common-media-library/dist/webvtt/createWebVttCue.js","../node_modules/@svta/common-media-library/dist/webvtt/createWebVttRegion.js","../node_modules/@svta/common-media-library/dist/webvtt/WebVttParsingError.js","../node_modules/@svta/common-media-library/dist/webvtt/parse/parseOptions.js","../node_modules/@svta/common-media-library/dist/webvtt/parse/parseTimestamp.js","../node_modules/@svta/common-media-library/dist/webvtt/parse/Settings.js","../node_modules/@svta/common-media-library/dist/webvtt/parse/parseCue.js","../node_modules/@svta/common-media-library/dist/webvtt/parse/WebVttParserState.js","../node_modules/@svta/common-media-library/dist/webvtt/WebVttParser.js","../node_modules/@svta/common-media-library/dist/webvtt/parseWebVtt.js","../node_modules/@svta/common-media-library/dist/webvtt/toVttCue.js","../node_modules/@svta/common-media-library/dist/webvtt/toVttRegion.js","../node_modules/@svta/common-media-library/dist/webvtt/WebVttResultType.js","../node_modules/@svta/common-media-library/dist/webvtt/WebVttTransformer.js","../node_modules/@svta/common-media-library/dist/webvtt/WebVttTransformStream.js","../node_modules/@svta/common-media-library/dist/index.js","../src/stats/PlayerStats.ts","../src/ui/UIMetrics.ts","../index.ts"],"sourcesContent":["/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n/**\n * BinaryReader allows to read binary data\n */\nconst _decoder = new TextDecoder();\n\nexport class BinaryReader {\n private _data: Uint8Array;\n private _size: number;\n private _position: number;\n private _view: DataView;\n\n constructor(data: BufferSource) {\n this._data =\n 'buffer' in data ? new Uint8Array(data.buffer, data.byteOffset, data.byteLength) : new Uint8Array(data);\n this._size = this._data.byteLength;\n this._position = 0;\n this._view = new DataView(this._data.buffer, this._data.byteOffset, this._size);\n }\n\n data(): Uint8Array {\n return this._data;\n }\n size(): number {\n return this._size;\n }\n\n available(): number {\n return this._size - this._position;\n }\n value(position: number = this._position): number {\n return this._data[position];\n }\n position(): number {\n return this._position;\n }\n reset(position = 0) {\n this._position = Math.max(0, position > this._size ? this._size : position);\n }\n\n shrink(available: number): number {\n const rest = this._size - this._position;\n if (available > rest) {\n return rest;\n }\n this._size = this._position + available;\n return available;\n }\n\n next(count = 1): number {\n const rest = this._size - this._position;\n if (count > rest) {\n count = rest;\n }\n this._position = Math.max(0, this._position + count);\n return count;\n }\n\n read8(): number {\n return this.next(1) === 1 ? this._view.getUint8(this._position - 1) : 0;\n }\n read16(): number {\n return this.next(2) === 2 ? this._view.getUint16(this._position - 2) : 0;\n }\n read24(): number {\n return this.next(3) === 3\n ? (this._view.getUint16(this._position - 3) << 8) | (this._view.getUint8(this._position - 1) & 0xff)\n : 0;\n }\n read32(): number {\n return this.next(4) === 4 ? this._view.getUint32(this._position - 4) : 0;\n }\n read64(): number {\n if (this.next(8) !== 8) {\n return 0;\n }\n return this._view.getUint32(this._position - 8) * 4294967296 + this._view.getUint32(this._position - 4);\n }\n readFloat(): number {\n return this.next(4) === 4 ? this._view.getFloat32(this._position - 4) : 0;\n }\n readDouble(): number {\n return this.next(8) === 8 ? this._view.getFloat64(this._position - 8) : 0;\n }\n read7Bit(bytes = 5): number {\n let result: number = 0;\n let factor: number = 1;\n while (this.available()) {\n const byte = this.read8();\n result += (byte & 0x7f) * factor;\n if (!(byte & 0x80)) {\n break;\n }\n factor *= 128;\n }\n return result;\n }\n readString(): string {\n let i = this._position;\n while (i < this._size && this._data[i]) {\n ++i;\n }\n const result = this.read(i - this._position);\n this.next(); // skip the 0 termination\n return _decoder.decode(result);\n }\n\n readHex(size: number): string {\n let hex = '';\n while (size-- > 0) {\n hex += ('0' + this.read8().toString(16)).slice(-2);\n }\n return hex;\n }\n\n /**\n * Read bytes, to convert bytes to string use String.fromCharCode(...reader.read(size)) or Util.stringify\n * @param {UInt32} size\n */\n read(size = this.available()): Uint8Array {\n if (this.available() < size) {\n return new Uint8Array(size); // default value = empty bytearray!\n }\n const pos = this._position;\n return this._data.subarray(pos, Math.max(pos, (this._position += size)));\n }\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\nconst _decoder = new TextDecoder();\nconst _encoder = new TextEncoder();\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nconst _perf = performance; // to increase x10 now performance!\n\n/**\n * Some basic utility functions\n */\n\n/**\n * An empty lambda function, pratical to disable default behavior of function or events which are not expected to be null\n * @example\n * console.log = Util.EMPTY_FUNCTION; // disable logs without breaking calls\n */\nexport const EMPTY_FUNCTION = () => {};\n\n/**\n * Returns an efficient timestamp in milliseconds elapsed since performance.timeOrigin,\n * representing the start of the current JavaScript execution context.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Performance/timeOrigin\n *\n * @remarks Each Web Worker runs in a separate JS context, so timestamps\n * are not directly comparable between different workers. Use {@link unixTime}\n * for comparable timestamps across different Web Workers.\n */\nexport function time(): number {\n return Math.floor(_perf.now());\n}\n\n/**\n * Returns an efficient Unix timestamp in milliseconds.\n *\n * Unix timestamps are universally comparable across different JavaScript\n * contexts (e.g., Web Workers), as they reference the number of milliseconds\n * elapsed since January 1, 1970 (UNIX epoch).\n */\nexport function unixTime(): number {\n return Math.floor(_perf.timeOrigin + _perf.now());\n}\n\n/**\n * Parse query and returns it in an easy-to-use Javascript object form\n * @param urlOrQueryOrSearch string, url, or searchParams containing query. If not set it uses `location.search` to determinate query.\n * @returns An javascript object containing each option\n */\nexport function options(\n urlOrQueryOrSearch: URL | URLSearchParams | string | object | undefined = typeof location === 'undefined'\n ? undefined\n : location\n): any {\n if (!urlOrQueryOrSearch) {\n return {};\n }\n try {\n const url: any = urlOrQueryOrSearch;\n urlOrQueryOrSearch = new URL(url).searchParams;\n } catch {\n if (typeof urlOrQueryOrSearch == 'string') {\n if (urlOrQueryOrSearch.startsWith('?')) {\n urlOrQueryOrSearch = urlOrQueryOrSearch.substring(1);\n }\n urlOrQueryOrSearch = new URLSearchParams(urlOrQueryOrSearch);\n }\n }\n // works same if urlOrQueryOrSearch is null, integer, or a already object etc...\n return objectFrom(urlOrQueryOrSearch, { withType: true, noEmptyString: true });\n}\n\n/**\n * Returns an easy-to-use Javascript object something iterable, such as a Map, Set, or Array\n * @param value iterable input\n * @param params.withType `false`, if set it tries to cast string value to a JS number/boolean/undefined/null type.\n * @param params.noEmptyString `false`, if set it converts empty string value to a true boolean, usefull to allow a `if(result.key)` check for example\n * @returns An javascript object\n */\nexport function objectFrom(value: any, params: { withType: boolean; noEmptyString: boolean }): any {\n params = Object.assign({ withType: false, noEmptyString: false }, params);\n const obj: any = {};\n if (!value) {\n return obj;\n }\n for (const [key, val] of iterableEntries(value)) {\n value = val;\n if (params.withType && value != null && value.substring) {\n if (value) {\n const number = Number(value);\n if (isNaN(number)) {\n switch (value.toLowerCase()) {\n case 'true':\n value = true;\n break;\n case 'false':\n value = false;\n break;\n case 'null':\n value = null;\n break;\n case 'undefined':\n value = undefined;\n break;\n }\n } else {\n value = number;\n }\n } else if (params.noEmptyString) {\n // if empty string => TRUE to allow a if(options.key) check for example\n value = true;\n }\n }\n if (obj[key]) {\n if (!Array.isArray(obj[key])) {\n obj[key] = new Array(obj[key]);\n }\n obj[key].push(value);\n } else {\n obj[key] = value;\n }\n }\n return obj;\n}\n\n/**\n * Returns a IterableIterator<[string, any]> from any iterable input like Map, Set, Array, or Object.\n *\n * For all other types of values (including `null` or `undefined`) it returns an empty iterator.\n *\n * @param value An iterable input\n * @returns a IterableIterator<[string, any]>\n */\nexport function iterableEntries(value: any): IterableIterator<[string, any]> {\n if (!value) {\n return (function* () {})();\n }\n if (typeof value.entries === 'function') {\n value = value.entries();\n }\n if (typeof value[Symbol.iterator] === 'function') {\n return value;\n }\n return (function* () {\n for (const key in value) {\n yield [key.toString(), value[key]];\n }\n })();\n}\n\n/**\n * Converts various data types, such as objects, strings, exceptions, errors,\n * or numbers, into a string representation. Since it offers a more comprehensive format,\n * this function is preferred to `JSON.stringify()`.\n * @param obj Any objects, strings, exceptions, errors, or number\n * @param params.space `''`, allows to configure space in the string representation\n * @param params.decimal `2`, allows to choose the number of decimal to display in the string representation\n * @param params.recursion `1`, recursion depth to stringify recursively every object value until this depth, beware if a value refers to a already parsed value an infinite loop will occur\n * @param params.noBin `false`, when set skip binary encoding and write inplace a bin-length information\n * @returns the final string representation\n */\n// Online Javascript Editor for free\n// Write, Edit and Run your Javascript code using JS Online Compiler\nexport function stringify(\n obj: any,\n params: { space?: string; decimal?: number; recursion?: number; noBin?: boolean } = {}\n): string {\n params = Object.assign({ space: ' ', decimal: 2, recursion: 1, noBin: false }, params);\n if (obj == null) {\n return String(obj);\n }\n const error = obj.error || obj.message;\n if (error) {\n // is a error!\n obj = error;\n }\n // number\n if (obj.toFixed) {\n return obj.toFixed(Number(params.decimal) || 0);\n }\n if (obj.byteLength != null && obj?.[Symbol.iterator]) {\n // Binary!\n if (!params.noBin) {\n return _decoder.decode(obj);\n }\n return '[' + obj.byteLength + '#bytes]';\n }\n // boolean or string type or stop recursivity\n if (typeof obj === 'boolean' || obj.substring || !params.recursion) {\n // is already a string OR has to be stringified\n return String(obj);\n }\n\n const space = params.space || '';\n\n if (Array.isArray(obj)) {\n // Array!\n let res = '';\n for (const value of obj) {\n res += (res ? ',' : '[') + space;\n res += stringify(value, Object.assign({ ...params }, { recursion: params.recursion - 1 }));\n }\n return (res += space + ']');\n }\n let res = '{';\n for (const name in obj) {\n if (res.length > 1) {\n res += ',';\n }\n res += space + name + ':';\n res += stringify(obj[name], Object.assign({ ...params }, { recursion: params.recursion - 1 })) + space;\n }\n return (res += '}');\n}\n\n/**\n * Encode a string to a binary representation\n * @param value string value to convert\n * @returns binary conversion\n */\nexport function toBin(value: string): Uint8Array {\n return _encoder.encode(value);\n}\n\n/**\n * Execute a promise in a safe way with a timeout if caller doesn't resolve it in the accurate time\n */\nexport function safePromise<T>(timeout: number, promise: Promise<T>) {\n // Returns a race between our timeout and the passed in promise\n let timer: NodeJS.Timeout;\n return Promise.race([\n promise instanceof Promise ? promise : new Promise(promise),\n new Promise((resolve, reject) => (timer = setTimeout(() => reject('timed out in ' + timeout + 'ms'), timeout)))\n ]).finally(() => clearTimeout(timer));\n}\n\n/**\n * Wait in milliseconds, requires a call with await keyword!\n */\nexport async function sleep(ms: number) {\n return new Promise(resolve => {\n setTimeout(resolve, ms);\n });\n}\n\n/**\n * Test equality between two value whatever their type, object and array included\n */\nexport function equal(a: any, b: any, seen = new WeakMap()): boolean {\n // 1. Check primitve identiy or NaN\n if (a === b) {\n return true;\n }\n if (Number.isNaN(a) && Number.isNaN(b)) {\n return true;\n }\n\n // 2. Check the both are complexe object\n if (Object(a) !== a || Object(b) !== b) {\n return false;\n }\n\n // 3. Catch circular reference\n if (seen.has(a)) {\n return seen.get(a) === b;\n }\n seen.set(a, b);\n\n // 4. Check « toStringTag » (Date, RegExp, Map, Set…)\n const tagA = Object.prototype.toString.call(a);\n if (tagA !== Object.prototype.toString.call(b)) {\n return false;\n }\n\n // 5. Special Case\n switch (tagA) {\n case '[object Date]':\n return a.getTime() === b.getTime();\n case '[object RegExp]':\n return a.source === b.source && a.flags === b.flags;\n case '[object Set]':\n case '[object Map]': {\n if (a.size !== b.size) {\n return false;\n }\n const aKeys = a.keys();\n const bKeys = a.keys();\n const aValues = a.values();\n const bValues = b.values();\n let aKey;\n while (!(aKey = aKeys.next()).done) {\n if (!equal(aKey.value, bKeys.next().value)) {\n return false;\n }\n const aValue = aValues.next().value;\n const bValue = bValues.next().value;\n if (aValue !== aKey && !equal(aValue, bValue)) {\n return false;\n }\n }\n return true;\n }\n }\n\n // 6. Arrays\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (!equal(a[i], b[i], seen)) {\n return false;\n }\n }\n return true;\n }\n\n // 7. Generic object : keys + symbols\n const keysA = [...Object.keys(a), ...Object.getOwnPropertySymbols(a)];\n if (keysA.length !== Object.keys(b).length + Object.getOwnPropertySymbols(b).length) {\n return false;\n }\n for (const key of keysA) {\n if (!equal(a[key], b[key], seen)) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Fetch help method adding an explicit error property when Response is NOK, with the more accurate textual error inside\n */\nexport async function fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response & { error?: string }> {\n const response = (await self.fetch(input, init)) as Response & { error?: string };\n if (!response.ok) {\n if (response.body) {\n response.error = await response.text();\n }\n if (!response.error) {\n response.error = response.statusText || response.status.toString() || 'Unknown error';\n }\n }\n return response;\n}\n\n/**\n * Fetch help method adding an explicit error property when Response is NOK, with the more accurate textual error inside\n * Also measure the rtt of fetching and returns it in the property Response.rtt (guaranteed to be ≥ 1),\n * supports subtracting server processing time using either the Response-Delay or CMSD-rd header when available\n *\n * WIP => replace the current implementation to use Resource Timing API\n */\nexport async function fetchWithRTT(\n input: RequestInfo | URL,\n init?: RequestInit\n): Promise<Response & { rtt: number; error?: string }> {\n // A first OPTIONS request to establish a connection (keep-alive)\n await fetch(input, { ...init, method: 'OPTIONS' });\n // Actual RTT measurement\n const startTime = time();\n const response = (await fetch(input, init)) as Response & { rtt: number; error?: string };\n response.rtt = time() - startTime;\n // remove the ResponseDelay if indicated by the server\n let responseDelay = Number(response.headers.get('Response-Delay')) || 0;\n if (!responseDelay) {\n // search if we have a CMSD info?\n // cmsd-dynamic \"fly\";rd=1\n const cmsd = response.headers.get('cmsd-dynamic');\n if (cmsd) {\n for (const param of cmsd.split(';')) {\n const [name, value] = param.split('=');\n if (name.trim().toLowerCase() === 'rd') {\n responseDelay = Number(value) || responseDelay;\n }\n }\n }\n }\n response.rtt = Math.max(1, response.rtt - responseDelay);\n return response;\n}\n\n/**\n * Get Extension part from path\n * @param path path to parse\n * @returns the extension\n */\nexport function getExtension(path: string): string {\n const dot = path.lastIndexOf('.');\n const ext = dot >= 0 && dot > path.lastIndexOf('/') ? path.substring(dot) : '';\n return ext;\n}\n\n/**\n * Get File part from path\n * @param path path to parse\n * @returns the file name\n */\nexport function getFile(path: string): string {\n return path.substring(path.lastIndexOf('/') + 1);\n}\n\n/**\n * Get Base File part from path, without extension\n * @param path path to parse\n * @returns the base file name\n */\nexport function getBaseFile(path: string): string {\n const dot = path.lastIndexOf('.');\n const file = path.lastIndexOf('/') + 1;\n return dot >= 0 && dot >= file ? path.substring(file, dot) : path.substring(file);\n}\n\nfunction codesFromString(value: string): Array<number> {\n const codes = [];\n for (let i = 0; i < value.length; ++i) {\n codes.push(value.charCodeAt(i));\n }\n return codes;\n}\n\n/**\n * String Trim function with customizable chars\n * @param value string to trim\n * @param chars chars to use to trim\n * @returns string trimmed\n */\nexport function trim(value: string, chars: string = ' '): string {\n const codes = codesFromString(chars);\n let start = 0;\n while (start < value.length && codes.includes(value.charCodeAt(start))) {\n ++start;\n }\n let end = value.length;\n while (end > 0 && codes.includes(value.charCodeAt(end - 1))) {\n --end;\n }\n return value.substring(start, end);\n}\n\n/**\n * String Trim Start function with customizable chars\n * @param value string to trim start\n * @param chars chars to use to trim start\n * @returns string trimmed\n */\nexport function trimStart(value: string, chars: string = ' '): string {\n const codes = codesFromString(chars);\n let i = 0;\n while (i < value.length && codes.includes(value.charCodeAt(i))) {\n ++i;\n }\n return value.substring(i);\n}\n\n/**\n * String Trim End function with customizable chars\n * @param value string to trim end\n * @param chars chars to use to trim end\n * @returns string trimmed\n */\nexport function trimEnd(value: string, chars: string = ' '): string {\n const codes = codesFromString(chars);\n let i = value.length;\n while (i > 0 && codes.includes(value.charCodeAt(i - 1))) {\n --i;\n }\n return value.substring(0, i);\n}\n\n/**\n * Wraps an object with a Proxy that makes property access case-insensitive.\n *\n * Property lookup (e.g. `obj.Foo` or `obj.foo`) will resolve to the same underlying key, regardless of casing.\n * Only affects string-based property access (not symbols).\n *\n * @param obj - The original object.\n * @returns A proxied object with case-insensitive property access.\n */\nexport function caseInsensitive(obj: any): Record<string, any> {\n return new Proxy(obj, {\n get(target, prop, receiver) {\n if (typeof prop === 'string') {\n const key = Object.keys(target).find(k => k.toLowerCase() === prop.toLowerCase());\n if (key !== undefined) {\n return Reflect.get(target, key, receiver);\n }\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\nimport * as Util from './Util';\n\n/**\n * BinaryWriter allows to write data in its binary form\n */\nexport class BinaryWriter {\n get view(): DataView {\n if (!this._view) {\n this._view = new DataView(this._data.buffer, this._data.byteOffset, this._data.byteLength);\n }\n return this._view;\n }\n get capacity(): number {\n return this._data.byteLength;\n }\n\n private _data: Uint8Array;\n private _size: number;\n private _view?: DataView;\n private _isConst?: boolean;\n\n constructor(dataOrSize: BufferSource | number = 64, offset: number = 0, length?: number) {\n if (typeof dataOrSize == 'number') {\n // allocate new buffer\n this._data = new Uint8Array(dataOrSize);\n this._size = 0;\n } else if ('buffer' in dataOrSize) {\n // append to existing data!\n this._data = new Uint8Array(dataOrSize.buffer, dataOrSize.byteOffset, dataOrSize.byteLength);\n this._size = dataOrSize.byteLength;\n } else {\n // overrides data\n this._isConst = true; // better than boolean for memory usage\n if (length == null) {\n // /!\\ Safari does not support undefined length, so we need to use byteLength instead\n length = dataOrSize.byteLength;\n }\n this._data = new Uint8Array(dataOrSize, offset, length);\n this._size = 0;\n }\n }\n\n data(): Uint8Array {\n return new Uint8Array(this._data.buffer, this._data.byteOffset, this._size);\n }\n size(): number {\n return this._size || 0;\n }\n\n next(count = 1): BinaryWriter {\n return this.reserve((this._size += count));\n }\n clear(size = 0): BinaryWriter {\n return this.reserve((this._size = size));\n }\n\n /**\n * Write binary data\n * @param data\n */\n write(data: ArrayLike<number> | BufferSource | string): BinaryWriter {\n let bin: Uint8Array | ArrayLike<number>;\n if (typeof data === 'string') {\n // Convertit la chaîne en Uint8Array\n bin = Util.toBin(data);\n } else if (data instanceof ArrayBuffer) {\n bin = new Uint8Array(data);\n } else if ('buffer' in data) {\n bin = new Uint8Array(data.buffer, data.byteOffset ?? 0, data.byteLength);\n } else {\n bin = data;\n }\n this.reserve(this._size + bin.length);\n this._data.set(bin, this._size);\n this._size += bin.length;\n return this;\n }\n\n write8(value: number): BinaryWriter {\n if (value > 0xff) {\n // cast to 8bits range\n value = 0xff;\n }\n this.reserve(this._size + 1);\n this._data[this._size++] = value;\n return this;\n }\n\n write16(value: number): BinaryWriter {\n if (value > 0xffff) {\n // cast to 16bits range\n value = 0xffff;\n }\n this.reserve(this._size + 2);\n this.view.setUint16(this._size, value);\n this._size += 2;\n return this;\n }\n\n write24(value: number): BinaryWriter {\n if (value > 0xffffff) {\n // cast to 24bits range\n value = 0xffffff;\n }\n this.reserve(this._size + 3);\n this.view.setUint16(this._size, value >> 8);\n this.view.setUint8((this._size += 2), value & 0xff);\n ++this._size;\n return this;\n }\n write32(value: number): BinaryWriter {\n if (value > 0xffffffff) {\n // cast to 32bits range\n value = 0xffffffff;\n }\n this.reserve(this._size + 4);\n this.view.setUint32(this._size, value);\n this._size += 4;\n return this;\n }\n\n write64(value: number): BinaryWriter {\n this.write32(value / 4294967296);\n return this.write32(value & 0xffffffff);\n }\n\n writeFloat(value: number): BinaryWriter {\n this.reserve(this._size + 4);\n this.view.setFloat32(this._size, value);\n this._size += 4;\n return this;\n }\n\n writeDouble(value: number): BinaryWriter {\n this.reserve(this._size + 8);\n this.view.setFloat64(this._size, value);\n this._size += 8;\n return this;\n }\n\n write7Bit(value: number): BinaryWriter {\n let byte = value & 0x7f;\n while ((value = Math.floor(value / 0x80))) {\n // equivalent to >>=7 for JS!\n this.write8(0x80 | byte);\n byte = value & 0x7f;\n }\n return this.write8(byte);\n }\n\n writeString(value: string): BinaryWriter {\n return this.write(Util.toBin(value)).write8(0);\n }\n\n writeHex(value: string): BinaryWriter {\n for (let i = 0; i < value.length; i += 2) {\n this.write8(parseInt(value.substring(i, i + 2), 16));\n }\n return this;\n }\n\n reserve(size: number): BinaryWriter {\n if (!this._data) {\n throw Error('buffer not writable');\n }\n if (size <= this._data.byteLength) {\n return this;\n }\n if (this._isConst) {\n throw Error('writing exceeds maximum ' + this._data.byteLength + ' bytes limit');\n }\n\n --size;\n size |= size >> 1;\n size |= size >> 2;\n size |= size >> 4;\n size |= size >> 8;\n size |= size >> 16;\n ++size;\n\n const data = new Uint8Array(size);\n data.set(this._data); // copy old buffer!\n this._data = data;\n this._view = undefined; // release view\n return this;\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\nimport * as Util from './Util';\n\n/**\n * Log levels\n */\nexport enum LogLevel {\n ERROR = 'error',\n WARN = 'warn',\n INFO = 'info',\n DEBUG = 'debug'\n}\n\n/**\n * Log interface to deal with log everywhere:\n * - filter log level: filter log level independantly of the browser\n * - subscribe logs: listen logs to effectuate some specific job related logs\n * - intercept logs: intercept logs to change the default behavior\n * - redirect logs: redirect logs to one other logger engine\n * - redefine logs: change log text like adding a prefix\n *\n * You have 4 {@link LogLevel} 'error','warn','info',and 'debug', as commonly managed by browsers.\n * You can use {@link ILog.level} or {@link ILog.on} to customer log level and behavior.\n *\n * @example\n * // filter log level globally, independantly of the browser\n * import { log } from '@ceeblue/web-utils';\n * log.level = LogLevel.WARN; // displays errors and warns\n *\n * // filter log level only for Player compoment\n * player.log.level = false; // no logs at all for player compoment\n *\n * // Intercept and redirect all the logs to the console (default behavior)\n * import { log } from '@ceeblue/web-utils';\n * log.on = (level:LogLevel,args:unknown[]) => {\n * console[level](...args.splice(0)); // args is empty after this call = final interception\n * }\n *\n * // Intercept the logs from Player compoment and displays only WARN logs\n * player.log.on = (level:LogLevel,args:unknown[]) => {\n * if (level !== LogLevel.WARN) {\n * args.length = 0; // args is empty after this call = final interception\n * }\n * }\n *\n * // Subscribe and redirect all the logs to a file logger\n * import { log } from '@ceeblue/web-utils';\n * log.on = (level:LogLevel,args:unknown[]) => {\n * fileLogger[level](...args); // args stays unchanged to let's continue the default behavior\n * }\n *\n * // Redefine the log to add some prefix indication\n * class Player {\n * connector = new Connector();\n * constructor() {\n * connector.log = this.log.bind(this,\"Connector log:\");\n * }\n * }\n *\n */\nexport interface ILog {\n /**\n * Build a log\n */\n (...args: unknown[]): Log;\n /**\n * Intercept,redefine or redirect any log\n * If you clear args you intercept the log and nothing happen more after this call.\n * @param level log level\n * @param args args\n * @returns\n */\n on: (level: LogLevel, args: unknown[]) => void;\n /**\n * Change log level, default log level is {@link LogLevel.INFO},\n * Boolean can be user to lets pass all the logs with `true` or disables all the logs with `false`.\n * @remarks To debug production code without modifying it you can use a special query parameter\n * called !cb-override-log-level to override this configuration.\n */\n level?: LogLevel | boolean;\n}\n\n// check coder issuer: everytime we don't forget to use the built Log\nlet _logging = 0;\nsetInterval(() => {\n console.assert(_logging === 0, _logging.toFixed(), 'calls to log was useless');\n}, 10000);\n\n// !cb-override-log-level\nconst _overrideLogLevel = Util.options()['!cb-override-log-level'];\n\nconst _charLevels = new Array(128);\n_charLevels[101] = _charLevels[69] = 1; // error\n_charLevels[119] = _charLevels[87] = 2; // warn\n_charLevels[105] = _charLevels[73] = 3; // info\n_charLevels[100] = _charLevels[68] = 4; // debug\n\n/**\n * Log instance\n */\nexport class Log {\n get error() {\n return this._bind(LogLevel.ERROR);\n }\n get warn() {\n return this._bind(LogLevel.WARN);\n }\n get info() {\n return this._bind(LogLevel.INFO);\n }\n get debug() {\n return this._bind(LogLevel.DEBUG);\n }\n\n private _args: unknown[];\n private _done?: boolean;\n private _log: ILog;\n\n constructor(log: ILog, ...args: unknown[]) {\n if (!args.length) {\n // cannot have 0 args to be called correctly!\n args.push(undefined);\n }\n this._args = args;\n this._log = log;\n ++_logging;\n }\n\n private _onLog(localLog: ILog, level: LogLevel): boolean {\n // we take like log-level by priority order:\n // 1- the overrideLogLevel\n // 2- the localLog.level\n // 3- the global log.level\n // 4- LogLevel.INFO\n const logLevel = _overrideLogLevel ?? localLog.level ?? log.level ?? LogLevel.INFO;\n if (logLevel === false) {\n // explicit null, no log at all!\n return false;\n }\n if (logLevel !== true && _charLevels[level.charCodeAt(0)] > _charLevels[logLevel.charCodeAt(0)]) {\n return false;\n }\n if (localLog.on) {\n localLog.on(level, this._args);\n }\n return this._args.length ? true : false;\n }\n\n private _bind(level: LogLevel) {\n if (!this._done) {\n this._done = true;\n --_logging;\n }\n // call the global onLog in first (global filter)\n if (!this._onLog(log, level)) {\n return Util.EMPTY_FUNCTION;\n }\n // call the local onLog (local filter)\n if (this._log !== log && !this._onLog(this._log, level)) {\n return Util.EMPTY_FUNCTION;\n }\n // if not intercepted display the log\n return console[level].bind(console, ...this._args);\n }\n}\n\n/**\n * Inherits from this class to use logs\n */\nexport class Loggable {\n /**\n * Start a log\n * @param args\n * @returns a Log object with the levels of log to call\n */\n log = ((...args: unknown[]): Log => {\n return new Log(this.log, ...args);\n }) as ILog;\n}\n\n/**\n * Global log\n */\nexport const log = ((...args: unknown[]) => {\n return new Log(log, ...args);\n}) as ILog;\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\nimport { Loggable } from './Log';\n\n/**\n * BitReader allows to read binary data bit by bit\n */\nexport class BitReader extends Loggable {\n private _data: Uint8Array;\n private _size: number;\n private _position: number;\n private _bit: number;\n\n constructor(data: BufferSource) {\n super();\n if ('buffer' in data) {\n this._data = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n } else {\n this._data = new Uint8Array(data);\n }\n this._size = this._data.byteLength;\n this._position = 0;\n this._bit = 0;\n }\n\n data(): Uint8Array {\n return this._data;\n }\n size(): number {\n return this._size;\n }\n available(): number {\n return (this._size - this._position) * 8 - this._bit;\n }\n\n next(count = 1): number {\n let gotten = 0;\n while (this._position !== this._size && count--) {\n ++gotten;\n if (++this._bit === 8) {\n this._bit = 0;\n ++this._position;\n }\n }\n return gotten;\n }\n read(count = 1): number {\n let result = 0;\n while (this._position !== this._size && count--) {\n result <<= 1;\n if (this._data[this._position] & (0x80 >> this._bit++)) {\n result |= 1;\n }\n if (this._bit === 8) {\n this._bit = 0;\n ++this._position;\n }\n }\n return result;\n }\n read8(): number {\n return this.read(8);\n }\n read16(): number {\n return this.read(16);\n }\n read24(): number {\n return this.read(24);\n }\n read32(): number {\n return this.read(32);\n }\n\n readExpGolomb(): number {\n let i = 0;\n while (!this.read()) {\n if (!this.available()) {\n return 0;\n }\n ++i;\n }\n const result = this.read(i);\n if (i > 15) {\n this.log('Exponential-Golomb code exceeding unsigned 16 bits').warn();\n return 0;\n }\n return result + (1 << i) - 1;\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\nimport * as Util from './Util';\n\n/**\n * Class to compute a weighted average byte rate over a specified time interval.\n *\n * This class continuously tracks data transmission and computes the byte rate\n * based on a weighted average, considering both the duration and the number of\n * bytes in each sample. It allows for real-time monitoring of bandwidth usage\n * and provides mechanisms to dynamically adjust the measurement interval.\n *\n * Features:\n * - Computes the byte rate using a **weighted average** approach.\n * - Allows setting a custom interval for tracking.\n * - Supports dynamic clipping to manually shrink the observation window.\n */\nexport class ByteRate {\n /**\n * Raised when new bytes are added\n */\n onBytes(bytes: number) {}\n\n /**\n * Returns the interval used for computing the byte rate\n */\n get interval() {\n return this._interval;\n }\n\n /**\n * Sets a new interval for computing the average byte rate\n */\n set interval(value: number) {\n this._interval = value;\n this.updateSamples();\n }\n\n private _interval: number;\n private _bytes!: number;\n private _time!: number; // beginning of the samples !\n private _samples!: Array<{ time: number; bytes: number; clip: boolean }>;\n private _clip!: boolean;\n\n /**\n * Constructor initializes the ByteRate object with a specified interval (default: 1000ms).\n * It sets up necessary variables to track byte rate over time.\n *\n * @param interval - Time interval in milliseconds to compute the byte rate.\n */\n constructor(interval = 1000) {\n this._interval = interval;\n this.clear();\n }\n\n /**\n * Returns the computed byte rate rounded to the nearest integer\n */\n value(): number {\n return Math.round(this.exact());\n }\n\n /**\n * Computes the exact byte rate in bytes per second\n */\n exact(): number {\n // compute rate/s\n this.updateSamples();\n const duration = Util.time() - this._time;\n return duration ? (this._bytes / duration) * 1000 : 0;\n }\n\n /**\n * Adds a new byte sample to the tracking system.\n * Updates the list of samples and recomputes the byte rate\n *\n * @param bytes - Number of bytes added in this interval\n */\n addBytes(bytes: number): ByteRate {\n const time = Util.time();\n const lastSample = this.updateSamples(time)[this._samples.length - 1];\n const lastTime = lastSample?.time ?? this._time;\n if (time > lastTime) {\n this._samples.push({ bytes, time, clip: false });\n } else {\n // no new duration => attach byte to last-one\n if (!lastSample) {\n // Ignore, was before our ByteRate scope !\n return this;\n }\n lastSample.bytes += bytes;\n }\n this._bytes += bytes;\n this.onBytes(bytes);\n return this;\n }\n\n /**\n * Clears all recorded byte rate data.\n */\n clear(): ByteRate {\n this._bytes = 0;\n this._time = Util.time();\n this._samples = [];\n this._clip = false;\n return this;\n }\n\n /**\n * Clips the byte rate tracking by marking the last sample as clipped.\n * If a previous clip exists, removes the clipped sample and all preceding samples.\n * Allows to shrink the interval manually between two positions.\n */\n clip(): ByteRate {\n if (this._clip) {\n this._clip = false;\n let removes = 0;\n for (const sample of this._samples) {\n this._bytes -= sample.bytes;\n ++removes;\n this._time = sample.time;\n if (sample.clip) {\n break;\n }\n }\n this._samples.splice(0, removes);\n }\n const lastSample = this._samples[this._samples.length - 1];\n if (lastSample) {\n lastSample.clip = true;\n this._clip = true;\n }\n return this;\n }\n\n private updateSamples(now = Util.time()) {\n // Remove obsolete sample\n const timeOK = now - this._interval;\n let removes = 0;\n let sample;\n while (this._time < timeOK && (sample = this._samples[removes])) {\n this._bytes -= sample.bytes;\n if (sample.clip) {\n this._clip = sample.clip = false;\n }\n if (sample.time > timeOK) {\n // only a part of the sample to delete !\n sample.bytes *= (sample.time - timeOK) / (sample.time - this._time);\n this._time = timeOK;\n this._bytes += sample.bytes;\n break;\n }\n ++removes;\n this._time = sample.time;\n }\n\n this._samples.splice(0, removes);\n return this._samples;\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\n/**\n * Help class to manipulate and parse a net address. The Address can be only the domain field,\n * or a URL format with protocol and path part `(http://)domain(:port/path)`\n * @example\n * const address = new Address('nl-ams-42.live.ceeblue.tv:80');\n * console.log(address.domain) // 'nl-ams-42.live.ceeblue.tv'\n * console.log(address.port) // '80'\n * console.log(address) // 'nl-ams-42.live.ceeblue.tv:80'\n */\nexport class NetAddress {\n /**\n * Static help function to build an end point from an address `(proto://)domain(:port/path)`\n *\n * Mainly it fix the protocol, in addition if:\n * - the address passed is securized (TLS) and protocol is not => it tries to fix protocol to get its securize version\n * - the address passed is non securized and protocol is (TLS) => it tries to fix protocol to get its unsecurized version\n * @param protocol protocol to set in the end point returned\n * @param address string address to fix with protocol as indicated\n * @returns the end point built\n * @example\n * console.log(NetAddress.fixProtocol('ws','http://domain/path')) // 'ws://domain/path'\n * console.log(NetAddress.fixProtocol('ws','https://domain/path')) // 'wss://domain/path'\n * console.log(NetAddress.fixProtocol('wss','http://domain/path')) // 'ws://domain/path'\n */\n static fixProtocol(protocol: string, address: string): string {\n // Remove leading slashes for absolute pathes!\n address = address.replace(/^[\\/]+/, '');\n const found = address.indexOf('://');\n // isolate protocol is present in address\n if (found >= 0) {\n // In this case replace by protocol in keeping SSL like given in address\n if (found > 2 && address.charAt(found - 1).toLowerCase() === 's') {\n // SSL!\n if (protocol.length <= 2 || !protocol.endsWith('s')) {\n protocol += 's'; // Add SSL\n }\n } else {\n // Not SSL!\n if (protocol.length > 2 && protocol.endsWith('s')) {\n protocol = protocol.slice(0, -1); // Remove SSL\n }\n }\n // Build address!\n address = address.substring(found + 3);\n }\n return protocol + '://' + address;\n }\n\n /**\n * The host part from address `(http://)domain:port/path)`\n */\n get host(): string {\n return this._host;\n }\n\n /**\n * The domain part from address `(http://)domain(:port/path)`\n */\n get domain(): string {\n return this._domain;\n }\n /**\n * The port part from address `(http://)domain(:port/path)`, or defaultPort if passed in NetAddress constructor\n */\n get port(): number | undefined {\n return this._port;\n }\n\n toString(): string {\n return this._address;\n }\n /**\n * @returns the string address as passed in the constructor\n * @override\n */\n valueOf(): string {\n return this._address;\n }\n\n private _address: string;\n private _domain: string;\n private _host: string;\n private _port?: number;\n /**\n * Build a NetAddress object and parse address\n * @param address string address to parse, accept an url format with protocol and path `(http://)domain(:port/path)`\n * @param defaultPort set a default port to use if there is no port in the string address parsed\n */\n constructor(address: string, defaultPort?: number) {\n this._address = address;\n\n // Remove Protocol\n let pos = address.indexOf('/');\n if (pos >= 0) {\n // Remove ://\n if (address.charCodeAt(pos + 1) === 47) {\n // has //\n if (pos > 0) {\n if (address.charCodeAt(pos - 1) === 58) {\n // has ://\n address = address.substring(pos + 2);\n } // something else #//\n } else {\n // otherwise starts by //\n address = address.substring(2);\n }\n } else if (!pos) {\n // starts by /, remove it\n address = address.substring(1);\n } // else something else #/\n }\n\n // Remove Path!\n pos = address.indexOf('/');\n if (pos >= 0) {\n address = address.substring(0, pos);\n }\n\n this._host = address;\n this._domain = address;\n this._port = defaultPort;\n\n const domainPortMatch = this._host.match(/^(?:\\[([0-9a-fA-F:]+)\\]|([^:/?#]+))(?::(\\d+))?(?=[/#?]|$)/);\n if (domainPortMatch) {\n this._domain = domainPortMatch[1] || domainPortMatch[2];\n if (domainPortMatch[3]) {\n const port = parseInt(domainPortMatch[3]);\n if (port >= 0 && port <= 0xffff) {\n this._port = port;\n }\n }\n }\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\nimport * as Util from './Util';\nimport { NetAddress } from './NetAddress';\nimport { log } from './Log';\n\n/**\n * Parameters of a key system for encrypted streams (DRM)\n *\n * If the key system is a string, it's the URL of the license server.\n *\n * If the key system is an object, it's a key system configuration with more parameters.\n */\nexport type KeySystem =\n | string\n | {\n /**\n * The license server URL\n */\n licenseUrl: string;\n /**\n * The certificate URL if needed (for FairPlay)\n *\n * Or directly the certificate\n */\n certificate?: string | Uint8Array;\n /**\n * The additional HTTP headers to send to the license server\n */\n headers?: Record<string, string>;\n /**\n * Audio robustness level\n *\n * A list of robustness levels, prioritized by the order of the array.\n */\n audioRobustness?: string[];\n /**\n * Video robustness level\n *\n * A list of robustness levels, prioritized by the order of the array.\n */\n videoRobustness?: string[];\n };\n\n/**\n * Parameters of connections\n */\nexport type Params = {\n /**\n * endPoint to connect. Can be only a host(:port) but accept also a full url of connection,\n * it can help to force a path or indicate a protocol preference\n */\n endPoint: string;\n /**\n * The name of the stream to join.\n * If `endPoint` is a complete URL and `streamName` is not provided, {@link buildURL} will set this parameter automatically\n * using the second part of the URL's path (the first part being the protocol name), or the first path if no other part exists.\n */\n streamName?: string;\n /**\n * Optional access token to use to join a private stream\n */\n accessToken?: string;\n /**\n * iceServer to use while connecting to a WebRTC stream\n */\n iceServer?: RTCIceServer; // Authentication value\n /**\n * Map of keys to content protection settings for encrypted streams\n * The key can be \"com.apple.fps\" for example for FairPlay\n */\n contentProtection?: Record<string, KeySystem>;\n /**\n * Optional media extension (mp4, flv, ts, rts), usefull for protocol like WebRTS which supports different container type.\n * When not set, it's also an output parameter for {@link defineMediaExt} to indicate what is the media type selected\n */\n mediaExt?: string;\n /**\n * Optional query to add into the generated url of connection\n */\n query?: URLSearchParams;\n};\n\n/**\n * Type of connection\n */\nexport enum Type {\n HESP = 'HESP',\n WRTS = 'WebRTS',\n WEBRTC = 'WebRTC',\n META = 'Meta',\n DATA = 'Data'\n}\n\n/**\n * Some connection utility functions\n */\n\n/**\n * Defines the {@link Params.mediaExt} based on the type of parameters and its endpoint.\n * This method always assigns a value to params.mediaExt, defaulting to an empty string if indeterminable,\n * allowing detection of whether the function has been applied to the parameters.\n * @param type The type of parameters to define.\n * @param params The parameters for which the media extension is to be defined\n */\nexport function defineMediaExt(type: Type, params: Params) {\n // Compute appropriate mediaExt out parameter\n if (!params.mediaExt) {\n try {\n const url = new URL(params.endPoint);\n // Set mediaExt with ?ext= param when set OR url extension\n params.mediaExt = url.searchParams.get('ext') ?? Util.getExtension(Util.getFile(url.pathname));\n } catch {\n // not an URL, it's only a host\n params.mediaExt = '';\n }\n }\n // Normalize mediaExt in removing the possible '.' prefix and change it to lower case\n params.mediaExt = Util.trimStart(params.mediaExt, '.').toLowerCase();\n switch (type) {\n case Type.HESP:\n params.mediaExt = 'mp4';\n break;\n case Type.WEBRTC:\n params.mediaExt = 'rtp';\n break;\n case Type.WRTS: {\n // json means a manifest file endPoint, replace with default rts media extension\n if (!params.mediaExt || params.mediaExt === 'json') {\n params.mediaExt = 'rts';\n }\n break;\n }\n case Type.META:\n params.mediaExt = 'js';\n break;\n case Type.DATA:\n params.mediaExt = 'json';\n break;\n default:\n log('Unknown params type ' + type).warn();\n break;\n }\n}\n\n/**\n * Build an URL from {@link Type | type} and {@link Params | params}\n * Can assign {@link Params.mediaExt | params.mediaExt} or {@link Params.streamName | params.streamName}\n * @param type Type of the connection wanted\n * @param params Connection parameters\n * @param protocol Optional parameter to choose the prefered protocol to connect\n * @returns The URL of connection\n */\nexport function buildURL(type: Type, params: Params, protocol: string = 'wss'): URL {\n defineMediaExt(type, params);\n\n const url = new URL(NetAddress.fixProtocol(protocol, params.endPoint));\n\n if (url.pathname.length <= 1) {\n // build ceeblue path!\n switch (type) {\n case Type.HESP:\n url.pathname = '/hesp/' + params.streamName + '/index.json';\n break;\n case Type.WEBRTC:\n url.pathname = '/webrtc/' + params.streamName;\n break;\n case Type.WRTS:\n url.pathname = '/wrts/' + params.streamName + '.' + params.mediaExt;\n break;\n case Type.META:\n url.pathname = '/json_' + params.streamName + '.js';\n break;\n case Type.DATA:\n url.pathname = '/' + params.streamName + '.json';\n break;\n default:\n log('Unknown url type ' + type).warn();\n break;\n }\n } else {\n // Host has already a path! keep it unchanged, it's user intentionnal (used with some other WHIP/WHEP server?)\n if (!params.streamName) {\n // extract the second part of the URL's path (the first part being the protocol name), or the first path if no other part exists\n const parts = url.pathname.split('/');\n params.streamName = Util.getBaseFile(parts[2] || parts[1] || parts[0]);\n }\n }\n if (params.accessToken) {\n url.searchParams.set('id', params.accessToken);\n }\n for (const [key, value] of params.query ?? []) {\n url.searchParams.set(key, value);\n }\n return url;\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\nimport { Loggable } from './Log';\n\n/* eslint-disable @typescript-eslint/no-unsafe-function-type */\ntype FilterOnKey<T> = T extends 'once' | 'on' ? never : T extends `on${infer R}` ? R : never;\ntype CaseVariations<T extends string> = string extends T ? string : Lowercase<T> | Capitalize<T>;\n/**\n * Extract all event keys from a class.\n * @example\n * class Logger extends EventEmitter {\n * onLog(log:string) { console.log(log); }\n * onClick(log:string) { console.log(log); }\n * }\n * type LoggerEvents = EventKeys<Logger>; // \"log\" | \"click\"\n */\ntype EventKeys<Keys> = keyof {\n [K in keyof Keys as CaseVariations<FilterOnKey<K>>]: never;\n};\n\n/**\n * A advanced EventEmitter which allows to declare event as natural function in the inheriting children class,\n * function must start by `on` prefix to be recognized as an event.\n * The function can define a behavior by default, and user can choose to redefine this behavior,\n * or add an additionnal subscription for this event.\n * In addition you can unsubscribe to multiple events with an `AbortController`\n * @example\n * class Logger extends EventEmitter {\n * onLog(log:string) { console.log(log); } // behavior by default\n *\n * test() {\n * // raise event onLog\n * this.onLog('test');\n * }\n * }\n *\n * const logger = new Logger();\n * logger.test(); // displays a log 'test'\n *\n * // redefine default behavior to display nothing\n * logger.onLog = () => {}\n * logger.test(); // displays nothing\n *\n * // add an additionnal subscription\n * logger.on('log', console.log);\n * logger.test(); // displays a log 'test'\n *\n * // remove the additionnal subscription\n * logger.off('log', console.log);\n * logger.test(); // displays nothing\n *\n * // add two additionnal subscriptions with a AbortController\n * const controller = new AbortController();\n * logger.on('log', log => console.log(log), controller);\n * logger.on('log', log => console.error(log), controller);\n * logger.test(); // displays a log 'test' + an error 'test'\n *\n * // Unsubscribe all the subscription with the AbortController\n * controller.abort();\n * logger.test(); // displays nothing\n */\nexport class EventEmitter extends Loggable {\n private _events: Map<string, Set<Function>>;\n\n /**\n * Build our EventEmitter, usually call from children class\n */\n constructor() {\n super();\n this._events = new Map();\n // Fill events with events as defined!\n let proto = Object.getPrototypeOf(this);\n while (proto && proto !== Object.prototype) {\n for (const name of Object.getOwnPropertyNames(proto)) {\n if (name.length < 3 || !name.startsWith('on')) {\n continue;\n }\n let defaultEvent = proto[name];\n if (defaultEvent instanceof Function) {\n const events = new Set<Function>();\n this._events.set(name.substring(2).toLowerCase(), events);\n const raise = (...args: unknown[]) => {\n // Call default event if not undefined, can happen if assigned to null/undefined\n const result = defaultEvent ? defaultEvent.call(this, ...args) : undefined;\n // Call subscribers\n for (const event of events) {\n event(...args);\n }\n return result;\n };\n Object.defineProperties(this, {\n [name]: {\n get: () => raise,\n set: (value: Function | undefined) => {\n // Assign a default behavior!\n defaultEvent = value;\n }\n }\n });\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n }\n\n /**\n * Event subscription\n * @param name Name of event without the `on` prefix (ex: `log` to `onLog` event declared)\n * @param event Subscriber Function\n * @param options.signal Optional `AbortSignal` to stop this or multiple subscriptions in same time\n */\n on(name: EventKeys<this>, event: Function, options?: { signal?: AbortSignal }) {\n if (typeof event !== 'function') {\n throw Error('event callback must be a function');\n }\n const events = this._event(name as string);\n events.add(event);\n options?.signal?.addEventListener('abort', () => events.delete(event), { once: true });\n }\n\n /**\n * Event subscription only one time, once time fired it's automatically unsubscribe\n * @param name Name of event without the `on` prefix (ex: `log` to `onLog` event declared)\n * @param event Subscriber Function\n * @param options.signal Optional `AbortSignal` to stop this or multiple subscriptions in same time\n */\n once(name: EventKeys<this>, event: Function, options?: { signal?: AbortSignal }) {\n if (typeof event !== 'function') {\n throw Error('event callback must be a function');\n }\n const events = this._event(name as string);\n const wrapper = (...args: unknown[]) => {\n events.delete(wrapper); // delete the wrapper from events\n event(...args); // execute event\n };\n events.add(wrapper);\n options?.signal?.addEventListener('abort', () => events.delete(wrapper), { once: true });\n }\n\n /**\n * Event unsubscription\n * @param name Name of event without the 'on' prefix (ex: 'log' to 'onLog' event declared)\n * @param event Unsubscriber Function, must be the one passed to {@link on} or {@link once} subscription methods\n */\n off(name: EventKeys<this>, event: Function) {\n if (!event) {\n throw Error('event to unsubscribe cannot be null');\n }\n\n return this._event(name as string).delete(event);\n }\n\n private _event(name: string): Set<Function> {\n const events = this._events.get(name.toLowerCase());\n if (!events) {\n throw Error('No event on' + name + ' on class ' + this.constructor.name);\n }\n return events;\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n/**\n * Some fix for JS MAP:\n * - find(key) search an item in the map and returns undefined if not found\n * - get(key) return the item if exists or otherwise create and returns it\n * - set(key, value) returns the value of the item (rather the MAP)\n */\nexport class FixMap<KeyType, ValueType> {\n [Symbol.iterator](): IterableIterator<[KeyType, ValueType]> {\n return this._map[Symbol.iterator]();\n }\n get size() {\n return this._map.size;\n }\n private _map: Map<KeyType, ValueType>;\n constructor(private _initValue: () => ValueType) {\n this._map = new Map<KeyType, ValueType>();\n }\n get(key: KeyType): ValueType {\n let value = this.find(key);\n if (value === undefined) {\n this._map.set(key, (value = this._initValue()));\n }\n return value;\n }\n find(key: KeyType): ValueType | undefined {\n return this._map.get(key);\n }\n has(key: KeyType): boolean {\n return this._map.has(key);\n }\n clear() {\n this._map.clear();\n }\n delete(key: KeyType): boolean {\n return this._map.delete(key);\n }\n set(key: KeyType, value: ValueType): ValueType {\n this._map.set(key, value);\n return value;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n forEach(callbackfn: (value: ValueType, key: KeyType, map: Map<KeyType, ValueType>) => void, thisArg?: any) {\n this._map.forEach(callbackfn, thisArg);\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\n/**\n * Queue typed similar to a {@link https://en.cppreference.com/w/cpp/container/queue | std::queue<Type>} with possibility to limit the capacity like a FIFO\n * @example\n * const queue = new Queue<number>(2);\n * queue.push(1); // [1]\n * queue.push(2); // [1,2]\n * queue.push(3); // [2,3] 1 has been removed to respect 2 capacity\n */\nexport class Queue<Type> {\n /**\n * Number of element in the queue\n */\n get size(): number {\n return this._queue.length;\n }\n\n /**\n * Maximum capacity for the queue, if not set queue has unlimited capacity\n */\n get capacity(): number | undefined {\n return this._capacity;\n }\n\n /**\n * Set a maximum capacity for the queue,\n * if you push new value exceding this capacity the firsts are removed (FIFO)\n * if set to undefined the queue is unlimited\n */\n set capacity(value: number | undefined) {\n this._capacity = value;\n if (value != null && this._queue.length > value) {\n this._queue.splice(0, this._queue.length - value);\n }\n }\n\n /**\n * The front element\n */\n get front(): Type {\n return this._queue[0];\n }\n\n /**\n * The back element\n */\n get back(): Type {\n return this._queue[this._queue.length - 1];\n }\n\n /**\n * Iterator though queue's elements\n */\n [Symbol.iterator](): IterableIterator<Type> {\n return this._queue[Symbol.iterator]();\n }\n\n private _capacity?: number;\n private _queue: Array<Type>;\n /**\n * Instanciate a new queue object with the type passed as template\n * @param capacity if set it limits the size of the queue, any exceding element pops the first element pushed (FIFO)\n */\n constructor(capacity?: number) {\n this._capacity = capacity;\n this._queue = new Array<Type>();\n }\n\n /**\n * Push a new element in the queue\n * @param value value of the element\n * @returns this\n */\n push(value: Type): Queue<Type> {\n if (this._capacity != null && this._queue.push(value) > this._capacity) {\n this.pop();\n }\n return this;\n }\n\n /**\n * Pop the first element from the queue\n * @returns The first element removed\n */\n pop(): Type | undefined {\n return this._queue.shift();\n }\n\n /**\n * Clear all the elements, queue becomes empty\n * @returns this\n */\n clear(): Queue<Type> {\n this._queue.length = 0;\n return this;\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\nimport { Queue } from './Queue';\n\n/**\n * A collection of number Queue<number> with the following efficient mathematic computation:\n * - minimum value in the collection\n * - maximum value in the collection\n * - average value of the collection\n */\nexport class Numbers extends Queue<number> {\n /**\n * minimum value in the collection, or 0 if colleciton is empty\n */\n get minimum(): number {\n return this._min;\n }\n\n /**\n * maximum value in the collection, or 0 if colleciton is empty\n */\n get maximum(): number {\n return this._max;\n }\n\n /**\n * average value of the collection, or 0 if collection if empty\n */\n get average(): number {\n if (this._average == null) {\n this._average = this.size ? this._sum / this.size : 0;\n }\n return this._average;\n }\n\n private _average?: number;\n private _sum: number = 0;\n private _min: number = 0;\n private _max: number = 0;\n /**\n * Instantiate the collection of the number\n * @param capacity if set it limits the number of values stored, any exceding number pops the first number pushed (FIFO)\n */\n constructor(capacity?: number) {\n super(capacity);\n }\n\n /**\n * Push a value to the back to the collection\n * @param value number to add\n * @returns this\n */\n push(value: number): Numbers {\n if (value > this._max) {\n this._max = value;\n } else if (value < this._min) {\n this._min = value;\n }\n this._average = undefined;\n this._sum += value;\n super.push(value);\n return this;\n }\n\n /**\n * Pop the front number from the collection\n * @returns the front number removed\n */\n pop(): number | undefined {\n const front = super.pop();\n if (front === this._max) {\n this._max = Math.max(0, ...this);\n } else if (front === this._min) {\n this._min = Math.min(0, ...this);\n }\n this._average = undefined;\n this._sum -= front || 0;\n return front;\n }\n\n /**\n * Clear all the numbers, collection becomes empty\n * @returns this\n */\n clear() {\n this._min = this._max = this._sum = 0;\n super.clear();\n return this;\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Toolkit to deal with Session Description Protocol (SDP),\n * mainly to tranform a SDP string Offer/Answer to a manipulable JS object representation\n * @example\n * const peerConnection = new RTCPeerConnection();\n * peerConnection.createOffer()\n * .then( offer =>\n * // Change offer.sdp string to a JS manipulable object\n * const sdp = SDP.fromString(offer.sdp || '');\n * // Change a property of SDP\n * sdp.v = 2; // change SDP version\n * // Reserialize to the legal SDP string format\n * offer.sdp = SDP.toString(sdp);\n * // Set SDP offer to peerConnection\n * peerConnection.setLocalDescription(offer);\n * )\n */\nexport const SDP = {\n /**\n * Unserialize SDP string to a manipulable JS object representation\n * It's an object with:\n * - root SDP properties\n * - media description iterable\n * @param lines SDP string reprensentation\n * @returns SDP object representation, iterable through media description\n * @example\n * [\n * group: \"DUNBLE 0 1\",\n * o: \"- 1699450751193623 0 IN IP4 0.0.0.0\",\n * s: \"-\",\n * t: \"0 0\",\n * v: \"0\",\n * ice-lite: \"\",\n * length: 2,\n * {\n * m: \"audio 9 UDP/TLS/RTP/SAVPF 111\",\n * c: \"IN IP4 0.0.0.0\",\n * rtcp: \"9\",\n * sendonly: \"\",\n * setup: \"passive\",\n * fingerprint: \"sha-256 51:36:ED:78:A4:9F:25:8C:39:9A:0E:A0:B4:9B:6E:04:37:FF:AD:96:93:71:43:88:2C:0B:0F:AB:6F:9A:52:B8\",\n * ice-ufrag: \"fa37\",\n * ice-pwd: \"JncCHryDsbzayy4cBWDxS2\",\n * rtcp-mux: \"\",\n * rtcp-rsize: \"\",\n * rtpmap: \"111 opus/48000/2\",\n * rtcp-fb: \"111 nack\",\n * id: \"0\",\n * fmtp: \"111 minptime=10;useinbandfec=1\",\n * candidate: \"1 1 udp 2130706431 89.105.221.108 56643 typ host\",\n * end-of-candidates: \"\"\n * },\n * {\n * m: \"video 9 UDP/TLS/RTP/SAVPF 106\",\n * c: \"IN IP4 0.0.0.0\",\n * rtcp: \"9\",\n * sendonly: \"\",\n * setup: \"passive\",\n * fingerprint: \"sha-256 51:36:ED:78:A4:9F:25:8C:39:9A:0E:A0:B4:9B:6E:04:37:FF:AD:96:93:71:43:88:2C:0B:0F:AB:6F:9A:52:B8\",\n * ice-ufrag: \"fa37\",\n * ice-pwd: \"JncCHryDsbzayy4cBWDxS2\",\n * rtcp-mux: \"\",\n * rtcp-rsize: \"\",\n * rtpmap: \"106 H264/90000\",\n * rtcp-fb: [\n * \"106 nack\",\n * \"106 goog-remb\"\n * ],\n * mid: \"1\",\n * fmtp: \"106 profile-level-id=42e01f;level-asymmetry-allowed=1;packetization-mode=1\",\n * candidate: \"1 1 udp 2130706431 89.105.221.108 56643 typ host\",\n * end-of-candidates: \"\"\n * }\n * ]\n */\n fromString(lines: string): any {\n if (Array.isArray(lines)) {\n return lines; // already converted\n }\n const sdp = new Array<any>();\n let media: any = sdp;\n let fingerprint;\n for (let line of lines.toString().split('\\n')) {\n line = line.trim();\n if (!line) {\n continue;\n }\n\n let key = line[0];\n const value = line.substring(line.indexOf('=') + 1).trim();\n switch (key.toLowerCase()) {\n case 'a': {\n if (!value) {\n continue;\n } // empty attribute!\n key = this.addAttribute(media, value);\n // save fingerprint to repeat it in medias\n if (sdp === media && key.toLowerCase() === 'fingerprint') {\n fingerprint = media.fingerprint;\n }\n break;\n }\n case 'm':\n if (sdp.length && fingerprint && !sdp[sdp.length - 1].fingerprint) {\n media.fingerprint = fingerprint;\n }\n sdp.push((media = { m: value }));\n break;\n default:\n media[key] = value;\n }\n }\n if (sdp.length && fingerprint && !sdp[sdp.length - 1].fingerprint) {\n media.fingerprint = fingerprint;\n }\n return sdp;\n },\n\n /**\n * Serialize SDP JS object to a SDP string legal representation\n * @param sdp SDP object reprensetation\n * @returns SDP string reprensentation\n */\n toString(sdp: any): string {\n if (typeof sdp === 'string') {\n return sdp; // already converted\n }\n const medias = [];\n // https://www.cl.cam.ac.uk/~jac22/books/mm/book/node182.html\n let lines = 'v' in sdp ? 'v=' + sdp.v + '\\n' : '';\n if ('o' in sdp) {\n lines += 'o=' + sdp.o + '\\n';\n }\n if ('s' in sdp) {\n lines += 's=' + sdp.s + '\\n';\n }\n const obj: any = sdp;\n for (const key of Object.keys(sdp)) {\n if (key === 'v' || key === 'o' || key === 's') {\n continue;\n }\n const value = obj[key];\n if (value == null) {\n continue;\n } // ignore this key/value\n const index = parseInt(key);\n if (!isNaN(index)) {\n // Is a number! Media object!\n medias[index] = value;\n continue;\n }\n const count = (Array.isArray(value) && value.length) || 1; // value can be numeric!\n for (let i = 0; i < count; ++i) {\n const line = Array.isArray(value) && value.length ? value[i] : value;\n if (key.length > 1) {\n // when key is superior to 1 letter it's a attribute!\n lines += 'a=' + key;\n if (line) {\n lines += ':';\n }\n } else {\n lines += key + '=';\n }\n lines += line + '\\n';\n }\n }\n for (const media of medias) {\n lines += this.toString(media);\n }\n return lines;\n },\n\n /**\n * While set a property to a SDP object representation is possible directly,\n * we could prefer add a new property without overload a possible already existing value.\n * This function allows to add a property to our SDP representation:\n * - if the key's attribute doesn't exists yet it adds it like a simple JS property sdp[key] = value\n * - if the key's attribute exists already it morphs the value to a Array and push it inside\n * @param sdp the SDP object representation on which added the attribute\n * @param attribute the string attribut in a format \"key:value\" or just \"key\" to add an attribute without value\n * @returns the key part of the attribute added (or if value is empty it returns the same attribute as passed in argument)\n */\n addAttribute(sdp: object, attribute: string): string {\n const a = SDP.parseAttribute(attribute);\n const value = a.value ?? ''; // to allow to test if key exists even without value with if(sdp.key != null)\n const obj: any = sdp;\n const oldValue = obj[a.key];\n if (!oldValue) {\n obj[a.key] = value;\n } else if (Array.isArray(oldValue)) {\n oldValue.push(value);\n } else if (value !== oldValue) {\n obj[a.key] = [oldValue, value];\n }\n return a.key;\n },\n\n /**\n * While it's possible to delete a attribute manually on the SDP object representation with a delete sdp.key,\n * we could prefer remove only a value in a sdp.key array containing multiple values.\n * Like opposite to addAttribute this method allows to remove an unique attribute value.\n * @param sdp the SDP object representation on which removed the attribute\n * @param attribute the string attribut in a format \"key:value\" or just \"key\" to remove the whole attribute and all its values\n * @returns the key part of the attribute removed (or if value is empty it returns the same attribute as passed in argument)\n */\n removeAttribute(sdp: object, attribute: string): string {\n const a = SDP.parseAttribute(attribute);\n const obj: any = sdp;\n if (a.value === undefined) {\n delete obj[attribute];\n return attribute;\n }\n const current = obj[attribute];\n if (Array.isArray(a.value)) {\n const i = current.findIndex((current: string) => current === a.value);\n if (i >= 0) {\n current.splice(i, 1);\n }\n } else if (current === a.value) {\n delete obj[attribute];\n }\n return a.key;\n },\n\n /**\n * Parse an attribute in a format \"key:value\"\n * @param attribute string attribute to parse\n * @returns the {key, value} result, with value undefined if attribute was a \"key\" without value\n */\n parseAttribute(attribute: string): { key: string; value: string | undefined } {\n const found = attribute.indexOf(':');\n return {\n key: (found >= 0 ? attribute.substring(0, found) : attribute).trim(),\n value: found >= 0 ? attribute.substring(found + 1).trim() : undefined\n };\n }\n};\nObject.freeze(SDP);\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\nimport { ByteRate } from './ByteRate';\nimport { EventEmitter } from './EventEmitter';\n\nexport type WebSocketReliableError =\n /**\n * Represents a WebSocket disconnection error.\n */\n | { type: 'WebSocketReliableError'; name: 'Socket disconnection'; url: string; reason: string }\n /**\n * Represents a server shutdown error.\n */\n | { type: 'WebSocketReliableError'; name: 'Server shutdown'; url: string }\n /**\n * Represents a connection failure error.\n */\n | { type: 'WebSocketReliableError'; name: 'Connection failed'; url: string; reason: string };\n\n/**\n * The WebSocketReliable class extends WebSocket to bring up the following improvements:\n * - Fix all possible unintentional closing ways to get always a related error message, {@link onClose | onClose(error?) event}\n * - Make possible message sending while connecting. Indeed no need to wait {@link onOpen} before to send message,\n * you can open the socket and immediately send messages, it will be queue and flushs on connection etablishment\n * - Make possible a delayed connection, or a reconnection. Indeed you can create an unconnected Websocket instance\n * without passing any url argument and starts the conneciton more later with {@link WebSocketReliable.open(url) | open(url)} method\n * - Make possible to control sending/queueing message: send method take an optional queueing=true argument to\n * queue message rather send it, a futur call to flush will send it. Then queueing getter allows to handle the queue\n * if need to purge it or remove some queued message. Use it all together can help to prioritize messages or control overload.\n * @example\n * const ws = new WebSocketReliable(url);\n * ws.onClose = (error?:string) => {\n * if(error) {\n * console.error(error);\n * }\n * // reconnection attempt every seconds\n * setTimeout(() => ws.open(url), 1000);\n * }\n * ws.onMessage = (message:string) => {\n * console.log(message);\n * }\n * ws.send('hello'); // send immediatly a hello message is possible (no need to wait onOpen)\n */\nexport class WebSocketReliable extends EventEmitter {\n /**\n * Fired when socket is connected\n * @event\n */\n onOpen() {}\n\n /**\n * Fired on message reception\n * @param message can be binary or string.\n * If you subscribe to the event with message as string type (and not union),\n * it means that you know that all your messages are distributed in a string format\n * @event\n */\n onMessage(message: ArrayBuffer | string) {}\n\n /**\n * Fired on websocket close\n * @param error error description on an improper closure\n * @event\n */\n onClose(error?: WebSocketReliableError) {\n if (error) {\n this.log('onClose', error).error();\n } else {\n this.log('onClose').info();\n }\n }\n\n /**\n * binaryType, fix binary type to arrayBuffer\n */\n get binaryType(): BinaryType {\n return 'arraybuffer';\n }\n\n get recvByteRate(): number {\n return this._recvByteRate.value();\n }\n\n get sendByteRate(): number {\n return this._sendByteRate.value();\n }\n\n /**\n * url of connection\n */\n get url(): string {\n return this._ws?.url ?? '';\n }\n\n /**\n * extensions negociated by the server\n */\n get extensions(): string {\n return this._ws?.extensions ?? '';\n }\n\n /**\n * protocol negociated by the server\n */\n get protocol(): string {\n return this._ws?.protocol ?? '';\n }\n\n /**\n * opened equals true when connection is etablished, in other word when onOpen event is fired\n */\n get opened(): boolean {\n return this._opened;\n }\n\n /**\n * {@link https://developer.mozilla.org/docs/Web/API/WebSocket/readyState | Official websocket readyState}\n */\n get readyState(): number {\n return this._ws ? this._ws.readyState : 3;\n }\n\n /**\n * True when connection is closed, in other words when {@link onClose} event is fired\n * or when WebSocketReliable is build without url (disconnected creation)\n */\n get closed(): boolean {\n return this._closed;\n }\n\n /**\n * The number of bytes of data that were queued during calls to send() but not yet transmitted to the network\n */\n get bufferedAmount(): number {\n return this._queueingBytes + (this._ws?.bufferedAmount || 0);\n }\n\n /**\n * Queued messages from a call to send() waiting to be transmit one time websocket connection opened (or with an explicit call to flush() method)\n */\n get queueing(): Array<string | ArrayBuffer | ArrayBufferView> {\n return this._queueing;\n }\n\n private _opened: boolean;\n private _closed: boolean;\n private _queueing: Array<string | ArrayBuffer | ArrayBufferView>;\n private _queueingBytes: number;\n private _ws?: WebSocket;\n private _recvByteRate: ByteRate;\n private _sendByteRate: ByteRate;\n /**\n * Create a WebSocketReliable object, and open it if an url is passed in argument\n * @param url URL of the WebSocket endpoint or null to start the connection later\n */\n constructor(url?: string | URL, protocols?: string | string[]) {\n super();\n this._queueing = [];\n this._queueingBytes = 0;\n this._opened = false;\n this._closed = true;\n this._recvByteRate = new ByteRate();\n this._sendByteRate = new ByteRate();\n if (url) {\n this.open(url, protocols);\n }\n }\n\n /**\n * Open a WebSocket connection\n * @param url url of the websocket endpoint\n * @returns this\n */\n open(url: URL | string, protocols?: string | string[]) {\n this._closed = false;\n const ws = (this._ws = new WebSocket(url, protocols));\n ws.binaryType = this.binaryType;\n ws.onmessage = e => {\n this._recvByteRate.addBytes(e.data.byteLength ?? e.data.length);\n this.onMessage(e.data);\n };\n // Add details and fix close ways\n ws.onclose = (e: CloseEvent) => {\n if (!this._opened) {\n // close during connection!\n this.close({\n type: 'WebSocketReliableError',\n name: 'Connection failed',\n url: url.toString(),\n reason: String(e.reason || e.code)\n });\n } else if (e.code === 1000 || e.code === 1005) {\n // normal disconnection from server\n this.close({\n type: 'WebSocketReliableError',\n name: 'Server shutdown',\n url: url.toString()\n });\n } else {\n // abnormal disconnection from server\n this.close({\n type: 'WebSocketReliableError',\n name: 'Socket disconnection',\n url: url.toString(),\n reason: String(e.reason || e.code)\n });\n }\n };\n // Wrap send method to queue messages until connection is established.\n ws.onopen = _ => {\n this._opened = true;\n this.flush();\n this.onOpen();\n };\n return this;\n }\n\n /**\n * Send a message\n * @param message\n * @param queueing When set it reports the sending to a more later call to flush\n * @returns this\n */\n send(message: string | ArrayBuffer | ArrayBufferView, queueing: boolean = false) {\n if (this._closed) {\n throw Error('Open socket before to send data');\n }\n if (queueing || !this._opened) {\n this._queueing.push(message);\n this._queueingBytes += typeof message === 'string' ? message.length : message.byteLength;\n } else {\n this._send(message);\n }\n return this;\n }\n\n /**\n * Send queueing messages\n */\n flush() {\n if (this._ws) {\n for (const message of this._queueing) {\n this._send(message);\n }\n }\n this._queueing.length = 0;\n this._queueingBytes = 0;\n }\n\n /**\n * Close websocket\n * @param error the error reason if is not a proper close\n */\n close(error?: WebSocketReliableError) {\n if (!this._ws || this._closed) {\n return;\n }\n this._closed = true;\n this._ws.onopen = this._ws.onclose = this._ws.onmessage = null; // otherwise can receive message AFTER close!\n this._ws.close(); // Don't set to undefined to keep this._ws properties valid!\n // release resources!\n\n this._queueing.length = 0;\n this._queueingBytes = 0;\n this.onClose(error);\n // Reset _opened in last to allow to differenciate in onClose an error while connecting OR while connected\n this._opened = false;\n }\n\n private _send(message: string | ArrayBuffer | ArrayBufferView) {\n if (!this._ws) {\n return;\n }\n this._sendByteRate.addBytes(typeof message === 'string' ? message.length : message.byteLength);\n this._ws.send(message);\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\n// Fixed blocks to 32 because timestamp is encoded on 32 bits\nconst _blocksPerRow = 32;\n\n/**\n * Decode the timestamp from a video element and compute the latency between the timestamp and the current date.\n *\n * @param {HTMLVideoElement} sourceEl the video element to get the image from\n * @param {HTMLCanvasElement} canvas\n * @param {CanvasRenderingContext2D} context\n * @param {Date} now current date, new Date() by default\n * @param {Number} tolerance percentage of tolerance for the black and white threshold, 0.2 by default\n * @returns {Number} The latency in millisecond between 'now' and the decoded timestamp, 0 if the timestamp cannot be decoded\n */\nexport function getLatency(\n sourceEl: HTMLVideoElement,\n canvas: HTMLCanvasElement,\n context: CanvasRenderingContext2D,\n now: Date = new Date(),\n tolerance: number = 0.2\n) {\n canvas.width = sourceEl.videoWidth;\n canvas.height = Math.floor(canvas.width / _blocksPerRow);\n if (!canvas.width || !canvas.height) {\n // No pixel to parse!\n return 0;\n }\n\n context.drawImage(sourceEl, 0, 0, canvas.width, canvas.height, 0, 0, canvas.width, canvas.height);\n\n const timestamp = decodeTimestamp(context, canvas.width, tolerance);\n return timestamp == null ? 0 : now.getTime() - timestamp.getTime();\n}\n\n/**\n * Decode a previously encoded timestamp from a canvas\n *\n * @param {CanvasRenderingContext2D} context\n * @param {Number} lineWidth width of the line in pixels\n * @param {Number} tolerance percentage of tolerance for the black and white threshold, 0.2 by default\n * @returns {Date|null} The Date object representing the timestamp or null if the timestamp cannot be decoded\n */\nexport function decodeTimestamp(context: CanvasRenderingContext2D, lineWidth: number, tolerance: number = 0.2) {\n // Integer block width and ignore the right-hand remainder.\n const blockSize = Math.floor(lineWidth / _blocksPerRow);\n let binaryTime = '';\n if (blockSize < 1) {\n return null;\n }\n\n const effectiveWidth = blockSize * _blocksPerRow;\n const midBlock = Math.floor(blockSize / 2);\n const data = context.getImageData(0, midBlock, effectiveWidth, 1).data;\n const pixels = new Uint32Array(data.buffer);\n const blackThreshold = 0xff * tolerance;\n const whiteThreshold = 0xff * (1 - tolerance);\n\n // Sample the center pixel of each integer-sized block that the encoder painted.\n for (let i = 0; i < effectiveWidth; i += blockSize) {\n const pixel = pixels[i + midBlock] & 0xffffff;\n // Extract luminance from RGB\n const Y = 0.299 * ((pixel >> 16) & 0xff) + 0.587 * ((pixel >> 8) & 0xff) + 0.114 * (pixel & 0xff);\n if (Y < blackThreshold) {\n // Black\n binaryTime += '1';\n } else if (Y > whiteThreshold) {\n // White\n binaryTime += '0';\n } else {\n return null;\n }\n }\n\n const day = parseInt(binaryTime.slice(0, 5), 2);\n const hour = parseInt(binaryTime.slice(5, 10), 2);\n const minute = parseInt(binaryTime.slice(10, 16), 2);\n const second = parseInt(binaryTime.slice(16, 22), 2);\n const millisecond = parseInt(binaryTime.slice(22, 32), 2);\n\n // Basic sanity checks (match encoder ranges)\n if (day < 1 || day > 31 || hour > 23 || minute > 59 || second > 59 || millisecond > 999) {\n return null;\n }\n\n const now = new Date();\n return new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), day, hour, minute, second, millisecond));\n}\n\n/**\n * Encode the given date (excluding year and month) into a line composed of blocks\n * of black and white pixels written on the top of the canvas.\n *\n * @param {CanvasRenderingContext2D} context\n * @param {Number} lineWidth width of the line in pixels\n * @param {Number} blocksPerRow number of blocks in the line, 32 by default\n * @param {Date} now current date, new Date() by default\n */\nexport function encodeTimestamp(\n context: CanvasRenderingContext2D,\n lineWidth: number,\n blocksPerRow: number = 32,\n now: Date = new Date()\n) {\n const blockSize = Math.floor(lineWidth / blocksPerRow);\n\n const day = now.getUTCDate();\n const hour = now.getUTCHours();\n const minute = now.getUTCMinutes();\n const second = now.getUTCSeconds();\n const millisecond = now.getUTCMilliseconds();\n\n const binaryDay = day.toString(2).padStart(5, '0'); // 31 possible days/32\n const binaryHour = hour.toString(2).padStart(5, '0'); // 24 possible hours/32\n const binaryMinute = minute.toString(2).padStart(6, '0'); // 60 possible minutes/64\n const binarySecond = second.toString(2).padStart(6, '0'); // 60 possible seconds/64\n const binaryMillisecond = millisecond.toString(2).padStart(10, '0'); // 1000 possible milliseconds/1024\n const binaryTime = binaryDay + binaryHour + binaryMinute + binarySecond + binaryMillisecond;\n\n for (let i = 0; i < binaryTime.length; i++) {\n const x = (i % blocksPerRow) * blockSize;\n const y = Math.floor(i / blocksPerRow) * blockSize;\n\n context.fillStyle = binaryTime[i] === '1' ? 'black' : 'white';\n context.fillRect(x, y, blockSize, blockSize);\n }\n}\n","/**\n * Logging levels for the CTA-608 parser.\n *\n * @group CTA-608\n *\n * @enum\n *\n * @beta\n */\nexport const VerboseLevel = {\n ERROR: 0,\n TEXT: 1,\n WARNING: 2,\n INFO: 2,\n DEBUG: 3,\n DATA: 3,\n};\n//# sourceMappingURL=VerboseLevel.js.map","/**\n *\n * This code was ported from the dash.js project at:\n * https://github.com/Dash-Industry-Forum/dash.js/blob/development/externals/cea608-parser.js\n * https://github.com/Dash-Industry-Forum/dash.js/commit/8269b26a761e0853bb21d78780ed945144ecdd4d#diff-71bc295a2d6b6b7093a1d3290d53a4b2\n *\n * The original copyright appears below:\n *\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2015-2016, DASH Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * 2. Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport { VerboseLevel } from './VerboseLevel.js';\n/**\n * CaptionsLogger. To be removed in the future.\n *\n * @group CTA-608\n * @beta\n */\nexport class CaptionsLogger {\n constructor() {\n this.time = null;\n this.verboseLevel = VerboseLevel.ERROR;\n }\n log(severity, msg) {\n if (this.verboseLevel >= severity) {\n const m = typeof msg === 'function' ? msg() : msg;\n console.log(`${this.time} [${severity}] ${m}`);\n }\n }\n}\n//# sourceMappingURL=CaptionsLogger.js.map","/**\n *\n * This code was ported from the dash.js project at:\n * https://github.com/Dash-Industry-Forum/dash.js/blob/development/externals/cea608-parser.js\n * https://github.com/Dash-Industry-Forum/dash.js/commit/8269b26a761e0853bb21d78780ed945144ecdd4d#diff-71bc295a2d6b6b7093a1d3290d53a4b2\n *\n * The original copyright appears below:\n *\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2015-2016, DASH Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * 2. Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * Pen state.\n *\n * @group CTA-608\n * @beta\n */\nexport class PenState {\n constructor() {\n this.foreground = 'white';\n this.underline = false;\n this.italics = false;\n this.background = 'black';\n this.flash = false;\n }\n reset() {\n this.foreground = 'white';\n this.underline = false;\n this.italics = false;\n this.background = 'black';\n this.flash = false;\n }\n setStyles(styles) {\n const attribs = [\n 'foreground',\n 'underline',\n 'italics',\n 'background',\n 'flash',\n ];\n for (let i = 0; i < attribs.length; i++) {\n const style = attribs[i];\n if (Object.prototype.hasOwnProperty.call(styles, style)) {\n this[style] = styles[style];\n }\n }\n }\n isDefault() {\n return (this.foreground === 'white' &&\n !this.underline &&\n !this.italics &&\n this.background === 'black' &&\n !this.flash);\n }\n equals(other) {\n return (this.foreground === other.foreground &&\n this.underline === other.underline &&\n this.italics === other.italics &&\n this.background === other.background &&\n this.flash === other.flash);\n }\n copy(newPenState) {\n this.foreground = newPenState.foreground;\n this.underline = newPenState.underline;\n this.italics = newPenState.italics;\n this.background = newPenState.background;\n this.flash = newPenState.flash;\n }\n}\n//# sourceMappingURL=PenState.js.map","/**\n *\n * This code was ported from the dash.js project at:\n * https://github.com/Dash-Industry-Forum/dash.js/blob/development/externals/cea608-parser.js\n * https://github.com/Dash-Industry-Forum/dash.js/commit/8269b26a761e0853bb21d78780ed945144ecdd4d#diff-71bc295a2d6b6b7093a1d3290d53a4b2\n *\n * The original copyright appears below:\n *\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2015-2016, DASH Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * 2. Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport { PenState } from './PenState.js';\n/**\n * Unicode character with styling and background.\n *\n * @group CTA-608\n * @beta\n */\nexport class StyledUnicodeChar {\n constructor() {\n this.uchar = ' ';\n this.penState = new PenState();\n }\n reset() {\n this.uchar = ' ';\n this.penState.reset();\n }\n setChar(uchar, newPenState) {\n this.uchar = uchar;\n this.penState.copy(newPenState);\n }\n setPenState(newPenState) {\n this.penState.copy(newPenState);\n }\n equals(other) {\n return this.uchar === other.uchar && this.penState.equals(other.penState);\n }\n copy(newChar) {\n this.uchar = newChar.uchar;\n this.penState.copy(newChar.penState);\n }\n isEmpty() {\n return this.uchar === ' ' && this.penState.isDefault();\n }\n}\n//# sourceMappingURL=StyledUnicodeChar.js.map","export const NR_COLS = 100;\n//# sourceMappingURL=NR_COLS.js.map","/**\n * Exceptions from regular ASCII. CodePoints are mapped to UTF-16 codes\n */\nexport const specialCea608CharsCodes = {\n 42: 225, // lowercase a, acute accent\n 92: 233, // lowercase e, acute accent\n 94: 237, // lowercase i, acute accent\n 95: 243, // lowercase o, acute accent\n 96: 250, // lowercase u, acute accent\n 123: 231, // lowercase c with cedilla\n 124: 247, // division symbol\n 125: 209, // uppercase N tilde\n 126: 241, // lowercase n tilde\n 127: 9608, // Full block\n // THIS BLOCK INCLUDES THE 16 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x11 AND LOW BETWEEN 0x30 AND 0x3F\n // THIS MEANS THAT \\x50 MUST BE ADDED TO THE VALUES\n 128: 174, // Registered symbol (R)\n 129: 176, // degree sign\n 130: 189, // 1/2 symbolOutputFilter\n 131: 191, // Inverted (open) question mark\n 132: 8482, // Trademark symbol (TM)\n 133: 162, // Cents symbol\n 134: 163, // Pounds sterling\n 135: 9834, // Music 8'th note\n 136: 224, // lowercase a, grave accent\n 137: 32, // transparent space (regular)\n 138: 232, // lowercase e, grave accent\n 139: 226, // lowercase a, circumflex accent\n 140: 234, // lowercase e, circumflex accent\n 141: 238, // lowercase i, circumflex accent\n 142: 244, // lowercase o, circumflex accent\n 143: 251, // lowercase u, circumflex accent\n // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x12 AND LOW BETWEEN 0x20 AND 0x3F\n 144: 193, // capital letter A with acute\n 145: 201, // capital letter E with acute\n 146: 211, // capital letter O with acute\n 147: 218, // capital letter U with acute\n 148: 220, // capital letter U with diaresis\n 149: 252, // lowercase letter U with diaeresis\n 150: 8216, // opening single quote\n 151: 161, // inverted exclamation mark\n 152: 42, // asterisk\n 153: 8217, // closing single quote\n 154: 9473, // box drawings heavy horizontal\n 155: 169, // copyright sign\n 156: 8480, // Service mark\n 157: 8226, // (round) bullet\n 158: 8220, // Left double quotation mark\n 159: 8221, // Right double quotation mark\n 160: 192, // uppercase A, grave accent\n 161: 194, // uppercase A, circumflex\n 162: 199, // uppercase C with cedilla\n 163: 200, // uppercase E, grave accent\n 164: 202, // uppercase E, circumflex\n 165: 203, // capital letter E with diaresis\n 166: 235, // lowercase letter e with diaresis\n 167: 206, // uppercase I, circumflex\n 168: 207, // uppercase I, with diaresis\n 169: 239, // lowercase i, with diaresis\n 170: 212, // uppercase O, circumflex\n 171: 217, // uppercase U, grave accent\n 172: 249, // lowercase u, grave accent\n 173: 219, // uppercase U, circumflex\n 174: 171, // left-pointing double angle quotation mark\n 175: 187, // right-pointing double angle quotation mark\n // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x13 AND LOW BETWEEN 0x20 AND 0x3F\n 176: 195, // Uppercase A, tilde\n 177: 227, // Lowercase a, tilde\n 178: 205, // Uppercase I, acute accent\n 179: 204, // Uppercase I, grave accent\n 180: 236, // Lowercase i, grave accent\n 181: 210, // Uppercase O, grave accent\n 182: 242, // Lowercase o, grave accent\n 183: 213, // Uppercase O, tilde\n 184: 245, // Lowercase o, tilde\n 185: 123, // Open curly brace\n 186: 125, // Closing curly brace\n 187: 92, // Backslash\n 188: 94, // Caret\n 189: 95, // Underscore\n 190: 124, // Pipe (vertical line)\n 191: 8764, // Tilde operator\n 192: 196, // Uppercase A, umlaut\n 193: 228, // Lowercase A, umlaut\n 194: 214, // Uppercase O, umlaut\n 195: 246, // Lowercase o, umlaut\n 196: 223, // Esszett (sharp S)\n 197: 165, // Yen symbolOutputFilter\n 198: 164, // Generic currency sign\n 199: 9475, // Box drawings heavy vertical\n 200: 197, // Uppercase A, ring\n 201: 229, // Lowercase A, ring\n 202: 216, // Uppercase O, stroke\n 203: 248, // Lowercase o, strok\n 204: 9487, // Box drawings heavy down and right\n 205: 9491, // Box drawings heavy down and left\n 206: 9495, // Box drawings heavy up and right\n 207: 9499, // Box drawings heavy up and left\n};\n//# sourceMappingURL=specialCea608CharsCodes.js.map","import { specialCea608CharsCodes } from './specialCea608CharsCodes.js';\nexport function getCharForByte(byte) {\n return String.fromCharCode(specialCea608CharsCodes[byte] || byte);\n}\n;\n//# sourceMappingURL=getCharForByte.js.map","/**\n *\n * This code was ported from the dash.js project at:\n * https://github.com/Dash-Industry-Forum/dash.js/blob/development/externals/cea608-parser.js\n * https://github.com/Dash-Industry-Forum/dash.js/commit/8269b26a761e0853bb21d78780ed945144ecdd4d#diff-71bc295a2d6b6b7093a1d3290d53a4b2\n *\n * The original copyright appears below:\n *\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2015-2016, DASH Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * 2. Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport { CaptionsLogger } from './CaptionsLogger.js';\nimport { PenState } from './PenState.js';\nimport { StyledUnicodeChar } from './StyledUnicodeChar.js';\nimport { VerboseLevel } from './VerboseLevel.js';\nimport { NR_COLS } from './utils/NR_COLS.js';\nimport { getCharForByte } from './utils/getCharForByte.js';\n/**\n * CTA-608 row consisting of NR_COLS instances of StyledUnicodeChar.\n *\n * @group CTA-608\n * @beta\n */\nexport class Row {\n constructor(logger = new CaptionsLogger()) {\n this.chars = [];\n this.cueStartTime = null;\n this.pos = 0;\n this.currPenState = new PenState();\n for (let i = 0; i < NR_COLS; i++) {\n this.chars.push(new StyledUnicodeChar());\n }\n this.logger = logger;\n }\n equals(other) {\n for (let i = 0; i < NR_COLS; i++) {\n if (!this.chars[i].equals(other.chars[i])) {\n return false;\n }\n }\n return true;\n }\n copy(other) {\n for (let i = 0; i < NR_COLS; i++) {\n this.chars[i].copy(other.chars[i]);\n }\n }\n isEmpty() {\n let empty = true;\n for (let i = 0; i < NR_COLS; i++) {\n if (!this.chars[i].isEmpty()) {\n empty = false;\n break;\n }\n }\n return empty;\n }\n /**\n * Set the cursor to a valid column.\n */\n setCursor(absPos) {\n if (this.pos !== absPos) {\n this.pos = absPos;\n }\n if (this.pos < 0) {\n this.logger.log(VerboseLevel.DEBUG, 'Negative cursor position ' + this.pos);\n this.pos = 0;\n }\n else if (this.pos > NR_COLS) {\n this.logger.log(VerboseLevel.DEBUG, 'Too large cursor position ' + this.pos);\n this.pos = NR_COLS;\n }\n }\n /**\n * Move the cursor relative to current position.\n */\n moveCursor(relPos) {\n const newPos = this.pos + relPos;\n if (relPos > 1) {\n for (let i = this.pos + 1; i < newPos + 1; i++) {\n this.chars[i].setPenState(this.currPenState);\n }\n }\n this.setCursor(newPos);\n }\n /**\n * Backspace, move one step back and clear character.\n */\n backSpace() {\n this.moveCursor(-1);\n this.chars[this.pos].setChar(' ', this.currPenState);\n }\n insertChar(byte) {\n if (byte >= 0x90) {\n // Extended char\n this.backSpace();\n }\n const char = getCharForByte(byte);\n if (this.pos >= NR_COLS) {\n this.logger.log(VerboseLevel.ERROR, () => 'Cannot insert ' +\n byte.toString(16) +\n ' (' +\n char +\n ') at position ' +\n this.pos +\n '. Skipping it!');\n return;\n }\n this.chars[this.pos].setChar(char, this.currPenState);\n this.moveCursor(1);\n }\n clearFromPos(startPos) {\n let i;\n for (i = startPos; i < NR_COLS; i++) {\n this.chars[i].reset();\n }\n }\n clear() {\n this.clearFromPos(0);\n this.pos = 0;\n this.currPenState.reset();\n }\n clearToEndOfRow() {\n this.clearFromPos(this.pos);\n }\n getTextString() {\n const chars = [];\n let empty = true;\n for (let i = 0; i < NR_COLS; i++) {\n const char = this.chars[i].uchar;\n if (char !== ' ') {\n empty = false;\n }\n chars.push(char);\n }\n if (empty) {\n return '';\n }\n else {\n return chars.join('');\n }\n }\n setPenStyles(styles) {\n this.currPenState.setStyles(styles);\n const currChar = this.chars[this.pos];\n currChar.setPenState(this.currPenState);\n }\n}\n//# sourceMappingURL=Row.js.map","export const NR_ROWS = 15;\n//# sourceMappingURL=NR_ROWS.js.map","/**\n *\n * This code was ported from the dash.js project at:\n * https://github.com/Dash-Industry-Forum/dash.js/blob/development/externals/cea608-parser.js\n * https://github.com/Dash-Industry-Forum/dash.js/commit/8269b26a761e0853bb21d78780ed945144ecdd4d#diff-71bc295a2d6b6b7093a1d3290d53a4b2\n *\n * The original copyright appears below:\n *\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2015-2016, DASH Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * 2. Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport { CaptionsLogger } from './CaptionsLogger.js';\nimport { Row } from './Row.js';\nimport { NR_ROWS } from './utils/NR_ROWS.js';\nimport { VerboseLevel } from './VerboseLevel.js';\n/**\n * Keep a CTA-608 screen of 32x15 styled characters\n *\n * @group CTA-608\n * @beta\n */\nexport class CaptionScreen {\n constructor(logger = new CaptionsLogger()) {\n this.rows = [];\n this.currRow = NR_ROWS - 1;\n this.nrRollUpRows = null;\n this.lastOutputScreen = null;\n for (let i = 0; i < NR_ROWS; i++) {\n this.rows.push(new Row(logger));\n }\n this.logger = logger;\n }\n reset() {\n for (let i = 0; i < NR_ROWS; i++) {\n this.rows[i].clear();\n }\n this.currRow = NR_ROWS - 1;\n }\n equals(other) {\n let equal = true;\n for (let i = 0; i < NR_ROWS; i++) {\n if (!this.rows[i].equals(other.rows[i])) {\n equal = false;\n break;\n }\n }\n return equal;\n }\n copy(other) {\n for (let i = 0; i < NR_ROWS; i++) {\n this.rows[i].copy(other.rows[i]);\n }\n }\n isEmpty() {\n let empty = true;\n for (let i = 0; i < NR_ROWS; i++) {\n if (!this.rows[i].isEmpty()) {\n empty = false;\n break;\n }\n }\n return empty;\n }\n backSpace() {\n const row = this.rows[this.currRow];\n row.backSpace();\n }\n clearToEndOfRow() {\n const row = this.rows[this.currRow];\n row.clearToEndOfRow();\n }\n /**\n * Insert a character (without styling) in the current row.\n */\n insertChar(char) {\n const row = this.rows[this.currRow];\n row.insertChar(char);\n }\n setPen(styles) {\n const row = this.rows[this.currRow];\n row.setPenStyles(styles);\n }\n moveCursor(relPos) {\n const row = this.rows[this.currRow];\n row.moveCursor(relPos);\n }\n setCursor(absPos) {\n this.logger.log(VerboseLevel.INFO, 'setCursor: ' + absPos);\n const row = this.rows[this.currRow];\n row.setCursor(absPos);\n }\n setPAC(pacData) {\n this.logger.log(VerboseLevel.INFO, () => 'pacData = ' + JSON.stringify(pacData));\n let newRow = pacData.row - 1;\n if (this.nrRollUpRows && newRow < this.nrRollUpRows - 1) {\n newRow = this.nrRollUpRows - 1;\n }\n // Make sure this only affects Roll-up Captions by checking this.nrRollUpRows\n if (this.nrRollUpRows && this.currRow !== newRow) {\n // clear all rows first\n for (let i = 0; i < NR_ROWS; i++) {\n this.rows[i].clear();\n }\n // Copy this.nrRollUpRows rows from lastOutputScreen and place it in the newRow location\n // topRowIndex - the start of rows to copy (inclusive index)\n const topRowIndex = this.currRow + 1 - this.nrRollUpRows;\n // We only copy if the last position was already shown.\n // We use the cueStartTime value to check this.\n const lastOutputScreen = this.lastOutputScreen;\n if (lastOutputScreen) {\n const prevLineTime = lastOutputScreen.rows[topRowIndex].cueStartTime;\n const time = this.logger.time;\n if (prevLineTime !== null && time !== null && prevLineTime < time) {\n for (let i = 0; i < this.nrRollUpRows; i++) {\n this.rows[newRow - this.nrRollUpRows + i + 1].copy(lastOutputScreen.rows[topRowIndex + i]);\n }\n }\n }\n }\n this.currRow = newRow;\n const row = this.rows[this.currRow];\n if (pacData.indent !== null) {\n const indent = pacData.indent;\n const prevPos = Math.max(indent - 1, 0);\n row.setCursor(pacData.indent);\n pacData.color = row.chars[prevPos].penState.foreground;\n }\n const styles = {\n foreground: pacData.color,\n underline: pacData.underline,\n italics: pacData.italics,\n background: 'black',\n flash: false,\n };\n this.setPen(styles);\n }\n /**\n * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility).\n */\n setBkgData(bkgData) {\n this.logger.log(VerboseLevel.INFO, () => 'bkgData = ' + JSON.stringify(bkgData));\n this.backSpace();\n this.setPen(bkgData);\n this.insertChar(0x20); // Space\n }\n setRollUpRows(nrRows) {\n this.nrRollUpRows = nrRows;\n }\n rollUp() {\n if (this.nrRollUpRows === null) {\n this.logger.log(VerboseLevel.DEBUG, 'roll_up but nrRollUpRows not set yet');\n return; // Not properly setup\n }\n this.logger.log(VerboseLevel.TEXT, () => this.getDisplayText());\n const topRowIndex = this.currRow + 1 - this.nrRollUpRows;\n const topRow = this.rows.splice(topRowIndex, 1)[0];\n topRow.clear();\n this.rows.splice(this.currRow, 0, topRow);\n this.logger.log(VerboseLevel.INFO, 'Rolling up');\n }\n /**\n * Get all non-empty rows with as unicode text.\n */\n getDisplayText(asOneRow) {\n asOneRow = asOneRow || false;\n const displayText = [];\n let text = '';\n let rowNr = -1;\n for (let i = 0; i < NR_ROWS; i++) {\n const rowText = this.rows[i].getTextString();\n if (rowText) {\n rowNr = i + 1;\n if (asOneRow) {\n displayText.push('Row ' + rowNr + \": '\" + rowText + \"'\");\n }\n else {\n displayText.push(rowText.trim());\n }\n }\n }\n if (displayText.length > 0) {\n if (asOneRow) {\n text = '[' + displayText.join(' | ') + ']';\n }\n else {\n text = displayText.join('\\n');\n }\n }\n return text;\n }\n getTextAndFormat() {\n return this.rows;\n }\n}\n//# sourceMappingURL=CaptionScreen.js.map","/**\n *\n * This code was ported from the dash.js project at:\n * https://github.com/Dash-Industry-Forum/dash.js/blob/development/externals/cea608-parser.js\n * https://github.com/Dash-Industry-Forum/dash.js/commit/8269b26a761e0853bb21d78780ed945144ecdd4d#diff-71bc295a2d6b6b7093a1d3290d53a4b2\n *\n * The original copyright appears below:\n *\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2015-2016, DASH Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * 2. Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport { CaptionScreen } from './CaptionScreen.js';\nimport { CaptionsLogger } from './CaptionsLogger.js';\nimport { VerboseLevel } from './VerboseLevel.js';\nimport { NR_ROWS } from './utils/NR_ROWS.js';\n/**\n * CTA-608 Channel\n *\n * @group CTA-608\n * @beta\n */\nexport class Cta608Channel {\n constructor(channelNumber, outputFilter, logger = new CaptionsLogger()) {\n this.chNr = channelNumber;\n this.outputFilter = outputFilter;\n this.mode = null;\n this.displayedMemory = new CaptionScreen(logger);\n this.nonDisplayedMemory = new CaptionScreen(logger);\n this.lastOutputScreen = new CaptionScreen(logger);\n this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];\n this.writeScreen = this.displayedMemory;\n this.mode = null;\n this.cueStartTime = null; // Keeps track of where a cue started.\n this.logger = logger;\n this.logger.log(VerboseLevel.INFO, 'new Cea608Channel(' + this.chNr + ')');\n }\n reset() {\n var _a, _b;\n this.mode = null;\n this.displayedMemory.reset();\n this.nonDisplayedMemory.reset();\n this.lastOutputScreen.reset();\n (_b = (_a = this.outputFilter) === null || _a === void 0 ? void 0 : _a.reset) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];\n this.writeScreen = this.displayedMemory;\n this.mode = null;\n this.cueStartTime = null;\n }\n getHandler() {\n return this.outputFilter;\n }\n setHandler(outputFilter) {\n this.outputFilter = outputFilter;\n }\n setPAC(pacData) {\n this.writeScreen.setPAC(pacData);\n }\n setBkgData(bkgData) {\n this.writeScreen.setBkgData(bkgData);\n }\n setMode(newMode) {\n if (newMode === this.mode) {\n return;\n }\n this.mode = newMode;\n this.logger.log(VerboseLevel.INFO, () => 'MODE=' + newMode);\n if (this.mode === 'MODE_POP-ON') {\n this.writeScreen = this.nonDisplayedMemory;\n }\n else {\n this.writeScreen = this.displayedMemory;\n this.writeScreen.reset();\n }\n if (this.mode !== 'MODE_ROLL-UP') {\n this.displayedMemory.setRollUpRows(null);\n this.nonDisplayedMemory.setRollUpRows(null);\n }\n this.mode = newMode;\n }\n insertChars(chars) {\n for (let i = 0; i < chars.length; i++) {\n this.writeScreen.insertChar(chars[i]);\n }\n const screen = this.writeScreen === this.displayedMemory ? 'DISP' : 'NON_DISP';\n this.logger.log(VerboseLevel.INFO, () => screen + ': ' + this.writeScreen.getDisplayText(true));\n if (this.mode === 'MODE_PAINT-ON' || this.mode === 'MODE_ROLL-UP') {\n this.logger.log(VerboseLevel.TEXT, () => 'DISPLAYED: ' + this.displayedMemory.getDisplayText(true));\n this.outputDataUpdate();\n }\n }\n ccRCL() {\n // Resume Caption Loading (switch mode to Pop On)\n this.logger.log(VerboseLevel.INFO, 'RCL - Resume Caption Loading');\n this.setMode('MODE_POP-ON');\n }\n ccBS() {\n // BackSpace\n this.logger.log(VerboseLevel.INFO, 'BS - BackSpace');\n if (this.mode === 'MODE_TEXT') {\n return;\n }\n this.writeScreen.backSpace();\n if (this.writeScreen === this.displayedMemory) {\n this.outputDataUpdate();\n }\n }\n ccAOF() {\n // Reserved (formerly Alarm Off)\n }\n ccAON() {\n // Reserved (formerly Alarm On)\n }\n ccDER() {\n // Delete to End of Row\n this.logger.log(VerboseLevel.INFO, 'DER- Delete to End of Row');\n this.writeScreen.clearToEndOfRow();\n this.outputDataUpdate();\n }\n ccRU(nrRows) {\n // Roll-Up Captions-2,3,or 4 Rows\n this.logger.log(VerboseLevel.INFO, 'RU(' + nrRows + ') - Roll Up');\n this.writeScreen = this.displayedMemory;\n this.setMode('MODE_ROLL-UP');\n this.writeScreen.setRollUpRows(nrRows);\n }\n ccFON() {\n // Flash On\n this.logger.log(VerboseLevel.INFO, 'FON - Flash On');\n this.writeScreen.setPen({ flash: true });\n }\n ccRDC() {\n // Resume Direct Captioning (switch mode to PaintOn)\n this.logger.log(VerboseLevel.INFO, 'RDC - Resume Direct Captioning');\n this.setMode('MODE_PAINT-ON');\n }\n ccTR() {\n // Text Restart in text mode (not supported, however)\n this.logger.log(VerboseLevel.INFO, 'TR');\n this.setMode('MODE_TEXT');\n }\n ccRTD() {\n // Resume Text Display in Text mode (not supported, however)\n this.logger.log(VerboseLevel.INFO, 'RTD');\n this.setMode('MODE_TEXT');\n }\n ccEDM() {\n // Erase Displayed Memory\n this.logger.log(VerboseLevel.INFO, 'EDM - Erase Displayed Memory');\n this.displayedMemory.reset();\n this.outputDataUpdate(true);\n }\n ccCR() {\n // Carriage Return\n this.logger.log(VerboseLevel.INFO, 'CR - Carriage Return');\n this.writeScreen.rollUp();\n this.outputDataUpdate(true);\n }\n ccENM() {\n // Erase Non-Displayed Memory\n this.logger.log(VerboseLevel.INFO, 'ENM - Erase Non-displayed Memory');\n this.nonDisplayedMemory.reset();\n }\n ccEOC() {\n // End of Caption (Flip Memories)\n this.logger.log(VerboseLevel.INFO, 'EOC - End Of Caption');\n if (this.mode === 'MODE_POP-ON') {\n const tmp = this.displayedMemory;\n this.displayedMemory = this.nonDisplayedMemory;\n this.nonDisplayedMemory = tmp;\n this.writeScreen = this.nonDisplayedMemory;\n this.logger.log(VerboseLevel.TEXT, () => 'DISP: ' + this.displayedMemory.getDisplayText());\n }\n this.outputDataUpdate(true);\n }\n ccTO(nrCols) {\n // Tab Offset 1,2, or 3 columns\n this.logger.log(VerboseLevel.INFO, 'TO(' + nrCols + ') - Tab Offset');\n this.writeScreen.moveCursor(nrCols);\n }\n ccMIDROW(secondByte) {\n // Parse MIDROW command\n const styles = { flash: false };\n styles.underline = secondByte % 2 === 1;\n styles.italics = secondByte >= 0x2e;\n if (!styles.italics) {\n const colorIndex = Math.floor(secondByte / 2) - 0x10;\n const colors = [\n 'white',\n 'green',\n 'blue',\n 'cyan',\n 'red',\n 'yellow',\n 'magenta',\n ];\n styles.foreground = colors[colorIndex];\n }\n else {\n styles.foreground = 'white';\n }\n this.logger.log(VerboseLevel.INFO, 'MIDROW: ' + JSON.stringify(styles));\n this.writeScreen.setPen(styles);\n }\n outputDataUpdate(dispatch = false) {\n const time = this.logger.time;\n if (time === null) {\n return;\n }\n if (this.outputFilter) {\n if (this.cueStartTime === null && !this.displayedMemory.isEmpty()) {\n // Start of a new cue\n this.cueStartTime = time;\n }\n else {\n if (!this.displayedMemory.equals(this.lastOutputScreen)) {\n this.outputFilter.newCue(this.cueStartTime, time, this.lastOutputScreen);\n if (dispatch && this.outputFilter.dispatchCue) {\n this.outputFilter.dispatchCue();\n }\n this.cueStartTime = this.displayedMemory.isEmpty() ? null : time;\n }\n }\n this.lastOutputScreen.copy(this.displayedMemory);\n }\n }\n cueSplitAtTime(t) {\n if (this.outputFilter) {\n if (!this.displayedMemory.isEmpty()) {\n if (this.outputFilter.newCue) {\n this.outputFilter.newCue(this.cueStartTime, t, this.displayedMemory);\n }\n this.cueStartTime = t;\n }\n }\n }\n}\n//# sourceMappingURL=Cta608Channel.js.map","export const backgroundColors = [\n 'white',\n 'green',\n 'blue',\n 'cyan',\n 'red',\n 'yellow',\n 'magenta',\n 'black',\n 'transparent',\n];\n//# sourceMappingURL=backgroundColors.js.map","export function createCmdHistory() {\n return {\n a: null,\n b: null,\n };\n}\n//# sourceMappingURL=createCmdHistory.js.map","export function hasCmdRepeated(a, b, cmdHistory) {\n return cmdHistory.a === a && cmdHistory.b === b;\n}\n//# sourceMappingURL=hasCmdRepeated.js.map","export function numArrayToHexArray(numArray) {\n const hexArray = [];\n for (let j = 0; j < numArray.length; j++) {\n hexArray.push(numArray[j].toString(16));\n }\n return hexArray;\n}\n;\n//# sourceMappingURL=numArrayToHexArray.js.map","export const rowsHighCh1 = {\n 17: 2,\n 18: 4,\n 21: 6,\n 22: 8,\n 23: 10,\n 19: 13,\n 20: 15,\n};\n//# sourceMappingURL=rowsHighCh1.js.map","export const rowsHighCh2 = {\n 25: 2,\n 26: 4,\n 29: 6,\n 30: 8,\n 31: 10,\n 27: 13,\n 28: 15,\n};\n//# sourceMappingURL=rowsHighCh2.js.map","// Tables to look up row from PAC data\nexport const rowsLowCh1 = {\n 17: 1,\n 18: 3,\n 21: 5,\n 22: 7,\n 23: 9,\n 16: 11,\n 19: 12,\n 20: 14,\n};\n//# sourceMappingURL=rowsLowCh1.js.map","export const rowsLowCh2 = {\n 25: 1,\n 26: 3,\n 29: 5,\n 30: 7,\n 31: 9,\n 24: 11,\n 27: 12,\n 28: 14,\n};\n//# sourceMappingURL=rowsLowCh2.js.map","export function setLastCmd(a, b, cmdHistory) {\n cmdHistory.a = a;\n cmdHistory.b = b;\n}\n//# sourceMappingURL=setLastCmd.js.map","/**\n *\n * This code was ported from the dash.js project at:\n * https://github.com/Dash-Industry-Forum/dash.js/blob/development/externals/cea608-parser.js\n * https://github.com/Dash-Industry-Forum/dash.js/commit/8269b26a761e0853bb21d78780ed945144ecdd4d#diff-71bc295a2d6b6b7093a1d3290d53a4b2\n *\n * The original copyright appears below:\n *\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2015-2016, DASH Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * 2. Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport { CaptionsLogger } from './CaptionsLogger.js';\nimport { Cta608Channel } from './Cta608Channel.js';\nimport { VerboseLevel } from './VerboseLevel.js';\nimport { backgroundColors } from './utils/backgroundColors.js';\nimport { createCmdHistory } from './utils/createCmdHistory.js';\nimport { getCharForByte } from './utils/getCharForByte.js';\nimport { hasCmdRepeated } from './utils/hasCmdRepeated.js';\nimport { numArrayToHexArray } from './utils/numArrayToHexArray.js';\nimport { rowsHighCh1 } from './utils/rowsHighCh1.js';\nimport { rowsHighCh2 } from './utils/rowsHighCh2.js';\nimport { rowsLowCh1 } from './utils/rowsLowCh1.js';\nimport { rowsLowCh2 } from './utils/rowsLowCh2.js';\nimport { setLastCmd } from './utils/setLastCmd.js';\n/**\n * CEA-608 caption parser.\n *\n * @group CTA-608\n * @beta\n */\nexport class Cta608Parser {\n constructor(field, out1, out2) {\n this.currentChannel = 0;\n this.cmdHistory = createCmdHistory();\n this.lastTime = null;\n const logger = (this.logger = new CaptionsLogger());\n this.channels = [\n null,\n new Cta608Channel(field, out1, logger),\n new Cta608Channel(field + 1, out2, logger),\n ];\n }\n /**\n * Add data for time t in forms of list of bytes (unsigned ints). The bytes are treated as pairs.\n *\n * @param time - The time in milliseconds\n * @param byteList - The list of bytes\n */\n addData(time, byteList) {\n this.lastTime = time;\n this.logger.time = time;\n for (let i = 0; i < byteList.length; i += 2) {\n const a = byteList[i] & 0x7f;\n const b = byteList[i + 1] & 0x7f;\n let cmdFound = false;\n let charsFound = null;\n if (this.lastTime !== null) {\n time = this.lastTime + 0.5 * i * 1001 / 30000;\n this.logger.time = time;\n }\n if (a === 0 && b === 0) {\n continue;\n }\n else {\n this.logger.log(VerboseLevel.DATA, () => '[' +\n numArrayToHexArray([byteList[i], byteList[i + 1]]) +\n '] -> (' +\n numArrayToHexArray([a, b]) +\n ')');\n }\n const cmdHistory = this.cmdHistory;\n const isControlCode = a >= 0x10 && a <= 0x1f;\n if (isControlCode) {\n // Skip redundant control codes\n if (hasCmdRepeated(a, b, cmdHistory)) {\n setLastCmd(null, null, cmdHistory);\n this.logger.log(VerboseLevel.DEBUG, () => 'Repeated command (' +\n numArrayToHexArray([a, b]) +\n ') is dropped');\n continue;\n }\n setLastCmd(a, b, this.cmdHistory);\n cmdFound = this.parseCmd(a, b);\n if (!cmdFound) {\n cmdFound = this.parseMidrow(a, b);\n }\n if (!cmdFound) {\n cmdFound = this.parsePAC(a, b);\n }\n if (!cmdFound) {\n cmdFound = this.parseBackgroundAttributes(a, b);\n }\n }\n else {\n setLastCmd(null, null, cmdHistory);\n }\n if (!cmdFound) {\n charsFound = this.parseChars(a, b);\n if (charsFound.length) {\n const currChNr = this.currentChannel;\n if (currChNr && currChNr > 0) {\n const channel = this.channels[currChNr];\n channel.insertChars(charsFound);\n }\n else {\n this.logger.log(VerboseLevel.WARNING, 'No channel found yet. TEXT-MODE?');\n }\n }\n }\n if (!cmdFound && !charsFound) {\n this.logger.log(VerboseLevel.WARNING, () => \"Couldn't parse cleaned data \" +\n numArrayToHexArray([a, b]) +\n ' orig: ' +\n numArrayToHexArray([byteList[i], byteList[i + 1]]));\n }\n }\n }\n /**\n * Parse Command.\n *\n * @param a - The first byte\n * @param b - The second byte\n * @returns True if a command was found\n */\n parseCmd(a, b) {\n const cond1 = (a === 0x14 || a === 0x1c || a === 0x15 || a === 0x1d) &&\n b >= 0x20 &&\n b <= 0x2f;\n const cond2 = (a === 0x17 || a === 0x1f) && b >= 0x21 && b <= 0x23;\n if (!(cond1 || cond2)) {\n return false;\n }\n const chNr = a === 0x14 || a === 0x15 || a === 0x17 ? 1 : 2;\n const channel = this.channels[chNr];\n if (a === 0x14 || a === 0x15 || a === 0x1c || a === 0x1d) {\n if (b === 0x20) {\n channel.ccRCL();\n }\n else if (b === 0x21) {\n channel.ccBS();\n }\n else if (b === 0x22) {\n channel.ccAOF();\n }\n else if (b === 0x23) {\n channel.ccAON();\n }\n else if (b === 0x24) {\n channel.ccDER();\n }\n else if (b === 0x25) {\n channel.ccRU(2);\n }\n else if (b === 0x26) {\n channel.ccRU(3);\n }\n else if (b === 0x27) {\n channel.ccRU(4);\n }\n else if (b === 0x28) {\n channel.ccFON();\n }\n else if (b === 0x29) {\n channel.ccRDC();\n }\n else if (b === 0x2a) {\n channel.ccTR();\n }\n else if (b === 0x2b) {\n channel.ccRTD();\n }\n else if (b === 0x2c) {\n channel.ccEDM();\n }\n else if (b === 0x2d) {\n channel.ccCR();\n }\n else if (b === 0x2e) {\n channel.ccENM();\n }\n else if (b === 0x2f) {\n channel.ccEOC();\n }\n }\n else {\n // a == 0x17 || a == 0x1F\n channel.ccTO(b - 0x20);\n }\n this.currentChannel = chNr;\n return true;\n }\n /**\n * Parse midrow styling command\n *\n * @param a - The first byte\n * @param b - The second byte\n * @returns `true` if midrow styling command was found\n */\n parseMidrow(a, b) {\n let chNr = 0;\n if ((a === 0x11 || a === 0x19) && b >= 0x20 && b <= 0x2f) {\n if (a === 0x11) {\n chNr = 1;\n }\n else {\n chNr = 2;\n }\n if (chNr !== this.currentChannel) {\n this.logger.log(VerboseLevel.ERROR, 'Mismatch channel in midrow parsing');\n return false;\n }\n const channel = this.channels[chNr];\n if (!channel) {\n return false;\n }\n channel.ccMIDROW(b);\n this.logger.log(VerboseLevel.DEBUG, () => 'MIDROW (' + numArrayToHexArray([a, b]) + ')');\n return true;\n }\n return false;\n }\n /**\n * Parse Preable Access Codes (Table 53).\n *\n * @param a - The first byte\n * @param b - The second byte\n * @returns A Boolean that tells if PAC found\n */\n parsePAC(a, b) {\n let row;\n const case1 = ((a >= 0x11 && a <= 0x17) || (a >= 0x19 && a <= 0x1f)) &&\n b >= 0x40 &&\n b <= 0x7f;\n const case2 = (a === 0x10 || a === 0x18) && b >= 0x40 && b <= 0x5f;\n if (!(case1 || case2)) {\n return false;\n }\n const chNr = a <= 0x17 ? 1 : 2;\n if (b >= 0x40 && b <= 0x5f) {\n row = chNr === 1 ? rowsLowCh1[a] : rowsLowCh2[a];\n }\n else {\n // 0x60 <= b <= 0x7F\n row = chNr === 1 ? rowsHighCh1[a] : rowsHighCh2[a];\n }\n const channel = this.channels[chNr];\n if (!channel) {\n return false;\n }\n channel.setPAC(this.interpretPAC(row, b));\n this.currentChannel = chNr;\n return true;\n }\n /**\n * Interpret the second byte of the pac, and return the information.\n *\n * @param row - The row number\n * @param byte - The second byte\n * @returns pacData with style parameters\n */\n interpretPAC(row, byte) {\n let pacIndex;\n const pacData = {\n color: null,\n italics: false,\n indent: null,\n underline: false,\n row: row,\n };\n if (byte > 0x5f) {\n pacIndex = byte - 0x60;\n }\n else {\n pacIndex = byte - 0x40;\n }\n pacData.underline = (pacIndex & 1) === 1;\n if (pacIndex <= 0xd) {\n pacData.color = [\n 'white',\n 'green',\n 'blue',\n 'cyan',\n 'red',\n 'yellow',\n 'magenta',\n 'white',\n ][Math.floor(pacIndex / 2)];\n }\n else if (pacIndex <= 0xf) {\n pacData.italics = true;\n pacData.color = 'white';\n }\n else {\n pacData.indent = Math.floor((pacIndex - 0x10) / 2) * 4;\n }\n return pacData; // Note that row has zero offset. The spec uses 1.\n }\n /**\n * Parse characters.\n *\n * @param a - The first byte\n * @param b - The second byte\n * @returns An array with 1 to 2 codes corresponding to chars, if found. null otherwise.\n */\n parseChars(a, b) {\n let channelNr;\n let charCodes = [];\n let charCode1 = null;\n if (a >= 0x19) {\n channelNr = 2;\n charCode1 = a - 8;\n }\n else {\n channelNr = 1;\n charCode1 = a;\n }\n if (charCode1 >= 0x11 && charCode1 <= 0x13) {\n // Special character\n let oneCode;\n if (charCode1 === 0x11) {\n oneCode = b + 0x50;\n }\n else if (charCode1 === 0x12) {\n oneCode = b + 0x70;\n }\n else {\n oneCode = b + 0x90;\n }\n this.logger.log(VerboseLevel.INFO, () => \"Special char '\" +\n getCharForByte(oneCode) +\n \"' in channel \" +\n channelNr);\n charCodes = [oneCode];\n }\n else if (a >= 0x20 && a <= 0x7f) {\n charCodes = b === 0 ? [a] : [a, b];\n }\n if (charCodes) {\n this.logger.log(VerboseLevel.DEBUG, () => 'Char codes = ' + numArrayToHexArray(charCodes).join(','));\n }\n return charCodes;\n }\n /**\n * Parse extended background attributes as well as new foreground color black.\n *\n * @param a - The first byte\n * @param b - The second byte\n * @returns True if background attributes are found\n */\n parseBackgroundAttributes(a, b) {\n const case1 = (a === 0x10 || a === 0x18) && b >= 0x20 && b <= 0x2f;\n const case2 = (a === 0x17 || a === 0x1f) && b >= 0x2d && b <= 0x2f;\n if (!(case1 || case2)) {\n return false;\n }\n let index;\n const bkgData = {};\n if (a === 0x10 || a === 0x18) {\n index = Math.floor((b - 0x20) / 2);\n bkgData.background = backgroundColors[index];\n if (b % 2 === 1) {\n bkgData.background = bkgData.background + '_semi';\n }\n }\n else if (b === 0x2d) {\n bkgData.background = 'transparent';\n }\n else {\n bkgData.foreground = 'black';\n if (b === 0x2f) {\n bkgData.underline = true;\n }\n }\n const chNr = a <= 0x17 ? 1 : 2;\n const channel = this.channels[chNr];\n channel.setBkgData(bkgData);\n return true;\n }\n /**\n * Reset state of parser and its channels.\n */\n reset() {\n for (let i = 0; i < Object.keys(this.channels).length; i++) {\n const channel = this.channels[i];\n if (channel) {\n channel.reset();\n }\n }\n setLastCmd(null, null, this.cmdHistory);\n }\n /**\n * Trigger the generation of a cue, and the start of a new one if displayScreens are not empty.\n */\n cueSplitAtTime(t) {\n for (let i = 0; i < this.channels.length; i++) {\n const channel = this.channels[i];\n if (channel) {\n channel.cueSplitAtTime(t);\n }\n }\n }\n}\n//# sourceMappingURL=Cta608Parser.js.map","/**\n * Extract CTA-608 data from a DataView\n *\n * @param raw - The DataView to extract the data from\n * @param cta608Range - The range of the CTA-608 data\n * @returns The extracted CTA-608 data\n *\n * @group CTA-608\n * @beta\n */\nexport function extractCta608Data(raw, cta608Range) {\n let pos = cta608Range[0];\n const fieldData = [[], []];\n pos += 8; // Skip the identifier up to userDataTypeCode\n const ccCount = raw.getUint8(pos) & 31;\n pos += 2; // Advance 1 and skip reserved byte\n for (let i = 0; i < ccCount; i++) {\n const byte = raw.getUint8(pos);\n const ccValid = byte & 4;\n const ccType = byte & 3;\n pos++;\n const ccData1 = raw.getUint8(pos); // Keep parity bit\n pos++;\n const ccData2 = raw.getUint8(pos); // Keep parity bit\n pos++;\n if (ccValid && ((ccData1 & 127) + (ccData2 & 127) !== 0)) { //Check validity and non-empty data\n if (ccType === 0) {\n fieldData[0].push(ccData1);\n fieldData[0].push(ccData2);\n }\n else if (ccType === 1) {\n fieldData[1].push(ccData1);\n fieldData[1].push(ccData2);\n }\n }\n }\n return fieldData;\n}\n//# sourceMappingURL=extractCta608Data.js.map","/**\n * Find CTA-608 NAL units in a video stream\n *\n * @param raw - The DataView to extract the data from\n * @param startPos - The start position of the data\n * @param size - The size of the data\n * @returns The extracted CTA-608 NAL units\n *\n * @group CTA-608\n * @beta\n */\nexport function findCta608Nalus(raw, startPos, size) {\n let nalSize = 0, cursor = startPos, nalType = 0;\n const cta608NaluRanges = [];\n // Check SEI data according to ANSI-SCTE 128\n const isCTA608SEI = (payloadType, payloadSize, raw, pos) => {\n if (payloadType !== 4 || payloadSize < 8) {\n return null;\n }\n const countryCode = raw.getUint8(pos);\n const providerCode = raw.getUint16(pos + 1);\n const userIdentifier = raw.getUint32(pos + 3);\n const userDataTypeCode = raw.getUint8(pos + 7);\n return countryCode == 181 && providerCode == 49 && userIdentifier == 1195456820 && userDataTypeCode == 3;\n };\n while (cursor < startPos + size) {\n nalSize = raw.getUint32(cursor);\n nalType = raw.getUint8(cursor + 4) & 31;\n //console.log(time + \" NAL \" + nalType);\n if (nalType === 6) {\n // SEI NAL Unit. The NAL header is the first byte\n //console.log(\"SEI NALU of size \" + nalSize + \" at time \" + time);\n let pos = cursor + 5;\n let payloadType = -1;\n while (pos < cursor + 4 + nalSize - 1) { // The last byte should be rbsp_trailing_bits\n payloadType = 0;\n let b = 255;\n while (b === 255) {\n b = raw.getUint8(pos);\n payloadType += b;\n pos++;\n }\n let payloadSize = 0;\n b = 255;\n while (b === 255) {\n b = raw.getUint8(pos);\n payloadSize += b;\n pos++;\n }\n if (isCTA608SEI(payloadType, payloadSize, raw, pos)) {\n //console.log(\"CTA608 SEI \" + time + \" \" + payloadSize);\n cta608NaluRanges.push([pos, payloadSize]);\n }\n pos += payloadSize;\n }\n }\n cursor += nalSize + 4;\n }\n return cta608NaluRanges;\n}\n//# sourceMappingURL=findCta608Nalus.js.map","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2015-2016, DASH Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * 2. Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * SCC Parser\n *\n * @group CTA-608\n * @beta\n */\nexport class SccParser {\n constructor(processor, field = 1) {\n this.hasHeader = false;\n this.nrLinesParsed = 0;\n this.processor = processor;\n this.field = field;\n }\n parse(text) {\n const lines = text.split(/\\r?\\n/);\n this.nrLinesParsed = 0;\n if (lines[0] === 'Scenarist_SCC V1.0') {\n this.hasHeader = true;\n this.nrLinesParsed++;\n }\n for (let l = 1; l < lines.length; l += 2) {\n if (lines[l] !== '') {\n break; // Every second line should be empty\n }\n this.nrLinesParsed++;\n const lineData = this.parseDataLine(lines[l + 1]);\n if (lineData === null) {\n break;\n }\n this.nrLinesParsed++;\n this.processor.addData(lineData[0], lineData[1]);\n }\n }\n parseDataLine(line) {\n if (!line) {\n return null;\n }\n const lineParts = line.split(/\\s+/);\n const timeData = lineParts[0];\n const ceaData = [];\n for (let i = 1; i < lineParts.length; i++) {\n const fourHexChars = lineParts[i];\n const a = parseInt(fourHexChars.substring(0, 2), 16);\n const b = parseInt(fourHexChars.substring(2, 4), 16);\n ceaData.push(a, b);\n }\n const time = this.timeConverter(timeData);\n return [time, ceaData];\n }\n timeConverter(smpteTs) {\n const parts = smpteTs.split(':');\n if (parts.length === 3) {\n const lastParts = parts[2].split(';');\n parts[2] = lastParts[0];\n const frames = parseInt(lastParts[1], 10);\n return (30 * (60 * (60 * parseInt(parts[0], 10) + parseInt(parts[1], 10)) + parseInt(parts[2], 10)) + frames) * 1001 / 30000;\n }\n return 0; // in case if format is incorrect\n }\n getHeaderStatus() {\n return this.hasHeader;\n }\n getField() {\n return this.field;\n }\n getLinesParsed() {\n return this.nrLinesParsed;\n }\n}\n//# sourceMappingURL=SccParser.js.map","let dashParser;\n/**\n * @internal\n */\nexport function setDashParser(parser) {\n dashParser = parser;\n}\n/**\n * @internal\n */\nexport function getDashParser() {\n return dashParser;\n}\n/**\n * @internal\n * Parse XML to Json\n *\n * @param raw - Raw string containing the xml from the Dash Manifest\n * @returns json with the Dash Manifest structure\n */\nexport function parseDashManifest(raw) {\n return dashParser(raw);\n}\n//# sourceMappingURL=parseDashManifest.js.map","let xmlSerializer;\n/**\n * @internal\n */\nexport function setDashSerializer(serializer) {\n xmlSerializer = serializer;\n}\n/**\n * @internal\n */\nexport function getDashSerializer() {\n return xmlSerializer;\n}\nexport function serializeDashManifest(json) {\n return xmlSerializer(json);\n}\n//# sourceMappingURL=serializeDashManifest.js.map","let hlsParser;\n/**\n * @internal\n */\nexport function setHlsParser(parser) {\n hlsParser = parser;\n}\n/**\n * @internal\n */\nexport function getHlsParser() {\n return hlsParser;\n}\nexport function parseHlsManifest(text) {\n if (!text) {\n console.error(\"Can't parse empty HLS Manifest\");\n return {};\n }\n return hlsParser(text);\n}\n//# sourceMappingURL=parseHlsManifest.js.map","export function iso8601DurationToNumber(isoDuration) {\n const hours = /(?:([.,\\d]+)H)/.exec(isoDuration);\n const minutes = /(?:([.,\\d]+)M)/.exec(isoDuration);\n const seconds = /(?:([.,\\d]+)S)/.exec(isoDuration);\n let duration = 0;\n if (hours) {\n duration += +hours[1] * 60 * 60;\n }\n if (minutes) {\n duration += +minutes[1] * 60;\n }\n if (seconds) {\n duration += +seconds[1];\n }\n return duration;\n}\n//# sourceMappingURL=iso8601DurationToNumber.js.map","/**\n * @internal\n *\n * Get the type of the content. It can be obtained directly from AdaptationSet or Representation\n * or can be inferred with the existing properties.\n *\n * @param adaptationSet - AdaptationSet to get the type from\n * @param representation - Representation to get the type from\n * @returns type of the content\n */\nexport function getContentType(adaptationSet, representation) {\n var _a, _b, _c, _d;\n if (adaptationSet.$.contentType) {\n return adaptationSet.$.contentType;\n }\n if ((_a = adaptationSet.ContentComponent) === null || _a === void 0 ? void 0 : _a.at(0)) {\n return adaptationSet.ContentComponent.at(0).$.contentType;\n }\n if (adaptationSet.$.mimeType || (representation === null || representation === void 0 ? void 0 : representation.$.mimeType)) {\n const type = ((_b = adaptationSet.$.mimeType) === null || _b === void 0 ? void 0 : _b.split('/')[0]) ||\n ((_c = representation === null || representation === void 0 ? void 0 : representation.$.mimeType) === null || _c === void 0 ? void 0 : _c.split('/')[0]);\n if (type === 'audio' || type === 'video' || type === 'text') {\n return type;\n }\n if (type === 'application') {\n return 'text';\n }\n }\n if (adaptationSet.$.maxHeight) {\n return 'video';\n }\n const adaptationRef = (_d = adaptationSet.$.id) !== null && _d !== void 0 ? _d : `group: ${adaptationSet.$.group}, lang: ${adaptationSet.$.lang}`;\n console.error(`Could not find contentType from adaptationSet ${adaptationRef}`);\n console.info('Using \"text\" as default contentType');\n return 'text';\n}\n//# sourceMappingURL=getContentType.js.map","import { getContentType } from './getContentType.js';\nexport function getGroup(adaptationSet) {\n var _a;\n return (_a = adaptationSet.$.group) !== null && _a !== void 0 ? _a : getContentType(adaptationSet);\n}\n//# sourceMappingURL=getGroup.js.map","/**\n * @internal\n *\n * Get the initialization url. It can be present on AdaptationSet or Representation.\n *\n * Url initialization is present on segments.\n *\n * @param adaptationSet - AdaptationSet to try to get the initialization url from\n * @param representation - Representation to try to get the initialization url from\n */\nexport function getInitializationUrl(adaptationSet, representation) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n let initializationUrl;\n if (representation.SegmentBase) {\n initializationUrl = (_a = representation.BaseURL[0]) !== null && _a !== void 0 ? _a : '';\n }\n else if (adaptationSet.SegmentList || representation.SegmentList) {\n initializationUrl =\n ((_c = (_b = representation.SegmentList) === null || _b === void 0 ? void 0 : _b.at(0)) === null || _c === void 0 ? void 0 : _c.Initialization[0].$.sourceURL) ||\n ((_e = (_d = adaptationSet.SegmentList) === null || _d === void 0 ? void 0 : _d.at(0)) === null || _e === void 0 ? void 0 : _e.Initialization[0].$.sourceURL);\n }\n if (adaptationSet.SegmentTemplate || representation.SegmentTemplate) {\n initializationUrl =\n ((_g = (_f = adaptationSet.SegmentTemplate) === null || _f === void 0 ? void 0 : _f.at(0)) === null || _g === void 0 ? void 0 : _g.$.initialization) ||\n ((_j = (_h = representation.SegmentTemplate) === null || _h === void 0 ? void 0 : _h.at(0)) === null || _j === void 0 ? void 0 : _j.$.initialization);\n if (initializationUrl === null || initializationUrl === void 0 ? void 0 : initializationUrl.includes('$RepresentationID$')) {\n initializationUrl = initializationUrl.replace('$RepresentationID$', (_k = representation.$.id) !== null && _k !== void 0 ? _k : '');\n }\n }\n return initializationUrl;\n}\n//# sourceMappingURL=getInitializationUrl.js.map","/**\n * @internal\n *\n * Generates a presentation id. It uses the period id as default or creates one\n * if none is present.\n *\n * @param period - Period to try to get the id from\n * @param duration - Duration of the content\n * @returns Presentation id\n */\nexport function getPresentationId(period, duration) {\n var _a;\n return (_a = period.$.id) !== null && _a !== void 0 ? _a : `presentation-id-${duration}`;\n}\n//# sourceMappingURL=getPresentationId.js.map","/**\n * @internal\n *\n * Maps SegmentBase from dash to Segment list from ham.\n *\n * @param representation - Representation to get the SegmentBase from\n * @param duration - Duration of the segment\n * @returns list of ham segments\n */\nexport function mapSegmentBase(representation, duration) {\n return representation.SegmentBase.map((segment) => {\n var _a;\n return {\n duration,\n url: (_a = representation.BaseURL[0]) !== null && _a !== void 0 ? _a : '',\n byteRange: segment.$.indexRange,\n };\n });\n}\n//# sourceMappingURL=mapSegmentBase.js.map","/**\n * @internal\n *\n * Calculates the duration of a segment.\n *\n * segmentDuration = duration / timescale\n *\n * @param duration - Duration of the segment\n * @param timescale - Timescale of the segment\n * @returns Segment duration\n */\nexport function calculateDuration(duration, timescale) {\n if (!duration || !timescale) {\n return 1;\n }\n return +(duration !== null && duration !== void 0 ? duration : 1) / +(timescale !== null && timescale !== void 0 ? timescale : 1);\n}\n//# sourceMappingURL=calculateDuration.js.map","import { calculateDuration } from './utils/calculateDuration.js';\n/**\n * @internal\n *\n * Maps SegmentList from dash to Segment list from ham.\n *\n * @param segmentList - SegmentList list from dash\n * @returns list of ham segments\n */\nexport function mapSegmentList(segmentList) {\n const segments = [];\n segmentList.map((segment) => {\n if (segment.SegmentURL) {\n return segment.SegmentURL.forEach((segmentURL) => {\n var _a;\n segments.push({\n duration: calculateDuration(segment.$.duration, segment.$.timescale),\n url: (_a = segmentURL.$.media) !== null && _a !== void 0 ? _a : '',\n });\n });\n }\n });\n return segments;\n}\n//# sourceMappingURL=mapSegmentList.js.map","import { calculateDuration } from './calculateDuration.js';\n/**\n * @internal\n *\n * Calculates the number of segments that a track has to use SegmentTemplate.\n *\n * Equation used:\n * segments = total duration / (segment duration / timescale)\n *\n * **This equation might be wrong, please double-check it**\n *\n * @param segmentTemplate - SegmentTemplate object\n * @param duration - Total duration of the content\n * @returns Number of segments\n */\nexport function getNumberOfSegments(segmentTemplate, duration) {\n // FIXME: This equation may be wrong\n return Math.round(duration /\n calculateDuration(segmentTemplate.$.duration, segmentTemplate.$.timescale));\n}\n//# sourceMappingURL=getNumberOfSegments.js.map","/**\n * @internal\n *\n * Create the url from a segment template.\n *\n * Searches for substrings with the format `$value$` and replaces it with the correct value.\n * - RepresentationID: id of the representation\n * - Number: id of the segment. `%0Xd` defines the number `X` of digits it needs to have\n *\n * @param representation - Representation of the template\n * @param segmentTemplate - Segment template\n * @param segmentId - Segment id\n * @returns url from the segment template\n */\nexport function getUrlFromTemplate(representation, segmentTemplate, segmentId) {\n const regexTemplate = /\\$(.*?)\\$/g;\n return segmentTemplate.$.media.replace(regexTemplate, (match) => {\n if (match.includes('RepresentationID')) {\n return representation.$.id;\n }\n /**\n * Number with 4 digits e.g: 0001\n */\n if (match.includes('Number%04d')) {\n return segmentId.toString().padStart(4, '0');\n }\n if (match.includes('Number')) {\n return segmentId;\n }\n console.error(`Unknown property ${match} from the SegmentTemplate on representation ${representation.$.id}`);\n return match;\n });\n}\n//# sourceMappingURL=getUrlFromTemplate.js.map","import { calculateDuration } from './utils/calculateDuration.js';\nimport { getNumberOfSegments } from './utils/getNumberOfSegments.js';\nimport { getUrlFromTemplate } from './utils/getUrlFromTemplate.js';\n/**\n * @internal\n *\n * Maps SegmentTemplate from dash to Segment list from ham.\n *\n * @param representation - Representation to generate the urls\n * @param duration - Duration of the segments\n * @param segmentTemplate - SegmentTemplate to get the properties from\n * @returns list of ham segments\n */\nexport function mapSegmentTemplate(representation, duration, segmentTemplate) {\n var _a;\n const numberOfSegments = getNumberOfSegments(segmentTemplate, duration);\n const init = +((_a = segmentTemplate.$.startNumber) !== null && _a !== void 0 ? _a : 0);\n const segments = [];\n for (let id = init; id < numberOfSegments + init; id++) {\n segments.push({\n duration: calculateDuration(segmentTemplate.$.duration, segmentTemplate.$.timescale),\n url: getUrlFromTemplate(representation, segmentTemplate, id),\n });\n }\n return segments;\n}\n//# sourceMappingURL=mapSegmentTemplate.js.map","import { mapSegmentBase } from './mapSegmentBase.js';\nimport { mapSegmentList } from './mapSegmentList.js';\nimport { mapSegmentTemplate } from './mapSegmentTemplate.js';\n/**\n * @internal\n *\n * Maps dash segments to ham segment.\n *\n * Checks the type of dash segments used to map them accordingly.\n * @see mapSegmentBase\n * @see mapSegmentList\n * @see mapSegmentTemplate\n *\n * @param adaptationSet - AdaptationSet to get the segments from\n * @param representation - Representation to get the segments from\n * @param duration - Duration of the segments\n * @returns list of ham segments\n */\nexport function mapSegments(adaptationSet, representation, duration) {\n var _a, _b, _c, _d;\n const segmentTemplate = (_b = (_a = adaptationSet.SegmentTemplate) === null || _a === void 0 ? void 0 : _a.at(0)) !== null && _b !== void 0 ? _b : (_c = representation.SegmentTemplate) === null || _c === void 0 ? void 0 : _c.at(0);\n const segmentList = (_d = adaptationSet.SegmentList) !== null && _d !== void 0 ? _d : representation.SegmentList;\n if (representation.SegmentBase) {\n return mapSegmentBase(representation, duration);\n }\n else if (segmentList) {\n return mapSegmentList(segmentList);\n }\n else if (segmentTemplate) {\n return mapSegmentTemplate(representation, duration, segmentTemplate);\n }\n else {\n console.error(`Representation ${representation.$.id} has no segments`);\n return [];\n }\n}\n//# sourceMappingURL=mapSegments.js.map","/**\n * @internal\n *\n * Get the channels value (audio). It can be present on adaptationSet or representation.\n *\n * @param adaptationSet - AdaptationSet to try to get the channels from\n * @param representation - Representation to try to get the channels from\n * @returns Channels value\n */\nexport function getChannels(adaptationSet, representation) {\n var _a, _b, _c, _d, _e, _f;\n const channels = +((_f = (_c = (_b = (_a = adaptationSet.AudioChannelConfiguration) === null || _a === void 0 ? void 0 : _a.at(0)) === null || _b === void 0 ? void 0 : _b.$.value) !== null && _c !== void 0 ? _c : (_e = (_d = representation.AudioChannelConfiguration) === null || _d === void 0 ? void 0 : _d.at(0)) === null || _e === void 0 ? void 0 : _e.$.value) !== null && _f !== void 0 ? _f : 0);\n if (!channels) {\n console.error(`Representation ${representation.$.id} has no channels`);\n }\n return channels;\n}\n//# sourceMappingURL=getChannels.js.map","/**\n * @internal\n *\n * Get the codec value (video and audio). It can be present on adaptationSet or representation.\n *\n * @param adaptationSet - AdaptationSet to try to get the codec from\n * @param representation - Representation to try to get the codec from\n * @returns Content codec\n */\nexport function getCodec(adaptationSet, representation) {\n var _a, _b;\n const codec = (_b = (_a = representation.$.codecs) !== null && _a !== void 0 ? _a : adaptationSet.$.codecs) !== null && _b !== void 0 ? _b : '';\n if (!codec) {\n console.error(`Representation ${representation.$.id} has no codecs`);\n }\n return codec;\n}\n//# sourceMappingURL=getCodec.js.map","// Dash Timescale defaults\nexport const TIMESCALE_90000 = 90000;\nexport const TIMESCALE_48000 = 48000;\nexport const TIMESCALE_1000 = 1000;\n// Using 90000 as default for video since it is divisible by 24, 25 and 30\nexport const VIDEO_SAMPLE_RATE = 90000;\n// Using 1000 as default for text\nexport const TEXT_SAMPLE_RATE = 1000;\n// Frame rate numerator default\nexport const FRAME_RATE_NUMERATOR_30 = 30;\n// Manifest parser constants\nexport const WHITE_SPACE = ' ';\nexport const WHITE_SPACE_ENCODED = '%20'; //In some players , white space is not supported\nexport const NEW_LINE = '\\n';\nexport const HYPHEN_MINUS_SEPARATOR = '-'; //In Dash it is used to separate the start and end of a byte range\nexport const AT_SEPARATOR = '@'; //In Hls it is used to separate the start and end of a byte range\nexport const FRAME_RATE_SEPARATOR = '/';\nexport const NUMERATOR = 0;\nexport const DENOMINATOR = 1;\nexport const ZERO = 0;\n//# sourceMappingURL=constants.js.map","import { DENOMINATOR, FRAME_RATE_NUMERATOR_30, FRAME_RATE_SEPARATOR, NUMERATOR, ZERO, } from '../../../../utils/constants.js';\n/**\n * @internal\n *\n * Get the frame rate from a dash manifest.\n *\n * This functions assumes the adaptationSet and representation set are type video\n *\n * @param adaptationSet - To try to get the frameRate from\n * @param representation - To try to get the frameRate from\n * @returns object containing numerator and denominator\n */\nexport function getFrameRate(adaptationSet, representation) {\n var _a, _b, _c, _d;\n const frameRateDash = (_b = (_a = representation.$.frameRate) !== null && _a !== void 0 ? _a : adaptationSet.$.frameRate) !== null && _b !== void 0 ? _b : '';\n if (!frameRateDash) {\n console.error(`Representation ${representation.$.id} has no frame rate`);\n }\n const frameRate = frameRateDash.split(FRAME_RATE_SEPARATOR);\n const frameRateNumerator = parseInt((_c = frameRate.at(NUMERATOR)) !== null && _c !== void 0 ? _c : '');\n const frameRateDenominator = parseInt((_d = frameRate.at(DENOMINATOR)) !== null && _d !== void 0 ? _d : '');\n return {\n frameRateNumerator: isNaN(frameRateNumerator)\n ? FRAME_RATE_NUMERATOR_30\n : frameRateNumerator,\n frameRateDenominator: isNaN(frameRateDenominator)\n ? ZERO\n : frameRateDenominator,\n };\n}\n//# sourceMappingURL=getFrameRate.js.map","/**\n * @internal\n *\n * Get the language from an adaptation set.\n *\n * @param adaptationSet - AdaptationSet to get the language from\n * @returns language of the content\n */\nexport function getLanguage(adaptationSet) {\n let language = adaptationSet.$.lang;\n if (!language) {\n console.info(`AdaptationSet ${adaptationSet.$.id} has no lang, using \"und\" as default`);\n language = 'und';\n }\n return language;\n}\n//# sourceMappingURL=getLanguage.js.map","/**\n * @internal\n *\n * Get sample rate (audio).\n *\n * @param adaptationSet - AdaptationSet to try to get the sampleRate from\n * @param representation - Representation to try to get the sampleRate from\n * @returns Sample rate. In case it is not presents, it returns 0.\n */\nexport function getSampleRate(adaptationSet, representation) {\n var _a, _b;\n const sampleRate = +((_b = (_a = representation.$.audioSamplingRate) !== null && _a !== void 0 ? _a : adaptationSet.$.audioSamplingRate) !== null && _b !== void 0 ? _b : 0);\n if (!sampleRate) {\n console.error(`Representation ${representation.$.id} has no audioSamplingRate`);\n }\n return sampleRate;\n}\n//# sourceMappingURL=getSampleRate.js.map","/**\n * @internal\n *\n * Get the sar value. It can be present on adaptationSet or representation.\n *\n * @param adaptationSet - AdaptationSet to try to get the sar from\n * @param representation - AdaptationSet to try to get the sar from\n * @returns sar value. In case it is not present, returns empty string.\n */\nexport function getSar(adaptationSet, representation) {\n var _a, _b;\n const sar = (_b = (_a = representation.$.sar) !== null && _a !== void 0 ? _a : adaptationSet.$.sar) !== null && _b !== void 0 ? _b : '';\n if (!sar) {\n console.error(`Representation ${representation.$.id} has no sar`);\n }\n return sar;\n}\n//# sourceMappingURL=getSar.js.map","/**\n * @internal\n *\n * Calculate the duration of a track.\n *\n * This is calculated using the sum of the duration of all the segments from the\n * track.\n *\n * An alternative to this could be number of segments * duration of a segment.\n *\n * @param segments - Segments to calculate the sum of the durations\n * @returns Duration of the track\n */\nexport function getTrackDuration(segments) {\n return segments.reduce((acc, segment) => {\n return acc + segment.duration;\n }, 0);\n}\n//# sourceMappingURL=getTrackDuration.js.map","import { getChannels } from './utils/getChannels.js';\nimport { getCodec } from './utils/getCodec.js';\nimport { getContentType } from './utils/getContentType.js';\nimport { getFrameRate } from './utils/getFrameRate.js';\nimport { getLanguage } from './utils/getLanguage.js';\nimport { getSampleRate } from './utils/getSampleRate.js';\nimport { getSar } from './utils/getSar.js';\nimport { getTrackDuration } from './utils/getTrackDuration.js';\n/**\n * @internal\n *\n * Map dash components to ham tracks.\n *\n * @param adaptationSet - AdaptationSet of the dash manifest\n * @param representation - Representation of the dash manifest\n * @param segments - Segments from the representation of the dash manifest\n * @param initializationUrl - Initialization url from the track\n * @returns AudioTrack, VideoTrack or TextTrack depending on the type\n */\nexport function mapTracks(adaptationSet, representation, segments, initializationUrl) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n if (!adaptationSet) {\n throw new Error('Error: AdaptationSet is undefined');\n }\n const type = getContentType(adaptationSet, representation);\n if (type === 'video') {\n return {\n bandwidth: +((_a = representation.$.bandwidth) !== null && _a !== void 0 ? _a : 0),\n codec: getCodec(adaptationSet, representation),\n duration: getTrackDuration(segments),\n frameRate: getFrameRate(adaptationSet, representation),\n height: +((_b = representation.$.height) !== null && _b !== void 0 ? _b : 0),\n id: (_c = representation.$.id) !== null && _c !== void 0 ? _c : '',\n language: getLanguage(adaptationSet),\n par: (_d = adaptationSet.$.par) !== null && _d !== void 0 ? _d : '',\n sar: getSar(adaptationSet, representation),\n scanType: (_e = representation.$.scanType) !== null && _e !== void 0 ? _e : '',\n segments,\n type,\n width: +((_f = representation.$.width) !== null && _f !== void 0 ? _f : 0),\n urlInitialization: initializationUrl,\n };\n }\n else if (type === 'audio') {\n return {\n bandwidth: +((_g = representation.$.bandwidth) !== null && _g !== void 0 ? _g : 0),\n channels: getChannels(adaptationSet, representation),\n codec: getCodec(adaptationSet, representation),\n duration: getTrackDuration(segments),\n id: (_h = representation.$.id) !== null && _h !== void 0 ? _h : '',\n language: getLanguage(adaptationSet),\n sampleRate: getSampleRate(adaptationSet, representation),\n segments,\n type,\n urlInitialization: initializationUrl,\n };\n }\n else {\n // if (type === 'text')\n return {\n bandwidth: +((_j = representation.$.bandwidth) !== null && _j !== void 0 ? _j : 0),\n codec: getCodec(adaptationSet, representation),\n duration: getTrackDuration(segments),\n id: (_k = representation.$.id) !== null && _k !== void 0 ? _k : '',\n language: getLanguage(adaptationSet),\n segments,\n type,\n urlInitialization: initializationUrl,\n };\n }\n}\n//# sourceMappingURL=mapTracks.js.map","import { iso8601DurationToNumber } from '../../../utils/dash/iso8601DurationToNumber.js';\nimport { getGroup } from './utils/getGroup.js';\nimport { getInitializationUrl } from './utils/getInitializationUrl.js';\nimport { getPresentationId } from './utils/getPresentationId.js';\nimport { mapSegments } from './mapSegments.js';\nimport { mapTracks } from './mapTracks.js';\n/**\n * @internal\n *\n * Main function to map dash to ham.\n *\n * @param dash - Dash manifest to map\n * @returns List of presentations in ham\n */\nexport function mapDashToHam(dash) {\n return dash.MPD.Period.map((period) => {\n const duration = iso8601DurationToNumber(period.$.duration);\n const presentationId = getPresentationId(period, duration);\n const selectionSetGroups = {};\n period.AdaptationSet.map((adaptationSet) => {\n var _a, _b, _c, _d;\n const tracks = adaptationSet.Representation.map((representation) => {\n const segments = mapSegments(adaptationSet, representation, duration);\n return mapTracks(adaptationSet, representation, segments, getInitializationUrl(adaptationSet, representation));\n });\n const group = getGroup(adaptationSet);\n if (!selectionSetGroups[group]) {\n selectionSetGroups[group] = {\n id: group,\n switchingSets: [],\n };\n }\n selectionSetGroups[group].switchingSets.push({\n id: (_d = (_a = adaptationSet.$.id) !== null && _a !== void 0 ? _a : (_c = (_b = adaptationSet.ContentComponent) === null || _b === void 0 ? void 0 : _b.at(0)) === null || _c === void 0 ? void 0 : _c.$.id) !== null && _d !== void 0 ? _d : group,\n tracks,\n });\n });\n const selectionSets = Object.values(selectionSetGroups);\n return { id: presentationId, selectionSets };\n });\n}\n//# sourceMappingURL=mapDashToHam.js.map","export function trackToSegmentBase(track) {\n var _a;\n const segments = [];\n if (track.segments.length > 0 &&\n track.byteRange &&\n track.segments[0].byteRange &&\n track.segments[0].byteRange.includes('@')) {\n let firstSegment = undefined;\n const initByteRange = track.byteRange.includes('-')\n ? track.byteRange.split('-')[1]\n : track.byteRange.includes('@')\n ? track.byteRange.split('@')[0]\n : '';\n const initRange = +initByteRange - 1;\n const byteFirstSegment = track.segments[0].byteRange.includes('-')\n ? track.segments[0].byteRange.split('-')[1]\n : track.segments[0].byteRange.includes('@')\n ? track.segments[0].byteRange.split('@')[1]\n : '';\n const numberFirstByteRange = +byteFirstSegment - 1;\n firstSegment = {\n $: {\n indexRange: `${initByteRange}-${numberFirstByteRange}`,\n },\n Initialization: [{ $: { range: `0-${initRange}` } }],\n };\n if (firstSegment && track.type === 'audio') {\n // All segments should have timescale, but for now, just the audio ones store this value\n const audioTrack = track;\n firstSegment.$.timescale = (_a = audioTrack.sampleRate.toString()) !== null && _a !== void 0 ? _a : '';\n }\n if (firstSegment) {\n segments.push(firstSegment);\n }\n }\n else {\n track.segments.forEach((segment) => {\n var _a;\n let newSegment;\n if (segment.byteRange) {\n const initRange = +segment.byteRange.split('-')[0] - 1;\n newSegment = {\n $: {\n indexRange: segment.byteRange,\n },\n Initialization: [{ $: { range: `0-${initRange}` } }],\n };\n }\n if (newSegment && track.type === 'audio') {\n // All segments should have timescale, but for now, just the audio ones store this value\n const audioTrack = track;\n newSegment.$.timescale = (_a = audioTrack.sampleRate.toString()) !== null && _a !== void 0 ? _a : '';\n }\n if (newSegment) {\n segments.push(newSegment);\n }\n });\n }\n return segments;\n}\n//# sourceMappingURL=trackToSegmentBase.js.map","import { TEXT_SAMPLE_RATE, TIMESCALE_48000, VIDEO_SAMPLE_RATE, } from '../../../../utils/constants.js';\n/**\n * @internal\n *\n * This function tries to recreate the timescale value.\n *\n * This value is not stored on the ham object, so it is not possible (for now)\n * to get the original one.\n *\n * Just the audio tracks have this value stored on the `sampleRate` key.\n *\n * @param track - Track to get the timescale from\n * @returns Timescale in numbers\n */\nexport function getTimescale(track) {\n if ((track === null || track === void 0 ? void 0 : track.type) === 'audio') {\n const audioTrack = track;\n return audioTrack.sampleRate !== 0\n ? audioTrack.sampleRate\n : TIMESCALE_48000;\n }\n if ((track === null || track === void 0 ? void 0 : track.type) === 'video') {\n return VIDEO_SAMPLE_RATE;\n }\n if ((track === null || track === void 0 ? void 0 : track.type) === 'text') {\n return TEXT_SAMPLE_RATE;\n }\n return VIDEO_SAMPLE_RATE;\n}\n//# sourceMappingURL=getTimescale.js.map","import { getTimescale } from './utils/getTimescale.js';\nexport function trackToSegmentList(track) {\n var _a;\n const segmentList = [];\n const segmentURLs = [];\n track.segments.forEach((segment) => {\n segmentURLs.push({\n $: {\n media: segment.url,\n },\n });\n });\n if (!((_a = track.segments.at(0)) === null || _a === void 0 ? void 0 : _a.byteRange)) {\n const timescale = getTimescale(track);\n segmentList.push({\n $: {\n duration: ((track.duration * timescale) /\n segmentURLs.length).toString(),\n timescale: timescale.toString(),\n },\n Initialization: [{ $: { sourceURL: track.urlInitialization } }],\n SegmentURL: segmentURLs,\n });\n }\n return segmentList;\n}\n//# sourceMappingURL=trackToSegmentList.js.map","import { FRAME_RATE_NUMERATOR_30, ZERO, } from '../../../../utils/constants.js';\n/**\n * @internal\n *\n * Get the framerate from a track.\n *\n * If frameRate numerator is not present, it uses 30 as default.\n *\n * @param track - to get the framerate from\n * @returns frame rate as a string formatted as `numerator/denominator`\n */\nexport function getFrameRate(track) {\n var _a;\n let frameRate = undefined;\n if ((track === null || track === void 0 ? void 0 : track.type) === 'video') {\n const videoTrack = track;\n frameRate = `${(_a = videoTrack.frameRate.frameRateNumerator) !== null && _a !== void 0 ? _a : FRAME_RATE_NUMERATOR_30}`;\n frameRate =\n videoTrack.frameRate.frameRateDenominator !== ZERO\n ? `${frameRate}/${videoTrack.frameRate.frameRateDenominator}`\n : frameRate;\n }\n return frameRate;\n}\n//# sourceMappingURL=getFrameRate.js.map","import { trackToSegmentBase } from './trackToSegmentBase.js';\nimport { trackToSegmentList } from './trackToSegmentList.js';\nimport { getFrameRate } from './utils/getFrameRate.js';\nexport function tracksToRepresentation(tracks) {\n return tracks.map((track) => {\n var _a, _b;\n const representation = {\n $: {\n id: track.id,\n bandwidth: track.bandwidth.toString(),\n },\n SegmentBase: trackToSegmentBase(track),\n SegmentList: trackToSegmentList(track),\n };\n representation.$.mimeType = `${track.type}/mp4`; //Harcoded value\n if (track.type === 'video') {\n const videoTrack = track;\n representation.$ = {\n ...representation.$,\n frameRate: getFrameRate(track),\n width: videoTrack.width.toString(),\n height: videoTrack.height.toString(),\n codecs: videoTrack.codec,\n };\n if (videoTrack.scanType) {\n representation.$.scanType = videoTrack.scanType;\n }\n }\n if (track.type === 'audio') {\n const audioTrack = track;\n representation.$ = {\n ...representation.$,\n audioSamplingRate: audioTrack.sampleRate.toString(),\n codecs: audioTrack.codec,\n };\n representation.AudioChannelConfiguration = [\n {\n $: {\n schemeIdUri: 'urn:mpeg:dash:23003:3:audio_channel_configuration:2011', // hardcoded value\n value: (_a = audioTrack.channels.toString()) !== null && _a !== void 0 ? _a : '',\n },\n },\n ];\n }\n if ((_b = track.segments[0]) === null || _b === void 0 ? void 0 : _b.byteRange) {\n // Only BaseSegments have byteRange on segments, and BaseURL on the representation\n representation.BaseURL = [track.segments[0].url];\n }\n return representation;\n });\n}\n//# sourceMappingURL=tracksToRepresentation.js.map","import { tracksToRepresentation } from './tracksToRepresentation.js';\nimport { getFrameRate } from './utils/getFrameRate.js';\nexport function selectionSetsToAdaptationSet(selectionsSets) {\n return selectionsSets.flatMap((selectionSet) => {\n return selectionSet.switchingSets.map((switchingSet) => {\n const track = switchingSet.tracks[0];\n return {\n $: {\n id: switchingSet.id,\n group: selectionSet.id,\n contentType: track === null || track === void 0 ? void 0 : track.type,\n mimeType: `${track === null || track === void 0 ? void 0 : track.type}/mp4`,\n frameRate: getFrameRate(track),\n lang: track === null || track === void 0 ? void 0 : track.language,\n codecs: track === null || track === void 0 ? void 0 : track.codec,\n },\n Representation: tracksToRepresentation(switchingSet.tracks),\n };\n });\n });\n}\n//# sourceMappingURL=selectionSetsToAdaptationSet.js.map","export function numberToIso8601Duration(duration) {\n const hours = Math.floor(duration / 3600);\n const minutes = Math.floor((duration % 3600) / 60);\n const seconds = duration % 60;\n if (hours > 0) {\n return `PT${hours}H${minutes}M${seconds}S`;\n }\n else if (minutes > 0) {\n return `PT${minutes}M${seconds}S`;\n }\n return `PT${seconds}S`;\n}\n//# sourceMappingURL=numberToIso8601Duration.js.map","import { selectionSetsToAdaptationSet } from './selectionSetsToAdaptationSet.js';\nimport { numberToIso8601Duration } from '../../../utils/dash/numberToIso8601Duration.js';\nexport function presentationsToPeriods(presentations) {\n return presentations.map((presentation) => {\n return {\n $: {\n duration: numberToIso8601Duration(presentation.selectionSets[0].switchingSets[0].tracks[0]\n .duration),\n id: presentation.id,\n start: 'PT0S',\n },\n AdaptationSet: selectionSetsToAdaptationSet(presentation.selectionSets),\n };\n });\n}\n//# sourceMappingURL=presentationsToPeriods.js.map","import { presentationsToPeriods } from './presentationsToPeriods.js';\nimport { serializeDashManifest } from '../../../utils/dash/serializeDashManifest.js';\nexport function mapHamToDash(hamManifests) {\n const periods = presentationsToPeriods(hamManifests);\n const duration = periods[0].$.duration;\n const manifest = {\n MPD: {\n $: {\n mediaPresentationDuration: duration,\n type: 'static',\n },\n Period: periods,\n },\n };\n return serializeDashManifest(manifest);\n}\n//# sourceMappingURL=mapHamToDash.js.map","//Add metadata to manifest.\n//In the future, if any other fields are wanted to be added, they can be added here.\nexport function addMetadataToDash(dashManifest, manifest) {\n if (!manifest.metadata) {\n manifest.metadata = new Map();\n }\n if (dashManifest.MPD.$ && dashManifest.MPD.$.profiles) {\n manifest.metadata.set('profiles', dashManifest.MPD.$.profiles);\n }\n if (dashManifest.MPD.$ && dashManifest.MPD.$.type) {\n manifest.metadata.set('type', dashManifest.MPD.$.type);\n }\n return manifest;\n}\n//# sourceMappingURL=addMetadataToDash.js.map","export function getMetadata(manifest) {\n const metadata = manifest === null || manifest === void 0 ? void 0 : manifest.metadata;\n return JSON.parse(JSON.stringify(metadata));\n}\n//# sourceMappingURL=getMetadata.js.map","import { mapDashToHam } from './mapDashToHam/mapDashToHam.js';\nimport { mapHamToDash } from './mapHamToDash/mapHamToDash.js';\nimport { parseDashManifest } from '../../utils/dash/parseDashManifest.js';\nimport { addMetadataToDash } from '../../utils/manifest/addMetadataToDash.js';\nimport { getMetadata } from '../../utils/manifest/getMetadata.js';\nexport class DashMapper {\n getManifestMetadata() {\n return getMetadata(this.manifest);\n }\n toHam(manifest) {\n const dashManifest = parseDashManifest(manifest.manifest);\n if (!dashManifest) {\n return [];\n }\n addMetadataToDash(dashManifest, manifest);\n return mapDashToHam(dashManifest);\n }\n toManifest(presentation) {\n const manifest = mapHamToDash(presentation);\n return { manifest, ancillaryManifests: [], type: 'dash' };\n }\n}\n//# sourceMappingURL=DashMapper.js.map","export class MapperContext {\n constructor() { }\n static getInstance() {\n if (!MapperContext.instance) {\n MapperContext.instance = new MapperContext();\n }\n return MapperContext.instance;\n }\n setStrategy(strategy) {\n this.strategy = strategy;\n }\n getHamFormat(manifest) {\n return this.strategy.toHam(manifest);\n }\n getManifestFormat(presentation) {\n return this.strategy.toManifest(presentation);\n }\n getManifestMetadata() {\n return this.strategy.getManifestMetadata();\n }\n}\n//# sourceMappingURL=MapperContext.js.map","import { DashMapper } from '../../mapper/dash/DashMapper.js';\nimport { MapperContext } from '../../mapper/MapperContext.js';\n/**\n * Convert dash manifest into a ham object.\n *\n * @example\n * Example on how to import the cmaf module and convert the dash `manifest`\n * into the ham manifest.\n * ```ts\n * import cmaf from '@svta/common-media-library/cmaf-ham';\n *\n * const manifest = cmaf.dashToHam(dashManifest);\n * ```\n *\n * @param manifest - String of the XML Dash manifest\n * @returns List of presentations from ham\n *\n * @group CMAF\n * @alpha\n */\nexport function dashToHam(manifest) {\n const mapperContext = MapperContext.getInstance();\n mapperContext.setStrategy(new DashMapper());\n return mapperContext.getHamFormat({ manifest, type: 'dash' });\n}\n//# sourceMappingURL=dashToHam.js.map","import { DashMapper } from '../../mapper/dash/DashMapper.js';\nimport { MapperContext } from '../../mapper/MapperContext.js';\n/**\n * Convert HAM object into Dash Manifest.\n *\n * @example\n * Example on how to import the cmaf module and convert the ham `presentations`\n * array into the dash manifest.\n * ```ts\n * import cmaf from '@svta/common-media-library/cmaf-ham';\n *\n * const manifest = cmaf.hamToDash(presentations);\n * ```\n *\n * @param presentation - List of presentations from ham\n * @returns Manifest object containing the Dash manifest as string\n *\n * @group CMAF\n * @alpha\n */\nexport function hamToDash(presentation) {\n const mapperContext = MapperContext.getInstance();\n mapperContext.setStrategy(new DashMapper());\n return mapperContext.getManifestFormat(presentation);\n}\n//# sourceMappingURL=hamToDash.js.map","import { AT_SEPARATOR, HYPHEN_MINUS_SEPARATOR, } from '../../../../utils/constants.js';\n/**\n * @internal\n *\n * Get the byterange in hls format from ham track.\n *\n * @param track - Track to get the byterange from\n * @returns string containing the byterange in the hls format\n *\n * @group CMAF\n * @alpha\n */\nexport function getByterange(track) {\n var _a, _b, _c, _d;\n if (track.byteRange) {\n return `BYTERANGE:${track.byteRange.replace(HYPHEN_MINUS_SEPARATOR, AT_SEPARATOR)}\\n`;\n }\n else if ((_b = (_a = track.segments) === null || _a === void 0 ? void 0 : _a.at(0)) === null || _b === void 0 ? void 0 : _b.byteRange) {\n return `BYTERANGE:0@${Number((_d = (_c = track.segments.at(0)) === null || _c === void 0 ? void 0 : _c.byteRange) === null || _d === void 0 ? void 0 : _d.replace(HYPHEN_MINUS_SEPARATOR, AT_SEPARATOR).split(AT_SEPARATOR)[0]) - 1}\\n`;\n }\n return '';\n}\n//# sourceMappingURL=getByterange.js.map","import { WHITE_SPACE, WHITE_SPACE_ENCODED, } from '../../../../utils/constants.js';\n/**\n * @internal\n *\n * Get url initialization from ham track.\n *\n * @param track - Track to get the url initialization from\n * @returns string containing the url initialization in the hls format\n *\n * @group CMAF\n * @alpha\n */\nexport function getUrlInitialization(track) {\n var _a, _b;\n return ((_b = (_a = track.urlInitialization) === null || _a === void 0 ? void 0 : _a.replaceAll(WHITE_SPACE, WHITE_SPACE_ENCODED)) !== null && _b !== void 0 ? _b : '');\n}\n//# sourceMappingURL=getUrlInitialization.js.map","import { getByterange } from './getByterange.js';\nimport { getUrlInitialization } from './getUrlInitialization.js';\n/**\n * @internal\n *\n * Get the playlist data in hls format from ham track.\n *\n * @param track - Track to get the playlist data from\n * @returns string containing the playlist data in the hls format\n *\n * @group CMAF\n * @alpha\n */\nexport function getPlaylistData(track) {\n return `#EXT-X-MAP:URI=\"${getUrlInitialization(track)}\",${getByterange(track)}\\n`;\n}\n//# sourceMappingURL=getPlaylistData.js.map","import { AT_SEPARATOR, HYPHEN_MINUS_SEPARATOR, WHITE_SPACE, WHITE_SPACE_ENCODED, } from '../../../../utils/constants.js';\n/**\n * @internal\n *\n * Format the ham segments to hls.\n *\n * @param segments - Segments to be formatted\n * @returns string containing the segments in the hls format\n *\n * @group CMAF\n * @alpha\n */\nexport function getSegments(segments) {\n return segments\n .map((segment) => {\n const byteRange = segment.byteRange\n ? `#EXT-X-BYTERANGE:${segment.byteRange.replace(HYPHEN_MINUS_SEPARATOR, AT_SEPARATOR)}\\n`\n : '';\n const url = segment.url.replaceAll(WHITE_SPACE, WHITE_SPACE_ENCODED);\n return `#EXTINF:${segment.duration},\\n${byteRange}\\n${url}`;\n })\n .join('\\n');\n}\n//# sourceMappingURL=getSegments.js.map","import { getPlaylistData } from './utils/getPlaylistData.js';\nimport { getSegments } from './utils/getSegments.js';\nexport function generateManifestPlaylistPiece(track) {\n var _a;\n const mediaSequence = 0; //TODO : save mediaSequence in the model.\n const trackFileName = (_a = track.fileName) !== null && _a !== void 0 ? _a : `${track.id}.m3u8`;\n let mainRef = '';\n let playlist = `#EXTM3U\\n#EXT-X-TARGETDURATION:${track.duration / track.segments.length}\\n#EXT-X-PLAYLIST-TYPE:VOD\\n#EXT-X-MEDIA-SEQUENCE:${mediaSequence}\\n`;\n if (track.type.toLowerCase() === 'video') {\n const videoTrack = track;\n mainRef += `#EXT-X-STREAM-INF:BANDWIDTH=${videoTrack.bandwidth},CODECS=\"${videoTrack.codec}\",RESOLUTION=${videoTrack.width}x${videoTrack.height}\\n${trackFileName}\\n`;\n playlist += getPlaylistData(videoTrack);\n }\n else if (track.type.toLowerCase() === 'audio') {\n const audioTrack = track;\n mainRef += `#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID=\"${audioTrack.id}\",LANGUAGE=\"${audioTrack.language}\",NAME=\"${audioTrack.id}\",URI=\"${trackFileName}\"\\n`;\n playlist += getPlaylistData(audioTrack);\n }\n else if (track.type.toLowerCase() === 'text') {\n const textTrack = track;\n mainRef += `#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID=\"${textTrack.id}\",NAME=\"${textTrack.id}\",LANGUAGE=\"${textTrack.language}\",URI=\"${trackFileName}\"\\n`;\n }\n playlist += `${getSegments(track.segments)}#EXT-X-ENDLIST`;\n return { mainRef, playlist };\n}\n//# sourceMappingURL=generateManifestPlaylistPiece.js.map","import { generateManifestPlaylistPiece } from './generateManifestPlaylistPiece.js';\nexport function mapHamToHls(presentations) {\n const version = 7; //TODO Add a way to change the version. For now version 7 is hardcoded as it is the first version of HLS with CMAF support\n let mainManifest = `#EXTM3U\\n#EXT-X-VERSION:${version}\\n\\n`;\n const playlists = [];\n presentations.map((presentation) => {\n presentation.selectionSets.map((selectionSet) => {\n selectionSet.switchingSets.map((switchingSet) => {\n switchingSet.tracks.map((track) => {\n var _a;\n const { mainRef, playlist } = generateManifestPlaylistPiece(track);\n mainManifest += mainRef;\n const manifestFileName = (_a = track.fileName) !== null && _a !== void 0 ? _a : `${track.id}.m3u8`;\n playlists.push({\n manifest: playlist,\n type: 'hls',\n fileName: manifestFileName,\n });\n });\n });\n });\n });\n return {\n manifest: mainManifest,\n ancillaryManifests: playlists,\n type: 'hls',\n };\n}\n//# sourceMappingURL=mapHamToHls.js.map","/**\n * @internal\n *\n * Get byterange from HLS Manifest.\n *\n * @param byteRange - Byterange object containning length and offset\n * @returns string containing the byterange. If byterange is undefined, it returns undefined\n *\n * @group CMAF\n * @alpha\n */\nexport function getByterange(byteRange) {\n if (!byteRange) {\n return '';\n }\n return `${byteRange.length}@${byteRange.offset}`;\n}\n//# sourceMappingURL=getByterange.js.map","import { getByterange } from './getByterange.js';\n/**\n * @internal\n *\n * Format the hls segments into the ham segments.\n *\n * @param segments - List of HLS segments\n * @returns ham formatted list of segments\n *\n * @group CMAF\n * @alpha\n */\nexport function formatSegments(segments) {\n var _a;\n return ((_a = segments === null || segments === void 0 ? void 0 : segments.map((segment) => {\n const byteRange = getByterange(segment === null || segment === void 0 ? void 0 : segment.byterange);\n return {\n duration: segment.duration,\n url: segment.uri,\n ...(byteRange && { byteRange }),\n };\n })) !== null && _a !== void 0 ? _a : []);\n}\n//# sourceMappingURL=formatSegments.js.map","/**\n * @internal\n *\n * Get the codec for a type of content.\n *\n * @param type - Type of the content to get the codecs from\n * @param codecs - String containing multiple codecs separated with commas\n * @returns string containing codec\n *\n * @group CMAF\n * @alpha\n */\nexport function getCodec(type, codecs) {\n var _a;\n if (type === 'audio') {\n // Using codec mp4a.40.2 for now, we should retrieve it by finding\n // the video playlist that is related to this audio group.\n return 'mp4a.40.2';\n }\n else if (type === 'video') {\n // CODECS could be a comma separated value\n // where it has video and audio codec. Using\n // position zero for now.\n // TODO: Get the correct video codec.\n return (_a = codecs === null || codecs === void 0 ? void 0 : codecs.split(',').at(0)) !== null && _a !== void 0 ? _a : '';\n }\n else {\n // if (type === 'text')\n return '';\n }\n}\n//# sourceMappingURL=getCodec.js.map","/**\n * @internal\n *\n * Calculate the duration of a track.\n *\n * `target duration * number of segments`\n *\n * @param manifest - Manifest of the track\n * @param segments - Array of segments in a track\n * @returns duration of a track\n *\n * @group CMAF\n * @alpha\n */\nexport function getDuration(manifest, segments) {\n if (!(manifest === null || manifest === void 0 ? void 0 : manifest.targetDuration)) {\n console.error('Could not calculate duration, manifest is undefined.');\n return null;\n }\n return (manifest === null || manifest === void 0 ? void 0 : manifest.targetDuration) * segments.length;\n}\n//# sourceMappingURL=getDuration.js.map","import { parseHlsManifest } from '../../../utils/hls/parseHlsManifest.js';\nimport { formatSegments } from './utils/formatSegments.js';\nimport { getByterange } from './utils/getByterange.js';\nimport { getCodec } from './utils/getCodec.js';\nimport { getDuration } from './utils/getDuration.js';\n/**\n * @internal\n *\n * This function is used to convert audio groups to switching sets.\n *\n *\n * @param mediaGroupsAudio - Any\n * @param manifestPlaylists - Array of Manifest\n * @returns Array of switchingSet\n *\n * @group CMAF\n * @alpha\n */\nexport function audioGroupsToSwitchingSets(mediaGroupsAudio, manifestPlaylists) {\n var _a, _b;\n const audioSwitchingSets = [];\n const audioTracks = [];\n for (const audioEncodings in mediaGroupsAudio) {\n const encodings = mediaGroupsAudio[audioEncodings];\n for (const audio in encodings) {\n const attributes = encodings[audio];\n const { language, uri } = attributes;\n const audioParsed = parseHlsManifest((_a = manifestPlaylists.shift()) === null || _a === void 0 ? void 0 : _a.manifest);\n const map = (_b = audioParsed === null || audioParsed === void 0 ? void 0 : audioParsed.segments[0]) === null || _b === void 0 ? void 0 : _b.map;\n const segments = formatSegments(audioParsed === null || audioParsed === void 0 ? void 0 : audioParsed.segments);\n // TODO: channels, sampleRate, bandwith and codec need to be\n // updated with real values. Right now we are using simple hardcoded values.\n const byteRange = getByterange(map === null || map === void 0 ? void 0 : map.byterange);\n audioTracks.push({\n id: audio,\n type: 'audio',\n fileName: uri,\n codec: getCodec('audio'),\n duration: getDuration(audioParsed, segments),\n language: language,\n bandwidth: 0,\n segments: segments,\n sampleRate: 0,\n channels: 2,\n ...(byteRange && { byteRange }),\n ...((map === null || map === void 0 ? void 0 : map.uri) && { urlInitialization: map === null || map === void 0 ? void 0 : map.uri }),\n });\n }\n }\n audioSwitchingSets.push({\n id: 'audio',\n tracks: audioTracks,\n });\n return audioSwitchingSets;\n}\n//# sourceMappingURL=audioGroupsToSwitchingSets.js.map","import { parseHlsManifest } from '../../../utils/hls/parseHlsManifest.js';\nimport { formatSegments } from './utils/formatSegments.js';\nimport { getCodec } from './utils/getCodec.js';\nimport { getDuration } from './utils/getDuration.js';\nexport function subtitleGroupsToSwitchingSets(mediaGroupsSubtitles, manifestPlaylists) {\n var _a;\n const subtitleSwitchingSets = [];\n const textTracks = [];\n // Add selection set of type subtitles\n for (const subtitleEncodings in mediaGroupsSubtitles) {\n const encodings = mediaGroupsSubtitles[subtitleEncodings];\n for (const subtitle in encodings) {\n const attributes = encodings[subtitle];\n const { language, uri } = attributes;\n const subtitleParsed = parseHlsManifest((_a = manifestPlaylists.shift()) === null || _a === void 0 ? void 0 : _a.manifest);\n const segments = formatSegments(subtitleParsed === null || subtitleParsed === void 0 ? void 0 : subtitleParsed.segments);\n textTracks.push({\n id: subtitle,\n type: 'text',\n fileName: uri,\n codec: getCodec('text'),\n duration: getDuration(subtitleParsed, segments),\n language: language,\n bandwidth: 0,\n segments: segments,\n });\n }\n }\n subtitleSwitchingSets.push({\n id: 'text',\n tracks: textTracks,\n });\n return subtitleSwitchingSets;\n}\n//# sourceMappingURL=subtitleGroupsToSwitchingSets.js.map","import { FRAME_RATE_NUMERATOR_30, ZERO } from '../../../utils/constants.js';\nimport { parseHlsManifest } from '../../../utils/hls/parseHlsManifest.js';\nimport { formatSegments } from './utils/formatSegments.js';\nimport { getByterange } from './utils/getByterange.js';\nimport { getCodec } from './utils/getCodec.js';\nimport { getDuration } from './utils/getDuration.js';\nexport function videoPlaylistsToSwitchingSets(playlists, manifestPlaylists) {\n const switchingSetVideos = [];\n const videoTracks = [];\n let videoTrackId = 0;\n playlists.map((playlist) => {\n var _a, _b, _c, _d;\n const parsedHlsManifest = parseHlsManifest((_a = manifestPlaylists.shift()) === null || _a === void 0 ? void 0 : _a.manifest);\n const segments = formatSegments(parsedHlsManifest === null || parsedHlsManifest === void 0 ? void 0 : parsedHlsManifest.segments);\n const { LANGUAGE, CODECS, BANDWIDTH } = playlist.attributes;\n const map = (_c = (_b = parsedHlsManifest === null || parsedHlsManifest === void 0 ? void 0 : parsedHlsManifest.segments) === null || _b === void 0 ? void 0 : _b.at(0)) === null || _c === void 0 ? void 0 : _c.map;\n const byteRange = getByterange(map === null || map === void 0 ? void 0 : map.byterange);\n videoTracks.push({\n id: `video-${videoTrackId++}`,\n type: 'video',\n fileName: playlist.uri,\n codec: getCodec('video', CODECS),\n duration: getDuration(parsedHlsManifest, segments),\n language: LANGUAGE !== null && LANGUAGE !== void 0 ? LANGUAGE : 'und',\n bandwidth: BANDWIDTH,\n segments: segments,\n width: playlist.attributes.RESOLUTION.width,\n height: playlist.attributes.RESOLUTION.height,\n frameRate: {\n frameRateNumerator: (_d = playlist.attributes['FRAME-RATE']) !== null && _d !== void 0 ? _d : FRAME_RATE_NUMERATOR_30,\n frameRateDenominator: ZERO,\n },\n par: '',\n sar: '',\n scanType: '',\n ...(byteRange && { byteRange }),\n ...((map === null || map === void 0 ? void 0 : map.uri) && { urlInitialization: map === null || map === void 0 ? void 0 : map.uri }),\n });\n });\n switchingSetVideos.push({\n id: `video`,\n tracks: videoTracks,\n });\n return switchingSetVideos;\n}\n//# sourceMappingURL=videoPlaylistsToSwitchingSets.js.map","//Add metadata to manifest.\n//In the future, if any other fields are wanted to be added, they can be added here.\nexport function addMetadataToHls(manifest, manifestParsed) {\n if (!manifest.metadata) {\n manifest.metadata = new Map();\n }\n if (!manifestParsed.version) {\n manifest.metadata.set('version', manifestParsed.version);\n }\n if (!manifestParsed.mediaSequence) {\n manifest.metadata.set('mediaSequence', manifestParsed.mediaSequence);\n }\n return manifest;\n}\n//# sourceMappingURL=addMetadataToHls.js.map","import { audioGroupsToSwitchingSets } from './audioGroupsToSwitchingSets.js';\nimport { subtitleGroupsToSwitchingSets } from './subtitleGroupsToSwitchingSets.js';\nimport { videoPlaylistsToSwitchingSets } from './videoPlaylistsToSwitchingSets.js';\nimport { parseHlsManifest } from '../../../utils/hls/parseHlsManifest.js';\nimport { addMetadataToHls } from '../../../utils/manifest/addMetadataToHls.js';\nexport function mapHlsToHam(manifest) {\n var _a, _b;\n const mainManifestParsed = parseHlsManifest(manifest.manifest);\n const manifestHls = addMetadataToHls(manifest, mainManifestParsed);\n const selectionSets = [];\n const manifestPlaylists = manifestHls.ancillaryManifests\n ? [...manifestHls.ancillaryManifests]\n : [];\n const audioSwitchingSets = audioGroupsToSwitchingSets((_a = mainManifestParsed.mediaGroups) === null || _a === void 0 ? void 0 : _a.AUDIO, manifestPlaylists);\n const subtitleSwitchingSets = subtitleGroupsToSwitchingSets((_b = mainManifestParsed.mediaGroups) === null || _b === void 0 ? void 0 : _b.SUBTITLES, manifestPlaylists);\n const videoSwitchingSets = videoPlaylistsToSwitchingSets(mainManifestParsed.playlists, manifestPlaylists);\n let selectionSetId = 0;\n if (audioSwitchingSets.length > 0) {\n selectionSets.push({\n id: (selectionSetId++).toString(),\n switchingSets: audioSwitchingSets,\n });\n }\n if (subtitleSwitchingSets.length > 0) {\n selectionSets.push({\n id: (selectionSetId++).toString(),\n switchingSets: subtitleSwitchingSets,\n });\n }\n if (videoSwitchingSets.length > 0) {\n selectionSets.push({\n id: (selectionSetId++).toString(),\n switchingSets: videoSwitchingSets,\n });\n }\n let presentationId = 0;\n return [\n { id: (presentationId++).toString(), selectionSets: selectionSets },\n ];\n}\n//# sourceMappingURL=mapHlsToHam.js.map","import { mapHamToHls } from './mapHamToHls/mapHamToHls.js';\nimport { mapHlsToHam } from './mapHlsToHam/mapHlsToHam.js';\nimport { getMetadata } from '../../utils/manifest/getMetadata.js';\nexport class HlsMapper {\n getManifestMetadata() {\n return getMetadata(this.manifest);\n }\n toHam(manifest) {\n const presentations = mapHlsToHam(manifest);\n this.manifest = manifest;\n return presentations;\n }\n toManifest(presentation) {\n return mapHamToHls(presentation);\n }\n}\n//# sourceMappingURL=HlsMapper.js.map","import { HlsMapper } from '../../mapper/hls/HlsMapper.js';\nimport { MapperContext } from '../../mapper/MapperContext.js';\n/**\n * Convert ham object into a hls manifest.\n *\n * @example\n * Example on how to import the cmaf module and convert the ham `presentations`\n * array into the hls manifest.\n * ```ts\n * import cmaf from '@svta/common-media-library/cmaf-ham';\n *\n * const manifest = cmaf.hamToHls(presentations);\n * ```\n *\n * @param presentation - List of presentations from ham\n * @returns Manifest object containing the Hls manifest as string and its playlists\n *\n * @group CMAF\n * @alpha\n */\nexport function hamToHls(presentation) {\n const mapperContext = MapperContext.getInstance();\n mapperContext.setStrategy(new HlsMapper());\n return mapperContext.getManifestFormat(presentation);\n}\n//# sourceMappingURL=hamToHls.js.map","import { HlsMapper } from '../../mapper/hls/HlsMapper.js';\nimport { MapperContext } from '../../mapper/MapperContext.js';\n/**\n * Convert hls manifest into a ham object.\n *\n * @example\n * Example on how to import the cmaf module and convert the hls `manifest` and\n * `ancillaryManifests` array into the ham manifest.\n * ```ts\n * import cmaf from '@svta/common-media-library/cmaf-ham';\n *\n * const manifest = cmaf.hlsToHam(hlsManifest);\n * ```\n *\n * @param manifest - String of the Main manifest\n * @param ancillaryManifests - Ancillary Manifests . Must be in order, first audio, subtitle and video\n * @returns List of presentations from ham\n *\n * @group CMAF\n * @alpha\n */\nexport function hlsToHam(manifest, ancillaryManifests) {\n const mapperContext = MapperContext.getInstance();\n mapperContext.setStrategy(new HlsMapper());\n return mapperContext.getHamFormat({\n manifest,\n ancillaryManifests: ancillaryManifests.map((ancillaryManifest) => ({\n manifest: ancillaryManifest,\n type: 'hls',\n })),\n type: 'hls',\n });\n}\n//# sourceMappingURL=hlsToHam.js.map","/**\n * Get a list of Tracks contained on a SwitchingSet\n *\n * @param switchingSet - SwitchingSet object from HAM\n * @param predicate - Filtering function\n * @returns Track[]\n *\n * @group CMAF\n * @alpha\n */\nexport function getTracksFromSwitchingSet(switchingSet, predicate) {\n const tracks = switchingSet.tracks;\n return predicate ? tracks.filter(predicate) : tracks;\n}\n//# sourceMappingURL=getTracksFromSwitchingSet.js.map","import { getTracksFromSwitchingSet } from './getTracksFromSwitchingSet.js';\n/**\n * Get a list of Tracks contained on a SelectionSet\n *\n * @param selectionSet - SelectionSet object from HAM\n * @param predicate - Filtering function\n * @returns Track[]\n *\n * @group CMAF\n * @alpha\n */\nexport function getTracksFromSelectionSet(selectionSet, predicate) {\n const tracks = selectionSet.switchingSets.flatMap((switchingSet) => getTracksFromSwitchingSet(switchingSet));\n return predicate ? tracks.filter(predicate) : tracks;\n}\n//# sourceMappingURL=getTracksFromSelectionSet.js.map","import { getTracksFromSelectionSet } from './getTracksFromSelectionSet.js';\n/**\n * Get a list of Tracks contained on a Presentation\n *\n * @param presentation - Presentation object from HAM\n * @param predicate - Filtering function\n * @returns Track[]\n *\n * @group CMAF\n * @alpha\n */\nexport function getTracksFromPresentation(presentation, predicate) {\n const tracks = presentation.selectionSets.flatMap((selectionSet) => getTracksFromSelectionSet(selectionSet));\n return predicate ? tracks.filter(predicate) : tracks;\n}\n//# sourceMappingURL=getTracksFromPresentation.js.map","/**\n * Validate a segment.\n *\n * Validations:\n * - segment has duration\n * - segment has url\n *\n * @param segment - Segment from cmaf ham model\n * @param trackId - Optional: parent track id\n * @param prevValidation - Optional: validation object from parent previous validate method call\n * @returns Validation\n *\n * @group CMAF\n * @alpha\n */\nexport function validateSegment(segment, trackId, prevValidation) {\n const validation = prevValidation !== null && prevValidation !== void 0 ? prevValidation : {\n status: true,\n errorMessages: [],\n };\n const moreInformation = trackId\n ? ` in the track with id = ${trackId}`\n : '.';\n if (!segment.duration) {\n validation.status = false;\n validation.errorMessages.push(`Segment duration is undefined${moreInformation}`);\n }\n if (!segment.url) {\n validation.status = false;\n validation.errorMessages.push(`Segment url is undefined${moreInformation}`);\n }\n return validation;\n}\n//# sourceMappingURL=validateSegment.js.map","import { validateSegment } from './validateSegment.js';\n/**\n * Validate a list of segments.\n *\n * @example\n * ```ts\n * import cmaf, { Segment } from '@svta/common-media-library/cmaf-ham';\n * ...\n *\n * // const segments: Segment[] = ...;\n *\n * const validation = cmaf.validateSegments(segments);\n * ```\n *\n * Example output: `{ status: true|false, errorMessages: [...] }`\n *\n * @param segments - List of Segment from cmaf ham model\n * @param trackId - Optional: parent track id\n * @param prevValidation - Optional: validation object from parent previous validate method call\n * @returns Validation\n *\n * @group CMAF\n * @alpha\n *\n */\nexport function validateSegments(segments, trackId, prevValidation) {\n const validation = prevValidation !== null && prevValidation !== void 0 ? prevValidation : {\n status: true,\n errorMessages: [],\n };\n segments.forEach((segment) => {\n validateSegment(segment, trackId, validation);\n });\n return validation;\n}\n//# sourceMappingURL=validateSegments.js.map","import { validateSegments } from './validateSegments.js';\n/**\n * Validate a track.\n * It validates in cascade, calling each child validation method.\n *\n * Validations:\n * - track has id\n * - Invokes specific audio, video and text validations\n *\n * @example\n * ```ts\n * import cmaf, { Track } from '@svta/common-media-library/cmaf-ham';\n * ...\n *\n * // const track: Track = ...;\n *\n * const validation = cmaf.validateTrack(track);\n * ```\n *\n * Example output: `{ status: true|false, errorMessages: [...] }`\n *\n * @param track - Track from cmaf ham model\n * @param switchingSetId - Optional: parent switching set id\n * @param prevValidation - Optional: validation object from parent previous validate method call\n * @returns Validation\n *\n * @group CMAF\n * @alpha\n *\n */\nexport function validateTrack(track, switchingSetId, prevValidation) {\n const validation = prevValidation !== null && prevValidation !== void 0 ? prevValidation : {\n status: true,\n errorMessages: [],\n };\n const moreInformation = switchingSetId\n ? ` in the switching set with id = ${switchingSetId}`\n : '.';\n if (!track.id) {\n validation.status = false;\n validation.errorMessages.push(`Track id is undefined${moreInformation}`);\n }\n switch (track.type) {\n case 'video':\n _validateVideoTrack(track, switchingSetId, validation);\n break;\n case 'audio':\n _validateAudioTrack(track, switchingSetId, validation);\n break;\n case 'text':\n _validateTextTrack(track, switchingSetId, validation);\n break;\n }\n validateSegments(track.segments, track.id, validation);\n return validation;\n}\n/**\n * @internal\n *\n * Validate video Track\n *\n * Validations:\n * - track has codec\n *\n * @param videoTrack - Video track to validate\n * @param switchingSetId - Optional: id from the switching set containing the track (Only used for logs)\n * @param prevValidation - Optional: validation object from parent previous validate method call\n * @returns Validation object\n * @see Validation\n */\nfunction _validateVideoTrack(videoTrack, switchingSetId, prevValidation) {\n const validation = prevValidation !== null && prevValidation !== void 0 ? prevValidation : {\n status: true,\n errorMessages: [],\n };\n const moreInformation = switchingSetId\n ? ` in the switching set with id = ${switchingSetId}`\n : '.';\n if (!videoTrack.codec) {\n validation.status = false;\n validation.errorMessages.push(`VideoTrack with id: ${videoTrack.id} does not have codec${moreInformation}`);\n }\n return validation;\n}\n/**\n * @internal\n *\n * Validate Audio Track\n *\n * Validations:\n * - track has codec\n *\n * @param audioTrack - Audio track to validate\n * @param switchingSetId - Optional: id from the switching set containing the track (Only used for logs)\n * @param prevValidation - Optional: validation object from parent previous validate method call\n * @returns Validation object\n * @see Validation\n */\nfunction _validateAudioTrack(audioTrack, switchingSetId, prevValidation) {\n const validation = prevValidation !== null && prevValidation !== void 0 ? prevValidation : {\n status: true,\n errorMessages: [],\n };\n const moreInformation = switchingSetId\n ? ` in the switching set with id = ${switchingSetId}`\n : '.';\n if (!audioTrack.codec) {\n validation.status = false;\n validation.errorMessages.push(`AudioTrack with id: ${audioTrack.id} does not have codec${moreInformation}`);\n }\n return validation;\n}\n/**\n * @internal\n *\n * Validate Text Track\n *\n * Validations:\n * - track has language\n *\n * @param textTrack - Text track to validate\n * @param switchingSetId - Optional: id from the switching set containing the track (Only used for logs)\n * @param prevValidation - Optional: validation object from parent previous validate method call\n * @returns Validation object\n * @see Validation\n */\nfunction _validateTextTrack(textTrack, switchingSetId, prevValidation) {\n const validation = prevValidation !== null && prevValidation !== void 0 ? prevValidation : {\n status: true,\n errorMessages: [],\n };\n const moreInformation = switchingSetId\n ? ` in the switching set with id = ${switchingSetId}`\n : '.';\n if (!textTrack.language) {\n validation.status = false;\n validation.errorMessages.push(`TextTrack with id: ${textTrack.id} does not have codec${moreInformation}`);\n }\n return validation;\n}\n//# sourceMappingURL=validateTrack.js.map","import { validateTrack } from './validateTrack.js';\n/**\n * Validate a list of tracks.\n * It validates in cascade, calling each child validation method.\n *\n * @example\n * ```ts\n * import cmaf, { Track } from '@svta/common-media-library/cmaf-ham';\n * ...\n *\n * // const tracks: Track[] = ...;\n *\n * const validation = cmaf.validateTracks(tracks);\n * ```\n *\n * Example output: `{ status: true|false, errorMessages: [...] }`\n *\n * @param tracks - List of Track from cmaf ham model\n * @param switchingSetId - Optional: parent switching set id\n * @param prevValidation - Optional: validation object from parent previous validate method call\n * @returns Validation\n *\n * @group CMAF\n * @alpha\n *\n */\nexport function validateTracks(tracks, switchingSetId, prevValidation) {\n const validation = prevValidation !== null && prevValidation !== void 0 ? prevValidation : {\n status: true,\n errorMessages: [],\n };\n const moreInformation = switchingSetId\n ? ` in the switching set with id = ${switchingSetId}`\n : '.';\n let tracksDuration;\n tracks.forEach((track) => {\n if (!tracksDuration) {\n tracksDuration = track.duration;\n }\n if (tracksDuration !== track.duration) {\n validation.status = false;\n validation.errorMessages.push(`All the tracks must have the same duration${moreInformation}`);\n }\n validateTrack(track, switchingSetId, validation);\n });\n return validation;\n}\n//# sourceMappingURL=validateTracks.js.map","import { validateTracks } from './validateTracks.js';\n/**\n * Validate a switching set.\n * It validates in cascade, calling each child validation method.\n *\n * Validations:\n * - SwitchingSet has id\n *\n * @example\n * ```ts\n * import cmaf, { SwitchingSet } from '@svta/common-media-library/cmaf-ham';\n * ...\n *\n * // const switchingSet: SwitchingSet = ...;\n *\n * const validation = cmaf.validateSwitchingSet(switchingSet);\n * ```\n *\n * Example output: `{ status: true|false, errorMessages: [...] }`\n *\n * @param switchingSet - SwitchingSet from cmaf ham model\n * @param selectionSetId - Optional: parent selection set id\n * @param prevValidation - Optional: validation object from parent previous validate method call\n * @returns Validation\n *\n * @group CMAF\n * @alpha\n *\n */\nexport function validateSwitchingSet(switchingSet, selectionSetId, prevValidation) {\n const validation = prevValidation !== null && prevValidation !== void 0 ? prevValidation : {\n status: true,\n errorMessages: [],\n };\n const moreInformation = selectionSetId\n ? ` in the selection set with id = ${selectionSetId}`\n : '.';\n if (!switchingSet.id) {\n validation.status = false;\n validation.errorMessages.push(`SwitchingSet id is undefined${moreInformation}`);\n }\n validateTracks(switchingSet.tracks, switchingSet.id, validation);\n return validation;\n}\n//# sourceMappingURL=validateSwitchingSet.js.map","import { validateSwitchingSet } from './validateSwitchingSet.js';\n/**\n * Validate a list of switching set.\n * It validates in cascade, calling each child validation method.\n *\n * @example\n * ```ts\n * import cmaf, { SwitchingSet } from '@svta/common-media-library/cmaf-ham';\n * ...\n *\n * // const switchingSets: SwitchingSet[] = ...;\n *\n * const validation = cmaf.validateSwitchingSets(switchingSets);\n * ```\n *\n * Example output: `{ status: true|false, errorMessages: [...] }`\n *\n * @param switchingSets - List of SwitchingSets from cmaf ham model\n * @param selectionSetId - Optional: parent selection set id\n * @param prevValidation - Optional: validation object from parent previous validate method call\n * @returns Validation\n *\n * @group CMAF\n * @alpha\n *\n */\nexport function validateSwitchingSets(switchingSets, selectionSetId, prevValidation) {\n const validation = prevValidation !== null && prevValidation !== void 0 ? prevValidation : {\n status: true,\n errorMessages: [],\n };\n switchingSets.forEach((switchingSet) => {\n validateSwitchingSet(switchingSet, selectionSetId, validation);\n });\n return validation;\n}\n//# sourceMappingURL=validateSwitchingSets.js.map","import { validateSwitchingSets } from './validateSwitchingSets.js';\n/**\n * Validate a selection set.\n * It validates in cascade, calling each child validation method.\n *\n * Validations:\n * - SelectionSet has id\n *\n * @example\n * ```ts\n * import cmaf, { SelectionSet } from '@svta/common-media-library/cmaf-ham';\n * ...\n *\n * // const selectionSet: SelectionSet = ...;\n *\n * const validation = cmaf.validateSelectionSet(selectionSet);\n * ```\n *\n * Example output: `{ status: true|false, errorMessages: [...] }`\n *\n * @param selectionSet - SelectionSet from cmaf ham model\n * @param presentationId - Optional: parent presentation id\n * @param prevValidation - Optional: validation object from parent previous validate method call\n * @returns Validation\n *\n * @group CMAF\n * @alpha\n *\n */\nexport function validateSelectionSet(selectionSet, presentationId, prevValidation) {\n const validation = prevValidation !== null && prevValidation !== void 0 ? prevValidation : {\n status: true,\n errorMessages: [],\n };\n const moreInformation = presentationId\n ? ` in the presentation with id = ${presentationId}`\n : '.';\n if (!selectionSet.id) {\n validation.status = false;\n validation.errorMessages.push(`SelectionSet id is undefined${moreInformation}`);\n }\n validateSwitchingSets(selectionSet.switchingSets, selectionSet.id, validation);\n return validation;\n}\n//# sourceMappingURL=validateSelectionSet.js.map","import { validateSelectionSet } from './validateSelectionSet.js';\n/**\n * Validate a list of selection set.\n * It validates in cascade, calling each child validation method.\n *\n * @example\n * ```ts\n * import cmaf, { SelectionSet } from '@svta/common-media-library/cmaf-ham';\n * ...\n *\n * // const selectionSets: SelectionSet[] = ...;\n *\n * const validation = cmaf.validateSelectionSets(selectionSets);\n * ```\n *\n * Example output: `{ status: true|false, errorMessages: [...] }`\n *\n * @param selectionSets - List of SelectionSet from cmaf ham model\n * @param presentationId - Optional: parent presentation id\n * @param prevValidation - Optional: validation object from parent previous validate method call\n * @returns Validation\n *\n * @group CMAF\n * @alpha\n *\n */\nexport function validateSelectionSets(selectionSets, presentationId, prevValidation) {\n const validation = prevValidation !== null && prevValidation !== void 0 ? prevValidation : {\n status: true,\n errorMessages: [],\n };\n selectionSets.forEach((selectionSet) => {\n validateSelectionSet(selectionSet, presentationId, validation);\n });\n return validation;\n}\n//# sourceMappingURL=validateSelectionSets.js.map","import { validateSelectionSets } from './validateSelectionSets.js';\n/**\n * Validate a presentation.\n * It validates in cascade, calling each child validation method.\n *\n * Validations:\n * - Presentation has id\n *\n * @example\n * ```ts\n * import cmaf, { Presentation } from '@svta/common-media-library/cmaf-ham';\n * ...\n *\n * // const presentation: Presentation = ...;\n *\n * const validation = cmaf.validatePresentation(presentation);\n * ```\n *\n * Example output: `{ status: true|false, errorMessages: [...] }`\n *\n * @param presentation - Presentation from cmaf ham model\n * @returns Validation\n *\n * @group CMAF\n * @alpha\n *\n */\nexport function validatePresentation(presentation) {\n const validation = { status: true, errorMessages: [] };\n if (!presentation.id) {\n validation.status = false;\n validation.errorMessages.push('Presentation id is undefined');\n }\n validateSelectionSets(presentation.selectionSets, presentation.id, validation);\n return validation;\n}\n//# sourceMappingURL=validatePresentation.js.map","/**\n * Structured Field Item\n *\n * @group Structured Field\n *\n * @beta\n */\nexport class SfItem {\n constructor(value, params) {\n if (Array.isArray(value)) {\n value = value.map((v) => (v instanceof SfItem) ? v : new SfItem(v));\n }\n this.value = value;\n this.params = params;\n }\n}\n//# sourceMappingURL=SfItem.js.map","export const DICT = 'Dict';\n//# sourceMappingURL=DICT.js.map","function format(value) {\n if (Array.isArray(value)) {\n return JSON.stringify(value);\n }\n if (value instanceof Map) {\n return 'Map{}';\n }\n if (value instanceof Set) {\n return 'Set{}';\n }\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n return String(value);\n}\nexport function throwError(action, src, type, cause) {\n return new Error(`failed to ${action} \"${format(src)}\" as ${type}`, { cause });\n}\n//# sourceMappingURL=throwError.js.map","import { throwError } from '../utils/throwError.js';\nexport function serializeError(src, type, cause) {\n return throwError('serialize', src, type, cause);\n}\n//# sourceMappingURL=serializeError.js.map","/**\n * A class to represent structured field tokens when `Symbol` is not available.\n *\n * @group Structured Field\n *\n * @beta\n */\nexport class SfToken {\n constructor(description) {\n this.description = description;\n }\n}\n//# sourceMappingURL=SfToken.js.map","export const BARE_ITEM = 'Bare Item';\n//# sourceMappingURL=BARE_ITEM.js.map","export const BOOLEAN = 'Boolean';\n//# sourceMappingURL=BOOLEAN.js.map","import { BOOLEAN } from '../utils/BOOLEAN.js';\nimport { serializeError } from './serializeError.js';\n// 4.1.9. Serializing a Boolean\n//\n// Given a Boolean as input_boolean, return an ASCII string suitable for\n// use in a HTTP field value.\n//\n// 1. If input_boolean is not a boolean, fail serialization.\n//\n// 2. Let output be an empty string.\n//\n// 3. Append \"?\" to output.\n//\n// 4. If input_boolean is true, append \"1\" to output.\n//\n// 5. If input_boolean is false, append \"0\" to output.\n//\n// 6. Return output.\nexport function serializeBoolean(value) {\n if (typeof value !== 'boolean') {\n throw serializeError(value, BOOLEAN);\n }\n return value ? '?1' : '?0';\n}\n//# sourceMappingURL=serializeBoolean.js.map","/**\n * Encodes binary data to base64\n *\n * @param binary - The binary data to encode\n * @returns The base64 encoded string\n *\n * @group Utils\n *\n * @beta\n */\nexport function encodeBase64(binary) {\n return btoa(String.fromCharCode(...binary));\n}\n//# sourceMappingURL=encodeBase64.js.map","export const BYTES = 'Byte Sequence';\n//# sourceMappingURL=BYTES.js.map","import { encodeBase64 } from '../../utils/encodeBase64.js';\nimport { BYTES } from '../utils/BYTES.js';\nimport { serializeError } from './serializeError.js';\n// 4.1.8. Serializing a Byte Sequence\n//\n// Given a Byte Sequence as input_bytes, return an ASCII string suitable\n// for use in a HTTP field value.\n//\n// 1. If input_bytes is not a sequence of bytes, fail serialization.\n//\n// 2. Let output be an empty string.\n//\n// 3. Append \":\" to output.\n//\n// 4. Append the result of base64-encoding input_bytes as per\n// [RFC4648], Section 4, taking account of the requirements below.\n//\n// 5. Append \":\" to output.\n//\n// 6. Return output.\n//\n// The encoded data is required to be padded with \"=\", as per [RFC4648],\n// Section 3.2.\n//\n// Likewise, encoded data SHOULD have pad bits set to zero, as per\n// [RFC4648], Section 3.5, unless it is not possible to do so due to\n// implementation constraints.\nexport function serializeByteSequence(value) {\n if (ArrayBuffer.isView(value) === false) {\n throw serializeError(value, BYTES);\n }\n return `:${encodeBase64(value)}:`;\n}\n//# sourceMappingURL=serializeByteSequence.js.map","export const INTEGER = 'Integer';\n//# sourceMappingURL=INTEGER.js.map","export function isInvalidInt(value) {\n return value < -999999999999999 || 999999999999999 < value;\n}\n//# sourceMappingURL=isInvalidInt.js.map","import { INTEGER } from '../utils/INTEGER.js';\nimport { isInvalidInt } from '../utils/isInvalidInt.js';\nimport { serializeError } from './serializeError.js';\n// 4.1.4. Serializing an Integer\n//\n// Given an Integer as input_integer, return an ASCII string suitable\n// for use in a HTTP field value.\n//\n// 1. If input_integer is not an integer in the range of\n// -999,999,999,999,999 to 999,999,999,999,999 inclusive, fail\n// serialization.\n//\n// 2. Let output be an empty string.\n//\n// 3. If input_integer is less than (but not equal to) 0, append \"-\" to\n// output.\n//\n// 4. Append input_integer's numeric value represented in base 10 using\n// only decimal digits to output.\n//\n// 5. Return output.\nexport function serializeInteger(value) {\n if (isInvalidInt(value)) {\n throw serializeError(value, INTEGER);\n }\n return value.toString();\n}\n//# sourceMappingURL=serializeInteger.js.map","import { serializeInteger } from './serializeInteger.js';\n// 4.1.10. Serializing a Date\n//\n// Given a Date as input_integer, return an ASCII string suitable for\n// use in an HTTP field value.\n// 1. Let output be \"@\".\n// 2. Append to output the result of running Serializing an Integer\n// with input_date (Section 4.1.4).\n// 3. Return output.\nexport function serializeDate(value) {\n return `@${serializeInteger(value.getTime() / 1000)}`;\n}\n//# sourceMappingURL=serializeDate.js.map","/**\n * This implements the rounding procedure described in step 2 of the \"Serializing a Decimal\" specification.\n * This rounding style is known as \"even rounding\", \"banker's rounding\", or \"commercial rounding\".\n *\n * @param value - The value to round\n * @param precision - The number of decimal places to round to\n * @returns The rounded value\n *\n * @group Utils\n *\n * @beta\n */\nexport function roundToEven(value, precision) {\n if (value < 0) {\n return -roundToEven(-value, precision);\n }\n const decimalShift = Math.pow(10, precision);\n const isEquidistant = Math.abs(((value * decimalShift) % 1) - 0.5) < Number.EPSILON;\n if (isEquidistant) {\n // If the tail of the decimal place is 'equidistant' we round to the nearest even value\n const flooredValue = Math.floor(value * decimalShift);\n return (flooredValue % 2 === 0 ? flooredValue : flooredValue + 1) / decimalShift;\n }\n else {\n // Otherwise, proceed as normal\n return Math.round(value * decimalShift) / decimalShift;\n }\n}\n//# sourceMappingURL=roundToEven.js.map","export const DECIMAL = 'Decimal';\n//# sourceMappingURL=DECIMAL.js.map","import { roundToEven } from '../../utils/roundToEven.js';\nimport { DECIMAL } from '../utils/DECIMAL.js';\nimport { serializeError } from './serializeError.js';\n// 4.1.5. Serializing a Decimal\n//\n// Given a decimal number as input_decimal, return an ASCII string\n// suitable for use in a HTTP field value.\n//\n// 1. If input_decimal is not a decimal number, fail serialization.\n//\n// 2. If input_decimal has more than three significant digits to the\n// right of the decimal point, round it to three decimal places,\n// rounding the final digit to the nearest value, or to the even\n// value if it is equidistant.\n//\n// 3. If input_decimal has more than 12 significant digits to the left\n// of the decimal point after rounding, fail serialization.\n//\n// 4. Let output be an empty string.\n//\n// 5. If input_decimal is less than (but not equal to) 0, append \"-\"\n// to output.\n//\n// 6. Append input_decimal's integer component represented in base 10\n// (using only decimal digits) to output; if it is zero, append\n// \"0\".\n//\n// 7. Append \".\" to output.\n//\n// 8. If input_decimal's fractional component is zero, append \"0\" to\n// output.\n//\n// 9. Otherwise, append the significant digits of input_decimal's\n// fractional component represented in base 10 (using only decimal\n// digits) to output.\n//\n// 10. Return output.\nexport function serializeDecimal(value) {\n const roundedValue = roundToEven(value, 3); // round to 3 decimal places\n if (Math.floor(Math.abs(roundedValue)).toString().length > 12) {\n throw serializeError(value, DECIMAL);\n }\n const stringValue = roundedValue.toString();\n return stringValue.includes('.') ? stringValue : `${stringValue}.0`;\n}\n//# sourceMappingURL=serializeDecimal.js.map","export const STRING = 'String';\n//# sourceMappingURL=STRING.js.map","export const STRING_REGEX = /[\\x00-\\x1f\\x7f]+/;\n//# sourceMappingURL=STRING_REGEX.js.map","import { STRING } from '../utils/STRING.js';\nimport { STRING_REGEX } from '../utils/STRING_REGEX.js';\nimport { serializeError } from './serializeError.js';\n// 4.1.6. Serializing a String\n//\n// Given a String as input_string, return an ASCII string suitable for\n// use in a HTTP field value.\n//\n// 1. Convert input_string into a sequence of ASCII characters; if\n// conversion fails, fail serialization.\n//\n// 2. If input_string contains characters in the range %x00-1f or %x7f\n// (i.e., not in VCHAR or SP), fail serialization.\n//\n// 3. Let output be the string DQUOTE.\n//\n// 4. For each character char in input_string:\n//\n// 1. If char is \"\\\" or DQUOTE:\n//\n// 1. Append \"\\\" to output.\n//\n// 2. Append char to output.\n//\n// 5. Append DQUOTE to output.\n//\n// 6. Return output.\nexport function serializeString(value) {\n if (STRING_REGEX.test(value)) {\n throw serializeError(value, STRING);\n }\n return `\"${value.replace(/\\\\/g, `\\\\\\\\`).replace(/\"/g, `\\\\\"`)}\"`;\n}\n//# sourceMappingURL=serializeString.js.map","/**\n * Converts a symbol to a string.\n *\n * @param symbol - The symbol to convert.\n *\n * @returns The string representation of the symbol.\n *\n * @internal\n */\nexport function symbolToStr(symbol) {\n return symbol.description || symbol.toString().slice(7, -1);\n}\n//# sourceMappingURL=symbolToStr.js.map","export const TOKEN = 'Token';\n//# sourceMappingURL=TOKEN.js.map","import { symbolToStr } from '../../cta/utils/symbolToStr.js';\nimport { TOKEN } from '../utils/TOKEN.js';\nimport { serializeError } from './serializeError.js';\nexport function serializeToken(token) {\n const value = symbolToStr(token);\n if (/^([a-zA-Z*])([!#$%&'*+\\-.^_`|~\\w:/]*)$/.test(value) === false) {\n throw serializeError(value, TOKEN);\n }\n return value;\n}\n//# sourceMappingURL=serializeToken.js.map","import { SfToken } from '../SfToken.js';\nimport { BARE_ITEM } from '../utils/BARE_ITEM.js';\nimport { serializeBoolean } from './serializeBoolean.js';\nimport { serializeByteSequence } from './serializeByteSequence.js';\nimport { serializeDate } from './serializeDate.js';\nimport { serializeDecimal } from './serializeDecimal.js';\nimport { serializeError } from './serializeError.js';\nimport { serializeInteger } from './serializeInteger.js';\nimport { serializeString } from './serializeString.js';\nimport { serializeToken } from './serializeToken.js';\n// 4.1.3.1. Serializing a Bare Item\n//\n// Given an Item as input_item, return an ASCII string suitable for use\n// in a HTTP field value.\n//\n// 1. If input_item is an Integer, return the result of running\n// Serializing an Integer (Section 4.1.4) with input_item.\n//\n// 2. If input_item is a Decimal, return the result of running\n// Serializing a Decimal (Section 4.1.5) with input_item.\n//\n// 3. If input_item is a String, return the result of running\n// Serializing a String (Section 4.1.6) with input_item.\n//\n// 4. If input_item is a Token, return the result of running\n// Serializing a Token (Section 4.1.7) with input_item.\n//\n// 5. If input_item is a Boolean, return the result of running\n// Serializing a Boolean (Section 4.1.9) with input_item.\n//\n// 6. If input_item is a Byte Sequence, return the result of running\n// Serializing a Byte Sequence (Section 4.1.8) with input_item.\n//\n// 7. If input_item is a Date, return the result of running Serializing\n// a Date (Section 4.1.10) with input_item.\n//\n// 8. Otherwise, fail serialization.\nexport function serializeBareItem(value) {\n switch (typeof value) {\n case 'number':\n if (!Number.isFinite(value)) {\n throw serializeError(value, BARE_ITEM);\n }\n if (Number.isInteger(value)) {\n return serializeInteger(value);\n }\n return serializeDecimal(value);\n case 'string':\n return serializeString(value);\n case 'symbol':\n return serializeToken(value);\n case 'boolean':\n return serializeBoolean(value);\n case 'object':\n if (value instanceof Date) {\n return serializeDate(value);\n }\n if (value instanceof Uint8Array) {\n return serializeByteSequence(value);\n }\n if (value instanceof SfToken) {\n return serializeToken(value);\n }\n default:\n // fail\n throw serializeError(value, BARE_ITEM);\n }\n}\n//# sourceMappingURL=serializeBareItem.js.map","export const KEY = 'Key';\n//# sourceMappingURL=KEY.js.map","import { KEY } from '../utils/KEY.js';\nimport { serializeError } from './serializeError.js';\n// 4.1.1.3. Serializing a Key\n//\n// Given a key as input_key, return an ASCII string suitable for use in\n// a HTTP field value.\n//\n// 1. Convert input_key into a sequence of ASCII characters; if\n// conversion fails, fail serialization.\n//\n// 2. If input_key contains characters not in lcalpha, DIGIT, \"_\", \"-\",\n// \".\", or \"*\" fail serialization.\n//\n// 3. If the first character of input_key is not lcalpha or \"*\", fail\n// serialization.\n//\n// 4. Let output be an empty string.\n//\n// 5. Append input_key to output.\n//\n// 6. Return output.\nexport function serializeKey(value) {\n if (/^[a-z*][a-z0-9\\-_.*]*$/.test(value) === false) {\n throw serializeError(value, KEY);\n }\n return value;\n}\n//# sourceMappingURL=serializeKey.js.map","import { serializeBareItem } from './serializeBareItem.js';\nimport { serializeKey } from './serializeKey.js';\n// 4.1.1.2. Serializing Parameters\n//\n// Given an ordered Dictionary as input_parameters (each member having a\n// param_name and a param_value), return an ASCII string suitable for\n// use in a HTTP field value.\n//\n// 1. Let output be an empty string.\n//\n// 2. For each param_name with a value of param_value in\n// input_parameters:\n//\n// 1. Append \";\" to output.\n//\n// 2. Append the result of running Serializing a Key\n// (Section 4.1.1.3) with param_name to output.\n//\n// 3. If param_value is not Boolean true:\n//\n// 1. Append \"=\" to output.\n//\n// 2. Append the result of running Serializing a bare Item\n// (Section 4.1.3.1) with param_value to output.\n//\n// 3. Return output.\nexport function serializeParams(params) {\n if (params == null) {\n return '';\n }\n return Object.entries(params)\n .map(([key, value]) => {\n if (value === true) {\n return `;${serializeKey(key)}`; // omit true\n }\n return `;${serializeKey(key)}=${serializeBareItem(value)}`;\n })\n .join('');\n}\n//# sourceMappingURL=serializeParams.js.map","import { SfItem } from '../SfItem.js';\nimport { serializeBareItem } from './serializeBareItem.js';\nimport { serializeParams } from './serializeParams.js';\n// 4.1.3. Serializing an Item\n//\n// Given an Item as bare_item and Parameters as item_parameters, return\n// an ASCII string suitable for use in a HTTP field value.\n//\n// 1. Let output be an empty string.\n//\n// 2. Append the result of running Serializing a Bare Item\n// Section 4.1.3.1 with bare_item to output.\n//\n// 3. Append the result of running Serializing Parameters\n// Section 4.1.1.2 with item_parameters to output.\n//\n// 4. Return output.\nexport function serializeItem(value) {\n if (value instanceof SfItem) {\n return `${serializeBareItem(value.value)}${serializeParams(value.params)}`;\n }\n else {\n return serializeBareItem(value);\n }\n}\n//# sourceMappingURL=serializeItem.js.map","import { serializeItem } from './serializeItem.js';\nimport { serializeParams } from './serializeParams.js';\n// 4.1.1.1. Serializing an Inner List\n//\n// Given an array of (member_value, parameters) tuples as inner_list,\n// and parameters as list_parameters, return an ASCII string suitable\n// for use in a HTTP field value.\n//\n// 1. Let output be the string \"(\".\n//\n// 2. For each (member_value, parameters) of inner_list:\n//\n// 1. Append the result of running Serializing an Item\n// (Section 4.1.3) with (member_value, parameters) to output.\n//\n// 2. If more values remain in inner_list, append a single SP to\n// output.\n//\n// 3. Append \")\" to output.\n//\n// 4. Append the result of running Serializing Parameters\n// (Section 4.1.1.2) with list_parameters to output.\n//\n// 5. Return output.\nexport function serializeInnerList(value) {\n return `(${value.value.map(serializeItem).join(' ')})${serializeParams(value.params)}`;\n}\n//# sourceMappingURL=serializeInnerList.js.map","import { SfItem } from '../SfItem.js';\nimport { DICT } from '../utils/DICT.js';\nimport { serializeError } from './serializeError.js';\nimport { serializeInnerList } from './serializeInnerList.js';\nimport { serializeItem } from './serializeItem.js';\nimport { serializeKey } from './serializeKey.js';\nimport { serializeParams } from './serializeParams.js';\n// 4.1.2. Serializing a Dictionary\n//\n// Given an ordered Dictionary as input_dictionary (each member having a\n// member_name and a tuple value of (member_value, parameters)), return\n// an ASCII string suitable for use in a HTTP field value.\n//\n// 1. Let output be an empty string.\n//\n// 2. For each member_name with a value of (member_value, parameters)\n// in input_dictionary:\n//\n// 1. Append the result of running Serializing a Key\n// (Section 4.1.1.3) with member's member_name to output.\n//\n// 2. If member_value is Boolean true:\n//\n// 1. Append the result of running Serializing Parameters\n// (Section 4.1.1.2) with parameters to output.\n//\n// 3. Otherwise:\n//\n// 1. Append \"=\" to output.\n//\n// 2. If member_value is an array, append the result of running\n// Serializing an Inner List (Section 4.1.1.1) with\n// (member_value, parameters) to output.\n//\n// 3. Otherwise, append the result of running Serializing an\n// Item (Section 4.1.3) with (member_value, parameters) to\n// output.\n//\n// 4. If more members remain in input_dictionary:\n//\n// 1. Append \",\" to output.\n//\n// 2. Append a single SP to output.\n//\n// 3. Return output.\nexport function serializeDict(dict, options = { whitespace: true }) {\n if (typeof dict !== 'object' || dict == null) {\n throw serializeError(dict, DICT);\n }\n const entries = dict instanceof Map ? dict.entries() : Object.entries(dict);\n const optionalWhiteSpace = (options === null || options === void 0 ? void 0 : options.whitespace) ? ' ' : '';\n return Array.from(entries)\n .map(([key, item]) => {\n if (item instanceof SfItem === false) {\n item = new SfItem(item);\n }\n let output = serializeKey(key);\n if (item.value === true) {\n output += serializeParams(item.params);\n }\n else {\n output += '=';\n if (Array.isArray(item.value)) {\n output += serializeInnerList(item);\n }\n else {\n output += serializeItem(item);\n }\n }\n return output;\n })\n .join(`,${optionalWhiteSpace}`);\n}\n//# sourceMappingURL=serializeDict.js.map","import { serializeDict } from './serialize/serializeDict.js';\n/**\n * Encode an object into a structured field dictionary\n *\n * @param value - The structured field dictionary to encode\n * @param options - Encoding options\n *\n * @returns The structured field string\n *\n * @group Structured Field\n *\n * @beta\n */\nexport function encodeSfDict(value, options) {\n return serializeDict(value, options);\n}\n//# sourceMappingURL=encodeSfDict.js.map","/**\n * CMCD object header name.\n *\n * @group CMCD\n *\n * @beta\n */\nexport const CMCD_OBJECT = 'CMCD-Object';\n//# sourceMappingURL=CMCD_OBJECT.js.map","/**\n * CMCD request header name.\n *\n * @group CMCD\n *\n * @beta\n */\nexport const CMCD_REQUEST = 'CMCD-Request';\n//# sourceMappingURL=CMCD_REQUEST.js.map","/**\n * CMCD session header name.\n *\n * @group CMCD\n *\n * @beta\n */\nexport const CMCD_SESSION = 'CMCD-Session';\n//# sourceMappingURL=CMCD_SESSION.js.map","/**\n * CMCD status header name.\n *\n * @group CMCD\n *\n * @beta\n */\nexport const CMCD_STATUS = 'CMCD-Status';\n//# sourceMappingURL=CMCD_STATUS.js.map","import { CMCD_OBJECT } from './CMCD_OBJECT.js';\nimport { CMCD_REQUEST } from './CMCD_REQUEST.js';\nimport { CMCD_SESSION } from './CMCD_SESSION.js';\nimport { CMCD_STATUS } from './CMCD_STATUS.js';\n/**\n * The map of CMCD keys to their appropriate header shard.\n *\n * @group CMCD\n *\n * @internal\n */\nexport const CMCD_HEADER_MAP = {\n // Object\n br: CMCD_OBJECT,\n ab: CMCD_OBJECT,\n d: CMCD_OBJECT,\n ot: CMCD_OBJECT,\n tb: CMCD_OBJECT,\n tpb: CMCD_OBJECT,\n lb: CMCD_OBJECT,\n tab: CMCD_OBJECT,\n lab: CMCD_OBJECT,\n url: CMCD_OBJECT,\n // Request\n pb: CMCD_REQUEST,\n bl: CMCD_REQUEST,\n tbl: CMCD_REQUEST,\n dl: CMCD_REQUEST,\n ltc: CMCD_REQUEST,\n mtp: CMCD_REQUEST,\n nor: CMCD_REQUEST,\n nrr: CMCD_REQUEST,\n rc: CMCD_REQUEST,\n sn: CMCD_REQUEST,\n sta: CMCD_REQUEST,\n su: CMCD_REQUEST,\n ttfb: CMCD_REQUEST,\n ttfbb: CMCD_REQUEST,\n ttlb: CMCD_REQUEST,\n cmsdd: CMCD_REQUEST,\n cmsds: CMCD_REQUEST,\n smrt: CMCD_REQUEST,\n df: CMCD_REQUEST,\n cs: CMCD_REQUEST,\n // TODO: Which header to put the `ts` field is not defined yet.\n ts: CMCD_REQUEST,\n // Session\n cid: CMCD_SESSION,\n pr: CMCD_SESSION,\n sf: CMCD_SESSION,\n sid: CMCD_SESSION,\n st: CMCD_SESSION,\n v: CMCD_SESSION,\n msd: CMCD_SESSION,\n // Status\n bs: CMCD_STATUS,\n bsd: CMCD_STATUS,\n cdn: CMCD_STATUS,\n rtp: CMCD_STATUS,\n bg: CMCD_STATUS,\n pt: CMCD_STATUS,\n ec: CMCD_STATUS,\n e: CMCD_STATUS,\n};\n//# sourceMappingURL=CMCD_HEADER_MAP.js.map","import { CMCD_OBJECT } from './CMCD_OBJECT.js';\nimport { CMCD_REQUEST } from './CMCD_REQUEST.js';\nimport { CMCD_SESSION } from './CMCD_SESSION.js';\nimport { CMCD_STATUS } from './CMCD_STATUS.js';\n/**\n * CMCD header fields.\n *\n * @group CMCD\n *\n * @enum\n *\n * @beta\n */\nexport const CmcdHeaderField = {\n /**\n * keys whose values vary with the object being requested.\n */\n OBJECT: CMCD_OBJECT,\n /**\n * keys whose values vary with each request.\n */\n REQUEST: CMCD_REQUEST,\n /**\n * keys whose values are expected to be invariant over the life of the session.\n */\n SESSION: CMCD_SESSION,\n /**\n * keys whose values do not vary with every request or object.\n */\n STATUS: CMCD_STATUS,\n};\n//# sourceMappingURL=CmcdHeaderField.js.map","import { CMCD_HEADER_MAP } from './CMCD_HEADER_MAP.js';\nimport { CmcdHeaderField } from './CmcdHeaderField.js';\nfunction createHeaderMap(headerMap) {\n return Object.keys(headerMap)\n .reduce((acc, field) => {\n var _a;\n (_a = headerMap[field]) === null || _a === void 0 ? void 0 : _a.forEach(key => acc[key] = field);\n return acc;\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 * @group CMCD\n *\n * @beta\n */\nexport function groupCmcdHeaders(cmcd, customHeaderMap) {\n const result = {};\n if (!cmcd) {\n return result;\n }\n const keys = Object.keys(cmcd);\n const custom = customHeaderMap ? createHeaderMap(customHeaderMap) : {};\n return keys.reduce((acc, key) => {\n var _a;\n const field = CMCD_HEADER_MAP[key] || custom[key] || CmcdHeaderField.REQUEST;\n const data = (_a = acc[field]) !== null && _a !== void 0 ? _a : (acc[field] = {});\n data[key] = cmcd[key];\n return acc;\n }, result);\n}\n//# sourceMappingURL=groupCmcdHeaders.js.map","/**\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) {\n return [\n 'ot',\n 'sf',\n 'st',\n 'e',\n 'sta',\n ].includes(key);\n}\n//# sourceMappingURL=isTokenField.js.map","/**\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) {\n if (typeof value === 'number') {\n return Number.isFinite(value);\n }\n return value != null && value !== '' && value !== false;\n}\n//# sourceMappingURL=isValid.js.map","/**\n * CMCD event mode variable name.\n *\n * @group CMCD\n *\n * @beta\n */\nexport const CMCD_EVENT_MODE = 'event';\n//# sourceMappingURL=CMCD_EVENT_MODE.js.map","/**\n * Constructs a relative path from a URL.\n *\n * @param url - The destination URL\n * @param base - The base URL\n * @returns The relative path\n *\n * @group Utils\n *\n * @beta\n */\nexport function urlToRelativePath(url, base) {\n const to = new URL(url);\n const from = new URL(base);\n if (to.origin !== from.origin) {\n return url;\n }\n const toPath = to.pathname.split('/').slice(1);\n const fromPath = from.pathname.split('/').slice(1, -1);\n // remove common parents\n const length = Math.min(toPath.length, fromPath.length);\n for (let i = 0; i < length; i++) {\n if (toPath[i] !== fromPath[i]) {\n break;\n }\n toPath.shift();\n fromPath.shift();\n }\n // add back paths\n while (fromPath.length) {\n fromPath.shift();\n toPath.unshift('..');\n }\n const relativePath = toPath.join('/');\n // preserve query parameters and hash of the destination url\n return relativePath + to.search + to.hash;\n}\n//# sourceMappingURL=urlToRelativePath.js.map","import { SfItem } from '../structuredfield/SfItem.js';\nimport { urlToRelativePath } from '../utils/urlToRelativePath.js';\nconst toRounded = (value) => Math.round(value);\nconst toUrlSafe = (value, options) => {\n if (Array.isArray(value)) {\n return value.map(item => toUrlSafe(item, options));\n }\n if (value instanceof SfItem && typeof value.value === 'string') {\n return new SfItem(toUrlSafe(value.value, options), value.params);\n }\n else {\n if (options.baseUrl) {\n value = urlToRelativePath(value, options.baseUrl);\n }\n return options.version === 1 ? encodeURIComponent(value) : value;\n }\n};\nconst toHundred = (value) => toRounded(value / 100) * 100;\nconst nor = (value, options) => {\n let norValue = value;\n if (options.version >= 2) {\n if (value instanceof SfItem && typeof value.value === 'string') {\n norValue = new SfItem([value]);\n }\n else if (typeof value === 'string') {\n norValue = [value];\n }\n }\n return toUrlSafe(norValue, options);\n};\n/**\n * The default formatters for CMCD values.\n *\n * @group CMCD\n *\n * @beta\n */\nexport const CMCD_FORMATTER_MAP = {\n /**\n * Bitrate (kbps) rounded integer\n */\n br: toRounded,\n /**\n * Duration (milliseconds) rounded integer\n */\n d: toRounded,\n /**\n * Buffer Length (milliseconds) rounded nearest 100ms\n */\n bl: toHundred,\n /**\n * Deadline (milliseconds) rounded nearest 100ms\n */\n dl: toHundred,\n /**\n * Measured Throughput (kbps) rounded nearest 100kbps\n */\n mtp: toHundred,\n /**\n * Next Object Request URL encoded\n */\n nor,\n /**\n * Requested maximum throughput (kbps) rounded nearest 100kbps\n */\n rtp: toHundred,\n /**\n * Top Bitrate (kbps) rounded integer\n */\n tb: toRounded,\n};\n//# sourceMappingURL=CMCD_FORMATTER_MAP.js.map","/**\n * CMCD request mode variable name.\n *\n * @group CMCD\n *\n * @beta\n */\nexport const CMCD_REQUEST_MODE = 'request';\n//# sourceMappingURL=CMCD_REQUEST_MODE.js.map","/**\n * CMCD response mode variable name.\n *\n * @group CMCD\n *\n * @beta\n */\nexport const CMCD_RESPONSE_MODE = 'response';\n//# sourceMappingURL=CMCD_RESPONSE_MODE.js.map","/**\n * Defines the common keys for CMCD (Common Media Client Data) version 2.\n *\n * @group CMCD\n *\n * @beta\n */\nexport const CMCD_COMMON_KEYS = [\n 'ab',\n 'bg',\n 'bl',\n 'br',\n 'bs',\n 'bsd',\n 'cdn',\n 'cid',\n 'cs',\n 'df',\n 'ec',\n 'lab',\n 'lb',\n 'ltc',\n 'msd',\n 'mtp',\n 'pb',\n 'pr',\n 'pt',\n 'sf',\n 'sid',\n 'sn',\n 'st',\n 'sta',\n 'tab',\n 'tb',\n 'tbl',\n 'tpb',\n 'ts',\n 'v',\n];\n//# sourceMappingURL=CMCD_COMMON_KEYS.js.map","/**\n * Defines the event-specific keys for CMCD (Common Media Client Data) version 2.\n *\n * @group CMCD\n *\n * @beta\n */\nexport const CMCD_EVENT_KEYS = [\n 'e',\n];\n//# sourceMappingURL=CMCD_EVENT_KEYS.js.map","const CUSTOM_KEY_REGEX = /^[a-zA-Z0-9-.]+-[a-zA-Z0-9-.]+$/;\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 * @group CMCD\n *\n * @beta\n */\nexport function isCmcdCustomKey(key) {\n return CUSTOM_KEY_REGEX.test(key);\n}\n//# sourceMappingURL=isCmcdCustomKey.js.map","import { CMCD_COMMON_KEYS } from './CMCD_COMMON_KEYS.js';\nimport { CMCD_EVENT_KEYS } from './CMCD_EVENT_KEYS.js';\nimport { isCmcdCustomKey } from './isCmcdCustomKey.js';\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 * @group CMCD\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/cmcd/isCmcdEventKey.test.ts#example}\n */\nexport function isCmcdEventKey(key) {\n return CMCD_COMMON_KEYS.includes(key) ||\n CMCD_EVENT_KEYS.includes(key) ||\n isCmcdCustomKey(key);\n}\n//# sourceMappingURL=isCmcdEventKey.js.map","/**\n * Defines the request-specific keys for CMCD (Common Media Client Data) version 2.\n *\n * @group CMCD\n *\n * @beta\n */\nexport const CMCD_REQUEST_KEYS = [\n 'd',\n 'dl',\n 'nor',\n 'ot',\n 'rtp',\n 'su',\n];\n//# sourceMappingURL=CMCD_REQUEST_KEYS.js.map","import { CMCD_COMMON_KEYS } from './CMCD_COMMON_KEYS.js';\nimport { CMCD_REQUEST_KEYS } from './CMCD_REQUEST_KEYS.js';\nimport { isCmcdCustomKey } from './isCmcdCustomKey.js';\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 * @group CMCD\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/cmcd/isCmcdRequestKey.test.ts#example}\n */\nexport function isCmcdRequestKey(key) {\n return CMCD_COMMON_KEYS.includes(key) ||\n CMCD_REQUEST_KEYS.includes(key) ||\n isCmcdCustomKey(key);\n}\n//# sourceMappingURL=isCmcdRequestKey.js.map","/**\n * CMCD v2 - Response-only and timing keys.\n *\n * @group CMCD\n *\n * @beta\n */\nexport const CMCD_RESPONSE_KEYS = [\n 'cmsdd',\n 'cmsds',\n 'rc',\n 'smrt',\n 'ttfb',\n 'ttfbb',\n 'ttlb',\n 'url',\n];\n//# sourceMappingURL=CMCD_RESPONSE_KEYS.js.map","import { CMCD_COMMON_KEYS } from './CMCD_COMMON_KEYS.js';\nimport { CMCD_REQUEST_KEYS } from './CMCD_REQUEST_KEYS.js';\nimport { CMCD_RESPONSE_KEYS } from './CMCD_RESPONSE_KEYS.js';\nimport { isCmcdCustomKey } from './isCmcdCustomKey.js';\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 * @group CMCD\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/cmcd/isCmcdResponseKey.test.ts#example}\n */\nexport function isCmcdResponseKey(key) {\n return CMCD_COMMON_KEYS.includes(key) ||\n CMCD_REQUEST_KEYS.includes(key) ||\n CMCD_RESPONSE_KEYS.includes(key) ||\n isCmcdCustomKey(key);\n}\n//# sourceMappingURL=isCmcdResponseKey.js.map","/**\n * Defines the keys for CMCD (Common Media Client Data) version 1.\n *\n * @group CMCD\n *\n * @beta\n */\nexport const CMCD_V1_KEYS = [\n 'bl',\n 'br',\n 'bs',\n 'cid',\n 'd',\n 'dl',\n 'mtp',\n 'nor',\n 'nrr',\n 'ot',\n 'pr',\n 'rtp',\n 'sf',\n 'sid',\n 'st',\n 'su',\n 'tb',\n 'v',\n];\n//# sourceMappingURL=CMCD_V1_KEYS.js.map","import { CMCD_V1_KEYS } from './CMCD_V1_KEYS.js';\nimport { isCmcdCustomKey } from './isCmcdCustomKey.js';\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 * @group CMCD\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/cmcd/isCmcdV1Key.test.ts#example}\n */\nexport function isCmcdV1Key(key) {\n return CMCD_V1_KEYS.includes(key) || isCmcdCustomKey(key);\n}\n//# sourceMappingURL=isCmcdV1Key.js.map","import { isTokenField } from '../cta/utils/isTokenField.js';\nimport { isValid } from '../cta/utils/isValid.js';\nimport { SfToken } from '../structuredfield/SfToken.js';\nimport { CMCD_EVENT_MODE } from './CMCD_EVENT_MODE.js';\nimport { CMCD_FORMATTER_MAP } from './CMCD_FORMATTER_MAP.js';\nimport { CMCD_REQUEST_MODE } from './CMCD_REQUEST_MODE.js';\nimport { CMCD_RESPONSE_MODE } from './CMCD_RESPONSE_MODE.js';\nimport { isCmcdEventKey } from './isCmcdEventKey.js';\nimport { isCmcdRequestKey } from './isCmcdRequestKey.js';\nimport { isCmcdResponseKey } from './isCmcdResponseKey.js';\nimport { isCmcdV1Key } from './isCmcdV1Key.js';\nconst filterMap = {\n [CMCD_RESPONSE_MODE]: isCmcdResponseKey,\n [CMCD_EVENT_MODE]: isCmcdEventKey,\n [CMCD_REQUEST_MODE]: isCmcdRequestKey,\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 * @group CMCD\n *\n * @beta\n */\nexport function prepareCmcdData(obj, options = {}) {\n const results = {};\n if (obj == null || typeof obj !== 'object') {\n return results;\n }\n const version = options.version || obj['v'] || 1;\n const reportingMode = options.reportingMode || CMCD_REQUEST_MODE;\n const keyFilter = version === 1 ? isCmcdV1Key : filterMap[reportingMode];\n // Filter keys based on the version, reporting mode and options\n let keys = Object.keys(obj).filter(keyFilter);\n const filter = options.filter;\n if (typeof filter === 'function') {\n keys = keys.filter(filter);\n }\n // Ensure all required keys are present before sorting\n const needsTimestamp = reportingMode === CMCD_RESPONSE_MODE || reportingMode === CMCD_EVENT_MODE;\n if (needsTimestamp && !keys.includes('ts')) {\n keys.push('ts');\n }\n if (version > 1 && !keys.includes('v')) {\n keys.push('v');\n }\n const formatters = Object.assign({}, CMCD_FORMATTER_MAP, options.formatters);\n const formatterOptions = {\n version,\n reportingMode,\n baseUrl: options.baseUrl,\n };\n keys.sort().forEach(key => {\n let value = obj[key];\n const formatter = formatters[key];\n if (typeof formatter === 'function') {\n value = formatter(value, formatterOptions);\n }\n // Version should only be reported if not equal to 1.\n if (key === 'v') {\n if (version === 1) {\n return;\n }\n else {\n value = version;\n }\n }\n // Playback rate should only be sent if not equal to 1.\n if (key == 'pr' && value === 1) {\n return;\n }\n // Ensure a timestamp is set for response and event modes\n if (needsTimestamp && key === 'ts' && !Number.isFinite(value)) {\n value = Date.now();\n }\n // ignore invalid values\n if (!isValid(value)) {\n return;\n }\n if (isTokenField(key) && typeof value === 'string') {\n value = new SfToken(value);\n }\n results[key] = value;\n });\n return results;\n}\n//# sourceMappingURL=prepareCmcdData.js.map","import { encodeSfDict } from '../structuredfield/encodeSfDict.js';\nimport { groupCmcdHeaders } from './groupCmcdHeaders.js';\nimport { prepareCmcdData } from './prepareCmcdData.js';\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 * @group CMCD\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/cmcd/toCmcdHeaders.test.ts#example}\n */\nexport function toCmcdHeaders(cmcd, options = {}) {\n const result = {};\n if (!cmcd) {\n return result;\n }\n const data = prepareCmcdData(cmcd, options);\n const shards = groupCmcdHeaders(data, options === null || options === void 0 ? void 0 : options.customHeaderMap);\n return Object.entries(shards)\n .reduce((acc, [field, value]) => {\n const shard = encodeSfDict(value, { whitespace: false });\n if (shard) {\n acc[field] = shard;\n }\n return acc;\n }, result);\n}\n//# sourceMappingURL=toCmcdHeaders.js.map","import { toCmcdHeaders } from './toCmcdHeaders.js';\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 * @group CMCD\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/cmcd/appendCmcdHeaders.test.ts#example}\n */\nexport function appendCmcdHeaders(headers, cmcd, options) {\n return Object.assign(headers, toCmcdHeaders(cmcd, options));\n}\n//# sourceMappingURL=appendCmcdHeaders.js.map","/**\n * CMCD parameter name.\n *\n * @group CMCD\n *\n * @beta\n */\nexport const CMCD_PARAM = 'CMCD';\n//# sourceMappingURL=CMCD_PARAM.js.map","import { encodeSfDict } from '../structuredfield/encodeSfDict.js';\nimport { prepareCmcdData } from './prepareCmcdData.js';\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 * @group CMCD\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/cmcd/encodeCmcd.test.ts#example}\n */\nexport function encodeCmcd(cmcd, options = {}) {\n if (!cmcd) {\n return '';\n }\n return encodeSfDict(prepareCmcdData(cmcd, options), { whitespace: false });\n}\n//# sourceMappingURL=encodeCmcd.js.map","import { encodeCmcd } from './encodeCmcd.js';\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 * @group CMCD\n *\n * @beta\n */\nexport function toCmcdUrl(cmcd, options = {}) {\n if (!cmcd) {\n return '';\n }\n const params = encodeCmcd(cmcd, options);\n return encodeURIComponent(params);\n}\n//# sourceMappingURL=toCmcdUrl.js.map","import { CMCD_PARAM } from './CMCD_PARAM.js';\nimport { toCmcdUrl } from './toCmcdUrl.js';\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 * @group CMCD\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/cmcd/toCmcdQuery.test.ts#example}\n */\nexport function toCmcdQuery(cmcd, options = {}) {\n if (!cmcd) {\n return '';\n }\n const value = toCmcdUrl(cmcd, options);\n return `${CMCD_PARAM}=${value}`;\n}\n//# sourceMappingURL=toCmcdQuery.js.map","import { toCmcdQuery } from './toCmcdQuery.js';\nconst REGEX = /CMCD=[^&#]+/;\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 * @group CMCD\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/cmcd/appendCmcdQuery.test.ts#example}\n */\nexport function appendCmcdQuery(url, cmcd, options) {\n // TODO: Replace with URLSearchParams once we drop Safari < 10.1 & Chrome < 49 support.\n // https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams\n const query = toCmcdQuery(cmcd, options);\n if (!query) {\n return url;\n }\n if (REGEX.test(url)) {\n return url.replace(REGEX, query);\n }\n const separator = url.includes('?') ? '&' : '?';\n return `${url}${separator}${query}`;\n}\n//# sourceMappingURL=appendCmcdQuery.js.map","/**\n * The default time interval in secondswhen using using event mode\n *\n * @group CMCD\n *\n * @beta\n */\nexport const CMCD_DEFAULT_TIME_INTERVAL = 30;\n//# sourceMappingURL=CMCD_DEFAULT_TIME_INTERVAL.js.map","/**\n * CMCD `headers` transmission mode.\n *\n * @group CMCD\n *\n * @beta\n */\nexport const CMCD_HEADERS = 'headers';\n//# sourceMappingURL=CMCD_HEADERS.js.map","/**\n * CMCD `json` transmission mode.\n *\n * @group CMCD\n *\n * @beta\n *\n * @deprecated JSON transmission mode is deprecated and will be removed in future versions.\n */\nexport const CMCD_JSON = 'json';\n//# sourceMappingURL=CMCD_JSON.js.map","import { CMCD_COMMON_KEYS } from './CMCD_COMMON_KEYS.js';\nimport { CMCD_EVENT_KEYS } from './CMCD_EVENT_KEYS.js';\nimport { CMCD_REQUEST_KEYS } from './CMCD_REQUEST_KEYS.js';\nimport { CMCD_RESPONSE_KEYS } from './CMCD_RESPONSE_KEYS.js';\nimport { CMCD_V1_KEYS } from './CMCD_V1_KEYS.js';\nconst keySet = new Set([...CMCD_V1_KEYS, ...CMCD_COMMON_KEYS, ...CMCD_REQUEST_KEYS, ...CMCD_RESPONSE_KEYS, ...CMCD_EVENT_KEYS]);\n/**\n * A list of all CMCD keys.\n *\n * @group CMCD\n *\n * @beta\n */\nexport const CMCD_KEYS = Array.from(keySet);\n//# sourceMappingURL=CMCD_KEYS.js.map","/**\n * CMCD `query` transmission mode.\n *\n * @group CMCD\n *\n * @beta\n */\nexport const CMCD_QUERY = 'query';\n//# sourceMappingURL=CMCD_QUERY.js.map","/**\n * CMCD Version 1\n *\n * @group CMCD\n *\n * @beta\n */\nexport const CMCD_V1 = 1;\n//# sourceMappingURL=CMCD_V1.js.map","/**\n * CMCD Version 2\n *\n * @group CMCD\n *\n * @beta\n */\nexport const CMCD_V2 = 2;\n//# sourceMappingURL=CMCD_V2.js.map","import { CMCD_HEADERS } from './CMCD_HEADERS.js';\nimport { CMCD_JSON } from './CMCD_JSON.js';\nimport { CMCD_QUERY } from './CMCD_QUERY.js';\n/**\n * CMCD transmission modes.\n *\n * @group CMCD\n *\n * @enum\n *\n * @beta\n */\nexport const CmcdTransmissionMode = {\n /**\n * JSON\n *\n * @deprecated JSON transmission mode is deprecated and will be removed in future versions.\n */\n JSON: CMCD_JSON,\n /**\n * Query string\n */\n QUERY: CMCD_QUERY,\n /**\n * Request headers\n */\n HEADERS: CMCD_HEADERS,\n};\n//# sourceMappingURL=CmcdTransmissionMode.js.map","import { CmcdTransmissionMode } from './CmcdTransmissionMode.js';\n/**\n * CMCD encoding types.\n *\n * @group CMCD\n *\n * @enum\n *\n * @beta\n *\n * @deprecated Use {@link CmcdTransmissionMode} instead.\n *\n * @see {@link CmcdTransmissionMode}\n */\nexport const CmcdEncoding = CmcdTransmissionMode;\n//# sourceMappingURL=CmcdEncoding.js.map","/**\n * CMCD event types for the 'e' key (event mode).\n *\n * @group CMCD\n *\n * @enum\n *\n * @beta\n */\nexport const CmcdEventType = {\n /**\n * A change in the player state.\n */\n PLAY_STATE: 'ps',\n /**\n * An error event.\n */\n ERROR: 'e',\n /**\n * A periodic report sent on a time interval.\n */\n TIME_INTERVAL: 't',\n /**\n * A change of the content ID.\n */\n CONTENT_ID: 'c',\n /**\n * A change in the application's backgrounded state.\n */\n BACKGROUNDED_MODE: 'b',\n /**\n * The player was muted.\n */\n MUTE: 'm',\n /**\n * Player unmuted.\n */\n UNMUTE: 'um',\n /**\n * The player view was expanded.\n */\n PLAYER_EXPAND: 'pe',\n /**\n * The player view was collapsed.\n */\n PLAYER_COLLAPSE: 'pc',\n};\n//# sourceMappingURL=CmcdEventType.js.map","import { CMCD_FORMATTER_MAP } from './CMCD_FORMATTER_MAP.js';\n/**\n * The default formatters for CMCD values.\n *\n * @group CMCD\n *\n * @beta\n *\n * @deprecated Use `CMCD_FORMATTER_MAP` instead.\n */\nexport const CmcdFormatters = CMCD_FORMATTER_MAP;\n//# sourceMappingURL=CmcdFormatters.js.map","/**\n * Common Media Object Type\n *\n * @internal\n */\nexport const CmObjectType = {\n /**\n * text file, such as a manifest or playlist\n */\n MANIFEST: 'm',\n /**\n * audio only\n */\n AUDIO: 'a',\n /**\n * video only\n */\n VIDEO: 'v',\n /**\n * muxed audio and video\n */\n MUXED: 'av',\n /**\n * init segment\n */\n INIT: 'i',\n /**\n * caption or subtitle\n */\n CAPTION: 'c',\n /**\n * ISOBMFF timed text track\n */\n TIMED_TEXT: 'tt',\n /**\n * cryptographic key, license or certificate.\n */\n KEY: 'k',\n /**\n * other\n */\n OTHER: 'o',\n};\n//# sourceMappingURL=CmObjectType.js.map","import { CmObjectType } from '../cta/CmObjectType.js';\n/**\n * Common Media Client Data Object Type\n *\n * @group CMCD\n *\n * @beta\n *\n * @enum\n */\nexport const CmcdObjectType = CmObjectType;\n//# sourceMappingURL=CmcdObjectType.js.map","/**\n * CMCD v2 player states for the 'sta' key.\n *\n * @group CMCD\n *\n * @enum\n *\n * @beta\n */\nexport const CmcdPlayerState = {\n /**\n * Starting: Initial startup of the player.\n */\n STARTING: 's',\n /**\n * Playing: The player is actively rendering content.\n */\n PLAYING: 'p',\n /**\n * Seeking: The player is seeking to a new position.\n */\n SEEKING: 'k',\n /**\n * Rebuffering: The player is buffering data during playback.\n */\n REBUFFERING: 'r',\n /**\n * Paused: The player is paused.\n */\n PAUSED: 'a',\n /**\n * Waiting: The player is waiting for a user action or another event.\n */\n WAITING: 'w',\n /**\n * Ended: The media has finished playing.\n */\n ENDED: 'e',\n /**\n * Fatal Error: The player has encountered a fatal error.\n */\n FATAL_ERROR: 'f',\n /**\n * Quit: User initiated end of playback before media asset completion.\n */\n QUIT: 'q',\n /**\n * 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 */\n PRELOADING: 'd',\n};\n//# sourceMappingURL=CmcdPlayerState.js.map","import { CMCD_EVENT_MODE } from './CMCD_EVENT_MODE.js';\nimport { CMCD_REQUEST_MODE } from './CMCD_REQUEST_MODE.js';\nimport { CMCD_RESPONSE_MODE } from './CMCD_RESPONSE_MODE.js';\n/**\n * CMCD reporting mode types.\n *\n * @group CMCD\n *\n * @enum\n *\n * @beta\n */\nexport const CmcdReportingMode = {\n /**\n * Request mode\n */\n REQUEST: CMCD_REQUEST_MODE,\n /**\n * Response mode\n */\n RESPONSE: CMCD_RESPONSE_MODE,\n /**\n * Event mode\n */\n EVENT: CMCD_EVENT_MODE,\n};\n//# sourceMappingURL=CmcdReportingMode.js.map","/**\n * Common Media Streaming Format\n *\n * @internal\n */\nexport const CmStreamingFormat = {\n /**\n * MPEG DASH\n */\n DASH: 'd',\n /**\n * HTTP Live Streaming (HLS)\n */\n HLS: 'h',\n /**\n * Smooth Streaming\n */\n SMOOTH: 's',\n /**\n * Other\n */\n OTHER: 'o',\n};\n//# sourceMappingURL=CmStreamingFormat.js.map","import { CmStreamingFormat } from '../cta/CmStreamingFormat.js';\n/**\n * Common Media Client Data Streaming Format\n *\n * @group CMCD\n *\n * @enum\n *\n * @beta\n */\nexport const CmcdStreamingFormat = CmStreamingFormat;\n//# sourceMappingURL=CmcdStreamingFormat.js.map","/**\n * Common Media Stream Type\n *\n * @internal\n */\nexport const CmStreamType = {\n /**\n * All segments are available – e.g., VOD\n */\n VOD: 'v',\n /**\n * Segments become available over time – e.g., LIVE\n */\n LIVE: 'l',\n};\n//# sourceMappingURL=CmStreamType.js.map","import { CmStreamType } from '../cta/CmStreamType.js';\n/**\n * Common Media Client Data Stream Type\n *\n * @group CMCD\n *\n * @enum\n *\n * @beta\n */\nexport const CmcdStreamType = CmStreamType;\n//# sourceMappingURL=CmcdStreamType.js.map","export function parsedValue(value, src) {\n return { value, src };\n}\n//# sourceMappingURL=ParsedValue.js.map","import { throwError } from '../utils/throwError.js';\nexport function parseError(src, type, cause) {\n return throwError('parse', src, type, cause);\n}\n//# sourceMappingURL=parseError.js.map","export const INNER = 'Inner List';\n//# sourceMappingURL=INNER.js.map","import { BOOLEAN } from '../utils/BOOLEAN.js';\nimport { parsedValue } from './ParsedValue.js';\nimport { parseError } from './parseError.js';\n// 4.2.8. Parsing a Boolean\n//\n// Given an ASCII string as input_string, return a Boolean. input_string\n// is modified to remove the parsed value.\n//\n// 1. If the first character of input_string is not \"?\", fail parsing.\n//\n// 2. Discard the first character of input_string.\n//\n// 3. If the first character of input_string matches \"1\", discard the\n// first character, and return true.\n//\n// 4. If the first character of input_string matches \"0\", discard the\n// first character, and return false.\n//\n// 5. No value has matched; fail parsing.\nexport function parseBoolean(src) {\n let i = 0;\n if (src[i] !== '?') {\n throw parseError(src, BOOLEAN);\n }\n i++;\n if (src[i] === '1') {\n return parsedValue(true, src.substring(++i));\n }\n if (src[i] === '0') {\n return parsedValue(false, src.substring(++i));\n }\n throw parseError(src, BOOLEAN);\n}\n//# sourceMappingURL=parseBoolean.js.map","/**\n * Decodes a base64 encoded string into binary data\n *\n * @param str - The base64 encoded string to decode\n * @returns The decoded binary data\n *\n * @group Utils\n *\n * @beta\n */\nexport function decodeBase64(str) {\n return new Uint8Array([...atob(str)].map((a) => a.charCodeAt(0)));\n}\n//# sourceMappingURL=decodeBase64.js.map","import { decodeBase64 } from '../../utils/decodeBase64.js';\nimport { BYTES } from '../utils/BYTES.js';\nimport { parsedValue } from './ParsedValue.js';\nimport { parseError } from './parseError.js';\n// 4.2.7. Parsing a Byte Sequence\n//\n// Given an ASCII string as input_string, return a Byte Sequence.\n// input_string is modified to remove the parsed value.\n//\n// 1. If the first character of input_string is not \":\", fail parsing.\n//\n// 2. Discard the first character of input_string.\n//\n// 3. If there is not a \":\" character before the end of input_string,\n// fail parsing.\n//\n// 4. Let b64_content be the result of consuming content of\n// input_string up to but not including the first instance of the\n// character \":\".\n//\n// 5. Consume the \":\" character at the beginning of input_string.\n//\n// 6. If b64_content contains a character not included in ALPHA, DIGIT,\n// \"+\", \"/\" and \"=\", fail parsing.\n//\n// 7. Let binary_content be the result of Base 64 Decoding [RFC4648]\n// b64_content, synthesizing padding if necessary (note the\n// requirements about recipient behavior below).\n//\n// 8. Return binary_content.\n//\n// Because some implementations of base64 do not allow rejection of\n// encoded data that is not properly \"=\" padded (see [RFC4648],\n// Section 3.2), parsers SHOULD NOT fail when \"=\" padding is not\n// present, unless they cannot be configured to do so.\n//\n// Because some implementations of base64 do not allow rejection of\n// encoded data that has non-zero pad bits (see [RFC4648], Section 3.5),\n// parsers SHOULD NOT fail when non-zero pad bits are present, unless\n// they cannot be configured to do so.\n//\n// This specification does not relax the requirements in [RFC4648],\n// Section 3.1 and 3.3; therefore, parsers MUST fail on characters\n// outside the base64 alphabet, and on line feeds in encoded data.\nexport function parseByteSequence(src) {\n if (src[0] !== ':') {\n throw parseError(src, BYTES);\n }\n src = src.substring(1);\n if (src.includes(':') === false) {\n throw parseError(src, BYTES);\n }\n const re = /(^.*?)(:)/g;\n const b64_content = re.exec(src)[1];\n src = src.substring(re.lastIndex);\n // pass b64_content char check step 6\n return parsedValue(decodeBase64(b64_content), src);\n}\n//# sourceMappingURL=parseByteSequence.js.map","export const DATE = 'Date';\n//# sourceMappingURL=DATE.js.map","import { DECIMAL } from './DECIMAL.js';\nimport { INTEGER } from './INTEGER.js';\nexport const INTEGER_DECIMAL = `${INTEGER} or ${DECIMAL}`;\n//# sourceMappingURL=INTEGER_DECIMAL.js.map","import { INTEGER_DECIMAL } from '../utils/INTEGER_DECIMAL.js';\nimport { isInvalidInt } from '../utils/isInvalidInt.js';\nimport { parsedValue } from './ParsedValue.js';\nimport { parseError } from './parseError.js';\n// 4.2.4. Parsing an Integer or Decimal\n//\n// Given an ASCII string as input_string, return an Integer or Decimal.\n// input_string is modified to remove the parsed value.\n//\n// NOTE: This algorithm parses both Integers (Section 3.3.1) and\n// Decimals (Section 3.3.2), and returns the corresponding structure.\n//\n// 1. Let type be \"integer\".\n//\n// 2. Let sign be 1.\n//\n// 3. Let input_number be an empty string.\n//\n// 4. If the first character of input_string is \"-\", consume it and\n// set sign to -1.\n//\n// 5. If input_string is empty, there is an empty integer; fail\n// parsing.\n//\n// 6. If the first character of input_string is not a DIGIT, fail\n// parsing.\n//\n// 7. While input_string is not empty:\n//\n// 1. Let char be the result of consuming the first character of\n// input_string.\n//\n// 2. If char is a DIGIT, append it to input_number.\n//\n// 3. Else, if type is \"integer\" and char is \".\":\n//\n// 1. If input_number contains more than 12 characters, fail\n// parsing.\n//\n// 2. Otherwise, append char to input_number and set type to\n// \"decimal\".\n//\n// 4. Otherwise, prepend char to input_string, and exit the loop.\n//\n// 5. If type is \"integer\" and input_number contains more than 15\n// characters, fail parsing.\n//\n// 6. If type is \"decimal\" and input_number contains more than 16\n// characters, fail parsing.\n//\n// 8. If type is \"integer\":\n//\n// 1. Parse input_number as an integer and let output_number be\n// the product of the result and sign.\n//\n// 2. If output_number is outside the range -999,999,999,999,999\n// to 999,999,999,999,999 inclusive, fail parsing.\n//\n// 9. Otherwise:\n//\n// 1. If the final character of input_number is \".\", fail parsing.\n//\n// 2. If the number of characters after \".\" in input_number is\n// greater than three, fail parsing.\n//\n// 3. Parse input_number as a decimal number and let output_number\n// be the product of the result and sign.\n//\n// 10. Return output_number.\nexport function parseIntegerOrDecimal(src) {\n const orig = src;\n let sign = 1;\n let num = '';\n let value;\n const i = 0;\n const error = parseError(orig, INTEGER_DECIMAL);\n if (src[i] === '-') {\n sign = -1;\n src = src.substring(1);\n }\n if (src.length <= 0) {\n throw error;\n }\n const re_integer = /^(\\d+)?/g;\n const result_integer = re_integer.exec(src);\n if (result_integer[0].length === 0) {\n throw error;\n }\n num += result_integer[1];\n src = src.substring(re_integer.lastIndex);\n if (src[0] === '.') {\n // decimal\n if (num.length > 12) {\n throw error;\n }\n const re_decimal = /^(\\.\\d+)?/g;\n const result_decimal = re_decimal.exec(src);\n src = src.substring(re_decimal.lastIndex);\n // 9.2. If the number of characters after \".\" in input_number is greater than three, fail parsing.\n if (result_decimal[0].length === 0 || result_decimal[1].length > 4) {\n throw error;\n }\n num += result_decimal[1];\n // 7.6. If type is \"decimal\" and input_number contains more than 16 characters, fail parsing.\n if (num.length > 16) {\n throw error;\n }\n value = parseFloat(num) * sign;\n }\n else {\n // integer\n // 7.5. If type is \"integer\" and input_number contains more than 15 characters, fail parsing.\n if (num.length > 15) {\n throw error;\n }\n value = parseInt(num) * sign;\n if (isInvalidInt(value)) {\n throw parseError(num, INTEGER_DECIMAL);\n }\n }\n return parsedValue(value, src);\n}\n//# sourceMappingURL=parseIntegerOrDecimal.js.map","import { DATE } from '../utils/DATE.js';\nimport { parsedValue } from './ParsedValue.js';\nimport { parseError } from './parseError.js';\nimport { parseIntegerOrDecimal } from './parseIntegerOrDecimal.js';\n// 4.2.9. Parsing a Date\n//\n// Given an ASCII string as input_string, return a Date. input_string is\n// modified to remove the parsed value.\n//\n// 1. If the first character of input_string is not \"@\", fail parsing.\n//\n// 2. Discard the first character of input_string.\n//\n// 3. Let output_date be the result of running Parsing an Integer or\n// Decimal (Section 4.2.4) with input_string.\n//\n// 4. If output_date is a Decimal, fail parsing.\n//\n// 5. Return output_date.\nexport function parseDate(src) {\n let i = 0;\n if (src[i] !== '@') {\n throw parseError(src, DATE);\n }\n i++;\n const date = parseIntegerOrDecimal(src.substring(i));\n if (Number.isInteger(date.value) === false) {\n throw parseError(src, DATE);\n }\n return parsedValue(new Date(date.value * 1000), date.src);\n}\n//# sourceMappingURL=parseDate.js.map","import { STRING } from '../utils/STRING.js';\nimport { STRING_REGEX } from '../utils/STRING_REGEX.js';\nimport { parsedValue } from './ParsedValue.js';\nimport { parseError } from './parseError.js';\n// 4.2.5. Parsing a String\n//\n// Given an ASCII string as input_string, return an unquoted String.\n// input_string is modified to remove the parsed value.\n//\n// 1. Let output_string be an empty string.\n//\n// 2. If the first character of input_string is not DQUOTE, fail\n// parsing.\n//\n// 3. Discard the first character of input_string.\n//\n// 4. While input_string is not empty:\n//\n// 1. Let char be the result of consuming the first character of\n// input_string.\n//\n// 2. If char is a backslash (\"\\\"):\n//\n// 1. If input_string is now empty, fail parsing.\n//\n// 2. Let next_char be the result of consuming the first\n// character of input_string.\n//\n// 3. If next_char is not DQUOTE or \"\\\", fail parsing.\n//\n// 4. Append next_char to output_string.\n//\n// 3. Else, if char is DQUOTE, return output_string.\n//\n// 4. Else, if char is in the range %x00-1f or %x7f (i.e., is not\n// in VCHAR or SP), fail parsing.\n//\n// 5. Else, append char to output_string.\n//\n// 5. Reached the end of input_string without finding a closing DQUOTE;\n// fail parsing.\nexport function parseString(src) {\n let output = '';\n let i = 0;\n if (src[i] !== `\"`) {\n throw parseError(src, STRING);\n }\n i++;\n while (src.length > i) {\n if (src[i] === `\\\\`) {\n if (src.length <= i + 1) {\n throw parseError(src, STRING);\n }\n i++;\n if (src[i] !== `\"` && src[i] !== `\\\\`) {\n throw parseError(src, STRING);\n }\n output += src[i];\n }\n else if (src[i] === `\"`) {\n return parsedValue(output, src.substring(++i));\n }\n else if (STRING_REGEX.test(src[i])) {\n throw parseError(src, STRING);\n }\n else {\n output += src[i];\n }\n i++;\n }\n throw parseError(src, STRING);\n}\n//# sourceMappingURL=parseString.js.map","import { SfToken } from '../SfToken.js';\nimport { TOKEN } from '../utils/TOKEN.js';\nimport { parsedValue } from './ParsedValue.js';\nimport { parseError } from './parseError.js';\n// 4.2.6. Parsing a Token\n//\n// Given an ASCII string as input_string, return a Token. input_string\n// is modified to remove the parsed value.\n//\n// 1. If the first character of input_string is not ALPHA or \"*\", fail\n// parsing.\n//\n// 2. Let output_string be an empty string.\n//\n// 3. While input_string is not empty:\n//\n// 1. If the first character of input_string is not in tchar, \":\"\n// or \"/\", return output_string.\n//\n// 2. Let char be the result of consuming the first character of\n// input_string.\n//\n// 3. Append char to output_string.\n//\n// 4. Return output_string.\nexport function parseToken(src, options) {\n if (/^[a-zA-Z*]$/.test(src[0]) === false) {\n throw parseError(src, TOKEN);\n }\n const re = /^([!#$%&'*+\\-.^_`|~\\w:/]+)/g;\n const value = re.exec(src)[1];\n src = src.substring(re.lastIndex);\n return parsedValue((options === null || options === void 0 ? void 0 : options.useSymbol) === false ? new SfToken(value) : Symbol.for(value), src);\n}\n//# sourceMappingURL=parseToken.js.map","import { BARE_ITEM } from '../utils/BARE_ITEM.js';\nimport { parseBoolean } from './parseBoolean.js';\nimport { parseByteSequence } from './parseByteSequence.js';\nimport { parseDate } from './parseDate.js';\nimport { parseError } from './parseError.js';\nimport { parseIntegerOrDecimal } from './parseIntegerOrDecimal.js';\nimport { parseString } from './parseString.js';\nimport { parseToken } from './parseToken.js';\n// 4.2.3.1. Parsing a Bare Item\n//\n// Given an ASCII string as input_string, return a bare Item.\n// input_string is modified to remove the parsed value.\n//\n// 1. If the first character of input_string is a \"-\" or a DIGIT,\n// return the result of running Parsing an Integer or Decimal\n// (Section 4.2.4) with input_string.\n//\n// 2. If the first character of input_string is a DQUOTE, return the\n// result of running Parsing a String (Section 4.2.5) with\n// input_string.\n//\n// 3. If the first character of input_string is \":\", return the result\n// of running Parsing a Byte Sequence (Section 4.2.7) with\n// input_string.\n//\n// 4. If the first character of input_string is \"?\", return the result\n// of running Parsing a Boolean (Section 4.2.8) with input_string.\n//\n// 5. If the first character of input_string is an ALPHA or \"*\", return\n// the result of running Parsing a Token (Section 4.2.6) with\n// input_string.\n//\n// 6. If the first character of input_string is \"@\", return the result\n// of running Parsing a Date (Section 4.2.9) with input_string.\n//\n// 7. Otherwise, the item type is unrecognized; fail parsing.\nexport function parseBareItem(src, options) {\n const first = src[0];\n if (first === `\"`) {\n return parseString(src);\n }\n if (/^[-0-9]/.test(first)) {\n return parseIntegerOrDecimal(src);\n }\n if (first === `?`) {\n return parseBoolean(src);\n }\n if (first === `:`) {\n return parseByteSequence(src);\n }\n if (/^[a-zA-Z*]/.test(first)) {\n return parseToken(src, options);\n }\n if (first === `@`) {\n return parseDate(src);\n }\n throw parseError(src, BARE_ITEM);\n}\n//# sourceMappingURL=parseBareItem.js.map","import { KEY } from '../utils/KEY.js';\nimport { parsedValue } from './ParsedValue.js';\nimport { parseError } from './parseError.js';\n// 4.2.3.3. Parsing a Key\n//\n// Given an ASCII string as input_string, return a key. input_string is\n// modified to remove the parsed value.\n//\n// 1. If the first character of input_string is not lcalpha or \"*\",\n// fail parsing.\n//\n// 2. Let output_string be an empty string.\n//\n// 3. While input_string is not empty:\n//\n// 1. If the first character of input_string is not one of lcalpha,\n// DIGIT, \"_\", \"-\", \".\", or \"*\", return output_string.\n//\n// 2. Let char be the result of consuming the first character of\n// input_string.\n//\n// 3. Append char to output_string.\n//\n// 4. Return output_string.\nexport function parseKey(src) {\n let i = 0;\n if (/^[a-z*]$/.test(src[i]) === false) {\n throw parseError(src, KEY);\n }\n let value = '';\n while (src.length > i) {\n if (/^[a-z0-9_\\-.*]$/.test(src[i]) === false) {\n return parsedValue(value, src.substring(i));\n }\n value += src[i];\n i++;\n }\n return parsedValue(value, src.substring(i));\n}\n//# sourceMappingURL=parseKey.js.map","import { parsedValue } from './ParsedValue.js';\nimport { parseBareItem } from './parseBareItem.js';\nimport { parseKey } from './parseKey.js';\n// 4.2.3.2. Parsing Parameters\n//\n// Given an ASCII string as input_string, return an ordered map whose\n// values are bare Items. input_string is modified to remove the parsed\n// value.\n//\n// 1. Let parameters be an empty, ordered map.\n//\n// 2. While input_string is not empty:\n//\n// 1. If the first character of input_string is not \";\", exit the\n// loop.\n//\n// 2. Consume a \";\" character from the beginning of input_string.\n//\n// 3. Discard any leading SP characters from input_string.\n//\n// 4. let param_name be the result of running Parsing a Key\n// (Section 4.2.3.3) with input_string.\n//\n// 5. Let param_value be Boolean true.\n//\n// 6. If the first character of input_string is \"=\":\n//\n// 1. Consume the \"=\" character at the beginning of\n// input_string.\n//\n// 2. Let param_value be the result of running Parsing a Bare\n// Item (Section 4.2.3.1) with input_string.\n//\n// 7. Append key param_name with value param_value to parameters.\n// If parameters already contains a name param_name (comparing\n// character-for-character), overwrite its value.\n//\n// 3. Return parameters.\n//\n// Note that when duplicate Parameter keys are encountered, this has the\n// effect of ignoring all but the last instance.\nexport function parseParameters(src, options) {\n let parameters = undefined;\n while (src.length > 0) {\n if (src[0] !== ';') {\n break;\n }\n src = src.substring(1).trim();\n const parsedKey = parseKey(src);\n const key = parsedKey.value;\n let value = true;\n src = parsedKey.src;\n if (src[0] === '=') {\n src = src.substring(1);\n const parsedBareItem = parseBareItem(src, options);\n value = parsedBareItem.value;\n src = parsedBareItem.src;\n }\n // initialize as object when params exists\n if (parameters == null) {\n parameters = {};\n }\n // override if param_name exists\n parameters[key] = value;\n }\n return parsedValue(parameters, src);\n}\n//# sourceMappingURL=parseParameters.js.map","import { SfItem } from '../SfItem.js';\nimport { parsedValue } from './ParsedValue.js';\nimport { parseBareItem } from './parseBareItem.js';\nimport { parseParameters } from './parseParameters.js';\n// 4.2.3. Parsing an Item\n//\n// Given an ASCII string as input_string, return a (bare_item,\n// parameters) tuple. input_string is modified to remove the parsed\n// value.\n//\n// 1. Let bare_item be the result of running Parsing a Bare Item\n// (Section 4.2.3.1) with input_string.\n//\n// 2. Let parameters be the result of running Parsing Parameters\n// (Section 4.2.3.2) with input_string.\n//\n// 3. Return the tuple (bare_item, parameters).\nexport function parseItem(src, options) {\n const parsedBareItem = parseBareItem(src, options);\n src = parsedBareItem.src;\n const parsedParameters = parseParameters(src, options);\n src = parsedParameters.src;\n return parsedValue(new SfItem(parsedBareItem.value, parsedParameters.value), src);\n}\n//# sourceMappingURL=parseItem.js.map","import { SfItem } from '../SfItem.js';\nimport { INNER } from '../utils/INNER.js';\nimport { parsedValue } from './ParsedValue.js';\nimport { parseError } from './parseError.js';\nimport { parseItem } from './parseItem.js';\nimport { parseParameters } from './parseParameters.js';\n// 4.2.1.2. Parsing an Inner List\n//\n// Given an ASCII string as input_string, return the tuple (inner_list,\n// parameters), where inner_list is an array of (bare_item, parameters)\n// tuples. input_string is modified to remove the parsed value.\n//\n// 1. Consume the first character of input_string; if it is not \"(\",\n// fail parsing.\n//\n// 2. Let inner_list be an empty array.\n//\n// 3. While input_string is not empty:\n//\n// 1. Discard any leading SP characters from input_string.\n//\n// 2. If the first character of input_string is \")\":\n//\n// 1. Consume the first character of input_string.\n//\n// 2. Let parameters be the result of running Parsing\n// Parameters (Section 4.2.3.2) with input_string.\n//\n// 3. Return the tuple (inner_list, parameters).\n//\n// 3. Let item be the result of running Parsing an Item\n// (Section 4.2.3) with input_string.\n//\n// 4. Append item to inner_list.\n//\n// 5. If the first character of input_string is not SP or \")\", fail\n// parsing.\n//\n// 4. The end of the inner list was not found; fail parsing.\nexport function parseInnerList(src, options) {\n if (src[0] !== '(') {\n throw parseError(src, INNER);\n }\n src = src.substring(1);\n const innerList = [];\n while (src.length > 0) {\n src = src.trim();\n if (src[0] === ')') {\n src = src.substring(1);\n const parsedParameters = parseParameters(src, options);\n return parsedValue(new SfItem(innerList, parsedParameters.value), parsedParameters.src);\n }\n const parsedItem = parseItem(src, options);\n innerList.push(parsedItem.value);\n src = parsedItem.src;\n if (src[0] !== ' ' && src[0] !== ')') {\n throw parseError(src, INNER);\n }\n }\n throw parseError(src, INNER);\n}\n//# sourceMappingURL=parseInnerList.js.map","import { parseInnerList } from './parseInnerList.js';\nimport { parseItem } from './parseItem.js';\n// 4.2.1.1. Parsing an Item or Inner List\n//\n// Given an ASCII string as input_string, return the tuple\n// (item_or_inner_list, parameters), where item_or_inner_list can be\n// either a single bare item, or an array of (bare_item, parameters)\n// tuples. input_string is modified to remove the parsed value.\n//\n// 1. If the first character of input_string is \"(\", return the result\n// of running Parsing an Inner List (Section 4.2.1.2) with\n// input_string.\n//\n// 2. Return the result of running Parsing an Item (Section 4.2.3) with\n// input_string.\nexport function parseItemOrInnerList(src, options) {\n if (src[0] === '(') {\n return parseInnerList(src, options);\n }\n return parseItem(src, options);\n}\n//# sourceMappingURL=parseItemOrInnerList.js.map","import { SfItem } from '../SfItem.js';\nimport { DICT } from '../utils/DICT.js';\nimport { parsedValue } from './ParsedValue.js';\nimport { parseError } from './parseError.js';\nimport { parseItemOrInnerList } from './parseItemOrInnerList.js';\nimport { parseKey } from './parseKey.js';\nimport { parseParameters } from './parseParameters.js';\n// 4.2.2. Parsing a Dictionary\n//\n// Given an ASCII string as input_string, return an ordered map whose\n// values are (item_or_inner_list, parameters) tuples. input_string is\n// modified to remove the parsed value.\n//\n// 1. Let dictionary be an empty, ordered map.\n//\n// 2. While input_string is not empty:\n//\n// 1. Let this_key be the result of running Parsing a Key\n// (Section 4.2.3.3) with input_string.\n//\n// 2. If the first character of input_string is \"=\":\n//\n// 1. Consume the first character of input_string.\n//\n// 2. Let member be the result of running Parsing an Item or\n// Inner List (Section 4.2.1.1) with input_string.\n//\n// 3. Otherwise:\n//\n// 1. Let value be Boolean true.\n//\n// 2. Let parameters be the result of running Parsing\n// Parameters Section 4.2.3.2 with input_string.\n//\n// 3. Let member be the tuple (value, parameters).\n//\n// 4. Add name this_key with value member to dictionary. If\n// dictionary already contains a name this_key (comparing\n// character-for-character), overwrite its value.\n//\n// 5. Discard any leading OWS characters from input_string.\n//\n// 6. If input_string is empty, return dictionary.\n//\n// 7. Consume the first character of input_string; if it is not\n// \",\", fail parsing.\n//\n// 8. Discard any leading OWS characters from input_string.\n//\n// 9. If input_string is empty, there is a trailing comma; fail\n// parsing.\n//\n// 3. No structured data has been found; return dictionary (which is\n// empty).\n//\n// Note that when duplicate Dictionary keys are encountered, this has\n// the effect of ignoring all but the last instance.\nexport function parseDict(src, options) {\n const value = {};\n while (src.length > 0) {\n let member;\n const parsedKey = parseKey(src);\n const key = parsedKey.value;\n src = parsedKey.src;\n if (src[0] === '=') {\n const parsedItemOrInnerList = parseItemOrInnerList(src.substring(1), options);\n member = parsedItemOrInnerList.value;\n src = parsedItemOrInnerList.src;\n }\n else {\n const parsedParameters = parseParameters(src, options);\n member = new SfItem(true, parsedParameters.value);\n src = parsedParameters.src;\n }\n value[key] = member;\n src = src.trim();\n if (src.length === 0) {\n return parsedValue(value, src);\n }\n if (src[0] !== ',') {\n throw parseError(src, DICT);\n }\n src = src.substring(1).trim();\n if (src.length === 0 || src[0] === ',') {\n throw parseError(src, DICT);\n }\n }\n return parsedValue(value, src);\n}\n//# sourceMappingURL=parseDict.js.map","import { parseDict } from './parse/parseDict.js';\nimport { parseError } from './parse/parseError.js';\nimport { DICT } from './utils/DICT.js';\n/**\n * Decode a structured field string into a structured field dictionary\n *\n * @param input - The structured field string to decode\n * @returns The structured field dictionary\n *\n * @group Structured Field\n *\n * @beta\n */\nexport function decodeSfDict(input, options) {\n try {\n const { src, value } = parseDict(input.trim(), options);\n if (src !== '') {\n throw parseError(src, DICT);\n }\n return value;\n }\n catch (cause) {\n throw parseError(input, DICT, cause);\n }\n}\n//# sourceMappingURL=decodeSfDict.js.map","import { symbolToStr } from '../cta/utils/symbolToStr.js';\nimport { SfItem } from '../structuredfield/SfItem.js';\nimport { decodeSfDict } from '../structuredfield/decodeSfDict.js';\nfunction reduceValue(value) {\n if (Array.isArray(value)) {\n return value.map(reduceValue);\n }\n if (typeof value === 'symbol') {\n return symbolToStr(value);\n }\n if (value instanceof SfItem && !value.params) {\n return reduceValue(value.value);\n }\n if (typeof value === 'string') {\n return decodeURIComponent(value);\n }\n return value;\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 * @group CMCD\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/cmcd/decodeCmcd.test.ts#example}\n */\nexport function decodeCmcd(cmcd) {\n if (!cmcd) {\n return {};\n }\n const sfDict = decodeSfDict(cmcd);\n return Object\n .entries(sfDict)\n .reduce((acc, [key, item]) => {\n acc[key] = reduceValue(item.value);\n return acc;\n }, {});\n}\n//# sourceMappingURL=decodeCmcd.js.map","import { CMCD_OBJECT } from './CMCD_OBJECT.js';\nimport { CMCD_REQUEST } from './CMCD_REQUEST.js';\nimport { CMCD_SESSION } from './CMCD_SESSION.js';\nimport { CMCD_STATUS } from './CMCD_STATUS.js';\nimport { decodeCmcd } from './decodeCmcd.js';\nconst keys = [CMCD_OBJECT, CMCD_REQUEST, CMCD_SESSION, CMCD_STATUS];\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 * @group CMCD\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/cmcd/fromCmcdHeaders.test.ts#example}\n */\nexport function fromCmcdHeaders(headers) {\n if (!(headers instanceof Headers)) {\n headers = new Headers(headers);\n }\n return keys.reduce((acc, key) => {\n const value = headers.get(key);\n return Object.assign(acc, decodeCmcd(value));\n }, {});\n}\n//# sourceMappingURL=fromCmcdHeaders.js.map","import { CMCD_PARAM } from './CMCD_PARAM.js';\nimport { decodeCmcd } from './decodeCmcd.js';\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 * @group CMCD\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/cmcd/fromCmcdQuery.test.ts#example}\n */\nexport function fromCmcdQuery(query) {\n if (typeof query === 'string') {\n query = new URLSearchParams(query);\n }\n const value = query.get(CMCD_PARAM);\n return decodeCmcd(value);\n}\n//# sourceMappingURL=fromCmcdQuery.js.map","import { decodeCmcd } from './decodeCmcd.js';\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 * @group CMCD\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/cmcd/fromCmcdUrl.test.ts#example}\n */\nexport function fromCmcdUrl(url) {\n return decodeCmcd(decodeURIComponent(url.replace(/^CMCD=/, '')));\n}\n//# sourceMappingURL=fromCmcdUrl.js.map","import { symbolToStr } from '../cta/utils/symbolToStr.js';\nimport { SfToken } from '../structuredfield/SfToken.js';\nimport { prepareCmcdData } from './prepareCmcdData.js';\n/**\n * Convert a CMCD data object to JSON.\n *\n * @param cmcd - The CMCD object to convert.\n * @param options - Options for encoding the CMCD object.\n *\n * @returns The CMCD JSON.\n *\n * @group CMCD\n *\n * @beta\n *\n * @deprecated Sending CMCD as JSON objects is deprecated. Use `toCmcdUrl` to create an array of url strings instead.\n */\nexport function toCmcdJson(cmcd, options) {\n const data = prepareCmcdData(cmcd, options);\n return JSON.stringify(data, (_, value) => typeof value === 'symbol' || value instanceof SfToken ? symbolToStr(value) : value);\n}\n//# sourceMappingURL=toCmcdJson.js.map","import { CMCD_HEADERS } from './CMCD_HEADERS.js';\nimport { CMCD_PARAM } from './CMCD_PARAM.js';\nimport { CMCD_QUERY } from './CMCD_QUERY.js';\nimport { encodeCmcd } from './encodeCmcd.js';\nimport { toCmcdHeaders } from './toCmcdHeaders.js';\n/**\n * Converts CMCD data into a report format.\n *\n * @param data - The CMCD data to be transformed into a report\n * @param target - The target configuration for the CMCD report\n *\n * @return A CMCD report object\n *\n * @group CMCD\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/cmcd/toCmcdReport.test.ts#example}\n */\nexport function toCmcdReport(data, target) {\n if (!target || !target.url) {\n return null;\n }\n const url = new URL(target.url);\n const method = target.method || 'GET';\n const headers = {};\n const transimissionMode = target.transmissionMode || CMCD_QUERY;\n const options = {\n version: target.version,\n reportingMode: target.reportingMode,\n };\n if (target.enabledKeys) {\n options.filter = (key) => target.enabledKeys.includes(key);\n }\n switch (transimissionMode) {\n case CMCD_QUERY:\n const param = encodeCmcd(data, options);\n if (param) {\n url.searchParams.set(CMCD_PARAM, param);\n }\n break;\n case CMCD_HEADERS:\n Object.assign(headers, toCmcdHeaders(data, options));\n break;\n }\n return {\n url: url.toString(),\n method,\n headers,\n };\n}\n//# sourceMappingURL=toCmcdReport.js.map","/**\n * CMSD dynamic header name.\n *\n * @group CMSD\n *\n * @beta\n */\nexport const CMSD_DYNAMIC = 'CMSD-Dynamic';\n//# sourceMappingURL=CMSD_DYNAMIC.js.map","/**\n * CMSD static header name.\n *\n * @group CMSD\n *\n * @beta\n */\nexport const CMSD_STATIC = 'CMSD-Static';\n//# sourceMappingURL=CMSD_STATIC.js.map","/**\n * CMSD Version 1\n *\n * @group CMSD\n *\n * @beta\n */\nexport const CMSD_V1 = 1;\n//# sourceMappingURL=CMSD_V1.js.map","import { CMSD_DYNAMIC } from './CMSD_DYNAMIC.js';\nimport { CMSD_STATIC } from './CMSD_STATIC.js';\n/**\n * CMSD header fields.\n *\n * @group CMSD\n *\n * @enum\n *\n * @beta\n */\nexport const CmsdHeaderField = {\n /**\n * Keys whose values persist over multiple requests for the object.\n */\n STATIC: CMSD_STATIC,\n /**\n * Keys whose values apply only to the next transmission hop. Typically a\n * new CMSD-Dynamic header instance will be added by each intermediary\n * participating in the delivery.\n */\n DYNAMIC: CMSD_DYNAMIC,\n};\n//# sourceMappingURL=CmsdHeaderField.js.map","import { CmObjectType } from '../cta/CmObjectType.js';\n/**\n * Common Media Server Data Object Type\n *\n * @group CMSD\n *\n * @enum\n *\n * @beta\n */\nexport const CmsdObjectType = CmObjectType;\n//# sourceMappingURL=CmsdObjectType.js.map","import { CmStreamingFormat } from '../cta/CmStreamingFormat.js';\n/**\n * Common Media Server Data Streaming Format\n *\n * @group CMSD\n *\n * @enum\n *\n * @beta\n */\nexport const CmsdStreamingFormat = CmStreamingFormat;\n//# sourceMappingURL=CmsdStreamingFormat.js.map","import { CmStreamType } from '../cta/CmStreamType.js';\n/**\n * Common Media Server Data Stream Type\n *\n * @group CMSD\n *\n * @enum\n *\n * @beta\n */\nexport const CmsdStreamType = CmStreamType;\n//# sourceMappingURL=CmsdStreamType.js.map","export const LIST = 'List';\n//# sourceMappingURL=LIST.js.map","import { LIST } from '../utils/LIST.js';\nimport { parsedValue } from './ParsedValue.js';\nimport { parseError } from './parseError.js';\nimport { parseItemOrInnerList } from './parseItemOrInnerList.js';\n// 4.2.1. Parsing a List\n//\n// Given an ASCII string as input_string, return an array of\n// (item_or_inner_list, parameters) tuples. input_string is modified to\n// remove the parsed value.\n//\n// 1. Let members be an empty array.\n//\n// 2. While input_string is not empty:\n//\n// 1. Append the result of running Parsing an Item or Inner List\n// (Section 4.2.1.1) with input_string to members.\n//\n// 2. Discard any leading OWS characters from input_string.\n//\n// 3. If input_string is empty, return members.\n//\n// 4. Consume the first character of input_string; if it is not\n// \",\", fail parsing.\n//\n// 5. Discard any leading OWS characters from input_string.\n//\n// 6. If input_string is empty, there is a trailing comma; fail\n// parsing.\n//\n// 3. No structured data has been found; return members (which is\n// empty).\nexport function parseList(src, options) {\n const value = [];\n while (src.length > 0) {\n const parsedItemOrInnerList = parseItemOrInnerList(src, options);\n value.push(parsedItemOrInnerList.value);\n src = parsedItemOrInnerList.src.trim();\n if (src.length === 0) {\n return parsedValue(value, src);\n }\n if (src[0] !== ',') {\n throw parseError(src, LIST);\n }\n src = src.substring(1).trim();\n if (src.length === 0 || src[0] === ',') {\n throw parseError(src, LIST);\n }\n }\n return parsedValue(value, src);\n}\n//# sourceMappingURL=parseList.js.map","import { parseError } from './parse/parseError.js';\nimport { parseList } from './parse/parseList.js';\nimport { LIST } from './utils/LIST.js';\n/**\n * Decode a structured field string into a structured field list\n *\n * @param input - The structured field string to decode\n * @returns The structured field list\n *\n * @group Structured Field\n *\n * @beta\n */\nexport function decodeSfList(input, options) {\n try {\n const { src, value } = parseList(input.trim(), options);\n if (src !== '') {\n throw parseError(src, LIST);\n }\n return value;\n }\n catch (cause) {\n throw parseError(input, LIST, cause);\n }\n}\n//# sourceMappingURL=decodeSfList.js.map","import { decodeSfList } from '../structuredfield/decodeSfList.js';\n/**\n * Decode a CMSD dynamic string to an object.\n *\n * @param cmsd - The CMSD string to decode.\n *\n * @returns The decoded CMSD object.\n *\n * @group CMSD\n *\n * @beta\n */\nexport function decodeCmsdDynamic(cmsd) {\n if (!cmsd) {\n return [];\n }\n const sfDict = decodeSfList(cmsd);\n return sfDict;\n}\n//# sourceMappingURL=decodeCmsdDynamic.js.map","import { symbolToStr } from '../cta/utils/symbolToStr.js';\nimport { decodeSfDict } from '../structuredfield/decodeSfDict.js';\n/**\n * Decode a CMSD Static dict string to an object.\n *\n * @param cmsd - The CMSD string to decode.\n *\n * @returns The decoded CMSD object.\n *\n * @group CMSD\n *\n * @beta\n */\nexport function decodeCmsdStatic(cmsd) {\n if (!cmsd) {\n return {};\n }\n return Object\n .entries(decodeSfDict(cmsd))\n .reduce((acc, [key, item]) => {\n const { value } = item;\n acc[key] = (typeof value === 'symbol' ? symbolToStr(value) : value);\n return acc;\n }, {});\n}\n//# sourceMappingURL=decodeCmsdStatic.js.map","import { SfItem } from '../SfItem.js';\nimport { LIST } from '../utils/LIST.js';\nimport { serializeError } from './serializeError.js';\nimport { serializeInnerList } from './serializeInnerList.js';\nimport { serializeItem } from './serializeItem.js';\n// 4.1.1. Serializing a List\n//\n// Given an array of (member_value, parameters) tuples as input_list,\n// return an ASCII string suitable for use in a HTTP field value.\n//\n// 1. Let output be an empty string.\n//\n// 2. For each (member_value, parameters) of input_list:\n//\n// 1. If member_value is an array, append the result of running\n// Serializing an Inner List (Section 4.1.1.1) with\n// (member_value, parameters) to output.\n//\n// 2. Otherwise, append the result of running Serializing an Item\n// (Section 4.1.3) with (member_value, parameters) to output.\n//\n// 3. If more member_values remain in input_list:\n//\n// 1. Append \",\" to output.\n//\n// 2. Append a single SP to output.\n//\n// 3. Return output.\nexport function serializeList(list, options = { whitespace: true }) {\n if (Array.isArray(list) === false) {\n throw serializeError(list, LIST);\n }\n const optionalWhiteSpace = (options === null || options === void 0 ? void 0 : options.whitespace) ? ' ' : '';\n return list\n .map(item => {\n if (item instanceof SfItem === false) {\n item = new SfItem(item);\n }\n // TODO: Fix this type assertion\n const i = item;\n if (Array.isArray(i.value)) {\n return serializeInnerList(i);\n }\n return serializeItem(i);\n })\n .join(`,${optionalWhiteSpace}`);\n}\n//# sourceMappingURL=serializeList.js.map","import { serializeList } from './serialize/serializeList.js';\n/**\n * Encode a list into a structured field dictionary\n *\n * @param value - The structured field list to encode\n * @param options - Encoding options\n *\n * @returns The structured field string\n *\n * @group Structured Field\n *\n * @beta\n */\nexport function encodeSfList(value, options) {\n return serializeList(value, options);\n}\n//# sourceMappingURL=encodeSfList.js.map","import { SfItem } from '../structuredfield/SfItem.js';\nimport { encodeSfList } from '../structuredfield/encodeSfList.js';\nexport function encodeCmsdDynamic(value, cmsd) {\n if (!value) {\n return '';\n }\n if (typeof value === 'string') {\n if (!cmsd) {\n return '';\n }\n value = [new SfItem(value, cmsd)];\n }\n return encodeSfList(value, { whitespace: false });\n}\n//# sourceMappingURL=encodeCmsdDynamic.js.map","import { isTokenField } from '../../cta/utils/isTokenField.js';\nimport { isValid } from '../../cta/utils/isValid.js';\nimport { SfToken } from '../../structuredfield/SfToken.js';\nexport function processCmsd(obj, options) {\n const results = {};\n if (obj == null || typeof obj !== 'object') {\n return results;\n }\n const keys = Object.keys(obj);\n const useSymbol = (options === null || options === void 0 ? void 0 : options.useSymbol) !== false;\n keys.forEach(key => {\n let value = obj[key];\n // Version should only be reported if not equal to 1.\n if (key === 'v' && value === 1) {\n return;\n }\n // ignore invalid values\n if (!isValid(value)) {\n return;\n }\n if (isTokenField(key) && typeof value === 'string') {\n value = useSymbol ? Symbol.for(value) : new SfToken(value);\n }\n results[key] = value;\n });\n return results;\n}\n//# sourceMappingURL=processCmsd.js.map","import { encodeSfDict } from '../structuredfield/encodeSfDict.js';\nimport { processCmsd } from './utils/processCmsd.js';\n/**\n * Encode a CMSD Static object.\n *\n * @param cmsd - The CMSD object to encode.\n * @param options - Encoding options\n *\n * @returns The encoded CMSD string.\n *\n * @group CMSD\n *\n * @beta\n */\nexport function encodeCmsdStatic(cmsd, options) {\n if (!cmsd) {\n return '';\n }\n return encodeSfDict(processCmsd(cmsd, options), { whitespace: false });\n}\n//# sourceMappingURL=encodeCmsdStatic.js.map","/**\n * The default penalty for a pathway in milliseconds.\n *\n * @group Content Steering\n *\n * @beta\n */\nexport const DEFAULT_PATHWAY_PENALTY = 300000;\n//# sourceMappingURL=DEFAULT_PATHWAY_PENALTY.js.map","/**\n * The default time to live for content steering in seconds.\n *\n * @group Content Steering\n *\n * @beta\n */\nexport const DEFAULT_TTL = 300;\n//# sourceMappingURL=DEFAULT_TTL.js.map","/**\n * Validates a pathway clone.\n *\n * @param clone - The pathway clone to validate.\n * @returns `true` if the pathway clone is valid, `false` otherwise.\n *\n * @group Content Steering\n *\n * @beta\n */\nexport function isValidPathwayClone(clone) {\n if (typeof clone !== 'object' || !clone) {\n return false;\n }\n const { ID, 'BASE-ID': BASE_ID, 'URI-REPLACEMENT': URI_REPLACEMENT } = clone;\n if (typeof ID !== 'string' || typeof BASE_ID !== 'string' || URI_REPLACEMENT == null || typeof URI_REPLACEMENT !== 'object') {\n return false;\n }\n return true;\n}\n//# sourceMappingURL=isValidPathwayClone.js.map","import { isValidPathwayClone } from './isValidPathwayClone.js';\n/**\n * Validates a steering manifest.\n *\n * @param manifest - The steering manifest to validate.\n * @returns `true` if the steering manifest is valid, `false` otherwise.\n *\n * @group Content Steering\n *\n * @beta\n */\nexport function isValidSteeringManifest(manifest) {\n if (!manifest) {\n return false;\n }\n const { VERSION, TTL, 'PATHWAY-PRIORITY': PATHWAY_PRIORITY, 'PATHWAY-CLONES': PATHWAY_CLONES } = manifest;\n // version is required and must be a valid number\n if (typeof VERSION !== 'number' || VERSION !== 1) {\n return false;\n }\n // TTL must be a valid number and greater than 0\n if (typeof TTL !== 'number' || TTL <= 0) {\n return false;\n }\n // PATHWAY-PRIORITY must be an array of strings and must not contain duplicates\n if (!Array.isArray(PATHWAY_PRIORITY) || PATHWAY_PRIORITY.length === 0 || new Set(PATHWAY_PRIORITY).size !== PATHWAY_PRIORITY.length) {\n return false;\n }\n // PATHWAY-CLONES must be an array of valid pathway clones\n if (PATHWAY_CLONES && (!Array.isArray(PATHWAY_CLONES) || PATHWAY_CLONES.length === 0 || PATHWAY_CLONES.some(clone => !isValidPathwayClone(clone)))) {\n return false;\n }\n return true;\n}\n//# sourceMappingURL=isValidSteeringManifest.js.map","/**\n * Parses a DASH framerate string into a number.\n *\n * @param frameRate - The frame rate string to parse.\n * @returns The frame rate as a number.\n *\n * @group DASH\n * @beta\n *\n * @example\n * {@includeCode ../../test/dash/parseFrameRate.test.ts#example}\n */\nexport function parseFrameRate(frameRate) {\n const [numerator, denominator] = frameRate.split('/').map(value => parseInt(value, 10));\n if (denominator === undefined) {\n return numerator;\n }\n if (isNaN(numerator) || isNaN(denominator) || denominator === 0) {\n return NaN;\n }\n return numerator / denominator;\n}\n//# sourceMappingURL=parseFrameRate.js.map","const TOKENS = /\\$(RepresentationID|Number|SubNumber|Bandwidth|Time)?(?:%0([0-9]+)([diouxX]))?\\$/g;\n/**\n * Process a URI template used in `SegmentTemplate` nodes.\n *\n * @param uriTemplate - URI template to process.\n * @param representationId - Representation ID.\n * @param number - Number.\n * @param subNumber - Sub-number.\n * @param bandwidth - Bandwidth.\n * @param time - Time. Should be passed as a number unless the value is larger than `MAX_SAFE_INTEGER`, then it should be provided as a string. If the value is a string all format tags will be ignored.\n *\n * @returns Processed URI template.\n *\n * @group DASH\n * @beta\n *\n * @example\n * {@includeCode ../../test/dash/processUriTemplate.test.ts#example}\n */\nexport function processUriTemplate(uriTemplate, representationId, number, subNumber, bandwidth, time) {\n const uri = uriTemplate.replace(TOKENS, (match, name, widthStr, format) => {\n let value;\n switch (name) {\n case undefined: // $$ case\n return '$';\n case 'RepresentationID':\n value = representationId;\n break;\n case 'Number':\n value = number;\n break;\n case 'SubNumber':\n value = subNumber;\n break;\n case 'Bandwidth':\n value = bandwidth;\n break;\n case 'Time':\n if (typeof time === 'string') {\n return time;\n }\n value = time ? Math.round(time) : time;\n break;\n default:\n value = null;\n }\n if (value == null) {\n return match;\n }\n let valueString;\n switch (format) {\n case undefined: // Happens if there is no format specifier.\n case 'd':\n case 'i':\n case 'u':\n valueString = value.toString();\n break;\n case 'o':\n valueString = value.toString(8);\n break;\n case 'x':\n valueString = value.toString(16);\n break;\n case 'X':\n valueString = value.toString(16).toUpperCase();\n break;\n default:\n valueString = value.toString();\n break;\n }\n const width = parseInt(widthStr, 10) || 1;\n return valueString.padStart(width, '0');\n });\n return uri;\n}\n//# sourceMappingURL=processUriTemplate.js.map","/**\n * The scheme ID URI for thumbnail tiles in DASH.\n *\n * @group DASH\n *\n * @beta\n */\nexport const THUMBNAIL_TILE_SCHEME_ID_URI = 'http://dashif.org/guidelines/thumbnail_tile';\n//# sourceMappingURL=THUMBNAIL_TILE_SCHEME_ID_URI.js.map","/**\n * Cipher Block Chaining Sample encryption scheme.\n *\n * @group DRM\n *\n * @beta\n */\nexport const CBCS = 'cbcs';\n//# sourceMappingURL=CBCS.js.map","/**\n * Common Encryption scheme.\n *\n * @group DRM\n *\n * @beta\n */\nexport const CENC = 'cenc';\n//# sourceMappingURL=CENC.js.map","/**\n * The DASH MP4 Protection Scheme schemeIdUri.\n *\n * @group DRM\n * @beta\n */\nexport const MP4_PROTECTION_SCHEME = 'urn:mpeg:dash:mp4protection:2011';\n//# sourceMappingURL=MP4_PROTECTION_SCHEME.js.map","import { CBCS } from '../common/CBCS.js';\nimport { CENC } from '../common/CENC.js';\nimport { MP4_PROTECTION_SCHEME } from '../common/MP4_PROTECTION_SCHEME.js';\n/**\n * Finds and returns the ContentProtection element for MP4 Common Encryption.\n *\n * @param cpArray - Array of ContentProtection elements.\n * @returns The Common Encryption content protection element, or null if not found.\n *\n * @group DRM\n * @beta\n *\n * @example\n * {@includeCode ../../../test/drm/cenc/findCencContentProtection.test.ts#example}\n */\nexport function findCencContentProtection(cpArray) {\n var _a;\n if (!cpArray) {\n return null;\n }\n for (const cp of cpArray) {\n if (((_a = cp.schemeIdUri) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === MP4_PROTECTION_SCHEME &&\n cp.value &&\n (cp.value.toLowerCase() === CENC ||\n cp.value.toLowerCase() === CBCS)) {\n return cp;\n }\n }\n return null;\n}\n//# sourceMappingURL=findCencContentProtection.js.map","/**\n * Extracts a license server URL from an array of ContentProtection elements.\n *\n * @param contentProtectionElements - Array of ContentProtection nodes from the manifest.\n * @param schemeIdUri - schemeIdUri we are searching for.\n * @returns The license server URL, and if not found then null.\n *\n * @group DRM\n * @beta\n *\n * @example\n * {@includeCode ../../../test/drm/cenc/getLicenseServerUrlFromContentProtection.test.ts#example}\n */\nexport function getLicenseServerUrlFromContentProtection(contentProtectionElements, schemeIdUri) {\n var _a;\n return ((_a = contentProtectionElements.find(cp => cp.schemeIdUri === schemeIdUri)) === null || _a === void 0 ? void 0 : _a.laUrl) || null;\n}\n//# sourceMappingURL=getLicenseServerUrlFromContentProtection.js.map","/**\n * Returns the data portion of a single PSSH box.\n *\n * @param pssh - The PSSH ArrayBuffer.\n * @returns The data portion of the PSSH.\n *\n * @group DRM\n * @beta\n *\n * @example\n * {@includeCode ../../../test/drm/cenc/getPsshData.test.ts#example}\n */\nexport function getPsshData(pssh) {\n const offset = 8; // Box size and type fields\n const view = new DataView(pssh);\n const version = view.getUint8(offset); // Read version\n let dataOffset = offset + 20;\n if (version > 0) {\n const kidCount = view.getUint32(dataOffset);\n dataOffset += 4 + (16 * kidCount);\n }\n dataOffset += 4; // Data size\n return pssh.slice(dataOffset);\n}\n//# sourceMappingURL=getPsshData.js.map","/**\n * Parses a list of PSSH boxes into keysystem-specific PSSH data.\n *\n * @param data - The concatenated list of PSSH boxes as provided by\n * the CDM as initialization data when CommonEncryption content is detected\n * @returns An object that has a property named according to each of\n * the detected key system UUIDs (e.g. 00000000-0000-0000-0000-0000000000)\n * and a ArrayBuffer (the entire PSSH box) as the property value\n *\n * @group DRM\n * @beta\n *\n * @example\n * {@includeCode ../../../test/drm/cenc/parsePsshList.test.ts#example}\n */\nexport function parsePsshList(data) {\n if (!data) {\n return {};\n }\n // data.buffer first for Uint8Array support\n const dv = new DataView(data instanceof ArrayBuffer ? data : data.buffer);\n const pssh = {};\n let byteCursor = 0;\n while (true) {\n if (byteCursor >= dv.byteLength) {\n break;\n }\n const boxStart = byteCursor;\n // Box size\n const size = dv.getUint32(byteCursor);\n const nextBox = byteCursor + size;\n byteCursor += 4;\n // Verify PSSH\n if (dv.getUint32(byteCursor) !== 0x70737368) {\n byteCursor = nextBox;\n continue;\n }\n byteCursor += 4;\n // Version must be 0 or 1\n const version = dv.getUint8(byteCursor);\n if (version !== 0 && version !== 1) {\n byteCursor = nextBox;\n continue;\n }\n byteCursor += 1; // Move past version\n byteCursor += 3; // Skip flags\n // 16-byte UUID/SystemID\n let systemID = '';\n let val;\n for (let i = 0; i < 4; i++) {\n val = dv.getUint8(byteCursor + i).toString(16);\n systemID += val.length === 1 ? '0' + val : val;\n }\n byteCursor += 4;\n systemID += '-';\n for (let i = 0; i < 2; i++) {\n val = dv.getUint8(byteCursor + i).toString(16);\n systemID += val.length === 1 ? '0' + val : val;\n }\n byteCursor += 2;\n systemID += '-';\n for (let i = 0; i < 2; i++) {\n val = dv.getUint8(byteCursor + i).toString(16);\n systemID += val.length === 1 ? '0' + val : val;\n }\n byteCursor += 2;\n systemID += '-';\n for (let i = 0; i < 2; i++) {\n val = dv.getUint8(byteCursor + i).toString(16);\n systemID += val.length === 1 ? '0' + val : val;\n }\n byteCursor += 2;\n systemID += '-';\n for (let i = 0; i < 6; i++) {\n val = dv.getUint8(byteCursor + i).toString(16);\n systemID += val.length === 1 ? '0' + val : val;\n }\n byteCursor += 6;\n systemID = systemID.toLowerCase();\n // PSSH Data Size\n byteCursor += 4;\n // PSSH boxdata\n pssh[systemID] = data.slice(boxStart, nextBox);\n byteCursor = nextBox;\n }\n return pssh;\n}\n//# sourceMappingURL=parsePsshList.js.map","import { parsePsshList } from './parsePsshList.js';\n/**\n * Returns the PSSH box associated with the given key system from the concatenated\n * list of PSSH boxes in the provided initData.\n *\n * @param uuid - The desired key system UUID\n * @param initData - 'cenc' initialization data. Concatenated list of PSSH boxes.\n * @returns The PSSH box ArrayBuffer corresponding to the given key system, or null if not found.\n *\n * @group DRM\n * @beta\n *\n * @example\n * {@includeCode ../../../test/drm/cenc/getPsshForKeySystem.test.ts#example}\n */\nexport function getPsshForKeySystem(uuid, initData) {\n if (!initData || !uuid) {\n return null;\n }\n const psshList = parsePsshList(initData);\n return psshList[uuid.toLowerCase()] || null;\n}\n//# sourceMappingURL=getPsshForKeySystem.js.map","/**\n * Parse a standard common encryption PSSH which contains a simple\n * base64-encoding of the init data\n *\n * @param cpData - The ContentProtection element that may contain PSSH data.\n * @param BASE64 - The BASE64 reference.\n * @returns init data as an ArrayBuffer, or null if not found.\n *\n * @group DRM\n * @beta\n *\n * @example\n * {@includeCode ../../../test/drm/cenc/parseInitDataFromContentProtection.test.ts#example}\n */\nexport function parseInitDataFromContentProtection(cpData, BASE64) {\n if ((cpData === null || cpData === void 0 ? void 0 : cpData.pssh) && cpData.pssh) {\n const cleanedText = cpData.pssh.replace(/\\r?\\n|\\r/g, '').replace(/\\s+/g, '');\n return BASE64.decodeArray(cleanedText).buffer;\n }\n return null;\n}\n//# sourceMappingURL=parseInitDataFromContentProtection.js.map","/**\n * Creates a valid KeySystemConfiguration from supported audio and video capabilities.\n *\n * @param supportedAudio - supported audio capabilities.\n * @param supportedVideo - supported video capabilities.\n * @returns KeySystemConfiguration object.\n *\n * @group DRM\n * @beta\n *\n * @example\n * {@includeCode ../../../test/drm/keysystem/createMediaKeySystemConfiguration.test.ts#example}\n */\nexport function createMediaKeySystemConfiguration(supportedAudio, supportedVideo) {\n const config = {};\n if (supportedAudio && supportedAudio.length > 0) {\n config.audioCapabilities = supportedAudio;\n }\n if (supportedVideo && supportedVideo.length > 0) {\n config.videoCapabilities = supportedVideo;\n }\n // default values\n config.distinctiveIdentifier = 'optional';\n config.persistentState = 'optional';\n config.sessionTypes = ['temporary'];\n return config;\n}\n//# sourceMappingURL=createMediaKeySystemConfiguration.js.map","/**\n * Attempts to get key system access using requestMediaKeySystemAccess from EME.\n *\n * @param requests - An array of key system access requests.\n * @returns MediaKeySystemAccess object if successful, or null if no system is supported.\n *\n * @group DRM\n * @beta\n */\nexport async function getKeySystemAccess(requests) {\n for (const { keySystem, configurations } of requests) {\n try {\n return await navigator.requestMediaKeySystemAccess(keySystem, configurations);\n }\n catch {\n // legacy approach could be used here\n }\n }\n return null;\n}\n//# sourceMappingURL=getKeySystemAccess.js.map","const isTypeSupported = (typeof MediaKeys !== 'undefined' && typeof MediaKeys.isTypeSupported === 'function') ? MediaKeys.isTypeSupported : undefined;\n/**\n * Filters and returns the supported key system configuration for a given system string.\n *\n * @param keySystem - Key system string such as 'com.widevine.alpha'\n * @param configs - An array of key system configurations.\n * @returns The first supported configuration or null if none are supported.\n *\n * @group DRM\n * @beta\n */\nexport function getSupportedKeySystemConfiguration(keySystem, configs) {\n if (!configs || typeof isTypeSupported === 'undefined') {\n return { supportedAudio: [], supportedVideo: [] };\n }\n for (const config of configs) {\n const audios = config.audioCapabilities || [];\n const videos = config.videoCapabilities || [];\n const supportedAudio = audios.filter(audio => { var _a; return isTypeSupported(keySystem, (_a = audio.contentType) !== null && _a !== void 0 ? _a : ''); });\n const supportedVideo = videos.filter(video => { var _a; return isTypeSupported(keySystem, (_a = video.contentType) !== null && _a !== void 0 ? _a : ''); });\n const hasAudio = supportedAudio.length > 0;\n const hasVideo = supportedVideo.length > 0;\n if (hasAudio || hasVideo) {\n return { supportedAudio, supportedVideo };\n }\n }\n return { supportedAudio: [], supportedVideo: [] };\n}\n//# sourceMappingURL=getSupportedKeySystemConfiguration.js.map","import { createMediaKeySystemConfiguration } from './createMediaKeySystemConfiguration.js';\nimport { getSupportedKeySystemConfiguration } from './getSupportedKeySystemConfiguration.js';\n/**\n * Fallback method to get key system access using legacy MediaKeys.isTypeSupported().\n *\n * @param requests - An array of key system access requests.\n * @returns A KeySystemAccess object if successful, or null if no system is supported.\n *\n * @group DRM\n * @beta\n */\nexport function getLegacyKeySystemAccess(requests) {\n for (const { keySystem, configurations } of requests) {\n const supportedConfig = getSupportedKeySystemConfiguration(keySystem, configurations);\n if (supportedConfig) {\n const configuration = createMediaKeySystemConfiguration(supportedConfig.supportedAudio, supportedConfig.supportedVideo);\n return {\n keySystem,\n configurations: [configuration],\n };\n }\n }\n return null;\n}\n//# sourceMappingURL=getLegacyKeySystemAccess.js.map","/**\n * Converts a string to a Uint16Array.\n *\n * @param str - The string to convert\n * @returns A Uint16Array representation of the string\n *\n * @group Utils\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/utils/stringToUint16.test.ts#example}\n */\nexport function stringToUint16(str) {\n const buffer = new ArrayBuffer(str.length * 2);\n const view = new DataView(buffer);\n for (let i = 0; i < str.length; i++) {\n view.setUint16(i * 2, str.charCodeAt(i), true); // true for little-endian\n }\n return new Uint16Array(buffer);\n}\n//# sourceMappingURL=stringToUint16.js.map","import { stringToUint16 } from '../../utils/stringToUint16.js';\n/**\n * Concatenates InitData, ID, and Certificate for FairPlay DRM.\n *\n * @param initData - The initialization data (PSSH box)\n * @param id - The content ID (string or Uint16Array)\n * @param cert - The application certificate (Uint8Array)\n * @returns A Uint8Array containing the concatenated data\n *\n * @group DRM\n * @beta\n *\n * @example\n * {@includeCode ../../../test/drm/fairplay/concatInitDataIdAndCertificate.test.ts#example}\n */\nexport function concatInitDataIdAndCertificate(initData, id, cert) {\n if (typeof id === 'string') {\n id = stringToUint16(id);\n }\n const buffer = new ArrayBuffer(initData.byteLength + 4 + id.byteLength + 4 + cert.byteLength);\n const dataView = new DataView(buffer);\n let offset = 0;\n new Uint8Array(buffer, offset, initData.byteLength).set(initData);\n offset += initData.byteLength;\n dataView.setUint32(offset, id.byteLength, true);\n offset += 4;\n new Uint16Array(buffer, offset, id.length).set(id);\n offset += id.byteLength;\n dataView.setUint32(offset, cert.byteLength, true);\n offset += 4;\n new Uint8Array(buffer, offset, cert.byteLength).set(cert);\n return new Uint8Array(buffer);\n}\n//# sourceMappingURL=concatInitDataIdAndCertificate.js.map","import { decodeBase64 } from '../../utils/decodeBase64.js';\n/**\n * Decodes a FairPlay DRM license response.\n *\n * @param response - The license response, either a base64 string or ArrayBuffer\n * @returns A Uint8Array containing the decoded license\n *\n * @group DRM\n * @beta\n *\n * @example\n * {@includeCode ../../../test/drm/fairplay/decodeFairPlayLicense.test.ts#example}\n */\nexport function decodeFairPlayLicense(response) {\n return typeof response === 'string'\n ? decodeBase64(response)\n : new Uint8Array(response);\n}\n//# sourceMappingURL=decodeFairPlayLicense.js.map","/**\n * UTF-16 Encoding.\n *\n * @group Utils\n *\n * @beta\n */\nexport const UTF_16 = 'utf-16';\n//# sourceMappingURL=UTF_16.js.map","/**\n * UTF-16 Big Endian Encoding.\n *\n * @group Utils\n *\n * @beta\n */\nexport const UTF_16_BE = 'utf-16be';\n//# sourceMappingURL=UTF_16_BE.js.map","/**\n * UTF-16 Little Endian Encoding.\n *\n * @group Utils\n *\n * @beta\n */\nexport const UTF_16_LE = 'utf-16le';\n//# sourceMappingURL=UTF_16_LE.js.map","/**\n * UTF-8 Encoding.\n *\n * @group Utils\n *\n * @beta\n */\nexport const UTF_8 = 'utf-8';\n//# sourceMappingURL=UTF_8.js.map","import { UTF_16 } from './UTF_16.js';\nimport { UTF_16_BE } from './UTF_16_BE.js';\nimport { UTF_16_LE } from './UTF_16_LE.js';\nimport { UTF_8 } from './UTF_8.js';\n/**\n * Converts an ArrayBuffer or ArrayBufferView to a string. Similar to `TextDecoder.decode`\n * but with a fallback for environments that don't support `TextDecoder`.\n *\n * @param data - The data to decode.\n * @param options - The options for the decoding.\n * @returns The string representation of the ArrayBuffer.\n *\n * @group Utils\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/utils/decodeText.test.ts#example}\n */\nexport function decodeText(data, options = {}) {\n let view;\n if (data instanceof ArrayBuffer) {\n view = new DataView(data);\n }\n else {\n view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n }\n let byteOffset = 0;\n let { encoding } = options;\n // If no encoding is provided, try to detect it from the BOM\n if (!encoding) {\n const first = view.getUint8(0);\n const second = view.getUint8(1);\n // UTF-8 BOM\n if (first == 0xef && second == 0xbb && view.getUint8(2) == 0xbf) {\n encoding = UTF_8;\n byteOffset = 3;\n }\n // UTF-16 BE BOM\n else if (first == 0xfe && second == 0xff) {\n encoding = UTF_16_BE;\n byteOffset = 2;\n }\n // UTF-16 LE BOM\n else if (first == 0xff && second == 0xfe) {\n encoding = UTF_16_LE;\n byteOffset = 2;\n }\n else {\n encoding = UTF_8;\n }\n }\n if (typeof TextDecoder !== 'undefined') {\n return new TextDecoder(encoding).decode(view);\n }\n const { byteLength } = view;\n const endian = encoding !== UTF_16_BE;\n let str = '';\n let char;\n while (byteOffset < byteLength) {\n switch (encoding) {\n case UTF_8:\n char = view.getUint8(byteOffset);\n // Single byte (ASCII)\n if (char < 128) {\n byteOffset++;\n }\n // 2-byte sequence\n else if (char >= 194 && char <= 223) {\n if (byteOffset + 1 < byteLength) {\n const byte2 = view.getUint8(byteOffset + 1);\n if (byte2 >= 128 && byte2 <= 191) {\n char = ((char & 0x1F) << 6) | (byte2 & 0x3F);\n byteOffset += 2;\n }\n else {\n // Invalid sequence, skip\n byteOffset++;\n }\n }\n else {\n // Incomplete sequence, skip\n byteOffset++;\n }\n }\n // 3-byte sequence\n else if (char >= 224 && char <= 239) {\n if (byteOffset + 2 <= byteLength - 1) {\n const byte2 = view.getUint8(byteOffset + 1);\n const byte3 = view.getUint8(byteOffset + 2);\n if (byte2 >= 128 && byte2 <= 191 && byte3 >= 128 && byte3 <= 191) {\n char = ((char & 0x0F) << 12) | ((byte2 & 0x3F) << 6) | (byte3 & 0x3F);\n byteOffset += 3;\n }\n else {\n // Invalid sequence, skip\n byteOffset++;\n }\n }\n else {\n // Incomplete sequence, skip\n byteOffset++;\n }\n }\n // 4-byte sequence\n else if (char >= 240 && char <= 244) {\n if (byteOffset + 3 <= byteLength - 1) {\n const byte2 = view.getUint8(byteOffset + 1);\n const byte3 = view.getUint8(byteOffset + 2);\n const byte4 = view.getUint8(byteOffset + 3);\n if (byte2 >= 128 && byte2 <= 191 && byte3 >= 128 && byte3 <= 191 && byte4 >= 128 && byte4 <= 191) {\n char = ((char & 0x07) << 18) | ((byte2 & 0x3F) << 12) | ((byte3 & 0x3F) << 6) | (byte4 & 0x3F);\n byteOffset += 4;\n }\n else {\n // Invalid sequence, skip\n byteOffset++;\n }\n }\n else {\n // Incomplete sequence, skip\n byteOffset++;\n }\n }\n // Invalid byte, skip\n else {\n byteOffset++;\n }\n break;\n case UTF_16_BE:\n case UTF_16:\n case UTF_16_LE:\n char = view.getUint16(byteOffset, endian);\n byteOffset += 2;\n break;\n }\n str += String.fromCodePoint(char);\n }\n return str;\n}\n//# sourceMappingURL=decodeText.js.map","import { decodeText } from '../../utils/decodeText.js';\nimport { UTF_16 } from '../../utils/UTF_16.js';\n/**\n * Extracts the content ID from InitData using skd:// URI or query parameters.\n *\n * @param initData - The initialization data (PSSH box)\n * @returns The extracted content ID\n *\n * @group DRM\n * @beta\n *\n * @example\n * {@includeCode ../../../test/drm/fairplay/extractContentId.test.ts#example}\n */\nexport function extractContentId(initData, encoding = UTF_16) {\n const initDataString = decodeText(initData, { encoding });\n // Try extracting skd:// content ID\n return initDataString.split('skd://')[1] || '';\n}\n//# sourceMappingURL=extractContentId.js.map","import { extractContentId } from './extractContentId.js';\n/**\n * Extracts the content ID from the license server URL or InitData.\n *\n * @param licenseServerUrl - The license server URL\n * @param initData - The initialization data (PSSH box)\n * @param queryParam - The query parameter key to extract (default: 'ContentId')\n * @returns The extracted content ID as a string or null if not found\n *\n * @group DRM\n * @beta\n *\n * @example\n * {@includeCode ../../../test/drm/fairplay/getId.test.ts#example}\n */\nexport function getId(licenseServerUrl, initData, queryParam = 'ContentId') {\n try {\n const url = new URL(licenseServerUrl);\n const params = new URLSearchParams(url.search);\n return params.get(queryParam) || extractContentId(initData);\n }\n catch {\n // in case if URL parsing fails,\n // fallback to extracting from initData\n return extractContentId(initData);\n }\n}\n//# sourceMappingURL=getId.js.map","/**\n * Retrieves the FairPlay license server URL from InitData.\n *\n * @param initData - The initialization data (PSSH box)\n * @returns The license server URL as a string\n *\n * @group DRM\n * @beta\n *\n * @example\n * {@includeCode ../../../test/drm/fairplay/getLicenseServerUrl.test.ts#example}\n */\nexport function getLicenseServerUrl(initData) {\n let initDataString = '';\n for (let i = 0; i < initData.length; i++) {\n if (initData[i] !== 0) { // Ignore null characters\n initDataString += String.fromCharCode(initData[i]);\n }\n }\n const match = initDataString.match(/skd:\\/\\/([^\"\\s]+)/);\n return match ? `https://${match[1]}` : '';\n}\n//# sourceMappingURL=getLicenseServerUrl.js.map","/**\n * Recursively finds all elements by name within an XML structure.\n *\n * @param node - The current XML node to search within.\n * @param name - The name of the target nodes to find.\n * @param found - An array to collect matching nodes.\n * @returns An array of all matching XmlNodes.\n *\n * @group XML\n *\n * @beta\n *\n */\nexport function getElementsByName(node, name, found = []) {\n if (!node) {\n return found;\n }\n if (node.nodeName === name) {\n found.push(node);\n }\n if (node.childNodes) {\n for (const child of node.childNodes) {\n getElementsByName(child, name, found);\n }\n }\n return found;\n}\n//# sourceMappingURL=getElementsByName.js.map","const escapedHtml = /&(?:amp|lt|gt|quot|apos|nbsp|lrm|rlm|#[xX]?[0-9a-fA-F]+);/g;\n/**\n * Unescapes HTML entities\n *\n * @param text - The text to unescape\n * @returns The unescaped text\n *\n * @group Utils\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/utils/unescapeHtml.test.ts#example}\n */\nexport function unescapeHtml(text) {\n if (text.indexOf('&') === -1) {\n return text;\n }\n return text.replace(escapedHtml, (match) => {\n switch (match) {\n case '&amp;': return '&';\n case '&lt;': return '<';\n case '&gt;': return '>';\n case '&quot;': return '\"';\n case '&apos;': return '\\'';\n case '&nbsp;': return '\\u{a0}';\n case '&lrm;': return '\\u{200e}';\n case '&rlm;': return '\\u{200f}';\n default: {\n if (match[1] === '#') {\n const code = match[2] === 'x' || match[2] === 'X' ? parseInt(match.slice(3), 16) : parseInt(match.slice(2), 10);\n return String.fromCodePoint(code);\n }\n return match;\n }\n }\n });\n}\n//# sourceMappingURL=unescapeHtml.js.map","import { unescapeHtml } from '../utils/unescapeHtml.js';\n/**\n * Parse XML into a JS object with no validation and some failure tolerance\n *\n * @param input - The input XML string\n * @param options - Optional parsing options\n * @returns The parsed XML\n *\n * @group XML\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/xml/parseXml.test.ts#example}\n */\nexport function parseXml(input, options = {}) {\n let pos = options.pos || 0;\n const length = input.length;\n const keepComments = !!options.keepComments;\n const keepWhitespace = !!options.keepWhitespace;\n const openBracket = '<';\n const openBracketCC = '<'.charCodeAt(0);\n const closeBracket = '>';\n const closeBracketCC = '>'.charCodeAt(0);\n const minusCC = '-'.charCodeAt(0);\n const slashCC = '/'.charCodeAt(0);\n const questionCC = '?'.charCodeAt(0);\n const exclamationCC = '!'.charCodeAt(0);\n const singleQuoteCC = \"'\".charCodeAt(0);\n const doubleQuoteCC = '\"'.charCodeAt(0);\n const openCornerBracketCC = '['.charCodeAt(0);\n const closeCornerBracketCC = ']'.charCodeAt(0);\n const nameSpacer = '\\r\\n\\t>/= ';\n function createTextNode(value, nodeName = '#text') {\n return {\n nodeName,\n nodeValue: value,\n attributes: {},\n childNodes: [],\n };\n }\n /**\n * parsing a list of entries\n */\n function parseChildren(tagName = '') {\n const children = [];\n while (input[pos]) {\n if (input.charCodeAt(pos) == openBracketCC) {\n if (input.charCodeAt(pos + 1) === slashCC) {\n const closeStart = pos + 2;\n pos = input.indexOf(closeBracket, pos);\n if (!input.startsWith(tagName, closeStart)) {\n const parsedText = input.substring(0, pos).split('\\n');\n throw new Error('Unexpected close tag\\nLine: ' + (parsedText.length - 1) +\n '\\nColumn: ' + (parsedText[parsedText.length - 1].length + 1) +\n '\\nChar: ' + input[pos]);\n }\n if (pos + 1) {\n pos += 1;\n }\n return children;\n }\n else if (input.charCodeAt(pos + 1) === questionCC) {\n // xml declaration\n pos = input.indexOf(closeBracket, pos);\n pos++;\n continue;\n }\n else if (input.charCodeAt(pos + 1) === exclamationCC) {\n if (input.charCodeAt(pos + 2) == minusCC) {\n // comment support\n const startCommentPos = pos;\n while (pos !== -1 && !(input.charCodeAt(pos) === closeBracketCC && input.charCodeAt(pos - 1) == minusCC && input.charCodeAt(pos - 2) == minusCC && pos != -1)) {\n pos = input.indexOf(closeBracket, pos + 1);\n }\n if (pos === -1) {\n pos = length;\n }\n if (keepComments) {\n children.push(createTextNode(input.substring(startCommentPos, pos + 1), '#comment'));\n }\n }\n else if (input.charCodeAt(pos + 2) === openCornerBracketCC &&\n input.charCodeAt(pos + 8) === openCornerBracketCC &&\n input.startsWith('CDATA', pos + 3)) {\n // cdata\n const cdataEndIndex = input.indexOf(']]>', pos);\n if (cdataEndIndex == -1) {\n children.push(createTextNode(input.substr(pos + 9), '#cdata'));\n pos = length;\n }\n else {\n children.push(createTextNode(input.substring(pos + 9, cdataEndIndex), '#cdata'));\n pos = cdataEndIndex + 3;\n }\n continue;\n }\n else {\n // doctypesupport\n const startDoctype = pos + 1;\n pos += 2;\n let encapsuled = false;\n while ((input.charCodeAt(pos) !== closeBracketCC || encapsuled === true) && input[pos]) {\n if (input.charCodeAt(pos) === openCornerBracketCC) {\n encapsuled = true;\n }\n else if (encapsuled === true && input.charCodeAt(pos) === closeCornerBracketCC) {\n encapsuled = false;\n }\n pos++;\n }\n children.push(createTextNode(input.substring(startDoctype, pos), '#doctype'));\n }\n pos++;\n continue;\n }\n const node = parseNode();\n children.push(node);\n }\n else {\n const text = parseText();\n if (keepWhitespace) {\n if (text.length > 0) {\n children.push(createTextNode(text));\n }\n }\n else {\n const trimmed = text.trim();\n if (trimmed.length > 0) {\n children.push(createTextNode(trimmed));\n }\n }\n pos++;\n }\n }\n return children;\n }\n /**\n * returns the text outside of texts until the first '&lt;'\n */\n function parseText() {\n const start = pos;\n pos = input.indexOf(openBracket, pos) - 1;\n if (pos === -2) {\n pos = length;\n }\n return unescapeHtml(input.slice(start, pos + 1));\n }\n /**\n * returns text until the first nonAlphabetic letter\n */\n function parseName() {\n const start = pos;\n while (nameSpacer.indexOf(input[pos]) === -1 && input[pos]) {\n pos++;\n }\n return input.slice(start, pos);\n }\n /**\n * parses the attributes of a node\n */\n function parseAttributes() {\n const attributes = {};\n // parsing attributes\n while (input.charCodeAt(pos) !== closeBracketCC && input[pos]) {\n const c = input.charCodeAt(pos);\n if ((c > 64 && c < 91) || (c > 96 && c < 123)) {\n const name = parseName();\n let value = '';\n // search beginning of the string\n let code = input.charCodeAt(pos);\n while (code !== singleQuoteCC && code !== doubleQuoteCC) {\n pos++;\n code = input.charCodeAt(pos);\n }\n if (code === singleQuoteCC || code === doubleQuoteCC) {\n value = parseString();\n if (pos === -1) {\n throw new Error('Missing closing quote');\n }\n }\n else {\n pos--;\n }\n attributes[name] = unescapeHtml(value);\n }\n pos++;\n }\n return attributes;\n }\n /**\n * parses a node\n */\n function parseNode() {\n pos++;\n const nodeName = parseName();\n let localName = nodeName;\n let prefix = null;\n const nsIndex = nodeName.indexOf(':');\n if (nsIndex !== -1) {\n prefix = nodeName.slice(0, nsIndex);\n localName = nodeName.slice(nsIndex + 1);\n }\n const attributes = parseAttributes();\n let childNodes = [];\n // optional parsing of children\n const prev = input.charCodeAt(pos - 1);\n pos++;\n if (prev !== slashCC) {\n childNodes = parseChildren(nodeName);\n }\n return {\n nodeName,\n nodeValue: null,\n attributes,\n childNodes,\n prefix,\n localName,\n };\n }\n /**\n * is parsing a string, that starts with a char and with the same usually ' or \"\n */\n function parseString() {\n const startChar = input[pos];\n const startpos = pos + 1;\n pos = input.indexOf(startChar, startpos);\n return input.slice(startpos, pos);\n }\n return {\n nodeName: '#document',\n nodeValue: null,\n childNodes: parseChildren(''),\n attributes: {},\n };\n}\n//# sourceMappingURL=parseXml.js.map","/**\n * License Challenge.\n *\n * @group DRM\n *\n * @beta\n */\nexport const CHALLENGE = 'Challenge';\n//# sourceMappingURL=CHALLENGE.js.map","/**\n * Playready Key Message.\n *\n * @group DRM\n *\n * @beta\n */\nexport const PLAYREADY_KEY_MESSAGE = 'PlayReadyKeyMessage';\n//# sourceMappingURL=PLAYREADY_KEY_MESSAGE.js.map","import { UTF_16 } from '../../utils/UTF_16.js';\nimport { decodeBase64 } from '../../utils/decodeBase64.js';\nimport { decodeText } from '../../utils/decodeText.js';\nimport { getElementsByName } from '../../xml/getElementsByName.js';\nimport { parseXml } from '../../xml/parseXml.js';\nimport { CHALLENGE } from '../common/CHALLENGE.js';\nimport { PLAYREADY_KEY_MESSAGE } from '../common/PLAYREADY_KEY_MESSAGE.js';\n/**\n * Gets the PlayReady license request from the MediaKeyMessageEvent.\n *\n * @param message - An ArrayBuffer from the content decryption module.\n * @param encoding - The message encoding type. Default is UTF-16.\n * @returns The license request as an ArrayBuffer.\n *\n * @group DRM\n * @beta\n *\n * @example\n * {@includeCode ../../../test/drm/playready/getLicenseRequestFromMessage.test.ts#example}\n */\nexport function getLicenseRequestFromMessage(message, encoding = UTF_16) {\n var _a;\n // If encoding is configured for UTF-16 and the number of bytes is odd,\n // assume an 'unwrapped' raw CDM message.\n if (encoding === UTF_16 && (message === null || message === void 0 ? void 0 : message.byteLength) % 2 === 1) {\n return message;\n }\n const msg = decodeText(message, { encoding });\n const xml = parseXml(msg);\n const playReadyKeyMessage = getElementsByName(xml, PLAYREADY_KEY_MESSAGE)[0];\n if (!playReadyKeyMessage) {\n // The message from the CDM is not wrapped and contains the direct challenge.\n return message;\n }\n const challengeNode = getElementsByName(playReadyKeyMessage, CHALLENGE)[0];\n const challengeValue = (_a = challengeNode === null || challengeNode === void 0 ? void 0 : challengeNode.childNodes[0]) === null || _a === void 0 ? void 0 : _a.nodeValue;\n if (challengeValue) {\n return decodeBase64(challengeValue).buffer;\n }\n return message;\n}\n//# sourceMappingURL=getLicenseRequestFromMessage.js.map","/**\n * Content-Type header.\n *\n * @group DRM\n *\n * @beta\n */\nexport const CONTENT_TYPE = 'Content-Type';\n//# sourceMappingURL=CONTENT_TYPE.js.map","/**\n * Playready HTTP Headers.\n *\n * @group DRM\n *\n * @beta\n */\nexport const HTTP_HEADERS = 'HttpHeaders';\n//# sourceMappingURL=HTTP_HEADERS.js.map","/**\n * XML formatted, UTF-8 encoded, text header.\n *\n * @group DRM\n *\n * @beta\n */\nexport const TEXT_XML_UTF8 = 'text/xml; charset=utf-8';\n//# sourceMappingURL=TEXT_XML_UTF8.js.map","import { UTF_16 } from '../../utils/UTF_16.js';\nimport { decodeText } from '../../utils/decodeText.js';\nimport { getElementsByName } from '../../xml/getElementsByName.js';\nimport { parseXml } from '../../xml/parseXml.js';\nimport { CONTENT_TYPE } from '../common/CONTENT_TYPE.js';\nimport { HTTP_HEADERS } from '../common/HTTP_HEADERS.js';\nimport { TEXT_XML_UTF8 } from '../common/TEXT_XML_UTF8.js';\n/**\n * Gets the PlayReady license request headers from the MediaKeyMessageEvent.\n *\n * @param message - An ArrayBuffer from the content decryption module.\n * @param encoding - The message encoding type. Default is UTF-16.\n * @returns Request headers.\n *\n * @group DRM\n * @beta\n *\n * @example\n * {@includeCode ../../../test/drm/playready/getRequestHeadersFromMessage.test.ts#example}\n */\nexport function getRequestHeadersFromMessage(message, encoding = UTF_16) {\n var _a, _b, _c, _d, _e;\n const headers = {};\n // If message format configured/defaulted to utf-16 AND number of bytes is odd,\n // assume 'unwrapped' raw CDM message.\n if (encoding === UTF_16 && message && message.byteLength % 2 === 1) {\n headers[CONTENT_TYPE] = TEXT_XML_UTF8;\n return headers;\n }\n const msg = decodeText(message, { encoding });\n const xml = parseXml(msg);\n const httpHeaders = (_a = getElementsByName(xml, HTTP_HEADERS)[0]) === null || _a === void 0 ? void 0 : _a.childNodes;\n if (!httpHeaders) {\n return headers;\n }\n for (const header of httpHeaders) {\n const name = (_c = (_b = getElementsByName(header, 'name')[0]) === null || _b === void 0 ? void 0 : _b.childNodes[0]) === null || _c === void 0 ? void 0 : _c.nodeValue;\n const value = (_e = (_d = getElementsByName(header, 'value')[0]) === null || _d === void 0 ? void 0 : _d.childNodes[0]) === null || _e === void 0 ? void 0 : _e.nodeValue;\n if (name && value) {\n headers[name] = value;\n }\n }\n // Some versions of the PlayReady CDM return 'Content' instead of 'Content-Type'.\n // This does not adhere to the W3C spec and license servers may reject the request.\n if (headers.hasOwnProperty('Content')) {\n headers[CONTENT_TYPE] = headers['Content'];\n delete headers['Content'];\n }\n // Set 'Content-Type' header by default if not provided in the the CDM message\n // or if the message is unwrapped.\n if (!headers.hasOwnProperty(CONTENT_TYPE)) {\n headers[CONTENT_TYPE] = TEXT_XML_UTF8;\n }\n return headers;\n}\n//# sourceMappingURL=getRequestHeadersFromMessage.js.map","/**\n * Converts a 16-byte key ID from little-endian to big-endian format.\n *\n * @param keyId - The little-endian key ID to convert.\n * @returns The big-endian representation of the key ID.\n *\n * @group DRM\n * @beta\n *\n * @example\n * {@includeCode ../../../test/drm/playready/toBigEndianKeyId.test.ts#example}\n */\nexport function toBigEndianKeyId(keyId) {\n if (keyId.byteLength !== 16) {\n return keyId;\n }\n const buffer = keyId.slice(0);\n const dataView = new DataView(buffer);\n dataView.setUint32(0, dataView.getUint32(0, true), false);\n dataView.setUint16(4, dataView.getUint16(4, true), false);\n dataView.setUint16(6, dataView.getUint16(6, true), false);\n return buffer;\n}\n//# sourceMappingURL=toBigEndianKeyId.js.map","/**\n * Clear Key System.\n *\n * @group DRM\n *\n * @beta\n */\nexport const CLEAR_KEY_SYSTEM = 'org.w3.clearkey';\n//# sourceMappingURL=CLEAR_KEY_SYSTEM.js.map","/**\n * Clear Key UUID.\n *\n * @group DRM\n *\n * @beta\n */\nexport const CLEAR_KEY_UUID = 'e2719d58-a985-b3c9-781a-b030af78d30e';\n//# sourceMappingURL=CLEAR_KEY_UUID.js.map","import { CBCS } from './CBCS.js';\nimport { CENC } from './CENC.js';\n/**\n * Encryption schemes.\n *\n * @group DRM\n *\n * @beta\n */\nexport const EncryptionScheme = {\n CENC: CENC,\n CBCS: CBCS,\n};\n//# sourceMappingURL=EncryptionScheme.js.map","/**\n * Expired Media Key Status.\n *\n * @group DRM\n *\n * @beta\n */\nexport const EXPIRED = 'expired';\n//# sourceMappingURL=EXPIRED.js.map","/**\n * FairPlay Key System.\n *\n * @group DRM\n *\n * @beta\n */\nexport const FAIRPLAY_KEY_SYSTEM = 'com.apple.fps.1_0';\n//# sourceMappingURL=FAIRPLAY_KEY_SYSTEM.js.map","/**\n * FairPlay UUID.\n *\n * @group DRM\n *\n * @beta\n */\nexport const FAIRPLAY_UUID = '29701fe4-3cc7-4a34-8c5b-ae90c7439a47';\n//# sourceMappingURL=FAIRPLAY_UUID.js.map","/**\n * Hardware Secure All Robustness.\n *\n * @group DRM\n *\n * @beta\n */\nexport const HW_SECURE_ALL = 'HW_SECURE_ALL';\n//# sourceMappingURL=HW_SECURE_ALL.js.map","/**\n * Hardware Secure Crypto Robustness.\n *\n * @group DRM\n *\n * @beta\n */\nexport const HW_SECURE_CRYPTO = 'HW_SECURE_CRYPTO';\n//# sourceMappingURL=HW_SECURE_CRYPTO.js.map","/**\n * Hardware Secure Decode Robustness.\n *\n * @group DRM\n *\n * @beta\n */\nexport const HW_SECURE_DECODE = 'HW_SECURE_DECODE';\n//# sourceMappingURL=HW_SECURE_DECODE.js.map","/**\n * Individualization Request.\n *\n * @group DRM\n *\n * @beta\n */\nexport const INDIVIDUALIZATION_REQUEST = 'individualization-request';\n//# sourceMappingURL=INDIVIDUALIZATION_REQUEST.js.map","/**\n * Key IDs.\n *\n * @group DRM\n *\n * @beta\n */\nexport const KEYIDS = 'keyids';\n//# sourceMappingURL=KEYIDS.js.map","/**\n * WEBM.\n *\n * @group DRM\n *\n * @beta\n */\nexport const WEBM = 'webm';\n//# sourceMappingURL=WEBM.js.map","import { CBCS } from './CBCS.js';\nimport { CENC } from './CENC.js';\nimport { KEYIDS } from './KEYIDS.js';\nimport { WEBM } from './WEBM.js';\n/**\n * Initialization Data Type.\n *\n * @group DRM\n *\n * @beta\n */\nexport const InitializationDataType = {\n CENC: CENC,\n CBCS: CBCS,\n KEYIDS: KEYIDS,\n WEBM: WEBM,\n};\n//# sourceMappingURL=InitializationDataType.js.map","/**\n * Internal Error Media Key Status.\n *\n * @group DRM\n *\n * @beta\n */\nexport const INTERNAL_ERROR = 'internal-error';\n//# sourceMappingURL=INTERNAL_ERROR.js.map","/**\n * License Acquisition.\n *\n * @group DRM\n *\n * @beta\n */\nexport const LICENSE_ACQUISITION = 'LicenseAcquisition';\n//# sourceMappingURL=LICENSE_ACQUISITION.js.map","/**\n * License Release.\n *\n * @group DRM\n *\n * @beta\n */\nexport const LICENSE_RELEASE = 'license-release';\n//# sourceMappingURL=LICENSE_RELEASE.js.map","/**\n * License Renewal.\n *\n * @group DRM\n *\n * @beta\n */\nexport const LICENSE_RENEWAL = 'license-renewal';\n//# sourceMappingURL=LICENSE_RENEWAL.js.map","/**\n * License Request.\n *\n * @group DRM\n *\n * @beta\n */\nexport const LICENSE_REQUEST = 'license-request';\n//# sourceMappingURL=LICENSE_REQUEST.js.map","import { INDIVIDUALIZATION_REQUEST } from './INDIVIDUALIZATION_REQUEST.js';\nimport { LICENSE_RELEASE } from './LICENSE_RELEASE.js';\nimport { LICENSE_RENEWAL } from './LICENSE_RENEWAL.js';\nimport { LICENSE_REQUEST } from './LICENSE_REQUEST.js';\n/**\n * Media Key Message Types.\n *\n * @group DRM\n *\n * @beta\n */\nexport const MediaKeyMessageType = {\n LICENSE_REQUEST: LICENSE_REQUEST,\n LICENSE_RENEWAL: LICENSE_RENEWAL,\n LICENSE_RELEASE: LICENSE_RELEASE,\n INDIVIDUALIZATION_REQUEST: INDIVIDUALIZATION_REQUEST,\n};\n//# sourceMappingURL=MediaKeyMessageType.js.map","/**\n * Output Downscaled Media Key Status.\n *\n * @group DRM\n *\n * @beta\n */\nexport const OUTPUT_DOWNSCALED = 'output-downscaled';\n//# sourceMappingURL=OUTPUT_DOWNSCALED.js.map","/**\n * Output Restricted Media Key Status.\n *\n * @group DRM\n *\n * @beta\n */\nexport const OUTPUT_RESTRICTED = 'output-restricted';\n//# sourceMappingURL=OUTPUT_RESTRICTED.js.map","/**\n * Released Media Key Status.\n *\n * @group DRM\n *\n * @beta\n */\nexport const RELEASED = 'released';\n//# sourceMappingURL=RELEASED.js.map","/**\n * Status Pending Media Key Status.\n *\n * @group DRM\n *\n * @beta\n */\nexport const STATUS_PENDING = 'status-pending';\n//# sourceMappingURL=STATUS_PENDING.js.map","/**\n * Usable Media Key Status.\n *\n * @group DRM\n *\n * @beta\n */\nexport const USABLE = 'usable';\n//# sourceMappingURL=USABLE.js.map","import { EXPIRED } from './EXPIRED.js';\nimport { INTERNAL_ERROR } from './INTERNAL_ERROR.js';\nimport { OUTPUT_DOWNSCALED } from './OUTPUT_DOWNSCALED.js';\nimport { OUTPUT_RESTRICTED } from './OUTPUT_RESTRICTED.js';\nimport { RELEASED } from './RELEASED.js';\nimport { STATUS_PENDING } from './STATUS_PENDING.js';\nimport { USABLE } from './USABLE.js';\n/**\n * Media Key Statuses.\n *\n * @group DRM\n *\n * @beta\n */\nexport const MediaKeyStatus = {\n USABLE: USABLE,\n EXPIRED: EXPIRED,\n RELEASED: RELEASED,\n OUTPUT_RESTRICTED: OUTPUT_RESTRICTED,\n OUTPUT_DOWNSCALED: OUTPUT_DOWNSCALED,\n STATUS_PENDING: STATUS_PENDING,\n INTERNAL_ERROR: INTERNAL_ERROR,\n};\n//# sourceMappingURL=MediaKeyStatus.js.map","/**\n * Playready Key System.\n *\n * @group DRM\n *\n * @beta\n */\nexport const PLAYREADY_KEY_SYSTEM = 'com.microsoft.playready';\n//# sourceMappingURL=PLAYREADY_KEY_SYSTEM.js.map","/**\n * Playready Recommendation Key System.\n *\n * @group DRM\n *\n * @beta\n */\nexport const PLAYREADY_RECOMMENDATION_KEY_SYSTEM = 'com.microsoft.playready.recommendation';\n//# sourceMappingURL=PLAYREADY_RECOMMENDATION_KEY_SYSTEM.js.map","/**\n * Playready UUID.\n *\n * @group DRM\n *\n * @beta\n */\nexport const PLAYREADY_UUID = '9a04f079-9840-4286-ab92-e65be0885f95';\n//# sourceMappingURL=PLAYREADY_UUID.js.map","/**\n * Software Secure Crypto Robustness.\n *\n * @group DRM\n *\n * @beta\n */\nexport const SW_SECURE_CRYPTO = 'SW_SECURE_CRYPTO';\n//# sourceMappingURL=SW_SECURE_CRYPTO.js.map","/**\n * Software Secure Decode Robustness.\n *\n * @group DRM\n *\n * @beta\n */\nexport const SW_SECURE_DECODE = 'SW_SECURE_DECODE';\n//# sourceMappingURL=SW_SECURE_DECODE.js.map","/**\n * W3C Clear Key UUID.\n *\n * @group DRM\n *\n * @beta\n */\nexport const W3C_CLEAR_KEY_UUID = '1077efec-c0b2-4d02-ace3-3c1e52e2fb4b';\n//# sourceMappingURL=W3C_CLEAR_KEY_UUID.js.map","/**\n * Widevine Key System.\n *\n * @group DRM\n *\n * @beta\n */\nexport const WIDEVINE_KEY_SYSTEM = 'com.widevine.alpha';\n//# sourceMappingURL=WIDEVINE_KEY_SYSTEM.js.map","/**\n * Widevine UUID.\n *\n * @group DRM\n *\n * @beta\n */\nexport const WIDEVINE_UUID = 'edef8ba9-79d6-4ace-a3c8-27dcd51d21ed';\n//# sourceMappingURL=WIDEVINE_UUID.js.map","import { HW_SECURE_ALL } from './HW_SECURE_ALL.js';\nimport { HW_SECURE_CRYPTO } from './HW_SECURE_CRYPTO.js';\nimport { HW_SECURE_DECODE } from './HW_SECURE_DECODE.js';\nimport { SW_SECURE_CRYPTO } from './SW_SECURE_CRYPTO.js';\nimport { SW_SECURE_DECODE } from './SW_SECURE_DECODE.js';\n/**\n * Widevine Robustness.\n *\n * @group DRM\n *\n * @beta\n */\nexport const WidevineRobustness = {\n SW_SECURE_CRYPTO: SW_SECURE_CRYPTO,\n SW_SECURE_DECODE: SW_SECURE_DECODE,\n HW_SECURE_CRYPTO: HW_SECURE_CRYPTO,\n HW_SECURE_DECODE: HW_SECURE_DECODE,\n HW_SECURE_ALL: HW_SECURE_ALL,\n};\n//# sourceMappingURL=WidevineRobustness.js.map","/**\n * Returns true if an ID3 header can be found at offset in data\n *\n * @param data - The data to search in\n * @param offset - The offset at which to start searching\n *\n * @returns `true` if an ID3 header is found\n *\n * @internal\n *\n * @group ID3\n */\nexport function isId3Header(data, offset) {\n /*\n * http://id3.org/id3v2.3.0\n * [0] = 'I'\n * [1] = 'D'\n * [2] = '3'\n * [3,4] = {Version}\n * [5] = {Flags}\n * [6-9] = {ID3 Size}\n *\n * An ID3v2 tag can be detected with the following pattern:\n * $49 44 33 yy yy xx zz zz zz zz\n * Where yy is less than $FF, xx is the 'flags' byte and zz is less than $80\n */\n if (offset + 10 <= data.length) {\n // look for 'ID3' identifier\n if (data[offset] === 0x49 &&\n data[offset + 1] === 0x44 &&\n data[offset + 2] === 0x33) {\n // check version is within range\n if (data[offset + 3] < 0xff && data[offset + 4] < 0xff) {\n // check size is within range\n if (data[offset + 6] < 0x80 &&\n data[offset + 7] < 0x80 &&\n data[offset + 8] < 0x80 &&\n data[offset + 9] < 0x80) {\n return true;\n }\n }\n }\n }\n return false;\n}\n//# sourceMappingURL=isId3Header.js.map","/**\n * Read ID3 size\n *\n * @param data - The data to read from\n * @param offset - The offset at which to start reading\n *\n * @returns The size\n *\n * @internal\n *\n * @group ID3\n */\nexport function readId3Size(data, offset) {\n let size = 0;\n size = (data[offset] & 0x7f) << 21;\n size |= (data[offset + 1] & 0x7f) << 14;\n size |= (data[offset + 2] & 0x7f) << 7;\n size |= data[offset + 3] & 0x7f;\n return size;\n}\n//# sourceMappingURL=readId3Size.js.map","import { isId3Header } from './util/isId3Header.js';\nimport { readId3Size } from './util/readId3Size.js';\n/**\n * Checks if the given data contains an ID3 tag.\n *\n * @param data - The data to check\n * @param offset - The offset at which to start checking\n *\n * @returns `true` if an ID3 tag is found\n *\n * @group ID3\n *\n * @beta\n */\nexport function canParseId3(data, offset) {\n return (isId3Header(data, offset) &&\n readId3Size(data, offset + 6) + 10 <= data.length - offset);\n}\n//# sourceMappingURL=canParseId3.js.map","/**\n * Returns true if an ID3 footer can be found at offset in data\n *\n * @param data - The data to search in\n * @param offset - The offset at which to start searching\n *\n * @returns `true` if an ID3 footer is found\n *\n * @internal\n *\n * @group ID3\n */\nexport function isId3Footer(data, offset) {\n /*\n * The footer is a copy of the header, but with a different identifier\n */\n if (offset + 10 <= data.length) {\n // look for '3DI' identifier\n if (data[offset] === 0x33 &&\n data[offset + 1] === 0x44 &&\n data[offset + 2] === 0x49) {\n // check version is within range\n if (data[offset + 3] < 0xff && data[offset + 4] < 0xff) {\n // check size is within range\n if (data[offset + 6] < 0x80 &&\n data[offset + 7] < 0x80 &&\n data[offset + 8] < 0x80 &&\n data[offset + 9] < 0x80) {\n return true;\n }\n }\n }\n }\n return false;\n}\n//# sourceMappingURL=isId3Footer.js.map","import { isId3Footer } from './util/isId3Footer.js';\nimport { isId3Header } from './util/isId3Header.js';\nimport { readId3Size } from './util/readId3Size.js';\n/**\n * Returns any adjacent ID3 tags found in data starting at offset, as one block of data\n *\n * @param data - The data to search in\n * @param offset - The offset at which to start searching\n *\n * @returns The block of data containing any ID3 tags found\n * or `undefined` if no header is found at the starting offset\n *\n * @internal\n *\n * @group ID3\n */\nexport function getId3Data(data, offset) {\n const front = offset;\n let length = 0;\n while (isId3Header(data, offset)) {\n // ID3 header is 10 bytes\n length += 10;\n const size = readId3Size(data, offset + 6);\n length += size;\n if (isId3Footer(data, offset + 10)) {\n // ID3 footer is 10 bytes\n length += 10;\n }\n offset += length;\n }\n if (length > 0) {\n return data.subarray(front, front + length);\n }\n return undefined;\n}\n//# sourceMappingURL=getId3Data.js.map","import { decodeText } from './decodeText.js';\nimport { UTF_8 } from './UTF_8.js';\n/**\n * Converts a UTF-8 array to a string.\n *\n * @param array - The UTF-8 array to convert\n * @param exitOnNull - Whether to exit on the first null byte\n *\n * @returns The string\n *\n * @group Utils\n *\n * @beta\n *\n * @deprecated This function is a special case of {@link decodeText} that is used by the ID3 library to decode UTF-8 encoded strings. Use {@link decodeText} instead.\n */\nexport function utf8ArrayToStr(array, exitOnNull = false) {\n const byteLength = exitOnNull ? array.indexOf(0) : array.length;\n const view = new DataView(array.buffer, array.byteOffset, byteLength);\n const result = decodeText(view, { encoding: UTF_8 });\n return exitOnNull ? result : result.replace(/\\0/g, '');\n}\n//# sourceMappingURL=utf8ArrayToStr.js.map","export function toArrayBuffer(view) {\n if (view instanceof ArrayBuffer) {\n return view;\n }\n else {\n if (view.byteOffset == 0 && view.byteLength == view.buffer.byteLength) {\n // This is a TypedArray over the whole buffer.\n return view.buffer;\n }\n // This is a 'view' on the buffer. Create a new buffer that only contains\n // the data. Note that since this isn't an ArrayBuffer, the 'new' call\n // will allocate a new buffer to hold the copy.\n return new Uint8Array(view).buffer;\n }\n}\n//# sourceMappingURL=toArrayBuffer.js.map","export function toUint8(data, offset = 0, length = Infinity) {\n return view(data, offset, length, Uint8Array);\n}\nfunction view(data, offset, length, Type) {\n const buffer = unsafeGetArrayBuffer(data);\n let bytesPerElement = 1;\n if ('BYTES_PER_ELEMENT' in Type) {\n bytesPerElement = Type.BYTES_PER_ELEMENT;\n }\n // Absolute end of the |data| view within |buffer|.\n const dataOffset = isArrayBufferView(data) ? data.byteOffset : 0;\n const dataEnd = ((dataOffset) + data.byteLength) / bytesPerElement;\n // Absolute start of the result within |buffer|.\n const rawStart = ((dataOffset) + offset) / bytesPerElement;\n const start = Math.floor(Math.max(0, Math.min(rawStart, dataEnd)));\n // Absolute end of the result within |buffer|.\n const end = Math.floor(Math.min(start + Math.max(length, 0), dataEnd));\n return new Type(buffer, start, end - start);\n}\nfunction unsafeGetArrayBuffer(view) {\n if (view instanceof ArrayBuffer) {\n return view;\n }\n else {\n return view.buffer;\n }\n}\nfunction isArrayBufferView(obj) {\n return obj && obj.buffer instanceof ArrayBuffer && obj.byteLength !== undefined && obj.byteOffset !== undefined;\n}\n//# sourceMappingURL=utf8.js.map","import { utf8ArrayToStr } from '../../utils/utf8ArrayToStr.js';\nimport { toArrayBuffer } from './toArrayBuffer.js';\nimport { toUint8 } from './utf8.js';\nexport function decodeId3ImageFrame(frame) {\n const metadataFrame = {\n key: frame.type,\n description: '',\n data: '',\n mimeType: null,\n pictureType: null,\n };\n const utf8Encoding = 0x03;\n if (frame.size < 2) {\n return undefined;\n }\n if (frame.data[0] !== utf8Encoding) {\n console.log('Ignore frame with unrecognized character ' + 'encoding');\n return undefined;\n }\n const mimeTypeEndIndex = frame.data.subarray(1).indexOf(0);\n if (mimeTypeEndIndex === -1) {\n return undefined;\n }\n const mimeType = utf8ArrayToStr(toUint8(frame.data, 1, mimeTypeEndIndex));\n const pictureType = frame.data[2 + mimeTypeEndIndex];\n const descriptionEndIndex = frame.data\n .subarray(3 + mimeTypeEndIndex)\n .indexOf(0);\n if (descriptionEndIndex === -1) {\n return undefined;\n }\n const description = utf8ArrayToStr(toUint8(frame.data, 3 + mimeTypeEndIndex, descriptionEndIndex));\n let data;\n if (mimeType === '-->') {\n data = utf8ArrayToStr(toUint8(frame.data, 4 + mimeTypeEndIndex + descriptionEndIndex));\n }\n else {\n data = toArrayBuffer(frame.data.subarray(4 + mimeTypeEndIndex + descriptionEndIndex));\n }\n metadataFrame.mimeType = mimeType;\n metadataFrame.pictureType = pictureType;\n metadataFrame.description = description;\n metadataFrame.data = data;\n return metadataFrame;\n}\n//# sourceMappingURL=decodeId3ImageFrame.js.map","import { utf8ArrayToStr } from '../../utils/utf8ArrayToStr.js';\n/**\n * Decode an ID3 PRIV frame.\n *\n * @param frame - the ID3 PRIV frame\n *\n * @returns The decoded ID3 PRIV frame\n *\n * @internal\n *\n * @group ID3\n */\nexport function decodeId3PrivFrame(frame) {\n /*\n Format: <text string>\\0<binary data>\n */\n if (frame.size < 2) {\n return undefined;\n }\n const owner = utf8ArrayToStr(frame.data, true);\n const privateData = new Uint8Array(frame.data.subarray(owner.length + 1));\n return { key: frame.type, info: owner, data: privateData.buffer };\n}\n//# sourceMappingURL=decodeId3PrivFrame.js.map","import { utf8ArrayToStr } from '../../utils/utf8ArrayToStr.js';\n/**\n * Decodes an ID3 text frame\n *\n * @param frame - the ID3 text frame\n *\n * @returns The decoded ID3 text frame\n *\n * @internal\n *\n * @group ID3\n */\nexport function decodeId3TextFrame(frame) {\n if (frame.size < 2) {\n return undefined;\n }\n if (frame.type === 'TXXX') {\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Description}\\0{Value}\n */\n let index = 1;\n const { data } = frame;\n const description = utf8ArrayToStr(data.subarray(index), true);\n index += description.length + 1;\n const value = utf8ArrayToStr(data.subarray(index));\n return { key: frame.type, info: description, data: value };\n }\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Value}\n */\n const text = utf8ArrayToStr(frame.data.subarray(1));\n return { key: frame.type, info: '', data: text };\n}\n//# sourceMappingURL=decodeId3TextFrame.js.map","import { utf8ArrayToStr } from '../../utils/utf8ArrayToStr.js';\n/**\n * Decode a URL frame\n *\n * @param frame - the ID3 URL frame\n *\n * @returns The decoded ID3 URL frame\n *\n * @internal\n *\n * @group ID3\n */\nexport function decodeId3UrlFrame(frame) {\n if (frame.type === 'WXXX') {\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Description}\\0{URL}\n */\n if (frame.size < 2) {\n return undefined;\n }\n let index = 1;\n const description = utf8ArrayToStr(frame.data.subarray(index), true);\n index += description.length + 1;\n const value = utf8ArrayToStr(frame.data.subarray(index));\n return { key: frame.type, info: description, data: value };\n }\n /*\n Format:\n [0-?] = {URL}\n */\n const url = utf8ArrayToStr(frame.data);\n return { key: frame.type, info: '', data: url };\n}\n//# sourceMappingURL=decodeId3UrlFrame.js.map","import { decodeId3ImageFrame } from './decodeId3ImageFrame.js';\nimport { decodeId3PrivFrame } from './decodeId3PrivFrame.js';\nimport { decodeId3TextFrame } from './decodeId3TextFrame.js';\nimport { decodeId3UrlFrame } from './decodeId3UrlFrame.js';\n/**\n * Decode an ID3 frame.\n *\n * @param frame - the ID3 frame\n *\n * @returns The decoded ID3 frame\n *\n * @internal\n *\n * @group ID3\n */\nexport function decodeId3Frame(frame) {\n if (frame.type === 'PRIV') {\n return decodeId3PrivFrame(frame);\n }\n else if (frame.type[0] === 'W') {\n return decodeId3UrlFrame(frame);\n }\n else if (frame.type === 'APIC') {\n return decodeId3ImageFrame(frame);\n }\n return decodeId3TextFrame(frame);\n}\n//# sourceMappingURL=decodeId3Frame.js.map","import { readId3Size } from './readId3Size.js';\n/**\n * Returns the data of an ID3 frame.\n *\n * @param data - The data to read from\n *\n * @returns The data of the ID3 frame\n *\n * @internal\n *\n * @group ID3\n */\nexport function getId3FrameData(data) {\n /*\n Frame ID $xx xx xx xx (four characters)\n Size $xx xx xx xx\n Flags $xx xx\n */\n const type = String.fromCharCode(data[0], data[1], data[2], data[3]);\n const size = readId3Size(data, 4);\n // skip frame id, size, and flags\n const offset = 10;\n return { type, size, data: data.subarray(offset, offset + size) };\n}\n//# sourceMappingURL=getId3FrameData.js.map","import { decodeId3Frame } from './util/decodeId3Frame.js';\nimport { getId3FrameData } from './util/getId3FrameData.js';\nimport { isId3Footer } from './util/isId3Footer.js';\nimport { isId3Header } from './util/isId3Header.js';\nimport { readId3Size } from './util/readId3Size.js';\nconst HEADER_FOOTER_SIZE = 10;\nconst FRAME_SIZE = 10;\n/**\n * Returns an array of ID3 frames found in all the ID3 tags in the id3Data\n *\n * @param id3Data - The ID3 data containing one or more ID3 tags\n *\n * @returns Array of ID3 frame objects\n *\n * @group ID3\n *\n * @beta\n */\nexport function getId3Frames(id3Data) {\n let offset = 0;\n const frames = [];\n while (isId3Header(id3Data, offset)) {\n const size = readId3Size(id3Data, offset + 6);\n if ((id3Data[offset + 5] >> 6) & 1) {\n // skip extended header\n offset += HEADER_FOOTER_SIZE;\n }\n // skip past ID3 header\n offset += HEADER_FOOTER_SIZE;\n const end = offset + size;\n // loop through frames in the ID3 tag\n while (offset + FRAME_SIZE < end) {\n const frameData = getId3FrameData(id3Data.subarray(offset));\n const frame = decodeId3Frame(frameData);\n if (frame) {\n frames.push(frame);\n }\n // skip frame header and frame data\n offset += frameData.size + HEADER_FOOTER_SIZE;\n }\n if (isId3Footer(id3Data, offset)) {\n offset += HEADER_FOOTER_SIZE;\n }\n }\n return frames;\n}\n//# sourceMappingURL=getId3Frames.js.map","/**\n * Returns true if the ID3 frame is an Elementary Stream timestamp frame\n *\n * @param frame - the ID3 frame\n *\n * @returns `true` if the ID3 frame is an Elementary Stream timestamp frame\n *\n * @internal\n *\n * @group ID3\n */\nexport function isId3TimestampFrame(frame) {\n return (frame &&\n frame.key === 'PRIV' &&\n frame.info === 'com.apple.streaming.transportStreamTimestamp');\n}\n//# sourceMappingURL=isId3TimestampFrame.js.map","/**\n * Read a 33 bit timestamp from an ID3 frame.\n *\n * @param timeStampFrame - the ID3 frame\n *\n * @returns The timestamp\n *\n * @internal\n *\n * @group ID3\n */\nexport function readId3Timestamp(timeStampFrame) {\n if (timeStampFrame.data.byteLength === 8) {\n const data = new Uint8Array(timeStampFrame.data);\n // timestamp is 33 bit expressed as a big-endian eight-octet number,\n // with the upper 31 bits set to zero.\n const pts33Bit = data[3] & 0x1;\n let timestamp = (data[4] << 23) + (data[5] << 15) + (data[6] << 7) + data[7];\n timestamp /= 45;\n if (pts33Bit) {\n timestamp += 47721858.84;\n } // 2^32 / 90\n return Math.round(timestamp);\n }\n return undefined;\n}\n//# sourceMappingURL=readId3Timestamp.js.map","import { getId3Frames } from './getId3Frames.js';\nimport { isId3TimestampFrame } from './isId3TimestampFrame.js';\nimport { readId3Timestamp } from './util/readId3Timestamp.js';\n/**\n * Searches for the Elementary Stream timestamp found in the ID3 data chunk\n *\n * @param data - Block of data containing one or more ID3 tags\n *\n * @returns The timestamp\n *\n * @group ID3\n *\n * @beta\n */\nexport function getId3Timestamp(data) {\n const frames = getId3Frames(data);\n for (let i = 0; i < frames.length; i++) {\n const frame = frames[i];\n if (isId3TimestampFrame(frame)) {\n return readId3Timestamp(frame);\n }\n }\n return undefined;\n}\n//# sourceMappingURL=getId3Timestamp.js.map","/**\n * The scheme ID URI for ID3 tags.\n *\n * @group ID3\n *\n * @beta\n *\n * @see {@link https://aomediacodec.github.io/id3-emsg/ | Carriage of ID3 Timed Metadata in the Common Media Application Format (CMAF)}\n * @see {@link https://developer.apple.com/documentation/http-live-streaming/about-the-common-media-application-format-with-http-live-streaming-hls#CMAF-Tracks-Segments-Headers-and-Fragments | CMAF Tracks, Segments, Headers, and Fragments}\n */\nexport const ID3_SCHEME_ID_URI = 'https://aomedia.org/emsg/ID3';\n//# sourceMappingURL=ID3_SCHEME_ID_URI.js.map","const DURATION = /^([-])?P(?:([\\d.]*)Y)?(?:([\\d.]*)M)?(?:([\\d.]*)D)?T?(?:([\\d.]*)H)?(?:([\\d.]*)M)?(?:([\\d.]*)S)?$/;\nconst SECONDS_IN_YEAR = 365 * 24 * 60 * 60;\nconst SECONDS_IN_MONTH = 30 * 24 * 60 * 60;\nconst SECONDS_IN_DAY = 24 * 60 * 60;\nconst SECONDS_IN_HOUR = 60 * 60;\nconst SECONDS_IN_MIN = 60;\n/**\n * Decode an ISO 8601 duration string into seconds.\n *\n * @param isoDuration - ISO 8601 duration string.\n * @returns Duration in seconds.\n *\n * @group ISO 8601\n * @beta\n *\n * @example\n * {@includeCode ../../../test/iso/8601/decodeIso8601Duration.test.ts#example}\n */\nexport function decodeIso8601Duration(isoDuration) {\n const match = DURATION.exec(isoDuration);\n if (!match) {\n return NaN;\n }\n const duration = Number(match[2] || 0) * SECONDS_IN_YEAR +\n Number(match[3] || 0) * SECONDS_IN_MONTH +\n Number(match[4] || 0) * SECONDS_IN_DAY +\n Number(match[5] || 0) * SECONDS_IN_HOUR +\n Number(match[6] || 0) * SECONDS_IN_MIN +\n Number(match[7] || 0);\n if (!isFinite(duration)) {\n return NaN;\n }\n return match[1] === undefined ? duration : -duration;\n}\n//# sourceMappingURL=decodeIso8601Duration.js.map","/**\n * Encode a duration in seconds to an ISO 8601 duration string.\n *\n * @param duration - Duration in seconds.\n * @returns ISO 8601 duration string.\n *\n * @group ISO 8601\n * @beta\n *\n * @example\n * {@includeCode ../../../test/iso/8601/encodeIso8601Duration.test.ts#example}\n */\nexport function encodeIso8601Duration(duration) {\n if (!isFinite(duration)) {\n return 'PT';\n }\n const hours = Math.floor(duration / 3600);\n const minutes = Math.floor((duration % 3600) / 60);\n const seconds = duration % 60;\n if (hours > 0) {\n return `PT${hours}H${minutes}M${seconds}S`;\n }\n else if (minutes > 0) {\n return `PT${minutes}M${seconds}S`;\n }\n return `PT${seconds}S`;\n}\n//# sourceMappingURL=encodeIso8601Duration.js.map","export const CONTAINERS = [\n 'dinf',\n 'edts',\n 'enca',\n 'encv',\n 'grpl',\n 'mdia',\n 'meco',\n 'meta',\n 'mfra',\n 'minf',\n 'moof',\n 'moov',\n 'mvex',\n 'prsl',\n 'schi',\n 'sinf',\n 'stbl',\n 'strk',\n 'traf',\n 'trak',\n 'tref',\n 'udta',\n 'vttc',\n];\n//# sourceMappingURL=CONTAINERS.js.map","/**\n * The data field type\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport const DATA = 'data';\n//# sourceMappingURL=DATA.js.map","/**\n * The integer field type\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport const INT = 'int';\n//# sourceMappingURL=INT.js.map","/**\n * The string field type\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport const STRING = 'string';\n//# sourceMappingURL=STRING.js.map","/**\n * The template field type\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport const TEMPLATE = 'template';\n//# sourceMappingURL=TEMPLATE.js.map","/**\n * The unsigned integer field type\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport const UINT = 'uint';\n//# sourceMappingURL=UINT.js.map","/**\n * The UTF8 field type\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport const UTF8 = 'utf8';\n//# sourceMappingURL=UTF8.js.map","export function readData(dataView, offset, size) {\n const length = (size > 0) ? size : (dataView.byteLength - (offset - dataView.byteOffset));\n return new Uint8Array(dataView.buffer, offset, Math.max(length, 0));\n}\n;\n//# sourceMappingURL=readData.js.map","export function readInt(dataView, offset, size) {\n let result = NaN;\n const cursor = offset - dataView.byteOffset;\n switch (size) {\n case 1:\n result = dataView.getInt8(cursor);\n break;\n case 2:\n result = dataView.getInt16(cursor);\n break;\n case 4:\n result = dataView.getInt32(cursor);\n break;\n case 8:\n // Warning: JavaScript cannot handle 64-bit integers natively.\n // This will give unexpected results for integers >= 2^53\n const s1 = dataView.getInt32(cursor);\n const s2 = dataView.getInt32(cursor + 4);\n result = (s1 * Math.pow(2, 32)) + s2;\n break;\n }\n return result;\n}\n;\n//# sourceMappingURL=readInt.js.map","export function readUint(dataView, offset, size) {\n const cursor = offset - dataView.byteOffset;\n let value = NaN;\n let s1;\n let s2;\n switch (size) {\n case 1:\n value = dataView.getUint8(cursor);\n break;\n case 2:\n value = dataView.getUint16(cursor);\n break;\n case 3:\n s1 = dataView.getUint16(cursor);\n s2 = dataView.getUint8(cursor + 2);\n value = (s1 << 8) + s2;\n break;\n case 4:\n value = dataView.getUint32(cursor);\n break;\n case 8:\n // Warning: JavaScript cannot handle 64-bit integers natively.\n // This will give unexpected results for integers >= 2^53\n s1 = dataView.getUint32(cursor);\n s2 = dataView.getUint32(cursor + 4);\n value = (s1 * Math.pow(2, 32)) + s2;\n break;\n }\n return value;\n}\n;\n//# sourceMappingURL=readUint.js.map","import { readUint } from './readUint.js';\nexport function readString(dataView, offset, length) {\n let str = '';\n for (let c = 0; c < length; c++) {\n const cursor = offset + c;\n const char = readUint(dataView, cursor, 1);\n str += String.fromCharCode(char);\n }\n return str;\n}\n//# sourceMappingURL=readString.js.map","import { readUint } from './readUint.js';\nexport function readTemplate(dataView, offset, size) {\n const half = size / 2;\n const pre = readUint(dataView, offset, half);\n const post = readUint(dataView, offset + half, half);\n return pre + (post / Math.pow(2, half));\n}\n;\n//# sourceMappingURL=readTemplate.js.map","import { readUint } from './readUint.js';\nexport function readTerminatedString(dataView, offset) {\n let str = '';\n let cursor = offset;\n while (cursor - dataView.byteOffset < dataView.byteLength) {\n const char = readUint(dataView, cursor, 1);\n if (char === 0) {\n break;\n }\n str += String.fromCharCode(char);\n cursor++;\n }\n return str;\n}\n;\n//# sourceMappingURL=readTerminatedString.js.map","import { decodeText } from '../../../utils/decodeText.js';\nimport { UTF_8 } from '../../../utils/UTF_8.js';\nexport function readUtf8String(dataView, offset) {\n const length = dataView.byteLength - (offset - dataView.byteOffset);\n return (length > 0) ? decodeText(new DataView(dataView.buffer, offset, length), { encoding: UTF_8 }) : '';\n}\n;\n//# sourceMappingURL=readUtf8String.js.map","import { decodeText } from '../../../utils/decodeText.js';\nimport { UTF_8 } from '../../../utils/UTF_8.js';\nexport function readUtf8TerminatedString(dataView, offset) {\n const length = dataView.byteLength - (offset - dataView.byteOffset);\n let data = '';\n if (length > 0) {\n const view = new DataView(dataView.buffer, offset, length);\n let l = 0;\n for (; l < length; l++) {\n if (view.getUint8(l) === 0) {\n break;\n }\n }\n // remap the Dataview with the actual length\n data = decodeText(new DataView(dataView.buffer, offset, l), { encoding: UTF_8 });\n }\n return data;\n}\n;\n//# sourceMappingURL=readUtf8TerminatedString.js.map","import { CONTAINERS } from './CONTAINERS.js';\nimport { DATA } from './fields/DATA.js';\nimport { INT } from './fields/INT.js';\nimport { STRING } from './fields/STRING.js';\nimport { TEMPLATE } from './fields/TEMPLATE.js';\nimport { UINT } from './fields/UINT.js';\nimport { UTF8 } from './fields/UTF8.js';\nimport { readData } from './readers/readData.js';\nimport { readInt } from './readers/readInt.js';\nimport { readString } from './readers/readString.js';\nimport { readTemplate } from './readers/readTemplate.js';\nimport { readTerminatedString } from './readers/readTerminatedString.js';\nimport { readUint } from './readers/readUint.js';\nimport { readUtf8String } from './readers/readUtf8String.js';\nimport { readUtf8TerminatedString } from './readers/readUtf8TerminatedString.js';\n/**\n * ISO BMFF data view. Similar to DataView, but with additional methods for reading ISO BMFF data.\n * It implements the iterator protocol, so it can be used in a for...of loop.\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport class IsoView {\n /**\n * Creates a new IsoView instance. Similar to DataView, but with additional\n * methods for reading ISO BMFF data. It implements the iterator protocol,\n * so it can be used in a for...of loop.\n *\n * @param raw - The raw data to view.\n * @param config - The configuration for the IsoView.\n */\n constructor(raw, config) {\n this.truncated = false;\n /**\n * Creates a new IsoView instance with a slice of the current data view.\n *\n * @param size - The size of the slice.\n * @returns A new IsoView instance.\n */\n this.slice = (size) => {\n const dataView = new DataView(this.dataView.buffer, this.offset, size);\n this.offset += size;\n return new IsoView(dataView, this.config);\n };\n this.read = (type, size = 0) => {\n // TODO: Change all sizes from bits to bytes\n const { dataView, offset } = this;\n let result;\n let cursor = size;\n switch (type) {\n case UINT:\n result = readUint(dataView, offset, size);\n break;\n case INT:\n result = readInt(dataView, offset, size);\n break;\n case TEMPLATE:\n result = readTemplate(dataView, offset, size);\n break;\n case STRING:\n if (size === -1) {\n result = readTerminatedString(dataView, offset);\n cursor = result.length + 1;\n }\n else {\n result = readString(dataView, offset, size);\n }\n break;\n case DATA:\n result = readData(dataView, offset, size);\n cursor = result.length;\n break;\n case UTF8:\n if (size === -1) {\n result = readUtf8TerminatedString(dataView, offset);\n cursor = result.length + 1;\n }\n else {\n result = readUtf8String(dataView, offset);\n }\n break;\n default:\n result = -1;\n }\n this.offset += cursor;\n return result;\n };\n /**\n * Reads a unsigned integer from the data view.\n *\n * @param size - The size of the integer in bytes.\n * @returns The unsigned integer.\n */\n this.readUint = (size) => {\n return this.read(UINT, size);\n };\n /**\n * Reads a signed integer from the data view.\n *\n * @param size - The size of the integer in bytes.\n * @returns The signed integer.\n */\n this.readInt = (size) => {\n return this.read(INT, size);\n };\n /**\n * Reads a string from the data view.\n *\n * @param size - The size of the string in bytes.\n * @returns The string.\n */\n this.readString = (size) => {\n return this.read(STRING, size);\n };\n /**\n * Reads a template from the data view.\n *\n * @param size - The size of the template in bytes.\n * @returns The template.\n */\n this.readTemplate = (size) => {\n return this.read(TEMPLATE, size);\n };\n /**\n * Reads a byte array from the data view.\n *\n * @param size - The size of the data in bytes.\n * @returns The data.\n */\n this.readData = (size) => {\n return this.read(DATA, size);\n };\n /**\n * Reads a UTF-8 string from the data view.\n *\n * @param size - The size of the string in bytes.\n * @returns The UTF-8 string.\n */\n this.readUtf8 = (size) => {\n return this.read(UTF8, size);\n };\n /**\n * Reads a full box from the data view.\n *\n * @returns The full box.\n */\n this.readFullBox = () => {\n return {\n version: this.readUint(1),\n flags: this.readUint(3),\n };\n };\n /**\n * Reads an array of values from the data view.\n *\n * @param type - The type of the values.\n * @param size - The size of the values in bytes.\n * @param length - The number of values to read.\n * @returns The array of values.\n */\n this.readArray = (type, size, length) => {\n const value = [];\n for (let i = 0; i < length; i++) {\n value.push(this.read(type, size));\n }\n return value;\n };\n /**\n * Reads a raw box from the data view.\n *\n * @returns The box.\n */\n this.readBox = () => {\n const { dataView, offset } = this;\n // read box size and type without advancing the cursor in case the box is truncated\n let cursor = 0;\n const box = {\n size: readUint(dataView, offset, 4),\n type: readString(dataView, offset + 4, 4),\n };\n cursor += 8;\n if (box.size === 1) {\n box.largesize = readUint(dataView, offset + cursor, 8);\n cursor += 8;\n }\n const actualSize = box.largesize || box.size;\n if (this.cursor + actualSize > dataView.byteLength) {\n this.truncated = true;\n throw new Error('Truncated box');\n }\n this.offset += cursor;\n if (box.type === 'uuid') {\n box.usertype = this.readArray('uint', 1, 16);\n }\n const viewSize = box.size === 0 ? this.bytesRemaining : actualSize - cursor;\n box.data = this.slice(viewSize);\n return box;\n };\n /**\n * Reads a number of boxes from the data view.\n *\n * @param length - The number of boxes to read.\n * @returns The boxes.\n */\n this.readBoxes = (length) => {\n const result = [];\n for (const box of this) {\n result.push(box);\n if (length > 0 && result.length >= length) {\n break;\n }\n }\n return result;\n };\n /**\n * Reads a number of entries from the data view.\n *\n * @param length - The number of entries to read.\n * @param map - The function to map the entries.\n * @returns The entries.\n */\n this.readEntries = (length, map) => {\n const result = [];\n for (let i = 0; i < length; i++) {\n result.push(map());\n }\n return result;\n };\n this.dataView = (raw instanceof ArrayBuffer) ? new DataView(raw) : (raw instanceof Uint8Array) ? new DataView(raw.buffer, raw.byteOffset, raw.byteLength) : raw;\n this.offset = this.dataView.byteOffset;\n this.config = config || { recursive: false, parsers: {} };\n }\n /**\n * The current byteoffset in the data view.\n */\n get cursor() {\n return this.offset - this.dataView.byteOffset;\n }\n /**\n * Whether the end of the data view has been reached.\n */\n get done() {\n return this.cursor >= this.dataView.byteLength || this.truncated;\n }\n /**\n * The number of bytes remaining in the data view.\n */\n get bytesRemaining() {\n return this.dataView.byteLength - this.cursor;\n }\n /**\n * Iterates over the boxes in the data view.\n *\n * @returns A generator of boxes.\n */\n *[Symbol.iterator]() {\n const { parsers = {}, recursive = false } = this.config;\n while (!this.done) {\n try {\n const { type, data, ...rest } = this.readBox();\n const box = { type, ...rest };\n const parser = parsers[type] || parsers[type.trim()]; // url and urn boxes have a trailing space in their type field\n if (parser) {\n Object.assign(box, parser(data, this.config));\n }\n box.view = data;\n if (CONTAINERS.includes(type)) {\n const boxes = [];\n for (const child of data) {\n if (recursive) {\n yield child;\n }\n boxes.push(child);\n }\n box.boxes = boxes;\n }\n yield box;\n }\n catch (error) {\n break;\n }\n }\n }\n}\n//# sourceMappingURL=IsoView.js.map","import { IsoView } from './IsoView.js';\n/**\n * Create an IsoView from a raw ISO data.\n *\n * @param raw - The raw ISO data\n * @param config - The configuration for the IsoView\n *\n * @returns The created IsoView\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function createIsoView(raw, config) {\n return new IsoView(raw, config);\n}\n//# sourceMappingURL=createIsoView.js.map","import { createIsoView } from './createIsoView.js';\nfunction filter(iterator, fn, recursive, result) {\n for (const box of iterator) {\n if (fn(box)) {\n result.push(box);\n }\n const { boxes } = box;\n if (recursive && Array.isArray(boxes)) {\n filter(boxes, fn, recursive, result);\n }\n }\n return result;\n}\n/**\n * Filters boxes based on the given filter function.\n *\n * @param raw - The raw boxes to filter.\n * @param config - The box parser configuration.\n * @param fn - The filter function.\n * @returns The filtered boxes.\n *\n * @group ISOBMFF\n * @beta\n */\nexport function filterBoxes(raw, fn, config) {\n var _a;\n if (raw instanceof DataView || raw instanceof Uint8Array || raw instanceof ArrayBuffer) {\n raw = createIsoView(raw, { ...config, recursive: false });\n }\n const recursive = (_a = config === null || config === void 0 ? void 0 : config.recursive) !== null && _a !== void 0 ? _a : true;\n return filter(raw, fn, recursive, []);\n}\n//# sourceMappingURL=filterBoxes.js.map","import { filterBoxes } from './filterBoxes.js';\n/**\n * Filter boxes by type from an IsoView\n *\n * @param type - The type(s) of boxes to filter\n * @param raw - The raw ISO data\n * @param config - The configuration for the IsoView\n *\n * @returns The filtered boxes\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function filterBoxesByType(raw, type, config = {}) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n return filterBoxes(raw, (box) => type.includes(box.type), config);\n}\n//# sourceMappingURL=filterBoxesByType.js.map","import { createIsoView } from './createIsoView.js';\nfunction find(iterator, recursive, fn) {\n for (const box of iterator) {\n if (fn(box)) {\n return box;\n }\n const { boxes } = box;\n if (recursive && Array.isArray(boxes)) {\n const result = find(boxes, recursive, fn);\n if (result) {\n return result;\n }\n }\n }\n return null;\n}\n/**\n * Find a box from an IsoView that matches a filter function\n *\n * @param raw - The raw ISO data\n * @param config - The configuration for the IsoView\n * @param fn - The filter function\n *\n * @returns The first box that matches the filter function\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function findBox(raw, fn, config) {\n var _a;\n const recursive = (_a = config === null || config === void 0 ? void 0 : config.recursive) !== null && _a !== void 0 ? _a : true;\n if (raw instanceof DataView || raw instanceof Uint8Array || raw instanceof ArrayBuffer) {\n raw = createIsoView(raw, { ...config, recursive: false });\n }\n return find(raw, recursive, fn);\n}\n//# sourceMappingURL=findBox.js.map","import { findBox } from './findBox.js';\n/**\n * Find a box from an IsoView that matches a given type\n *\n * @param type - The type of box to find\n * @param raw - The raw ISO data\n * @param config - The configuration for the IsoView\n *\n * @returns The first box that matches the type\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function findBoxByType(raw, type, config = {}) {\n return findBox(raw, (box) => box.type === type, config);\n}\n//# sourceMappingURL=findBoxByType.js.map","import { createIsoView } from './createIsoView.js';\n/**\n * Parse boxes from an IsoView\n *\n * @param raw - The raw ISO data\n * @param config - The configuration for the IsoView\n *\n * @returns The parsed boxes\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function parseBoxes(raw, config) {\n const boxes = [];\n for (const box of createIsoView(raw, config)) {\n boxes.push(box);\n }\n return boxes;\n}\n//# sourceMappingURL=parseBoxes.js.map","/**\n * Parse a AudioRenderingIndicationBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed AudioRenderingIndicationBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function ardi(view) {\n return {\n ...view.readFullBox(),\n audioRenderingIndication: view.readUint(1),\n };\n}\n;\n//# sourceMappingURL=ardi.js.map","import { UINT } from '../fields/UINT.js';\n/**\n * Parse a VisualSampleEntryBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed VisualSampleEntryBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function avc1(view) {\n const { readArray, readUint, readInt, readTemplate, readData } = view;\n return {\n reserved1: readArray(UINT, 1, 6),\n dataReferenceIndex: readUint(2),\n preDefined1: readUint(2),\n reserved2: readUint(2),\n preDefined2: readArray(UINT, 4, 3),\n width: readUint(2),\n height: readUint(2),\n horizresolution: readTemplate(4),\n vertresolution: readTemplate(4),\n reserved3: readUint(4),\n frameCount: readUint(2),\n compressorName: readArray(UINT, 1, 32),\n depth: readUint(2),\n preDefined3: readInt(2),\n config: readData(-1),\n };\n}\n;\n//# sourceMappingURL=avc1.js.map","import { avc1 } from './avc1.js';\n/**\n * Parse a VisualSampleEntryBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed VisualSampleEntryBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function avc2(view) {\n return avc1(view);\n}\n//# sourceMappingURL=avc2.js.map","import { avc1 } from './avc1.js';\n/**\n * Parse a VisualSampleEntryBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed VisualSampleEntryBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function avc3(view) {\n return avc1(view);\n}\n//# sourceMappingURL=avc3.js.map","import { avc1 } from './avc1.js';\n/**\n * Parse a VisualSampleEntryBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed VisualSampleEntryBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function avc4(view) {\n return avc1(view);\n}\n//# sourceMappingURL=avc4.js.map","/**\n * Parse a CompositionTimeToSampleBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed CompositionTimeToSampleBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function ctts(view) {\n const { version, flags } = view.readFullBox();\n const read = version === 1 ? view.readInt : view.readUint;\n const entryCount = view.readUint(4);\n const entries = view.readEntries(entryCount, () => ({\n sampleCount: view.readUint(4),\n sampleOffset: read(4),\n }));\n return {\n version,\n flags,\n entryCount,\n entries,\n };\n}\n;\n//# sourceMappingURL=ctts.js.map","/**\n * Parse a DataReferenceBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed DataReferenceBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function dref(view) {\n const { version, flags } = view.readFullBox();\n const entryCount = view.readUint(4);\n const entries = view.readBoxes(entryCount);\n return {\n version,\n flags,\n entryCount,\n entries,\n };\n}\n;\n//# sourceMappingURL=dref.js.map","/**\n * Parse a ExtendedLanguageBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed ExtendedLanguageBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function elng(view) {\n return {\n ...view.readFullBox(),\n extendedLanguage: view.readUtf8(-1),\n };\n}\n;\n//# sourceMappingURL=elng.js.map","/**\n * Parse a Box from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed Box\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function elst(view) {\n const { version, flags } = view.readFullBox();\n const v1 = version === 1;\n const size = v1 ? 8 : 4;\n const entryCount = view.readUint(4);\n const entries = view.readEntries(entryCount, () => ({\n segmentDuration: view.readUint(size),\n mediaTime: view.readInt(size),\n mediaRateInteger: view.readInt(2),\n mediaRateFraction: view.readInt(2),\n }));\n return {\n version,\n flags,\n entryCount,\n entries,\n };\n}\n;\n//# sourceMappingURL=elst.js.map","/**\n * Parse an EventMessageBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed EventMessageBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function emsg(view) {\n const { readUint, readString, readData } = view;\n const result = { ...view.readFullBox() };\n if (result.version == 1) {\n result.timescale = readUint(4);\n result.presentationTime = readUint(8);\n result.eventDuration = readUint(4);\n result.id = readUint(4);\n result.schemeIdUri = readString(-1);\n result.value = readString(-1);\n }\n else {\n result.schemeIdUri = readString(-1);\n result.value = readString(-1);\n result.timescale = readUint(4);\n result.presentationTimeDelta = readUint(4);\n result.eventDuration = readUint(4);\n result.id = readUint(4);\n }\n result.messageData = readData(-1);\n return result;\n}\n//# sourceMappingURL=emsg.js.map","import { UINT } from '../fields/UINT.js';\n/**\n * Parse an AudioSampleEntry from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed AudioSampleEntry\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function mp4a(view) {\n const { readArray, readUint, readTemplate, readData } = view;\n return {\n reserved1: readArray(UINT, 1, 6),\n dataReferenceIndex: readUint(2),\n reserved2: readArray(UINT, 4, 2),\n channelcount: readUint(2),\n samplesize: readUint(2),\n preDefined: readUint(2),\n reserved3: readUint(2),\n samplerate: readTemplate(4),\n esds: readData(-1),\n };\n}\n;\n//# sourceMappingURL=mp4a.js.map","import { mp4a } from './mp4a.js';\n/**\n * Parse an AudioSampleEntry from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed AudioSampleEntry\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function enca(view) {\n return mp4a(view);\n}\n//# sourceMappingURL=enca.js.map","import { avc1 } from './avc1.js';\n/**\n * Parse a VisualSampleEntryBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed VisualSampleEntryBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function encv(view) {\n return avc1(view);\n}\n//# sourceMappingURL=encv.js.map","/**\n * Parse a Box from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed Box\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function free(view) {\n return {\n data: view.readData(-1),\n };\n}\n;\n//# sourceMappingURL=free.js.map","/**\n * Parse an OriginalFormatBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed OriginalFormatBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function frma(view) {\n return {\n dataFormat: view.readUint(4),\n };\n}\n;\n//# sourceMappingURL=frma.js.map","import { STRING } from '../fields/STRING.js';\n/**\n * Parse a FileTypeBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed FileTypeBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function ftyp(view) {\n const size = 4;\n const majorBrand = view.readString(4);\n const minorVersion = view.readUint(4);\n const length = view.bytesRemaining / size;\n const compatibleBrands = view.readArray(STRING, size, length);\n return {\n majorBrand,\n minorVersion,\n compatibleBrands,\n };\n}\n//# sourceMappingURL=ftyp.js.map","import { UINT } from '../fields/UINT.js';\n/**\n * Parse a HandlerReferenceBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed HandlerReferenceBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function hdlr(view) {\n return {\n ...view.readFullBox(),\n preDefined: view.readUint(4),\n handlerType: view.readString(4),\n reserved: view.readArray(UINT, 4, 3),\n name: view.readString(-1),\n };\n}\n;\n//# sourceMappingURL=hdlr.js.map","import { avc1 } from './avc1.js';\n/**\n * Parse a VisualSampleEntryBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed VisualSampleEntryBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function hev1(view) {\n return avc1(view);\n}\n//# sourceMappingURL=hev1.js.map","import { avc1 } from './avc1.js';\n/**\n * Parse a VisualSampleEntryBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed VisualSampleEntryBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function hvc1(view) {\n return avc1(view);\n}\n//# sourceMappingURL=hvc1.js.map","/**\n * Parse a WebVTTCueIdBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed WebVTTCueIdBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function iden(view) {\n return {\n cueId: view.readUtf8(-1),\n };\n}\n;\n//# sourceMappingURL=iden.js.map","/**\n * Parse a IdentifiedMediaDataBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed IdentifiedMediaDataBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function imda(view) {\n return {\n imdaIdentifier: view.readUint(4),\n data: view.readData(-1),\n };\n}\n;\n//# sourceMappingURL=imda.js.map","/**\n * Parse a TrackKinBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed TrackKindBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function kind(view) {\n return {\n ...view.readFullBox(),\n schemeUri: view.readUtf8(-1),\n value: view.readUtf8(-1),\n };\n}\n;\n//# sourceMappingURL=kind.js.map","/**\n * Parse a LabelBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed LabelBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function labl(view) {\n const { version, flags } = view.readFullBox();\n return {\n version,\n flags,\n isGroupLabel: (flags & 0x1) !== 0,\n labelId: view.readUint(2),\n language: view.readUtf8(-1),\n label: view.readUtf8(-1),\n };\n}\n//# sourceMappingURL=labl.js.map","/**\n * Parse a MediaDataBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed MediaDataBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function mdat(view) {\n return {\n data: view.readData(-1),\n };\n}\n;\n//# sourceMappingURL=mdat.js.map","/**\n * Parse a MediaHeaderBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed MediaHeaderBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function mdhd(view) {\n const { version, flags } = view.readFullBox();\n const creationTime = view.readUint(version == 1 ? 8 : 4);\n const modificationTime = view.readUint(version == 1 ? 8 : 4);\n const timescale = view.readUint(4);\n const duration = view.readUint(version == 1 ? 8 : 4);\n const lang = view.readUint(2);\n const language = String.fromCharCode(((lang >> 10) & 0x1F) + 0x60, ((lang >> 5) & 0x1F) + 0x60, (lang & 0x1F) + 0x60);\n const preDefined = view.readUint(2);\n return {\n version,\n flags,\n creationTime,\n modificationTime,\n timescale,\n duration,\n language,\n preDefined,\n };\n}\n//# sourceMappingURL=mdhd.js.map","/**\n * Parse a MovieExtendsHeaderBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed MovieExtendsHeaderBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function mehd(view) {\n const { version, flags } = view.readFullBox();\n return {\n version,\n flags,\n fragmentDuration: view.readUint((version === 1) ? 8 : 4),\n };\n}\n;\n//# sourceMappingURL=mehd.js.map","/**\n * Parse a MetaBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed MetaBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function meta(view) {\n return view.readFullBox();\n}\n;\n//# sourceMappingURL=meta.js.map","/**\n * Parse a MovieFragmentHeaderBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed MovieFragmentHeaderBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function mfhd(view) {\n return {\n ...view.readFullBox(),\n sequenceNumber: view.readUint(4),\n };\n}\n;\n//# sourceMappingURL=mfhd.js.map","/**\n * Parse a MovieFragmentRandomAccessBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed MovieFragmentRandomAccessBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function mfro(view) {\n return {\n ...view.readFullBox(),\n mfraSize: view.readUint(4),\n };\n}\n;\n//# sourceMappingURL=mfro.js.map","import { UINT } from '../fields/UINT.js';\n/**\n * Parse a Box from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed Box\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function mvhd(view) {\n const { readUint, readTemplate, readArray } = view;\n const { version, flags } = view.readFullBox();\n const size = (version == 1) ? 8 : 4;\n return {\n version,\n flags,\n creationTime: readUint(size),\n modificationTime: readUint(size),\n timescale: readUint(4),\n duration: readUint(size),\n rate: readTemplate(4),\n volume: readTemplate(2),\n reserved1: readUint(2),\n reserved2: readArray(UINT, 4, 2),\n matrix: readArray(UINT, 4, 9),\n preDefined: readArray(UINT, 4, 6),\n nextTrackId: readUint(4),\n };\n}\n;\n//# sourceMappingURL=mvhd.js.map","/**\n * Parse a WebVTTCuePayloadBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed WebVTTCuePayloadBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function payl(view) {\n return {\n cueText: view.readUtf8(-1),\n };\n}\n;\n//# sourceMappingURL=payl.js.map","/**\n * Parse a ProducerReferenceTimeBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed ProducerReferenceTimeBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function prft(view) {\n const { version, flags } = view.readFullBox();\n return {\n version,\n flags,\n referenceTrackId: view.readUint(4),\n ntpTimestampSec: view.readUint(4),\n ntpTimestampFrac: view.readUint(4),\n mediaTime: view.readUint(version === 1 ? 8 : 4),\n };\n}\n;\n//# sourceMappingURL=prft.js.map","/**\n * Parse a PreselectionGroupBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed PreselectionGroupBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function prsl(view) {\n const { version, flags } = view.readFullBox();\n const groupId = view.readUint(4);\n const numEntitiesInGroup = view.readUint(4);\n const entities = view.readEntries(numEntitiesInGroup, () => ({\n entityId: view.readUint(4),\n }));\n const preselectionTag = flags & 0x1000 ? view.readUtf8(-1) : undefined;\n const selectionPriority = flags & 0x2000 ? view.readUint(1) : undefined;\n const interleavingTag = flags & 0x4000 ? view.readUtf8(-1) : undefined;\n return {\n version,\n flags,\n groupId,\n numEntitiesInGroup,\n entities,\n preselectionTag,\n selectionPriority,\n interleavingTag,\n };\n}\n//# sourceMappingURL=prsl.js.map","import { UINT } from '../fields/UINT.js';\n/**\n * Parse a ProtectionSystemSpecificHeaderBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed ProtectionSystemSpecificHeaderBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function pssh(view) {\n const { readUint, readArray } = view;\n const { version, flags } = view.readFullBox();\n const systemId = readArray(UINT, 1, 16);\n let kidCount = 0;\n let kid = [];\n if (version > 0) {\n kidCount = readUint(4);\n kid = readArray(UINT, 1, kidCount);\n }\n const dataSize = readUint(4);\n const data = readArray(UINT, 1, dataSize);\n return {\n version,\n flags,\n systemId,\n kidCount,\n kid,\n dataSize,\n data,\n };\n}\n;\n//# sourceMappingURL=pssh.js.map","/**\n * Parse a SchemeTypeBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed SchemeTypeBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function schm(view) {\n const { version, flags } = view.readFullBox();\n return {\n version,\n flags,\n schemeType: view.readUint(4),\n schemeVersion: view.readUint(4),\n schemeUri: flags & 0x000001 ? view.readString(-1) : undefined,\n };\n}\n;\n//# sourceMappingURL=schm.js.map","import { UINT } from '../fields/UINT.js';\n/**\n * Parse a SampleDependencyTypeBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed SampleDependencyTypeBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function sdtp(view) {\n return {\n ...view.readFullBox(),\n sampleDependencyTable: view.readArray(UINT, 1, view.bytesRemaining),\n };\n}\n;\n//# sourceMappingURL=sdtp.js.map","/**\n * Parse a SegmentIndexBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed SegmentIndexBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function sidx(view) {\n const { readUint } = view;\n const { version, flags } = view.readFullBox();\n const v1 = version === 1;\n const size = v1 ? 8 : 4;\n const referenceId = readUint(4);\n const timescale = readUint(4);\n const earliestPresentationTime = readUint(size);\n const firstOffset = readUint(size);\n const reserved = readUint(2);\n const referenceCount = readUint(2);\n const references = view.readEntries(referenceCount, () => {\n const entry = {};\n entry.reference = readUint(4);\n entry.subsegmentDuration = readUint(4);\n entry.sap = readUint(4);\n entry.referenceType = (entry.reference >> 31) & 0x00000001;\n entry.referencedSize = entry.reference & 0x7FFFFFFF;\n entry.startsWithSap = (entry.sap >> 31) & 0x00000001;\n entry.sapType = (entry.sap >> 28) & 0x00000007;\n entry.sapDeltaTime = (entry.sap & 0x0FFFFFFF);\n return entry;\n });\n return {\n version,\n flags,\n referenceId,\n timescale,\n earliestPresentationTime,\n firstOffset,\n reserved,\n references,\n };\n}\n;\n//# sourceMappingURL=sidx.js.map","import { free } from './free.js';\n/**\n * Parse a FreeSpaceBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed FreeSpaceBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function skip(view) {\n return free(view);\n}\n;\n//# sourceMappingURL=skip.js.map","/**\n * Parse a SoundMediaHeaderBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed SoundMediaHeaderBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function smhd(view) {\n return {\n ...view.readFullBox(),\n balance: view.readUint(2),\n reserved: view.readUint(2),\n };\n}\n;\n//# sourceMappingURL=smhd.js.map","/**\n * Parse a SubsegmentIndexBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed SubsegmentIndexBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function ssix(view) {\n const { version, flags } = view.readFullBox();\n const subsegmentCount = view.readUint(4);\n const subsegments = view.readEntries(subsegmentCount, () => {\n const rangesCount = view.readUint(4);\n const ranges = view.readEntries(rangesCount, () => ({\n level: view.readUint(1),\n rangeSize: view.readUint(3),\n }));\n return { rangesCount, ranges };\n });\n return {\n version,\n flags,\n subsegmentCount,\n subsegments,\n };\n}\n;\n//# sourceMappingURL=ssix.js.map","/**\n * Parse a SubtitleMediaHeaderBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed SubtitleMediaHeaderBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function sthd(view) {\n return view.readFullBox();\n}\n;\n//# sourceMappingURL=sthd.js.map","/**\n * Parse a SampleDescriptionBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed SampleDescriptionBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function stsd(view) {\n const { version, flags } = view.readFullBox();\n const entryCount = view.readUint(4);\n return {\n version,\n flags,\n entryCount,\n entries: view.readBoxes(entryCount),\n };\n}\n;\n//# sourceMappingURL=stsd.js.map","/**\n * Parse a SyncSampleBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed SyncSampleBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function stss(view) {\n const { version, flags } = view.readFullBox();\n const entryCount = view.readUint(4);\n return {\n version,\n flags,\n entryCount,\n entries: view.readEntries(entryCount, () => ({\n sampleNumber: view.readUint(4),\n })),\n };\n}\n;\n//# sourceMappingURL=stss.js.map","/**\n * Parse a WebVTTSettingsBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed WebVTTSettingsBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function sttg(view) {\n return {\n settings: view.readUtf8(-1),\n };\n}\n;\n//# sourceMappingURL=sttg.js.map","/**\n * Parse a DecodingTimeToSampleBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed DecodingTimeToSampleBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function stts(view) {\n const { version, flags } = view.readFullBox();\n const entryCount = view.readUint(4);\n const entries = view.readEntries(entryCount, () => ({\n sampleCount: view.readUint(4),\n sampleDelta: view.readUint(4),\n }));\n return {\n version,\n flags,\n entryCount,\n entries,\n };\n}\n;\n//# sourceMappingURL=stts.js.map","import { ftyp } from './ftyp.js';\n/**\n * Parse a SegmentTypeBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed SegmentTypeBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function styp(view) {\n return ftyp(view);\n}\n//# sourceMappingURL=styp.js.map","/**\n * Parse a SubSampleInformationBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed SubSampleInformationBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function subs(view) {\n const { version, flags } = view.readFullBox();\n const entryCount = view.readUint(4);\n const entries = view.readEntries(entryCount, () => {\n const sampleDelta = view.readUint(4);\n const subsampleCount = view.readUint(2);\n const subsamples = view.readEntries(subsampleCount, () => ({\n subsampleSize: view.readUint((version === 1) ? 4 : 2),\n subsamplePriority: view.readUint(1),\n discardable: view.readUint(1),\n codecSpecificParameters: view.readUint(4),\n }));\n return {\n sampleDelta,\n subsampleCount,\n subsamples,\n };\n });\n return {\n version,\n flags,\n entryCount,\n entries,\n };\n}\n;\n//# sourceMappingURL=subs.js.map","import { UINT } from '../fields/UINT.js';\n/**\n * Parse a TrackEncryptionBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed TrackEncryptionBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function tenc(view) {\n return {\n ...view.readFullBox(),\n defaultIsEncrypted: view.readUint(3),\n defaultIvSize: view.readUint(1),\n defaultKid: view.readArray(UINT, 1, 16),\n };\n}\n;\n//# sourceMappingURL=tenc.js.map","/**\n * Parse a TrackFragmentDecodeTimeBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed TrackFragmentDecodeTimeBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function tfdt(view) {\n const { version, flags } = view.readFullBox();\n return {\n version,\n flags,\n baseMediaDecodeTime: view.readUint((version == 1) ? 8 : 4),\n };\n}\n;\n//# sourceMappingURL=tfdt.js.map","/**\n * Parse a TrackFragmentHeaderBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed TrackFragmentHeaderBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function tfhd(view) {\n const { version, flags } = view.readFullBox();\n return {\n version,\n flags,\n trackId: view.readUint(4),\n baseDataOffset: flags & 0x01 ? view.readUint(8) : undefined,\n sampleDescriptionIndex: flags & 0x02 ? view.readUint(4) : undefined,\n defaultSampleDuration: flags & 0x08 ? view.readUint(4) : undefined,\n defaultSampleSize: flags & 0x10 ? view.readUint(4) : undefined,\n defaultSampleFlags: flags & 0x20 ? view.readUint(4) : undefined,\n };\n}\n;\n//# sourceMappingURL=tfhd.js.map","/**\n * Parse a TrackFragmentRandomAccessBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed TrackFragmentRandomAccessBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function tfra(view) {\n const { version, flags } = view.readFullBox();\n const trackId = view.readUint(4);\n const reserved = view.readUint(4);\n const lengthSizeOfTrafNum = (reserved & 0x00000030) >> 4;\n const lengthSizeOfTrunNum = (reserved & 0x0000000C) >> 2;\n const lengthSizeOfSampleNum = (reserved & 0x00000003);\n const numberOfEntry = view.readUint(4);\n const entries = view.readEntries(numberOfEntry, () => ({\n time: view.readUint((version === 1) ? 8 : 4),\n moofOffset: view.readUint((version === 1) ? 8 : 4),\n trafNumber: view.readUint(lengthSizeOfTrafNum + 1),\n trunNumber: view.readUint(lengthSizeOfTrunNum + 1),\n sampleNumber: view.readUint(lengthSizeOfSampleNum + 1),\n }));\n return {\n version,\n flags,\n trackId,\n reserved,\n lengthSizeOfTrafNum,\n lengthSizeOfTrunNum,\n lengthSizeOfSampleNum,\n numberOfEntry,\n entries,\n };\n}\n;\n//# sourceMappingURL=tfra.js.map","import { TEMPLATE } from '../fields/TEMPLATE.js';\nimport { UINT } from '../fields/UINT.js';\n/**\n * Parse a TrackHeaderBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed TrackHeaderBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function tkhd(view) {\n const { version, flags } = view.readFullBox();\n const size = version === 1 ? 8 : 4;\n return {\n version,\n flags,\n creationTime: view.readUint(size),\n modificationTime: view.readUint(size),\n trackId: view.readUint(4),\n reserved1: view.readUint(4),\n duration: view.readUint(size),\n reserved2: view.readArray(UINT, 4, 2),\n layer: view.readUint(2),\n alternateGroup: view.readUint(2),\n volume: view.readTemplate(2),\n reserved3: view.readUint(2),\n matrix: view.readArray(TEMPLATE, 4, 9),\n width: view.readTemplate(4),\n height: view.readTemplate(4),\n };\n}\n;\n//# sourceMappingURL=tkhd.js.map","/**\n * Parse a TrackExtendsBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed TrackExtendsBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function trex(view) {\n return {\n ...view.readFullBox(),\n trackId: view.readUint(4),\n defaultSampleDescriptionIndex: view.readUint(4),\n defaultSampleDuration: view.readUint(4),\n defaultSampleSize: view.readUint(4),\n defaultSampleFlags: view.readUint(4),\n };\n}\n;\n//# sourceMappingURL=trex.js.map","/**\n * Parse a TrackRunBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed TrackRunBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function trun(view) {\n const { version, flags } = view.readFullBox();\n const sampleCount = view.readUint(4);\n let dataOffset;\n let firstSampleFlags;\n if (flags & 0x1) {\n dataOffset = view.readInt(4);\n }\n if (flags & 0x4) {\n firstSampleFlags = view.readUint(4);\n }\n const samples = view.readEntries(sampleCount, () => {\n const sample = {};\n if (flags & 0x100) {\n sample.sampleDuration = view.readUint(4);\n }\n if (flags & 0x200) {\n sample.sampleSize = view.readUint(4);\n }\n if (flags & 0x400) {\n sample.sampleFlags = view.readUint(4);\n }\n if (flags & 0x800) {\n sample.sampleCompositionTimeOffset = (version === 1) ? view.readInt(4) : view.readUint(4);\n }\n return sample;\n });\n return {\n version,\n flags,\n sampleCount,\n dataOffset,\n firstSampleFlags,\n samples,\n };\n}\n;\n//# sourceMappingURL=trun.js.map","/**\n * Parse a UrlBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed UrlBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function url(view) {\n return {\n ...view.readFullBox(),\n location: view.readString(-1),\n };\n}\n;\n//# sourceMappingURL=url.js.map","/**\n * Parse a UrnBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed UrnBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function urn(view) {\n return {\n ...view.readFullBox(),\n name: view.readString(-1),\n location: view.readString(-1),\n };\n}\n;\n//# sourceMappingURL=urn.js.map","/**\n * Parse a WebVTTSourceLabelBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed WebVTTSourceLabelBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function vlab(view) {\n return {\n sourceLabel: view.readUtf8(-1),\n };\n}\n;\n//# sourceMappingURL=vlab.js.map","import { UINT } from '../fields/UINT.js';\n/**\n * Parse a VideoMediaHeaderBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed VideoMediaHeaderBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function vmhd(view) {\n return {\n ...view.readFullBox(),\n graphicsmode: view.readUint(2),\n opcolor: view.readArray(UINT, 2, 3),\n };\n}\n;\n//# sourceMappingURL=vmhd.js.map","/**\n * Parse a WebVTTConfigurationBox from an IsoView\n *\n * @param view - The IsoView to read data from\n *\n * @returns A parsed WebVttConfigurationBox\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function vttC(view) {\n return {\n config: view.readUtf8(),\n };\n}\n;\n//# sourceMappingURL=vttC.js.map","/**\n * Parse a WebVTT Empty Sample Box from an IsoView\n *\n * @returns A parsed WebVTT Empty Sample Box\n *\n * @group ISOBMFF\n *\n * @beta\n */\nexport function vtte() {\n // Nothing should happen here.\n return {};\n}\n;\n//# sourceMappingURL=vtte.js.map","export const ITEM = 'Item';\n//# sourceMappingURL=ITEM.js.map","import { parseError } from './parse/parseError.js';\nimport { parseItem } from './parse/parseItem.js';\nimport { ITEM } from './utils/ITEM.js';\n// 4.2. Parsing Structured Fields\n//\n// 1. Convert input_bytes into an ASCII string input_string; if\n// conversion fails, fail parsing.\n//\n// 2. Discard any leading SP characters from input_string.\n//\n// 3. If field_type is \"list\", let output be the result of running\n// Parsing a List (Section 4.2.1) with input_string.\n//\n// 4. If field_type is \"dictionary\", let output be the result of\n// running Parsing a Dictionary (Section 4.2.2) with input_string.\n//\n// 5. If field_type is \"item\", let output be the result of running\n// Parsing an Item (Section 4.2.3) with input_string.\n//\n// 6. Discard any leading SP characters from input_string.\n//\n// 7. If input_string is not empty, fail parsing.\n//\n// 8. Otherwise, return output.\n/**\n * Decode a structured field string into a structured field item\n *\n * @param input - The structured field string to decode\n * @returns The structured field item\n *\n * @group Structured Field\n *\n * @beta\n */\nexport function decodeSfItem(input, options) {\n try {\n const { src, value } = parseItem(input.trim(), options);\n if (src !== '') {\n throw parseError(src, ITEM);\n }\n return value;\n }\n catch (cause) {\n throw parseError(input, ITEM, cause);\n }\n}\n//# sourceMappingURL=decodeSfItem.js.map","import { SfItem } from './SfItem.js';\nimport { serializeItem } from './serialize/serializeItem.js';\nexport function encodeSfItem(value, params) {\n if (!(value instanceof SfItem)) {\n value = new SfItem(value, params);\n }\n return serializeItem(value);\n}\n//# sourceMappingURL=encodeSfItem.js.map","/**\n * Converts a ResourceTiming sample to bandwidth in bits per second (bps).\n *\n * @param sample - A ResourceTiming sample\n * @returns\n */\nexport function getBandwidthBps(sample) {\n const durationSeconds = sample.duration / 1000;\n const bandwidthBps = sample.encodedBodySize * 8 / durationSeconds;\n return bandwidthBps;\n}\n//# sourceMappingURL=getBandwidthBps.js.map","import { getBandwidthBps } from '../utils/getBandwidthBps.js';\n/**\n * Arithmetic Mean throughput estimator\n *\n * @group Throughput\n *\n * @beta\n */\nexport class ArithmeticMeanEstimator {\n constructor() {\n this.samples = [];\n }\n sample(sample) {\n this.samples.push(sample);\n }\n getEstimate() {\n let value = 0;\n for (let i = 0; i < this.samples.length; i++) {\n value += getBandwidthBps(this.samples[i]);\n }\n return value / this.samples.length;\n }\n}\n//# sourceMappingURL=ArithmeticMeanEstimator.js.map","/**\n * Exponential Weighted Moving Average (EWMA)\n *\n * @group Throughput\n *\n * @beta\n */\nexport class Ewma {\n constructor(alpha) {\n this.alpha = alpha;\n this.estimate = 0;\n this.totalDuration = 0;\n }\n /**\n * Samples the value of the resource and updates the estimate.\n */\n sample(weight, value) {\n const adjustedAlpha = Math.pow(this.alpha, weight);\n this.estimate = adjustedAlpha * value + (1 - adjustedAlpha) * this.estimate;\n this.totalDuration += weight;\n }\n /**\n * Returns the estimate of the value (in units, as `value` during sampling)\n *\n * For example, if the value is throughput (in bits per seconds), the estimate\n * will also be in bits per seconds.\n */\n getEstimate() {\n const zeroFactor = 1 - Math.pow(this.alpha, this.totalDuration);\n return this.estimate / zeroFactor;\n }\n /**\n * Returns the total duration of the resource (in units, as `weight` during sampling)\n */\n getTotalDuration() {\n return this.totalDuration;\n }\n}\n//# sourceMappingURL=Ewma.js.map","import { getBandwidthBps } from '../utils/getBandwidthBps.js';\nimport { Ewma } from './Ewma.js';\n/**\n * Exponential Weighted Moving Average (EWMA) throughput estimator based on 2 half-lives\n *\n * @group Throughput\n *\n * @beta\n */\nexport class EwmaEstimator {\n constructor(options) {\n this.slowEwma = new Ewma(options.slowHalfLife);\n this.fastEwma = new Ewma(options.fastHalfLife);\n }\n sample(sample) {\n // TODO: shaka\n // 1. If `sample.encodedBodySize` is less than `this.minBytes_`, don't do anything\n // TODO: dash.js\n // 1. If `sample.encodedBodySize` is NaN or Infinity, don't do anything\n // TODO: hls.js\n // 1. If `durationSeconds` is less than `this.minDelayMs_`, make it `this.minDelayMs_` (default is 50ms)\n const durationSeconds = sample.duration / 1000;\n const bandwidthBps = getBandwidthBps(sample);\n this.slowEwma.sample(durationSeconds, bandwidthBps);\n this.fastEwma.sample(durationSeconds, bandwidthBps);\n }\n getEstimate() {\n // TODO: shaka\n // 1. Returns `defaultEstimate` for this.totalBytes < `options.minTotalBytes`\n // 1.1. Returns `options.defaultBandwidthEstimate`\n // 1.2. or `navigator.connection.downlink * 1e6` if available\n // TODO: dash.js\n // 1. Returns `NaN` for this.totalDuration <= 0\n // 2. `Math.max` for latency calculation\n // TODO: hls.js\n // 1. Returns `defaultEstimate` for this.totalDuration < `this.minDuration`\n // 1.1. Returns `config.abrEwmaDefaultEstimate` (default: 500 kbps)\n return Math.min(this.fastEwma.getEstimate(), this.slowEwma.getEstimate());\n }\n canEstimate() {\n // TODO: shaka, `this.totalBytes >= options.minTotalBytes`\n // TODO: hls.js, `this.totalDuration >= this.minDuration`\n return true;\n }\n}\n//# sourceMappingURL=EwmaEstimator.js.map","import { getBandwidthBps } from '../utils/getBandwidthBps.js';\n/**\n * Harmonic Mean throughput estimator\n *\n * @group Throughput\n *\n * @beta\n */\nexport class HarmonicMeanEstimator {\n constructor() {\n this.samples = [];\n }\n sample(sample) {\n this.samples.push(sample);\n }\n getEstimate() {\n let value = 0;\n for (let i = 0; i < this.samples.length; i++) {\n value += 1 / getBandwidthBps(this.samples[i]);\n }\n return this.samples.length / value;\n }\n}\n//# sourceMappingURL=HarmonicMeanEstimator.js.map","import { getBandwidthBps } from '../utils/getBandwidthBps.js';\n/**\n * Zero-Lag Exponential Moving Average (ZLEMA) throughput estimator\n *\n * @group Throughput\n *\n * @beta\n */\nexport class ZlemaEstimator {\n constructor() {\n this.samples = [];\n }\n sample(sample) {\n this.samples.push(sample);\n }\n getEstimate() {\n if (this.samples.length === 0) {\n return NaN;\n }\n const alpha = 2 / (this.samples.length + 1);\n let ema, zlema;\n ema = zlema = getBandwidthBps(this.samples[this.samples.length - 1]);\n for (let i = 0; i < this.samples.length; i++) {\n ema = alpha * getBandwidthBps(this.samples[i]) + (1 - alpha) * ema;\n zlema = alpha * ema + (1 - alpha) * zlema;\n }\n return zlema;\n }\n}\n//# sourceMappingURL=ZlemaEstimator.js.map","/**\n * Encodes an ArrayBuffer as a hexadecimal string.\n *\n * @param buffer - The ArrayBuffer to encode.\n * @returns The hexadecimal string representation.\n *\n * @group Utils\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/utils/arrayBufferToHex.test.ts#example}\n */\nexport function arrayBufferToHex(buffer) {\n const view = new Uint8Array(buffer);\n return view.reduce((result, byte) => result + byte.toString(16).padStart(2, '0'), '');\n}\n//# sourceMappingURL=arrayBufferToHex.js.map","import { arrayBufferToHex } from './arrayBufferToHex.js';\n/**\n * Converts an ArrayBuffer to a UUID string.\n *\n * @param buffer - The ArrayBuffer to convert.\n * @returns The UUID string representation.\n *\n * @group Utils\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/utils/arrayBufferToUuid.test.ts#example}\n */\nexport function arrayBufferToUuid(buffer) {\n const hex = arrayBufferToHex(buffer);\n return hex.replace(/(.{8})(.{4})(.{4})(.{4})(.{12})/, '$1-$2-$3-$4-$5');\n}\n//# sourceMappingURL=arrayBufferToUuid.js.map","import { decodeBase64 } from './decodeBase64.js';\n/**\n * Decodes a base64 encoded string into binary data\n *\n * @param str - The base64 encoded string to decode\n * @returns The decoded binary data\n *\n * @group Utils\n *\n * @beta\n *\n * @deprecated Use {@link decodeBase64} instead.\n *\n * @see {@link decodeBase64}\n */\nexport function base64decode(str) {\n return decodeBase64(str);\n}\n//# sourceMappingURL=base64decode.js.map","import { encodeBase64 } from './encodeBase64.js';\n/**\n * Encodes binary data to base64\n *\n * @param binary - The binary data to encode\n * @returns The base64 encoded string\n *\n * @group Utils\n *\n * @beta\n *\n * @deprecated Use {@link encodeBase64} instead.\n *\n * @see {@link encodeBase64}\n */\nexport function base64encode(binary) {\n return encodeBase64(binary);\n}\n//# sourceMappingURL=base64encode.js.map","/**\n * Converts a Uint8Array to a Uint16Array by aligning its buffer.\n *\n * @param input - The Uint8Array to convert\n * @returns A properly aligned Uint16Array\n *\n * @group Utils\n * @beta\n */\nexport function convertUint8ToUint16(input) {\n if (input.length % 2 !== 0) {\n const padded = new Uint8Array(input.length + 1);\n padded.set(input);\n return new Uint16Array(padded.buffer);\n }\n return new Uint16Array(input.buffer);\n}\n//# sourceMappingURL=convertUint8ToUint16.js.map","import { UTF_16 } from './UTF_16.js';\nimport { UTF_16_BE } from './UTF_16_BE.js';\nimport { UTF_16_LE } from './UTF_16_LE.js';\nimport { UTF_8 } from './UTF_8.js';\n/**\n * Text encoding types.\n *\n * @group Utils\n *\n * @beta\n */\nexport const Encoding = {\n UTF8: UTF_8,\n UTF16: UTF_16,\n UTF16BE: UTF_16_BE,\n UTF16LE: UTF_16_LE,\n};\n//# sourceMappingURL=Encoding.js.map","/**\n * Decodes a hexadecimal string into an ArrayBuffer.\n *\n * @param hex - The hexadecimal string to decode.\n * @returns The decoded ArrayBuffer.\n *\n * @group Utils\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/utils/hexToArrayBuffer.test.ts#example}\n */\nexport function hexToArrayBuffer(hex) {\n const buffer = new ArrayBuffer(hex.length / 2);\n const view = new Uint8Array(buffer);\n for (let i = 0; i < hex.length; i += 2) {\n view[i / 2] = parseInt(hex.slice(i, i + 2), 16);\n }\n return buffer;\n}\n//# sourceMappingURL=hexToArrayBuffer.js.map","/**\n * Generate a random v4 UUID\n *\n * @returns A random v4 UUID\n *\n * @group Utils\n *\n * @beta\n */\nexport function uuid() {\n try {\n return crypto.randomUUID();\n }\n catch (error) {\n try {\n const url = URL.createObjectURL(new Blob());\n const uuid = url.toString();\n URL.revokeObjectURL(url);\n return uuid.slice(uuid.lastIndexOf('/') + 1);\n }\n catch (error) {\n let dt = new Date().getTime();\n const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (dt + Math.random() * 16) % 16 | 0;\n dt = Math.floor(dt / 16);\n return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);\n });\n return uuid;\n }\n }\n}\n//# sourceMappingURL=uuid.js.map","import { hexToArrayBuffer } from './hexToArrayBuffer.js';\n/**\n * Converts a UUID string to an ArrayBuffer.\n *\n * @param uuid - The UUID string to convert.\n * @returns The ArrayBuffer representation.\n *\n * @group Utils\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/utils/uuidToArrayBuffer.test.ts#example}\n */\nexport function uuidToArrayBuffer(uuid) {\n const hex = uuid.replace(/-/g, '');\n return hexToArrayBuffer(hex);\n}\n//# sourceMappingURL=uuidToArrayBuffer.js.map","/**\n * Create a generic WebVttCue object with default values\n * that match the DOM VTTCue interface.\n *\n * @returns A WebVttCue object with default values\n *\n * @group WebVTT\n *\n * @beta\n */\nexport function createWebVttCue() {\n return {\n id: '',\n startTime: 0,\n endTime: 0,\n region: null,\n snapToLines: true,\n line: 'auto',\n lineAlign: 'start',\n position: 'auto',\n positionAlign: 'auto',\n size: 100,\n align: 'center',\n vertical: '',\n pauseOnExit: false,\n text: '',\n };\n}\n//# sourceMappingURL=createWebVttCue.js.map","/**\n * Create a generic WebVttRegion object with default values\n * that match the DOM VTTRegion interface.\n *\n * @returns A WebVttRegion object with default values\n *\n * @group WebVTT\n *\n * @beta\n */\nexport function createWebVttRegion() {\n return {\n id: '',\n width: 100,\n lines: 3,\n regionAnchorX: 0,\n regionAnchorY: 100,\n viewportAnchorX: 0,\n viewportAnchorY: 100,\n scroll: '',\n };\n}\n//# sourceMappingURL=createWebVttRegion.js.map","/**\n * A WebVTT parsing error.\n *\n * @group WebVTT\n *\n * @beta\n */\nexport class WebVttParsingError extends Error {\n /**\n * Create a new WebVTT parsing error.\n *\n * @param message - The message of the error.\n */\n constructor(message) {\n super(message);\n this.name = 'WebVttParsingError';\n }\n}\n//# sourceMappingURL=WebVttParsingError.js.map","// Helper function to parse input into groups separated by 'groupDelim', and\n// interpet each group as a key/value pair separated by 'keyValueDelim'.\nexport function parseOptions(input, callback, keyValueDelim, groupDelim) {\n // TODO: Optimize parsing to avoid creating new arrays and strings.\n const groups = groupDelim ? input.split(groupDelim) : [input];\n for (const i in groups) {\n if (typeof groups[i] !== 'string') {\n continue;\n }\n const kv = groups[i].split(keyValueDelim);\n if (kv.length !== 2) {\n continue;\n }\n const k = kv[0];\n const v = kv[1].trim();\n // TODO: Return a value instead of using a callback.\n callback(k, v);\n }\n}\n//# sourceMappingURL=parseOptions.js.map","function computeSeconds(h, m, s, f) {\n return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + (f | 0) / 1000;\n}\n// Try to parse input as a time stamp.\nexport function parseTimeStamp(input) {\n var _a;\n // TODO: Optimize parsing to avoid creating new arrays and strings.\n const m = input.match(/^(\\d+):(\\d{1,2})(:\\d{1,2})?\\.(\\d{3})/);\n if (!m) {\n return null;\n }\n const first = parseInt(m[1]);\n const second = parseInt(m[2]);\n const third = parseInt(((_a = m[3]) === null || _a === void 0 ? void 0 : _a.replace(':', '')) || '0');\n const fourth = parseInt(m[4]);\n if (m[3]) {\n // Timestamp takes the form of [hours]:[minutes]:[seconds].[milliseconds]\n return computeSeconds(first, second, third, fourth);\n }\n else if (first > 59) {\n // Timestamp takes the form of [hours]:[minutes].[milliseconds]\n // First position is hours as it's over 59.\n return computeSeconds(first, second, 0, fourth);\n }\n else {\n // Timestamp takes the form of [minutes]:[seconds].[milliseconds]\n return computeSeconds(0, first, second, fourth);\n }\n}\n//# sourceMappingURL=parseTimestamp.js.map","// A settings object holds key/value pairs and will ignore anything but the first\n// assignment to a specific key.\nexport class Settings {\n constructor() {\n this.values = Object.create(null);\n }\n // Only accept the first assignment to any key.\n set(k, v) {\n if (this.get(k) || v === '') {\n return;\n }\n this.values[k] = v;\n }\n // Return the value for a key, or a default value.\n // If 'defaultKey' is passed then 'dflt' is assumed to be an object with\n // a number of possible default values as properties where 'defaultKey' is\n // the key of the property that will be chosen; otherwise it's assumed to be\n // a single value.\n get(k, dflt) {\n if (this.has(k)) {\n return this.values[k];\n }\n return dflt;\n }\n // Check whether we have a value for a key.\n has(k) {\n return k in this.values;\n }\n // Accept a setting if its one of the given alternatives.\n alt(k, v, a) {\n for (let n = 0; n < a.length; ++n) {\n if (v === a[n]) {\n this.set(k, v);\n break;\n }\n }\n }\n // Accept a setting if its a valid (signed) integer.\n integer(k, v) {\n if (/^-?\\d+$/.test(v)) { // integer\n this.set(k, parseInt(v, 10));\n }\n }\n // Accept a setting if its a valid percentage.\n percent(k, v) {\n if (v.match(/^([\\d]{1,3})(\\.[\\d]*)?%$/)) {\n const value = parseFloat(v);\n if (value >= 0 && value <= 100) {\n this.set(k, value);\n return true;\n }\n }\n return false;\n }\n}\n//# sourceMappingURL=Settings.js.map","import { WebVttParsingError } from '../WebVttParsingError.js';\nimport { parseOptions } from './parseOptions.js';\nimport { parseTimeStamp } from './parseTimestamp.js';\nimport { Settings } from './Settings.js';\nconst BAD_TIMESTAMP = 'Malformed time stamp.';\nexport function parseCue(input, cue, regionList) {\n // Remember the original input if we need to throw an error.\n const oInput = input;\n // 4.1 WebVTT timestamp\n function consumeTimeStamp() {\n const ts = parseTimeStamp(input);\n if (ts === null) {\n throw new WebVttParsingError(BAD_TIMESTAMP + oInput);\n }\n // Remove time stamp from input.\n input = input.replace(/^[^\\sa-zA-Z-]+/, '');\n return ts;\n }\n // 4.4.2 WebVTT cue settings\n function consumeCueSettings(input, cue) {\n const settings = new Settings();\n parseOptions(input, function (k, v) {\n switch (k) {\n case 'region': {\n // Find the last region we parsed with the same region id.\n for (let i = regionList.length - 1; i >= 0; i--) {\n if (regionList[i].id === v) {\n settings.set(k, regionList[i]);\n break;\n }\n }\n break;\n }\n case 'vertical': {\n settings.alt(k, v, ['rl', 'lr']);\n break;\n }\n case 'line': {\n const vals = v.split(',');\n const vals0 = vals[0];\n settings.integer(k, vals0);\n settings.percent(k, vals0) ? settings.set('snapToLines', false) : null;\n settings.alt(k, vals0, ['auto']);\n if (vals.length === 2) {\n settings.alt('lineAlign', vals[1], ['start', 'center', 'end']);\n }\n break;\n }\n case 'position': {\n const vals = v.split(',');\n settings.percent(k, vals[0]);\n if (vals.length === 2) {\n settings.alt('positionAlign', vals[1], ['line-left', 'center', 'line-right', 'auto']);\n }\n break;\n }\n case 'size': {\n settings.percent(k, v);\n break;\n }\n case 'align': {\n settings.alt(k, v, ['start', 'center', 'end', 'left', 'right']);\n break;\n }\n }\n }, /:/, /\\s/);\n // Apply default values for any missing fields.\n cue.region = settings.get('region', null);\n cue.vertical = settings.get('vertical', '');\n try {\n cue.line = settings.get('line', 'auto');\n }\n catch (e) {\n // eslint-ignore-line\n }\n cue.lineAlign = settings.get('lineAlign', 'start');\n cue.snapToLines = settings.get('snapToLines', true);\n cue.size = settings.get('size', 100);\n // Safari still uses the old middle value and won't accept center\n try {\n cue.align = settings.get('align', 'center');\n }\n catch (e) {\n cue.align = settings.get('align', 'middle');\n }\n try {\n cue.position = settings.get('position', 'auto');\n }\n catch (e) {\n const positions = {\n start: 0,\n left: 0,\n center: 50,\n middle: 50,\n end: 100,\n right: 100,\n };\n cue.position = settings.get('position', positions[cue.align]);\n }\n cue.positionAlign = settings.get('positionAlign', 'auto');\n }\n function skipWhitespace() {\n input = input.replace(/^\\s+/, '');\n }\n // 4.1 WebVTT cue timings.\n skipWhitespace();\n cue.startTime = consumeTimeStamp(); // (1) collect cue start time\n skipWhitespace();\n if (input.substr(0, 3) !== '-->') { // (3) next characters must match \"-->\"\n throw new WebVttParsingError(BAD_TIMESTAMP + \" (time stamps must be separated by '-->'): \");\n }\n input = input.substr(3);\n skipWhitespace();\n cue.endTime = consumeTimeStamp(); // (5) collect cue end time\n // 4.1 WebVTT cue settings list.\n skipWhitespace();\n consumeCueSettings(input, cue);\n}\n//# sourceMappingURL=parseCue.js.map","export const WebVttParserState = {\n INITIAL: 'INITIAL',\n HEADER: 'HEADER',\n REGION: 'REGION',\n STYLE: 'STYLE',\n NOTE: 'NOTE',\n BLOCKS: 'BLOCKS',\n ID: 'ID',\n CUE: 'CUE',\n CUE_TEXT: 'CUE_EXT',\n BAD_CUE: 'BAD_CUE',\n BAD_WEBVTT: 'BAD_WEBVTT',\n};\n//# sourceMappingURL=WebVttParserState.js.map","import { createWebVttCue } from './createWebVttCue.js';\nimport { createWebVttRegion } from './createWebVttRegion.js';\nimport { parseCue } from './parse/parseCue.js';\nimport { parseOptions } from './parse/parseOptions.js';\nimport { parseTimeStamp } from './parse/parseTimestamp.js';\nimport { Settings } from './parse/Settings.js';\nimport { WebVttParserState } from './parse/WebVttParserState.js';\nimport { WebVttParsingError } from './WebVttParsingError.js';\nconst BAD_SIGNATURE = 'Malformed WebVTT signature.';\nconst createCue = () => typeof VTTCue !== 'undefined' ? new VTTCue(0, 0, '') : createWebVttCue();\nconst createRegion = () => typeof VTTRegion !== 'undefined' ? new VTTRegion() : createWebVttRegion();\n/**\n * A WebVTT parser.\n *\n * @group WebVTT\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/webvtt/WebVttParser.test.ts#example}\n *\n * @see {@link https://www.w3.org/TR/webvtt1/ | WebVTT Specification}\n */\nexport class WebVttParser {\n /**\n * Create a new WebVTT parser.\n *\n * @param options - The options to use for the parser.\n */\n constructor(options = {}) {\n var _a;\n this.regionSettings = null;\n this.cue = null;\n const useDomTypes = (_a = options.useDomTypes) !== null && _a !== void 0 ? _a : true;\n this.createCue = options.createCue || useDomTypes ? createCue : createWebVttCue;\n this.createRegion = options.createRegion || useDomTypes ? createRegion : createWebVttRegion;\n this.state = WebVttParserState.INITIAL;\n this.buffer = '';\n this.style = '';\n this.regionList = [];\n }\n /**\n * Parse the given data.\n *\n * @param data - The data to parse.\n * @param reuseCue - Whether to reuse the cue.\n * @returns The parser.\n */\n parse(data, reuseCue = false) {\n var _a, _b, _c, _d, _e;\n var _f;\n // If there is no data then we will just try to parse whatever is in buffer already.\n // This may occur in circumstances, for example when flush() is called.\n if (data) {\n this.buffer += data;\n }\n const collectNextLine = () => {\n const buffer = this.buffer;\n let pos = 0;\n while (pos < buffer.length && buffer[pos] !== '\\r' && buffer[pos] !== '\\n') {\n ++pos;\n }\n const line = buffer.substr(0, pos);\n // Advance the buffer early in case we fail below.\n if (buffer[pos] === '\\r') {\n ++pos;\n }\n if (buffer[pos] === '\\n') {\n ++pos;\n }\n this.buffer = buffer.substr(pos);\n return line;\n };\n // draft-pantos-http-live-streaming-20\n // https://tools.ietf.org/html/draft-pantos-http-live-streaming-20#section-3.5\n // 3.5 WebVTT\n const parseTimestampMap = (input) => {\n var _a;\n const settings = new Settings();\n parseOptions(input, (k, v) => {\n switch (k) {\n case 'MPEGT':\n settings.integer(k + 'S', v);\n break;\n case 'LOCA':\n settings.set(k + 'L', parseTimeStamp(v));\n break;\n }\n }, /[^\\d]:/, /,/);\n (_a = this.ontimestampmap) === null || _a === void 0 ? void 0 : _a.call(this, {\n 'MPEGTS': settings.get('MPEGTS'),\n 'LOCAL': settings.get('LOCAL'),\n });\n };\n // 3.2 WebVtt metadata header syntax\n const parseHeader = (input) => {\n if (input.match(/X-TIMESTAMP-MAP/)) {\n // This line contains HLS X-TIMESTAMP-MAP metadata\n parseOptions(input, (k, v) => {\n switch (k) {\n case 'X-TIMESTAMP-MAP':\n parseTimestampMap(v);\n break;\n }\n }, /=/);\n }\n };\n // 6.1 WebVTT file parsing.\n try {\n let line;\n if (this.state === WebVttParserState.INITIAL) {\n // We can't start parsing until we have the first line.\n if (!/\\r\\n|\\n/.test(this.buffer)) {\n return this;\n }\n line = collectNextLine();\n // Remove the UTF-8 BOM if it exists.\n if (line.charCodeAt(0) === 0xFEFF) {\n line = line.slice(1);\n }\n const m = line.match(/^WEBVTT([ \\t].*)?$/);\n if (!m || !m[0]) {\n throw new WebVttParsingError(BAD_SIGNATURE);\n }\n this.state = WebVttParserState.HEADER;\n }\n let alreadyCollectedLine = false;\n var sawCue = reuseCue;\n if (!reuseCue) {\n this.cue = null;\n this.regionSettings = null;\n }\n while (this.buffer) {\n // We can't parse a line until we have the full line.\n if (!/\\r\\n|\\n/.test(this.buffer)) {\n return this;\n }\n if (!alreadyCollectedLine) {\n line = collectNextLine();\n }\n else {\n alreadyCollectedLine = false;\n }\n switch (this.state) {\n case WebVttParserState.HEADER:\n // 13-18 - Allow a header (metadata) under the WEBVTT line.\n if (/:/.test(line)) {\n parseHeader(line);\n }\n else if (!line) {\n // An empty line terminates the header and blocks section.\n this.state = WebVttParserState.BLOCKS;\n }\n continue;\n case WebVttParserState.REGION:\n if (!line && this.regionSettings) {\n // create the region\n const region = this.createRegion();\n region.id = this.regionSettings.get('id', '');\n region.width = this.regionSettings.get('width', 100);\n region.lines = this.regionSettings.get('lines', 3);\n region.regionAnchorX = this.regionSettings.get('regionanchorX', 0);\n region.regionAnchorY = this.regionSettings.get('regionanchorY', 100);\n region.viewportAnchorX = this.regionSettings.get('viewportanchorX', 0);\n region.viewportAnchorY = this.regionSettings.get('viewportanchorY', 100);\n region.scroll = this.regionSettings.get('scroll', '');\n // Register the region.\n (_a = this.onregion) === null || _a === void 0 ? void 0 : _a.call(this, region);\n // Remember the VTTRegion for later in case we parse any VTTCues that reference it.\n this.regionList.push(region);\n // An empty line terminates the REGION block\n this.regionSettings = null;\n this.state = WebVttParserState.BLOCKS;\n break;\n }\n // if it's a new region block, create a new VTTRegion\n if (this.regionSettings === null) {\n this.regionSettings = new Settings();\n }\n const regionSettings = this.regionSettings;\n // parse region options and set it as appropriate on the region\n parseOptions(line, (k, v) => {\n switch (k) {\n case 'id':\n regionSettings.set(k, v);\n break;\n case 'width':\n regionSettings.percent(k, v);\n break;\n case 'lines':\n regionSettings.integer(k, v);\n break;\n case 'regionanchor':\n case 'viewportanchor':\n const xy = v.split(',');\n if (xy.length !== 2) {\n break;\n }\n // We have to make sure both x and y parse, so use a temporary\n // settings object here.\n const anchor = new Settings();\n anchor.percent('x', xy[0]);\n anchor.percent('y', xy[1]);\n if (!anchor.has('x') || !anchor.has('y')) {\n break;\n }\n regionSettings.set(k + 'X', anchor.get('x'));\n regionSettings.set(k + 'Y', anchor.get('y'));\n break;\n case 'scroll':\n regionSettings.alt(k, v, ['up']);\n break;\n }\n }, /:/, /\\s/);\n continue;\n case WebVttParserState.STYLE:\n if (!line) {\n (_b = this.onstyle) === null || _b === void 0 ? void 0 : _b.call(this, this.style);\n this.style = '';\n this.state = WebVttParserState.BLOCKS;\n break;\n }\n this.style += line + '\\n';\n continue;\n case WebVttParserState.NOTE:\n // Ignore NOTE blocks.\n if (!line) {\n this.state = WebVttParserState.ID;\n }\n continue;\n case WebVttParserState.BLOCKS:\n if (!line) {\n continue;\n }\n // Check for the start of a NOTE blocks\n if (/^NOTE($[ \\t])/.test(line)) {\n this.state = WebVttParserState.NOTE;\n break;\n }\n // Check for the start of a REGION blocks\n if (/^REGION/.test(line) && !sawCue) {\n this.state = WebVttParserState.REGION;\n break;\n }\n // Check for the start of a STYLE blocks\n if (/^STYLE/.test(line) && !sawCue) {\n this.state = WebVttParserState.STYLE;\n break;\n }\n this.state = WebVttParserState.ID;\n // Process line as an ID.\n /* falls through */\n case WebVttParserState.ID:\n // Check for the start of NOTE blocks.\n if (/^NOTE($|[ \\t])/.test(line)) {\n this.state = WebVttParserState.NOTE;\n break;\n }\n // 19-29 - Allow any number of line terminators, then initialize new cue values.\n if (!line) {\n continue;\n }\n sawCue = true;\n this.cue = this.createCue();\n (_c = (_f = this.cue).text) !== null && _c !== void 0 ? _c : (_f.text = '');\n this.state = WebVttParserState.CUE;\n // 30-39 - Check if this line contains an optional identifier or timing data.\n if (line.indexOf('-->') === -1) {\n this.cue.id = line;\n continue;\n }\n // Process line as start of a cue.\n /*falls through*/\n case WebVttParserState.CUE:\n // 40 - Collect cue timings and settings.\n try {\n parseCue(line, this.cue, this.regionList);\n }\n catch (e) {\n this.reportOrThrowError(e);\n // In case of an error ignore rest of the cue.\n this.cue = null;\n this.state = WebVttParserState.BAD_CUE;\n continue;\n }\n this.state = WebVttParserState.CUE_TEXT;\n continue;\n case WebVttParserState.CUE_TEXT:\n const hasSubstring = line.indexOf('-->') !== -1;\n // 34 - If we have an empty line then report the cue.\n // 35 - If we have the special substring '-->' then report the cue,\n // but do not collect the line as we need to process the current\n // one as a new cue.\n if (!line || hasSubstring && (alreadyCollectedLine = true)) {\n // We are done parsing this cue.\n (_d = this.oncue) === null || _d === void 0 ? void 0 : _d.call(this, this.cue);\n this.cue = null;\n this.state = WebVttParserState.ID;\n continue;\n }\n if ((_e = this.cue) === null || _e === void 0 ? void 0 : _e.text) {\n this.cue.text += '\\n';\n }\n this.cue.text += line.replace(/\\u2028/g, '\\n').replace(/u2029/g, '\\n');\n continue;\n case WebVttParserState.BAD_CUE: // BADCUE\n // 54-62 - Collect and discard the remaining cue.\n if (!line) {\n this.state = WebVttParserState.ID;\n }\n continue;\n }\n }\n }\n catch (e) {\n this.reportOrThrowError(e);\n // If we are currently parsing a cue, report what we have.\n if (this.state === WebVttParserState.CUE_TEXT && this.cue && this.oncue) {\n this.oncue(this.cue);\n }\n this.cue = null;\n this.regionSettings = null;\n // Enter BADWEBVTT state if header was not parsed correctly otherwise\n // another exception occurred so enter BADCUE state.\n this.state = this.state === WebVttParserState.INITIAL ? WebVttParserState.BAD_WEBVTT : WebVttParserState.BAD_CUE;\n }\n return this;\n }\n /**\n * Flush the parser.\n *\n * @returns The parser.\n */\n flush() {\n var _a;\n try {\n // Finish parsing the stream.\n this.buffer += '';\n // Synthesize the end of the current cue or region.\n if (this.cue || this.state === WebVttParserState.HEADER) {\n this.buffer += '\\n\\n';\n this.parse(undefined, true);\n }\n // If we've flushed, parsed, and we're still on the INITIAL state then\n // that means we don't have enough of the stream to parse the first\n // line.\n if (this.state === WebVttParserState.INITIAL) {\n throw new WebVttParsingError(BAD_SIGNATURE);\n }\n }\n catch (e) {\n this.reportOrThrowError(e);\n }\n (_a = this.onflush) === null || _a === void 0 ? void 0 : _a.call(this);\n return this;\n }\n // If the error is a ParsingError then report it to the consumer if\n // possible. If it's not a ParsingError then throw it like normal.\n reportOrThrowError(error) {\n var _a;\n if (error instanceof WebVttParsingError) {\n (_a = this.onparsingerror) === null || _a === void 0 ? void 0 : _a.call(this, error);\n }\n else {\n throw error;\n }\n }\n}\n//# sourceMappingURL=WebVttParser.js.map","import { WebVttParser } from './WebVttParser.js';\n/**\n * Parse a WebVTT string into a WebVttParseResult.\n *\n * @param text - The WebVTT string to parse.\n * @param options - The options to use for the parser.\n * @returns The parsed WebVttParseResult.\n *\n * @group WebVTT\n *\n * @beta\n *\n * @example\n * {@includeCode ../../test/webvtt/parseWebVtt.test.ts#example}\n */\nexport async function parseWebVtt(text, options) {\n const parser = new WebVttParser(options);\n const cues = [];\n const regions = [];\n const styles = [];\n const errors = [];\n parser.oncue = cue => cues.push(cue);\n parser.onregion = region => regions.push(region);\n parser.onstyle = style => styles.push(style);\n parser.onparsingerror = error => errors.push(error);\n parser.parse(text);\n parser.flush();\n return { cues, regions, styles, errors };\n}\n//# sourceMappingURL=parseWebVtt.js.map","/**\n * Convert a generic WebVTT cue to a VTTCue.\n *\n * @param cue - The WebVTT cue to convert.\n * @returns The converted VTTCue.\n *\n * @group WebVTT\n *\n * @beta\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/VTTCue | VTTCue}\n */\nexport function toVttCue(cue) {\n const vttCue = new VTTCue(cue.startTime, cue.endTime, cue.text);\n vttCue.id = cue.id;\n vttCue.region = cue.region;\n vttCue.vertical = cue.vertical;\n vttCue.snapToLines = cue.snapToLines;\n vttCue.line = cue.line;\n vttCue.lineAlign = cue.lineAlign;\n vttCue.position = cue.position;\n vttCue.positionAlign = cue.positionAlign;\n vttCue.size = cue.size;\n vttCue.pauseOnExit = cue.pauseOnExit;\n // Safari still uses the old middle value and won't accept center\n try {\n vttCue.align = 'center';\n }\n catch (e) {\n vttCue.align = 'middle';\n }\n return vttCue;\n}\n//# sourceMappingURL=toVttCue.js.map","/**\n * Convert a WebVTT region to a VTTRegion.\n *\n * @param region - The WebVTT region to convert.\n * @returns The converted VTTRegion.\n *\n * @group WebVTT\n *\n * @beta\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion | VTTRegion}\n */\nexport function toVttRegion(region) {\n const vttRegion = new VTTRegion();\n vttRegion.id = region.id;\n vttRegion.width = region.width;\n vttRegion.lines = region.lines;\n vttRegion.regionAnchorX = region.regionAnchorX;\n vttRegion.regionAnchorY = region.regionAnchorY;\n vttRegion.viewportAnchorX = region.viewportAnchorX;\n vttRegion.viewportAnchorY = region.viewportAnchorY;\n vttRegion.scroll = region.scroll;\n return vttRegion;\n}\n//# sourceMappingURL=toVttRegion.js.map","/**\n * WebVTT result types.\n *\n * @group WebVTT\n *\n * @beta\n *\n * @enum\n */\nexport const WebVttResultType = {\n CUE: 'cue',\n REGION: 'region',\n TIMESTAMP_MAP: 'timestampmap',\n STYLE: 'style',\n ERROR: 'error',\n};\n//# sourceMappingURL=WebVttResultType.js.map","import { WebVttParser } from './WebVttParser.js';\nimport { WebVttResultType } from './WebVttResultType.js';\n/**\n * WebVTT transform stream transformer.\n *\n * @group WebVTT\n *\n * @beta\n */\nexport class WebVttTransformer {\n /**\n * Creates a new WebVTT transformer.\n */\n constructor() {\n this.results = [];\n this.parser = new WebVttParser();\n this.parser.oncue = cue => this.results.push({ type: WebVttResultType.CUE, data: cue });\n this.parser.onregion = region => this.results.push({ type: WebVttResultType.REGION, data: region });\n this.parser.onstyle = style => this.results.push({ type: WebVttResultType.STYLE, data: style });\n this.parser.ontimestampmap = timestampmap => this.results.push({ type: WebVttResultType.TIMESTAMP_MAP, data: timestampmap });\n this.parser.onparsingerror = error => this.results.push({ type: WebVttResultType.ERROR, data: error });\n }\n enqueueResults(controller) {\n // TODO: Should parse errors throw?\n for (const result of this.results) {\n controller.enqueue(result);\n }\n this.results = [];\n }\n /**\n * Transforms a chunk of WebVTT data.\n *\n * @param chunk - The chunk of WebVTT data to transform.\n * @param controller - The controller to enqueue the results to.\n */\n transform(chunk, controller) {\n try {\n this.parser.parse(chunk);\n this.enqueueResults(controller);\n }\n catch (error) {\n controller.error(error);\n }\n }\n /**\n * Flushes the transformer.\n *\n * @param controller - The controller to enqueue the results to.\n */\n flush(controller) {\n try {\n this.parser.flush();\n this.enqueueResults(controller);\n }\n catch (error) {\n controller.error(error);\n }\n }\n}\n//# sourceMappingURL=WebVttTransformer.js.map","import { WebVttTransformer } from './WebVttTransformer.js';\n/**\n * WebVTT transform stream.\n *\n * @group WebVTT\n *\n * @beta\n */\nexport class WebVttTransformStream extends TransformStream {\n constructor(writableStrategy, readableStrategy) {\n super(new WebVttTransformer(), writableStrategy, readableStrategy);\n }\n}\n//# sourceMappingURL=WebVttTransformStream.js.map","/**\n * The Common Media Libray\n *\n * @packageDocumentation\n */\nexport * from './608.js';\nexport * from './cmaf-ham.js';\nexport * from './cmcd.js';\nexport * from './cmsd.js';\nexport * from './contentsteering.js';\nexport * from './dash.js';\nexport * from './drm.js';\nexport * from './id3.js';\nexport * from './iso8601.js';\nexport * from './isobmff.js';\nexport * from './structuredfield.js';\nexport * from './throughput.js';\nexport * from './utils.js';\nexport * from './webvtt.js';\nexport * from './xml.js';\n//# sourceMappingURL=index.js.map","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\nimport * as CML from '@svta/common-media-library';\n\n/**\n * Collects variable names for player statistics metrics across different projects (e.g., wrts, webrtc).\n * Variables remain undefined if they are not present in the stats for the current project\n * (for example, 'latency' is undefined for webrtc).\n * Includes the toCmcd() method to convert stats into a CMCD payload.\n */\nexport class PlayerStats {\n protocol?: string; // protocol: HLS, DASH, WRTS, HESP, SMOOTH\n currentTime?: number; // current time in ms\n waitingData?: boolean;\n\n bufferAmount?: number; // buffer amount in ms\n latency?: number; // latency in ms\n rtt?: number; // round trip time in ms\n jitter?: number; // jitter of reception RFC3550\n\n playbackSpeed?: number;\n playbackRate?: number;\n\n recvByteRate?: number; // Bps in reception\n sendByteRate?: number; // Bps in sending\n\n videoTrackId?: number; // video track selected\n videoTrackBandwidth?: number; // video bandwidth currently playing\n audioTrackId?: number; // audio track selected\n audioTrackBandwidth?: number; // audio bandwidth currently playing\n\n videoPerSecond?: number; // frame video per second, fps\n audioPerSecond?: number; // sample audio per second\n\n // following parameters are counters\n skippedVideoCount?: number; // frame video skipped\n skippedAudioCount?: number; // sample audio skipped\n\n lostPacketCount?: number; // network packets lost\n nackCount?: number; // current estimated Negative Acknowledgement count\n\n stallCount?: number;\n\n /**\n * Converts the current {@link PlayerStats} snapshot into a CMCD (Common Media Client Data) payload.\n * @param url - The full URL of the media object.\n * @param trackId - The track ID for which to generate the CMCD payload.\n * @param prevStats - Optional previous {@link PlayerStats} snapshot to calculate deltas for incremental metrics since their last reset.\n * @returns A {@link CML.Cmcd} object representing the CMCD payload.\n */\n toCmcd(url: URL, trackId: number, prevStats?: PlayerStats): CML.Cmcd {\n const cmcd: CML.Cmcd = {};\n // Determine playback rate to use, preferring 'playbackRate' if available, otherwise falling back to 'playbackSpeed'\n const playBack = this.playbackRate ?? this.playbackSpeed;\n\n // Object Type\n if (trackId === this.audioTrackId) {\n cmcd.ot = CML.CmcdObjectType.AUDIO;\n } else if (trackId === this.videoTrackId) {\n cmcd.ot = CML.CmcdObjectType.VIDEO;\n } else {\n cmcd.ot = CML.CmcdObjectType.OTHER;\n }\n cmcd.st = CML.CmcdStreamType.LIVE; // Stream Type\n cmcd.cid = url.pathname.split('/').pop(); // Content ID\n if (this.bufferAmount != null && playBack != null) {\n cmcd.dl = this.bufferAmount * playBack; // Deadline\n }\n // br is computed to be only for video, or only audio track, or sum of both depending of if trackId matches either audio or video track IDs\n if (trackId === this.videoTrackId) {\n cmcd.br = this.videoTrackBandwidth ?? 0;\n } else if (trackId === this.audioTrackId) {\n cmcd.br = this.audioTrackBandwidth ?? 0;\n } else {\n cmcd.br = (this.audioTrackBandwidth ?? 0) + (this.videoTrackBandwidth ?? 0);\n }\n if (this.stallCount != null) {\n cmcd.bs = this.stallCount - (prevStats?.stallCount ?? 0) > 0; // Buffer Starvation\n }\n if (this.bufferAmount != null) {\n cmcd.bl = this.bufferAmount; // Buffer Length\n }\n if (this.recvByteRate != null) {\n cmcd.mtp = this.recvByteRate; // Measured mtp CMCD throughput\n }\n if (playBack != null) {\n cmcd.pr = Number(playBack.toFixed(2)); // Playback Rate\n }\n // sf defaults to other (\"o\") if protocol is not in the map, otherwise undefined if protocol is undefined\n const sfByProtocol = {\n dash: 'd',\n hls: 'h',\n smooth: 's'\n };\n const proto = this.protocol?.toLowerCase();\n if (proto != null) {\n cmcd.sf = (sfByProtocol[proto as keyof typeof sfByProtocol] ?? 'o') as CML.CmcdStreamingFormat; // Streaming Format\n }\n if (this.waitingData != null) {\n cmcd.su = this.waitingData; // Startup\n }\n return cmcd;\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\n/**\n * An user-interface compoment to vizualize real-time metrics\n */\nexport class UIMetrics {\n /**\n * get graph margin in pixels\n */\n get graphMargin(): number {\n return this._graphMargin;\n }\n /**\n * set graph margin in pixels\n */\n set graphMargin(value: number) {\n this._graphMargin = value;\n }\n\n /**\n * get text margin in pixels\n */\n get textMargin(): number {\n return this._textMargin;\n }\n /**\n * set text margin in pixels\n */\n set textMargin(value: number) {\n this._textMargin = value;\n }\n\n /**\n * get metric line height in pixels\n */\n get lineHeight(): number {\n return this._lineHeight;\n }\n /**\n * set metric line height in pixels\n */\n set lineHeight(value: number) {\n this._lineHeight = value;\n }\n\n /**\n * get label width in pixels\n */\n get labelWidth(): number {\n return this._labelWidth;\n }\n /**\n * set label width in pixels\n */\n set labelWidth(value: number) {\n this._labelWidth = value;\n }\n\n /**\n * get legend font size in pixels\n */\n get legendFontSize(): number {\n return this._legendFontSize;\n }\n /**\n * set legend font size in pixels\n */\n set legendFontSize(value: number) {\n this._legendFontSize = value;\n }\n\n /**\n * get the metric unit-step in pixels\n */\n get stepSize(): number {\n return this._stepSize;\n }\n /**\n * set the metric unit-step in pixels\n */\n set stepSize(value: number) {\n this._stepSize = value;\n }\n\n /**\n * Return the space width available to display average metric\n */\n get averageDisplayWidth(): number {\n // 7 chars (1 char width ≈ fontSize/2)\n return (this._legendFontSize / 2) * 7;\n }\n\n /**\n * Return the count of displayable metrics regarding the space available on the screen\n */\n get displayableCount(): number {\n const width = this._ui.clientWidth - this.averageDisplayWidth;\n return Math.ceil((width - this._labelWidth) / this._stepSize);\n }\n\n private _ui: HTMLElement;\n private _html?: string;\n private _lineHeight: number;\n private _labelWidth: number;\n private _graphMargin: number;\n private _textMargin: number;\n private _legendFontSize: number;\n private _stepSize: number;\n private _ranges: { [key: string]: { min: number; max: number } };\n private _mouseX?: number;\n\n constructor(ui: HTMLElement) {\n this._ui = ui;\n ui.addEventListener('mousemove', (event: MouseEvent) => {\n this._mouseX = event.offsetX;\n });\n ui.addEventListener('mouseleave', (event: MouseEvent) => {\n this._mouseX = undefined;\n });\n // default values in pixels\n this._lineHeight = 40;\n this._labelWidth = 170;\n this._graphMargin = 5;\n this._textMargin = 5;\n this._legendFontSize = 13;\n this._stepSize = 10;\n this._ranges = {};\n }\n\n /**\n * Reset metrics stats, essentially rescaling the metrics\n */\n reset() {\n this._ranges = {};\n }\n\n /**\n * build metric from stats\n * @param stats Map with stats per entry\n * @returns\n */\n display(stats: Map<string, Array<string | number>>) {\n if (this._html != null) {\n // CPU processing, skip one stats!\n return;\n }\n this._html = '';\n\n const averageDisplayWidth = this.averageDisplayWidth;\n const averageCenter = averageDisplayWidth / 2;\n const width = this._ui.clientWidth - averageDisplayWidth;\n const graphHeight = this._lineHeight - 2 * this._graphMargin;\n const graphMiddle = Math.round(this._lineHeight / 2);\n const textY = Math.round(this._lineHeight / 2 + this._textMargin);\n const titleWidth = this._labelWidth - 2 * this._textMargin;\n\n for (const [key, fullValues] of stats) {\n const displayableCount = Math.ceil((width - this._labelWidth) / this._stepSize);\n const values = fullValues.slice(Math.max(0, fullValues.length - displayableCount));\n if (!values.length) {\n continue;\n }\n\n let x = this._labelWidth + values.length * this._stepSize;\n\n /*\n\t\t\t<svg class=\"list-group-item p-0\" style=\"height: 40px;\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t<text x=\"5\" y=\"22\">M text</text>\n\t\t\t\t<path fill=\"none\" d=\"M100 0 110 22 120 0 130 20\" stroke-width=\"1\" stroke=\"brown\"/>\n\t\t\t</svg>\n\t\t\t*/\n this._html +=\n '<svg class=\"list-group-item p-0\" style=\"height: ' +\n this._lineHeight +\n 'px\" xmlns=\"http://www.w3.org/2000/svg\">';\n this._html += '<text x=\"' + this._textMargin + '\" y=\"' + textY + '\">' + key + '</text>';\n this._html +=\n '<text x=\"' +\n titleWidth +\n '\" y=\"' +\n textY +\n '\" text-anchor=\"end\">' +\n values[values.length - 1].toString() +\n '</text>';\n\n this._html += '<path fill=\"none\" d=\"M' + this._labelWidth + ' ' + graphMiddle;\n this._html += 'H' + (width + averageCenter);\n this._html += '\" stroke-width=\"1\" stroke=\"lightgray\" stroke-dasharray=\"10,10\"/>';\n\n this._html += '<path fill=\"none\" stroke-width=\"1\" stroke=\"brown\" d=\"M';\n\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n for (let i = 0; i < values.length; ++i) {\n const value = parseFloat(values[i].toString());\n if (value < min) {\n min = value;\n }\n if (value > max) {\n max = value;\n }\n }\n let range = this._ranges[key];\n if (!range) {\n this._ranges[key] = range = { min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY };\n }\n range.min = Math.min(range.min, min);\n range.max = Math.max(range.max, max);\n const delta = range.max - range.min;\n\n let minCircle = '';\n let maxCircle = '';\n\n let mouseCircle = this._mouseX == null || this._mouseX > x ? null : '';\n for (let i = 0; i < values.length; ++i) {\n x -= this._stepSize;\n const value = parseFloat(values[i].toString());\n const y = graphMiddle + (delta ? Math.round((0.5 - (value - range.min) / delta) * graphHeight) : 0);\n this._html += x + ' ' + y + ' ';\n if (value === min) {\n maxCircle = maxCircle || this._drawCircle(x, y, value);\n } else if (value === max) {\n minCircle = minCircle || this._drawCircle(x, y, value);\n }\n if (mouseCircle === '' && x <= (this._mouseX || 0)) {\n mouseCircle = this._drawCircle(x, y, value, 'blue', '');\n }\n }\n\n this._html += '\" />'; // end path\n\n // Average\n const average = Math.round((max - min) / 2);\n this._html += '<text text-anchor=\"middle\" font-size=\"' + this._legendFontSize + '\" y=\"' + textY + '\">';\n this._html +=\n '<tspan x=\"' +\n (width + averageCenter) +\n '\" dy=\"-0.5em\">' +\n (min !== max ? '≈' : '=') +\n (min + average) +\n '</tspan>';\n this._html += '<tspan x=\"' + (width + averageCenter) + '\" dy=\"1em\">±' + average + '</tspan>';\n this._html += '</text>';\n\n this._html += minCircle + maxCircle + (mouseCircle ?? '');\n if (mouseCircle) {\n this._html += mouseCircle;\n }\n this._html += '</svg>';\n }\n requestAnimationFrame(() => {\n if (this._html != null) {\n this._ui.innerHTML = this._html;\n this._html = undefined;\n }\n });\n }\n\n private _drawCircle(x: number, y: number, value: number, color = 'green', fontStyle = 'italic') {\n let circle = '<circle cx=\"' + x + '\" cy=\"' + y + '\" r=\"2\" fill=\"' + color + '\" />';\n const legendFontHeight = 0.7 * this._legendFontSize;\n const graphMiddle = Math.round(this._lineHeight / 2);\n if (y < graphMiddle) {\n // legend below\n y += this.textMargin + legendFontHeight;\n } else {\n // legend above\n y -= this.textMargin;\n }\n circle +=\n '<text font-style=\"' +\n fontStyle +\n '\" font-size=\"' +\n this._legendFontSize +\n '\" x=\"' +\n (x - this._legendFontSize) +\n '\" y=\"' +\n y +\n '\">' +\n value +\n '</text>';\n return circle;\n }\n}\n","/**\n * Copyright 2024 Ceeblue B.V.\n * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.\n * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.\n */\n\nexport { BinaryReader } from './src/BinaryReader';\nexport { BinaryWriter } from './src/BinaryWriter';\nexport { BitReader } from './src/BitReader';\nexport { ByteRate } from './src/ByteRate';\nexport * as Connect from './src/Connect';\nexport { EventEmitter } from './src/EventEmitter';\nexport { FixMap } from './src/FixMap';\nexport { NetAddress } from './src/NetAddress';\nexport { Numbers } from './src/Numbers';\nexport { Queue } from './src/Queue';\nexport { SDP } from './src/SDP';\nexport * as Util from './src/Util';\nexport { WebSocketReliable, WebSocketReliableError } from './src/WebSocketReliable';\nexport * as EpochTime from './src/EpochTime';\nexport { LogLevel, ILog, Log, Loggable, log } from './src/Log';\nexport { PlayerStats } from './src/stats/PlayerStats';\n// Export the Common Media Library as the CML namespace.\n// Example usage: CML.Cmcd, CML.CmcdStreamingFormat, etc.\nexport * as CML from '@svta/common-media-library';\n\nexport { UIMetrics } from './src/ui/UIMetrics';\n\nconst __lib__version__ = '?'; // will be replaced on building by project version\n\nexport const VERSION: string = __lib__version__;\n"],"names":["_decoder","Util.toBin","Util.options","Util.EMPTY_FUNCTION","Util.time","time","Util.getExtension","Util.getFile","Util.trimStart","Util.getBaseFile","getCodec","getFrameRate","getByterange","STRING","CML.CmcdObjectType","CML.CmcdStreamType"],"mappings":"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,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,EAAE;AACX,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ;AACA;AACA,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,EAAE;AACX,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ;AACA;AACA,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG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BAAoB,CCdhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,aAAa,GAAG;AAC7B;AACA;AACA;AACA,IAAI,UAAU,EAAE,IAAI;AACpB;AACA;AACA;AACA,IAAI,KAAK,EAAE,GAAG;AACd;AACA;AACA;AACA,IAAI,aAAa,EAAE,GAAG;AACtB;AACA;AACA;AACA,IAAI,UAAU,EAAE,GAAG;AACnB;AACA;AACA;AACA,IAAI,iBAAiB,EAAE,GAAG;AAC1B;AACA;AACA;AACA,IAAI,IAAI,EAAE,GAAG;AACb;AACA;AACA;AACA,IAAI,MAAM,EAAE,IAAI;AAChB;AACA;AACA;AACA,IAAI,aAAa,EAAE,IAAI;AACvB;AACA;AACA;AACA,IAAI,eAAe,EAAE,IAAI;AACzB,CAAC,CC7CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,cAAc,GAAG,kBAAkB,CCVhD;AACA;AACA;AACA;AACA;AACO,MAAM,YAAY,GAAG;AAC5B;AACA;AACA;AACA,IAAI,QAAQ,EAAE,GAAG;AACjB;AACA;AACA;AACA,IAAI,KAAK,EAAE,GAAG;AACd;AACA;AACA;AACA,IAAI,KAAK,EAAE,GAAG;AACd;AACA;AACA;AACA,IAAI,KAAK,EAAE,IAAI;AACf;AACA;AACA;AACA,IAAI,IAAI,EAAE,GAAG;AACb;AACA;AACA;AACA,IAAI,OAAO,EAAE,GAAG;AAChB;AACA;AACA;AACA,IAAI,UAAU,EAAE,IAAI;AACpB;AACA;AACA;AACA,IAAI,GAAG,EAAE,GAAG;AACZ;AACA;AACA;AACA,IAAI,KAAK,EAAE,GAAG;AACd,CAAC,CCzCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,cAAc,GAAG,YAAY,CCV1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,eAAe,GAAG;AAC/B;AACA;AACA;AACA,IAAI,QAAQ,EAAE,GAAG;AACjB;AACA;AACA;AACA,IAAI,OAAO,EAAE,GAAG;AAChB;AACA;AACA;AACA,IAAI,OAAO,EAAE,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AACA;AACA;AACA;AACA;AACO,MAAM,gBAAgB,GAAG,iBAAiB,CCPjD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,cAAc,GAAG,sCAAsC,CCLpE;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,gBAAgB,GAAG;AAChC,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,IAAI,EAAE,IAAI;AACd,CAAC,CCZD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,OAAO,GAAG,SAAS,CCPhC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,mBAAmB,GAAG,mBAAmB,CCPtD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,aAAa,GAAG,sCAAsC,CCPnE;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,aAAa,GAAG,eAAe,CCP5C;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,gBAAgB,GAAG,kBAAkB,CCPlD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,gBAAgB,GAAG,kBAAkB,CCPlD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,yBAAyB,GAAG,2BAA2B,CCPpE;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,GAAG,QAAQ,CCP9B;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,IAAI,GAAG,MAAM,CCH1B;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,sBAAsB,GAAG;AACtC,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,IAAI,EAAE,IAAI;AACd,CAAC,CChBD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,cAAc,GAAG,gBAAgB,CCP9C;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,mBAAmB,GAAG,oBAAoB,CCPvD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,eAAe,GAAG,iBAAiB,CCPhD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,M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","x_google_ignoreList":[1,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448]}