stormcloud-video-player 0.8.70 → 0.8.72

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.
@@ -74,19 +74,31 @@ __export(EdgePodRequest_exports, {
74
74
  module.exports = __toCommonJS(EdgePodRequest_exports);
75
75
  var EDGE_POD_MAX_ADS = 10;
76
76
  var EDGE_POD_EXCEEDS_BUDGET = "edge_pod_exceeds_budget";
77
+ var LICENSE_KEY_PLACEHOLDER = /\{licenseKey\}|%7BlicenseKey%7D/gi;
77
78
  function resolveEdgePodBaseUrl(config) {
78
- var _config_edgePodUrl;
79
+ var _config_edgePodUrl, _config_licenseKey;
79
80
  if (config.enableEdgePodRequest !== true) return void 0;
80
81
  var raw = (_config_edgePodUrl = config.edgePodUrl) === null || _config_edgePodUrl === void 0 ? void 0 : _config_edgePodUrl.trim();
81
82
  if (!raw) {
82
83
  console.warn("[AdBreak][EDGE] enableEdgePodRequest is true but edgePodUrl is missing; using GAM only");
83
84
  return void 0;
84
85
  }
86
+ var licenseKey = (_config_licenseKey = config.licenseKey) === null || _config_licenseKey === void 0 ? void 0 : _config_licenseKey.trim();
87
+ if (!licenseKey) {
88
+ console.warn("[AdBreak][EDGE] enableEdgePodRequest is true but licenseKey is missing; using GAM only");
89
+ return void 0;
90
+ }
91
+ var encodedKey = encodeURIComponent(licenseKey);
85
92
  try {
86
- var url = new URL(raw);
93
+ var hasPlaceholder = raw.search(LICENSE_KEY_PLACEHOLDER) !== -1;
94
+ var url = new URL(hasPlaceholder ? raw.replace(LICENSE_KEY_PLACEHOLDER, encodedKey) : raw);
87
95
  if (url.protocol !== "https:" && url.protocol !== "http:") {
88
96
  throw new Error("unsupported protocol ".concat(url.protocol));
89
97
  }
98
+ if (!hasPlaceholder) {
99
+ var path = url.pathname.replace(/\/+$/, "");
100
+ url.pathname = /\/[^/]+\/pod$/.test(path) ? path.replace(/\/[^/]+\/pod$/, "/".concat(encodedKey, "/pod")) : "".concat(path, "/").concat(encodedKey, "/pod");
101
+ }
90
102
  return url.toString();
91
103
  } catch (unused) {
92
104
  console.warn("[AdBreak][EDGE] edgePodUrl is not a valid http(s) URL; using GAM only");
@@ -1 +1 @@
1
- {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\EdgePodRequest.cjs"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","EdgePodRequest_exports","EDGE_POD_EXCEEDS_BUDGET","EDGE_POD_MAX_ADS","buildEdgePodUrl","classifyEdgeVastResponse","describeEdgeUrl","resolveEdgePodBaseUrl","module","exports","config","enableEdgePodRequest","raw","edgePodUrl","trim","console","warn","url","URL","protocol","Error","toString","baseUrl","remainingMs","remainingAdLimit","maxMs","Math","max","floor","maxAds","min","searchParams","set","String","result","error","podAdCount","message","test","includes","parsed","origin","pathname","split"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/player/EdgePodRequest.ts\nvar EdgePodRequest_exports = {};\n__export(EdgePodRequest_exports, {\n EDGE_POD_EXCEEDS_BUDGET: () => EDGE_POD_EXCEEDS_BUDGET,\n EDGE_POD_MAX_ADS: () => EDGE_POD_MAX_ADS,\n buildEdgePodUrl: () => buildEdgePodUrl,\n classifyEdgeVastResponse: () => classifyEdgeVastResponse,\n describeEdgeUrl: () => describeEdgeUrl,\n resolveEdgePodBaseUrl: () => resolveEdgePodBaseUrl\n});\nmodule.exports = __toCommonJS(EdgePodRequest_exports);\nvar EDGE_POD_MAX_ADS = 10;\nvar EDGE_POD_EXCEEDS_BUDGET = \"edge_pod_exceeds_budget\";\nfunction resolveEdgePodBaseUrl(config) {\n if (config.enableEdgePodRequest !== true) return void 0;\n const raw = config.edgePodUrl?.trim();\n if (!raw) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but edgePodUrl is missing; using GAM only\"\n );\n return void 0;\n }\n try {\n const url = new URL(raw);\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") {\n throw new Error(`unsupported protocol ${url.protocol}`);\n }\n return url.toString();\n } catch {\n console.warn(\"[AdBreak][EDGE] edgePodUrl is not a valid http(s) URL; using GAM only\");\n return void 0;\n }\n}\nfunction buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit) {\n const url = new URL(baseUrl);\n const maxMs = Math.max(0, Math.floor(remainingMs));\n const maxAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, Math.floor(remainingAdLimit)));\n url.searchParams.set(\"pmxd\", String(maxMs));\n url.searchParams.set(\"pmad\", String(maxAds));\n url.searchParams.set(\"duration\", String(Math.floor(maxMs / 1e3)));\n url.searchParams.set(\"count\", String(maxAds));\n return url.toString();\n}\nfunction classifyEdgeVastResponse(result) {\n if (result.error == null) {\n return result.podAdCount > 0 ? \"fill\" : \"no_fill\";\n }\n const message = result.error?.message ?? String(result.error);\n if (/no ads available|fill rejected|no media file|no ad loaded/i.test(message) || message.includes(EDGE_POD_EXCEEDS_BUDGET)) {\n return \"no_fill\";\n }\n return \"invalid\";\n}\nfunction describeEdgeUrl(url) {\n try {\n const parsed = new URL(url);\n return `${parsed.origin}${parsed.pathname}`;\n } catch {\n return url.split(\"?\")[0] ?? \"\";\n }\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n EDGE_POD_EXCEEDS_BUDGET,\n EDGE_POD_MAX_ADS,\n buildEdgePodUrl,\n classifyEdgeVastResponse,\n describeEdgeUrl,\n resolveEdgePodBaseUrl\n});\n"]}
1
+ {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\EdgePodRequest.cjs"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","EdgePodRequest_exports","EDGE_POD_EXCEEDS_BUDGET","EDGE_POD_MAX_ADS","buildEdgePodUrl","classifyEdgeVastResponse","describeEdgeUrl","resolveEdgePodBaseUrl","module","exports","LICENSE_KEY_PLACEHOLDER","config","enableEdgePodRequest","raw","edgePodUrl","trim","console","warn","licenseKey","encodedKey","encodeURIComponent","hasPlaceholder","search","url","URL","replace","protocol","Error","path","pathname","test","toString","baseUrl","remainingMs","remainingAdLimit","maxMs","Math","max","floor","maxAds","min","searchParams","set","String","result","error","podAdCount","message","includes","parsed","origin","split"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/player/EdgePodRequest.ts\nvar EdgePodRequest_exports = {};\n__export(EdgePodRequest_exports, {\n EDGE_POD_EXCEEDS_BUDGET: () => EDGE_POD_EXCEEDS_BUDGET,\n EDGE_POD_MAX_ADS: () => EDGE_POD_MAX_ADS,\n buildEdgePodUrl: () => buildEdgePodUrl,\n classifyEdgeVastResponse: () => classifyEdgeVastResponse,\n describeEdgeUrl: () => describeEdgeUrl,\n resolveEdgePodBaseUrl: () => resolveEdgePodBaseUrl\n});\nmodule.exports = __toCommonJS(EdgePodRequest_exports);\nvar EDGE_POD_MAX_ADS = 10;\nvar EDGE_POD_EXCEEDS_BUDGET = \"edge_pod_exceeds_budget\";\nvar LICENSE_KEY_PLACEHOLDER = /\\{licenseKey\\}|%7BlicenseKey%7D/gi;\nfunction resolveEdgePodBaseUrl(config) {\n if (config.enableEdgePodRequest !== true) return void 0;\n const raw = config.edgePodUrl?.trim();\n if (!raw) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but edgePodUrl is missing; using GAM only\"\n );\n return void 0;\n }\n const licenseKey = config.licenseKey?.trim();\n if (!licenseKey) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but licenseKey is missing; using GAM only\"\n );\n return void 0;\n }\n const encodedKey = encodeURIComponent(licenseKey);\n try {\n const hasPlaceholder = raw.search(LICENSE_KEY_PLACEHOLDER) !== -1;\n const url = new URL(hasPlaceholder ? raw.replace(LICENSE_KEY_PLACEHOLDER, encodedKey) : raw);\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") {\n throw new Error(`unsupported protocol ${url.protocol}`);\n }\n if (!hasPlaceholder) {\n const path = url.pathname.replace(/\\/+$/, \"\");\n url.pathname = /\\/[^/]+\\/pod$/.test(path) ? path.replace(/\\/[^/]+\\/pod$/, `/${encodedKey}/pod`) : `${path}/${encodedKey}/pod`;\n }\n return url.toString();\n } catch {\n console.warn(\"[AdBreak][EDGE] edgePodUrl is not a valid http(s) URL; using GAM only\");\n return void 0;\n }\n}\nfunction buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit) {\n const url = new URL(baseUrl);\n const maxMs = Math.max(0, Math.floor(remainingMs));\n const maxAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, Math.floor(remainingAdLimit)));\n url.searchParams.set(\"pmxd\", String(maxMs));\n url.searchParams.set(\"pmad\", String(maxAds));\n url.searchParams.set(\"duration\", String(Math.floor(maxMs / 1e3)));\n url.searchParams.set(\"count\", String(maxAds));\n return url.toString();\n}\nfunction classifyEdgeVastResponse(result) {\n if (result.error == null) {\n return result.podAdCount > 0 ? \"fill\" : \"no_fill\";\n }\n const message = result.error?.message ?? String(result.error);\n if (/no ads available|fill rejected|no media file|no ad loaded/i.test(message) || message.includes(EDGE_POD_EXCEEDS_BUDGET)) {\n return \"no_fill\";\n }\n return \"invalid\";\n}\nfunction describeEdgeUrl(url) {\n try {\n const parsed = new URL(url);\n return `${parsed.origin}${parsed.pathname}`;\n } catch {\n return url.split(\"?\")[0] ?? \"\";\n }\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n EDGE_POD_EXCEEDS_BUDGET,\n EDGE_POD_MAX_ADS,\n buildEdgePodUrl,\n classifyEdgeVastResponse,\n describeEdgeUrl,\n resolveEdgePodBaseUrl\n});\n"]}
@@ -3,7 +3,7 @@ import { StormcloudVideoPlayerConfig } from '../types.cjs';
3
3
  declare const EDGE_POD_MAX_ADS = 10;
4
4
  type EdgePodClassification = "fill" | "no_fill" | "invalid";
5
5
  declare const EDGE_POD_EXCEEDS_BUDGET = "edge_pod_exceeds_budget";
6
- declare function resolveEdgePodBaseUrl(config: Pick<StormcloudVideoPlayerConfig, "enableEdgePodRequest" | "edgePodUrl">): string | undefined;
6
+ declare function resolveEdgePodBaseUrl(config: Pick<StormcloudVideoPlayerConfig, "enableEdgePodRequest" | "edgePodUrl" | "licenseKey">): string | undefined;
7
7
  declare function buildEdgePodUrl(baseUrl: string, remainingMs: number, remainingAdLimit: number): string;
8
8
  declare function classifyEdgeVastResponse(result: {
9
9
  podAdCount: number;
@@ -325,6 +325,10 @@ function toNumber(val) {
325
325
  var n = typeof val === "string" ? parseFloat(val) : Number(val);
326
326
  return Number.isNaN(n) ? void 0 : n;
327
327
  }
328
+ function getDateRangeDurationSeconds(attrs) {
329
+ var _toNumber;
330
+ return (_toNumber = toNumber(attrs["DURATION"])) !== null && _toNumber !== void 0 ? _toNumber : toNumber(attrs["PLANNED-DURATION"]);
331
+ }
328
332
  function decodeId3ValueToText(value) {
329
333
  try {
330
334
  if (typeof value === "string") return value;
@@ -1199,11 +1203,13 @@ var HlsEngine = /*#__PURE__*/ function() {
1199
1203
  }
1200
1204
  }
1201
1205
  if (!tag) continue;
1206
+ if (tag.includes("EXT-X-CUE-OUT-CONT")) continue;
1202
1207
  if (tag.includes("EXT-X-CUE-OUT") || tag.includes("EXT-X-DATERANGE")) {
1203
- var attrs = tag.includes("EXT-X-DATERANGE") ? parseAttributeList(value) : {};
1208
+ var isDateRange = tag.includes("EXT-X-DATERANGE");
1209
+ var attrs = isDateRange ? parseAttributeList(value) : {};
1204
1210
  var hasScteOut = tag.includes("EXT-X-CUE-OUT") || "SCTE35-OUT" in attrs || attrs["SCTE35-OUT"] !== void 0;
1205
1211
  if (hasScteOut) {
1206
- var durationSeconds = parseCueOutDuration(value);
1212
+ var durationSeconds = isDateRange ? getDateRangeDurationSeconds(attrs) : parseCueOutDuration(value);
1207
1213
  var marker = _object_spread_props(_object_spread({
1208
1214
  type: "start"
1209
1215
  }, durationSeconds !== void 0 ? {
@@ -1377,7 +1383,7 @@ var HlsEngine = /*#__PURE__*/ function() {
1377
1383
  var hasScteOut = "SCTE35-OUT" in attrs || attrs["SCTE35-OUT"] !== void 0;
1378
1384
  var hasScteIn = "SCTE35-IN" in attrs || attrs["SCTE35-IN"] !== void 0;
1379
1385
  var klass = String((_attrs_CLASS = attrs["CLASS"]) !== null && _attrs_CLASS !== void 0 ? _attrs_CLASS : "");
1380
- var duration = toNumber(attrs["DURATION"]);
1386
+ var duration = getDateRangeDurationSeconds(attrs);
1381
1387
  if (hasScteOut || /com\.apple\.hls\.cue/i.test(klass)) {
1382
1388
  var marker2 = _object_spread_props(_object_spread({
1383
1389
  type: "start"
@@ -1 +1 @@
1
- {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\HlsEngine.cjs"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","HlsEngine_exports","HlsEngine","module","exports","import_hls","require","parseCueOutDuration","num","parseFloat","trim","Number","isNaN","match","dStr","d","parseCueOutCont","res","elapsedMatch","durationMatch","e","elapsed","duration","slashMatch","parseAttributeList","attrs","regex","exec","rawVal","startsWith","endsWith","slice","toNumber","val","n","decodeId3ValueToText","decoder","TextDecoder","fatal","text","decode","test","out","i","length","String","fromCharCode","getFragmentStartSeconds","frag","candidates","start","startPTS","candidate","isFinite","parseScte35FromId3","tag","cueOutMatch","arg","dur","marker","type","ptsSeconds","durationSeconds","raw","id3","cueOutContMatch","cont","cueInMatch","daterangeMatch","hasScteOut","hasScteIn","klass","Uint8Array","bin","parseScte35Binary","normalizeFragmentPayload","payload","ArrayBuffer","isView","view","buffer","byteOffset","byteLength","detectTsPacketFormat","data","packetSizes","packetSize","tsPayloadOffset","offset","matchedPackets","packetStart","getPsiSectionStart","payloadUnitStart","pointerField","sectionStart","getPsiSectionLength","parsePatSection","pmtPids","sectionLength","sectionEnd","Math","min","programNumber","pid","add","descriptorsIdentifyScte35","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","programInfoLength","streamType","elementaryPid","esInfoLength","hasProcessedTsScte35Section","section","processedSections","checksum","has","size","firstKey","values","next","delete","addScte35SectionMarker","markers","source","push","appendScte35Bytes","bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","set","Array","parseScte35FromTsPackets","packetInfo","sectionAssemblers","Map","tsStart","secondByte","thirdByte","fourthByte","adaptationFieldControl","hasPayload","payloadStart","adaptationLength","payloadEnd","BitReader","buf","bytePos","bitPos","readBits","numBits","result","remainingInByte","toRead","currentByte","shift","mask","bits","skipBits","bytePosition","readSpliceTime","r","ptsAdjustmentTicks","timeSpecifiedFlag","high","low","ptsTicks","markerTypeFromSegmentationTypeId","segmentationTypeId","parseScte35SegmentationDescriptor","descriptor","identifier","segmentationEventId","cancelIndicator","flags","programSegmentationFlag","segmentationDurationFlag","componentCount","durationTicks","segmentationUpidLength","markerType","parseScte35SegmentationDescriptors","descriptorLoopLength","descriptorOffset","descriptorTag","descriptorLength","descriptorDataStart","descriptorDataEnd","descriptorMarker","ptsAdjHigh","ptsAdjLow","spliceCommandLength","spliceCommandType","spliceEventId","commandBodyStart","cancel","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","componentPtsSeconds","expectedDescriptorOffset","splice_command_type","splice_event_id","segmentation_event_id","config","video","cueManager","timing","callbacks","isLiveStream","nativeHlsMode","videoSrcProtection","reloadingLiveStream","bufferedSegmentsCount","shouldAutoplayAfterBuffering","hasInitialBufferCompleted","latencyProfileApplied","debug","debugAdTiming","shouldUseNativeHls","getStreamType","canNative","canPlayType","allowNativeHls","setupNativeHls","adBehavior","src","lowLatencyMode","console","log","isLive","autoplay","play","catch","setupHls","hls","default","enableWorker","backBufferLength","liveDurationInfinity","maxLiveSyncPlaybackRate","maxBufferLength","maxMaxBufferLength","maxBufferSize","maxBufferHole","highBufferWatchdogPeriod","nudgeOffset","nudgeMaxRetry","startPosition","on","Events","MEDIA_ATTACHED","loadSource","MANIFEST_PARSED","_","_data","minSegments","levels","some","level","details","live","onManifestParsed","detectedLowLatencyStream","minSegmentsBeforePlay","LEVEL_LOADED","_evt","applyStreamLatencyProfile","isInAdBreak","hasPendingAdBreak","fragments","fragmentsToScan","tagList","isArray","entry","idx","indexOf","substring","includes","earlyDetection","onScte35Cue","createScte35CueContext","FRAG_BUFFERED","err","warn","FRAG_PARSING_METADATA","id3Tags","samples","map","s","pts","forEach","onId3Tag","FRAG_LOADED","processFragmentScte35Payload","sn","FRAG_DECRYPTED","FRAG_CHANGED","activatePendingCuesForFragment","prog","ERROR","ErrorTypes","NETWORK_ERROR","startLoad","MEDIA_ERROR","recoverMediaError","onFatalDestroy","attachMedia","isLowLatencyStream","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","updatePtsDrift","readiness","payloadData","fragmentSn","fragmentStartSeconds","processedTsScte35Sections","context","getLiveSyncPosition","pos","liveSyncPosition","restartLoadAt","position","stopLoad","error","reloadLiveStream","detachMedia","destroy","removeAttribute","load","recreateDelayMs","window","setTimeout"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/player/HlsEngine.ts\nvar HlsEngine_exports = {};\n__export(HlsEngine_exports, {\n HlsEngine: () => HlsEngine\n});\nmodule.exports = __toCommonJS(HlsEngine_exports);\nvar import_hls = __toESM(require(\"hls.js\"), 1);\n\n// src/player/Scte35Parser.ts\nfunction parseCueOutDuration(value) {\n const num = parseFloat(value.trim());\n if (!Number.isNaN(num)) return num;\n const match = value.match(/(?:^|[,\\s])DURATION\\s*=\\s*([0-9.]+)/i) || value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (match && match[1] != null) {\n const dStr = match[1];\n const d = parseFloat(dStr);\n return Number.isNaN(d) ? void 0 : d;\n }\n return void 0;\n}\nfunction parseCueOutCont(value) {\n const res = {};\n const elapsedMatch = value.match(/Elapsed\\s*=\\s*([0-9.]+)/i);\n const durationMatch = value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (elapsedMatch && elapsedMatch[1] != null) {\n const e = parseFloat(elapsedMatch[1]);\n if (!Number.isNaN(e)) res.elapsed = e;\n }\n if (durationMatch && durationMatch[1] != null) {\n const d = parseFloat(durationMatch[1]);\n if (!Number.isNaN(d)) res.duration = d;\n }\n if (!(\"elapsed\" in res) || !(\"duration\" in res)) {\n const slashMatch = value.match(/([0-9.]+)\\s*\\/\\s*([0-9.]+)/);\n if (slashMatch && slashMatch[1] && slashMatch[2]) {\n const elapsed = parseFloat(slashMatch[1]);\n const duration = parseFloat(slashMatch[2]);\n if (!Number.isNaN(elapsed) && !(\"elapsed\" in res)) res.elapsed = elapsed;\n if (!Number.isNaN(duration) && !(\"duration\" in res)) res.duration = duration;\n }\n }\n if (\"elapsed\" in res || \"duration\" in res) return res;\n return void 0;\n}\nfunction parseAttributeList(value) {\n const attrs = {};\n const regex = /([A-Z0-9-]+)=((\"[^\"]*\")|([^\",]*))(?:,|$)/gi;\n let match;\n while ((match = regex.exec(value)) !== null) {\n const key = match[1] ?? \"\";\n let rawVal = match[3] ?? match[4] ?? \"\";\n if (rawVal.startsWith('\"') && rawVal.endsWith('\"')) {\n rawVal = rawVal.slice(1, -1);\n }\n if (key) {\n attrs[key] = rawVal;\n }\n }\n return attrs;\n}\nfunction toNumber(val) {\n if (val == null) return void 0;\n const n = typeof val === \"string\" ? parseFloat(val) : Number(val);\n return Number.isNaN(n) ? void 0 : n;\n}\nfunction decodeId3ValueToText(value) {\n try {\n if (typeof value === \"string\") return value;\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n const text = decoder.decode(value);\n if (text && /[\\x20-\\x7E]/.test(text)) return text;\n let out = \"\";\n for (let i = 0; i < value.length; i++)\n out += String.fromCharCode(value[i]);\n return out;\n } catch {\n return void 0;\n }\n}\nfunction getFragmentStartSeconds(frag) {\n const candidates = [frag?.start, frag?.startPTS];\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return void 0;\n}\nfunction parseScte35FromId3(tag) {\n const text = decodeId3ValueToText(tag.value);\n if (!text) return void 0;\n const cueOutMatch = text.match(/EXT-X-CUE-OUT(?::([^\\r\\n]*))?/i) || text.match(/CUE-OUT(?::([^\\r\\n]*))?/i);\n if (cueOutMatch) {\n const arg = (cueOutMatch[1] ?? \"\").trim();\n const dur = parseCueOutDuration(arg);\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...dur !== void 0 ? { durationSeconds: dur } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueOutContMatch = text.match(/EXT-X-CUE-OUT-CONT:([^\\r\\n]*)/i);\n if (cueOutContMatch) {\n const arg = (cueOutContMatch[1] ?? \"\").trim();\n const cont = parseCueOutCont(arg);\n const marker = {\n type: \"progress\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...cont?.duration !== void 0 ? { durationSeconds: cont.duration } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueInMatch = text.match(/EXT-X-CUE-IN\\b/i) || text.match(/CUE-IN\\b/i);\n if (cueInMatch) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const daterangeMatch = text.match(/EXT-X-DATERANGE:([^\\r\\n]*)/i);\n if (daterangeMatch) {\n const attrs = parseAttributeList(daterangeMatch[1] ?? \"\");\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n if (hasScteIn) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n }\n if (/SCTE35-OUT/i.test(text)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (/SCTE35-IN/i.test(text)) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (tag.value instanceof Uint8Array) {\n const bin = parseScte35Binary(tag.value);\n if (bin) return bin;\n }\n return void 0;\n}\nfunction normalizeFragmentPayload(payload) {\n if (payload instanceof Uint8Array) {\n return payload;\n }\n if (payload instanceof ArrayBuffer) {\n return new Uint8Array(payload);\n }\n if (ArrayBuffer.isView(payload)) {\n const view = payload;\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n }\n return void 0;\n}\nfunction detectTsPacketFormat(data) {\n const packetSizes = [188, 192, 204];\n for (const packetSize of packetSizes) {\n const tsPayloadOffset = packetSize === 192 ? 4 : 0;\n for (let offset = 0; offset < packetSize; offset++) {\n let matchedPackets = 0;\n for (let packetStart = offset; packetStart + tsPayloadOffset < data.length && matchedPackets < 5; packetStart += packetSize) {\n if (data[packetStart + tsPayloadOffset] !== 71) {\n break;\n }\n matchedPackets++;\n }\n if (matchedPackets >= 2) {\n return { offset, packetSize, tsPayloadOffset };\n }\n }\n }\n return void 0;\n}\nfunction getPsiSectionStart(payload, payloadUnitStart) {\n if (!payloadUnitStart) {\n return void 0;\n }\n const pointerField = payload[0];\n if (pointerField == null) {\n return void 0;\n }\n const sectionStart = 1 + pointerField;\n return sectionStart < payload.length ? sectionStart : void 0;\n}\nfunction getPsiSectionLength(data, offset) {\n return ((data[offset + 1] ?? 0) & 15) << 8 | (data[offset + 2] ?? 0);\n}\nfunction parsePatSection(payload, payloadUnitStart, pmtPids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 8 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 0) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n for (let offset = sectionStart + 8; offset + 4 <= sectionEnd - 4; offset += 4) {\n const programNumber = (payload[offset] ?? 0) << 8 | (payload[offset + 1] ?? 0);\n const pid = ((payload[offset + 2] ?? 0) & 31) << 8 | (payload[offset + 3] ?? 0);\n if (programNumber !== 0) {\n pmtPids.add(pid);\n }\n }\n}\nfunction descriptorsIdentifyScte35(data, start, end) {\n let offset = start;\n while (offset + 2 <= end) {\n const tag = data[offset] ?? 0;\n const length = data[offset + 1] ?? 0;\n const descriptorStart = offset + 2;\n const descriptorEnd = descriptorStart + length;\n if (descriptorEnd > end) {\n return false;\n }\n const registration = length >= 4 ? String.fromCharCode(\n data[descriptorStart] ?? 0,\n data[descriptorStart + 1] ?? 0,\n data[descriptorStart + 2] ?? 0,\n data[descriptorStart + 3] ?? 0\n ) : \"\";\n if (tag === 138 || registration === \"CUEI\" || registration === \"SCTE\") {\n return true;\n }\n offset = descriptorEnd;\n }\n return false;\n}\nfunction parsePmtSection(payload, payloadUnitStart, tsScte35Pids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 12 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 2) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n const programInfoLength = ((payload[sectionStart + 10] ?? 0) & 15) << 8 | (payload[sectionStart + 11] ?? 0);\n let offset = sectionStart + 12 + programInfoLength;\n while (offset + 5 <= sectionEnd - 4) {\n const streamType = payload[offset] ?? 0;\n const elementaryPid = ((payload[offset + 1] ?? 0) & 31) << 8 | (payload[offset + 2] ?? 0);\n const esInfoLength = ((payload[offset + 3] ?? 0) & 15) << 8 | (payload[offset + 4] ?? 0);\n const descriptorStart = offset + 5;\n const descriptorEnd = Math.min(descriptorStart + esInfoLength, sectionEnd - 4);\n if (streamType === 134 || streamType === 6 && descriptorsIdentifyScte35(payload, descriptorStart, descriptorEnd)) {\n tsScte35Pids.add(elementaryPid);\n }\n offset = descriptorStart + esInfoLength;\n }\n}\nfunction hasProcessedTsScte35Section(section, processedSections) {\n let checksum = 0;\n for (let i = 0; i < section.length; i++) {\n checksum = checksum * 31 + (section[i] ?? 0) >>> 0;\n }\n const key = `${section.length}:${checksum}`;\n if (processedSections.has(key)) {\n return true;\n }\n processedSections.add(key);\n if (processedSections.size > 200) {\n const firstKey = processedSections.values().next().value;\n if (firstKey) {\n processedSections.delete(firstKey);\n }\n }\n return false;\n}\nfunction addScte35SectionMarker(section, markers, processedSections) {\n if (section[0] !== 252 || hasProcessedTsScte35Section(section, processedSections)) {\n return;\n }\n const marker = parseScte35Binary(section);\n if (!marker) {\n return;\n }\n marker.raw = {\n ...typeof marker.raw === \"object\" && marker.raw ? marker.raw : {},\n source: \"ts-packet\"\n };\n markers.push(marker);\n}\nfunction appendScte35Bytes(pid, bytes, assemblers, markers, processedSections) {\n const assembler = assemblers.get(pid);\n if (!assembler) {\n return;\n }\n for (let i = 0; i < bytes.length && assembler.bytes.length < assembler.expectedLength; i++) {\n assembler.bytes.push(bytes[i] ?? 0);\n }\n if (assembler.bytes.length >= assembler.expectedLength) {\n assemblers.delete(pid);\n addScte35SectionMarker(new Uint8Array(assembler.bytes), markers, processedSections);\n }\n}\nfunction collectScte35SectionsFromPayload(pid, payload, payloadUnitStart, assemblers, markers, processedSections) {\n if (payload.length === 0) {\n return;\n }\n let offset = 0;\n if (payloadUnitStart) {\n const pointerField = payload[0] ?? 0;\n const previousAssembler = assemblers.get(pid);\n if (previousAssembler && pointerField > 0) {\n appendScte35Bytes(\n pid,\n payload.subarray(1, Math.min(1 + pointerField, payload.length)),\n assemblers,\n markers,\n processedSections\n );\n }\n assemblers.delete(pid);\n offset = 1 + pointerField;\n } else {\n appendScte35Bytes(pid, payload, assemblers, markers, processedSections);\n return;\n }\n while (offset + 3 <= payload.length) {\n const tableId = payload[offset];\n if (tableId == null || tableId === 255) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, offset);\n const totalLength = 3 + sectionLength;\n if (sectionLength <= 0 || totalLength <= 3) {\n return;\n }\n if (offset + totalLength <= payload.length) {\n addScte35SectionMarker(\n payload.subarray(offset, offset + totalLength),\n markers,\n processedSections\n );\n offset += totalLength;\n } else {\n assemblers.set(pid, {\n bytes: Array.from(payload.subarray(offset)),\n expectedLength: totalLength\n });\n return;\n }\n }\n}\nfunction parseScte35FromTsPackets(data, tsScte35Pids, pmtPids, processedSections) {\n const packetInfo = detectTsPacketFormat(data);\n if (!packetInfo) {\n return [];\n }\n const markers = [];\n const sectionAssemblers = /* @__PURE__ */ new Map();\n for (let packetStart = packetInfo.offset; packetStart + packetInfo.packetSize <= data.length; packetStart += packetInfo.packetSize) {\n const tsStart = packetStart + packetInfo.tsPayloadOffset;\n if (data[tsStart] !== 71) {\n continue;\n }\n const secondByte = data[tsStart + 1];\n const thirdByte = data[tsStart + 2];\n const fourthByte = data[tsStart + 3];\n if (secondByte == null || thirdByte == null || fourthByte == null || (secondByte & 128) !== 0) {\n continue;\n }\n const payloadUnitStart = (secondByte & 64) !== 0;\n const pid = (secondByte & 31) << 8 | thirdByte;\n const adaptationFieldControl = fourthByte >> 4 & 3;\n const hasPayload = adaptationFieldControl === 1 || adaptationFieldControl === 3;\n if (!hasPayload) {\n continue;\n }\n let payloadStart = tsStart + 4;\n if (adaptationFieldControl === 3) {\n const adaptationLength = data[payloadStart];\n if (adaptationLength == null) {\n continue;\n }\n payloadStart += 1 + adaptationLength;\n }\n const payloadEnd = Math.min(tsStart + 188, data.length);\n if (payloadStart >= payloadEnd || payloadStart >= data.length) {\n continue;\n }\n const payload = data.subarray(payloadStart, payloadEnd);\n if (pid === 0) {\n parsePatSection(payload, payloadUnitStart, pmtPids);\n } else if (pmtPids.has(pid)) {\n parsePmtSection(payload, payloadUnitStart, tsScte35Pids);\n } else if (tsScte35Pids.has(pid)) {\n collectScte35SectionsFromPayload(\n pid,\n payload,\n payloadUnitStart,\n sectionAssemblers,\n markers,\n processedSections\n );\n }\n }\n return markers;\n}\nvar BitReader = class {\n constructor(buf) {\n this.buf = buf;\n this.bytePos = 0;\n this.bitPos = 0;\n }\n readBits(numBits) {\n let result = 0;\n while (numBits > 0) {\n if (this.bytePos >= this.buf.length) return result;\n const remainingInByte = 8 - this.bitPos;\n const toRead = Math.min(numBits, remainingInByte);\n const currentByte = this.buf[this.bytePos];\n const shift = remainingInByte - toRead;\n const mask = (1 << toRead) - 1 & 255;\n const bits = currentByte >> shift & mask;\n result = result << toRead | bits;\n this.bitPos += toRead;\n if (this.bitPos >= 8) {\n this.bitPos = 0;\n this.bytePos += 1;\n }\n numBits -= toRead;\n }\n return result >>> 0;\n }\n skipBits(n) {\n this.readBits(n);\n }\n get bytePosition() {\n return this.bitPos === 0 ? this.bytePos : this.bytePos + 1;\n }\n};\nfunction readSpliceTime(r, ptsAdjustmentTicks) {\n const timeSpecifiedFlag = r.readBits(1) === 1;\n if (!timeSpecifiedFlag) {\n r.readBits(7);\n return void 0;\n }\n r.readBits(6);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const ptsTicks = (high * 4294967296 + low + ptsAdjustmentTicks) % 8589934592;\n return ptsTicks / 9e4;\n}\nfunction markerTypeFromSegmentationTypeId(segmentationTypeId) {\n switch (segmentationTypeId) {\n case 16:\n case 34:\n case 48:\n case 50:\n case 52:\n case 54:\n return \"start\";\n case 17:\n case 35:\n case 49:\n case 51:\n case 53:\n case 55:\n return \"end\";\n default:\n return void 0;\n }\n}\nfunction parseScte35SegmentationDescriptor(descriptor) {\n if (descriptor.length < 11) {\n return void 0;\n }\n const identifier = String.fromCharCode(\n descriptor[0] ?? 0,\n descriptor[1] ?? 0,\n descriptor[2] ?? 0,\n descriptor[3] ?? 0\n );\n if (identifier !== \"CUEI\") {\n return void 0;\n }\n const segmentationEventId = (descriptor[4] ?? 0) * 16777216 + ((descriptor[5] ?? 0) << 16) + ((descriptor[6] ?? 0) << 8) + (descriptor[7] ?? 0);\n const cancelIndicator = ((descriptor[8] ?? 0) & 128) !== 0;\n if (cancelIndicator) {\n return void 0;\n }\n const flags = descriptor[9] ?? 0;\n const programSegmentationFlag = (flags & 128) !== 0;\n const segmentationDurationFlag = (flags & 64) !== 0;\n let offset = 10;\n if (!programSegmentationFlag) {\n const componentCount = descriptor[offset] ?? 0;\n offset += 1 + componentCount * 6;\n if (offset > descriptor.length) {\n return void 0;\n }\n }\n let durationSeconds = void 0;\n if (segmentationDurationFlag) {\n if (offset + 5 > descriptor.length) {\n return void 0;\n }\n const durationTicks = (descriptor[offset] ?? 0) * 4294967296 + (descriptor[offset + 1] ?? 0) * 16777216 + ((descriptor[offset + 2] ?? 0) << 16) + ((descriptor[offset + 3] ?? 0) << 8) + (descriptor[offset + 4] ?? 0);\n durationSeconds = durationTicks / 9e4;\n offset += 5;\n }\n if (offset + 2 > descriptor.length) {\n return void 0;\n }\n offset += 1;\n const segmentationUpidLength = descriptor[offset] ?? 0;\n offset += 1 + segmentationUpidLength;\n if (offset >= descriptor.length) {\n return void 0;\n }\n const segmentationTypeId = descriptor[offset] ?? 0;\n const markerType = markerTypeFromSegmentationTypeId(segmentationTypeId);\n if (!markerType) {\n return void 0;\n }\n return {\n type: markerType,\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n segmentationEventId\n };\n}\nfunction parseScte35SegmentationDescriptors(data, offset) {\n if (offset + 2 > data.length) {\n return void 0;\n }\n const descriptorLoopLength = (data[offset] ?? 0) << 8 | (data[offset + 1] ?? 0);\n let descriptorOffset = offset + 2;\n const descriptorEnd = Math.min(\n data.length,\n descriptorOffset + descriptorLoopLength\n );\n while (descriptorOffset + 2 <= descriptorEnd) {\n const descriptorTag = data[descriptorOffset] ?? 0;\n const descriptorLength = data[descriptorOffset + 1] ?? 0;\n const descriptorDataStart = descriptorOffset + 2;\n const descriptorDataEnd = descriptorDataStart + descriptorLength;\n if (descriptorDataEnd > descriptorEnd) {\n return void 0;\n }\n if (descriptorTag === 2) {\n const descriptorMarker = parseScte35SegmentationDescriptor(\n data.subarray(descriptorDataStart, descriptorDataEnd)\n );\n if (descriptorMarker) {\n return descriptorMarker;\n }\n }\n descriptorOffset = descriptorDataEnd;\n }\n return void 0;\n}\nfunction parseScte35Binary(data) {\n const r = new BitReader(data);\n const tableId = r.readBits(8);\n if (tableId !== 252) return void 0;\n r.readBits(1);\n r.readBits(1);\n r.readBits(2);\n const sectionLength = r.readBits(12);\n if (sectionLength <= 0 || data.length < 3 + sectionLength) {\n return void 0;\n }\n r.readBits(8);\n r.readBits(1);\n r.readBits(6);\n const ptsAdjHigh = r.readBits(1);\n const ptsAdjLow = r.readBits(32);\n const ptsAdjustmentTicks = ptsAdjHigh * 4294967296 + ptsAdjLow;\n r.readBits(8);\n r.readBits(12);\n const spliceCommandLength = r.readBits(12);\n const spliceCommandType = r.readBits(8);\n let markerType;\n let durationSeconds = void 0;\n let ptsSeconds = void 0;\n let spliceEventId = void 0;\n const commandBodyStart = r.bytePosition;\n if (spliceCommandType === 5) {\n spliceEventId = r.readBits(32);\n const cancel = r.readBits(1) === 1;\n r.readBits(7);\n if (cancel) return void 0;\n const outOfNetwork = r.readBits(1) === 1;\n const programSpliceFlag = r.readBits(1) === 1;\n const durationFlag = r.readBits(1) === 1;\n const spliceImmediateFlag = r.readBits(1) === 1;\n r.readBits(4);\n markerType = outOfNetwork ? \"start\" : \"end\";\n if (programSpliceFlag && !spliceImmediateFlag) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else if (!programSpliceFlag) {\n const componentCount = r.readBits(8);\n for (let i = 0; i < componentCount; i++) {\n r.readBits(8);\n if (!spliceImmediateFlag) {\n const componentPtsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n if (ptsSeconds === void 0) {\n ptsSeconds = componentPtsSeconds;\n }\n }\n }\n }\n if (durationFlag) {\n r.readBits(6);\n r.readBits(1);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const durationTicks = high * 4294967296 + low;\n durationSeconds = durationTicks / 9e4;\n }\n r.readBits(16);\n r.readBits(8);\n r.readBits(8);\n } else if (spliceCommandType === 6) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else {\n return void 0;\n }\n const expectedDescriptorOffset = spliceCommandLength === 4095 ? r.bytePosition : commandBodyStart + spliceCommandLength;\n const descriptorMarker = parseScte35SegmentationDescriptors(\n data,\n expectedDescriptorOffset\n );\n if (descriptorMarker) {\n markerType = descriptorMarker.type;\n if (durationSeconds === void 0) {\n durationSeconds = descriptorMarker.durationSeconds;\n }\n }\n if (!markerType) {\n return void 0;\n }\n const marker = {\n type: markerType,\n ...ptsSeconds !== void 0 ? { ptsSeconds } : {},\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: {\n splice_command_type: spliceCommandType,\n ...spliceEventId !== void 0 ? { splice_event_id: spliceEventId } : {},\n ...descriptorMarker?.segmentationEventId !== void 0 ? { segmentation_event_id: descriptorMarker.segmentationEventId } : {}\n }\n };\n return marker;\n}\n\n// src/player/HlsEngine.ts\nvar HlsEngine = class {\n constructor(config, video, cueManager, timing, callbacks) {\n this.isLiveStream = false;\n this.nativeHlsMode = false;\n this.videoSrcProtection = null;\n this.reloadingLiveStream = false;\n this.bufferedSegmentsCount = 0;\n this.shouldAutoplayAfterBuffering = false;\n this.hasInitialBufferCompleted = false;\n this.latencyProfileApplied = false;\n this.config = config;\n this.video = video;\n this.cueManager = cueManager;\n this.timing = timing;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n shouldUseNativeHls(getStreamType) {\n const streamType = getStreamType();\n if (streamType === \"other\") {\n return true;\n }\n const canNative = this.video.canPlayType(\"application/vnd.apple.mpegurl\");\n return !!(this.config.allowNativeHls && canNative);\n }\n async setupNativeHls() {\n this.nativeHlsMode = true;\n this.videoSrcProtection = this.config.src;\n this.video.src = this.config.src;\n this.isLiveStream = this.config.isLiveStream ?? (this.config.lowLatencyMode ?? false);\n if (this.debug) {\n const adBehavior = this.isLiveStream ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\n \"[StormcloudVideoPlayer] Using native HLS playback:\",\n {\n isLive: this.isLiveStream,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n }\n );\n }\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n setupHls() {\n this.hls = new import_hls.default({\n enableWorker: true,\n backBufferLength: 30,\n liveDurationInfinity: true,\n lowLatencyMode: !!this.config.lowLatencyMode,\n maxLiveSyncPlaybackRate: 1.1,\n maxBufferLength: 30,\n maxMaxBufferLength: 600,\n maxBufferSize: 60 * 1e3 * 1e3,\n maxBufferHole: 1,\n highBufferWatchdogPeriod: 2,\n nudgeOffset: 0.2,\n nudgeMaxRetry: 5,\n startPosition: -1\n });\n this.hls.on(import_hls.default.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(import_hls.default.Events.MANIFEST_PARSED, async (_, _data) => {\n this.isLiveStream = this.config.isLiveStream ?? (this.hls?.levels?.some(\n (level) => level?.details?.live === true || level?.details?.type === \"LIVE\"\n ) ?? false);\n await this.callbacks.onManifestParsed(this.isLiveStream);\n this.bufferedSegmentsCount = 0;\n this.hasInitialBufferCompleted = false;\n this.shouldAutoplayAfterBuffering = !!this.config.autoplay;\n this.latencyProfileApplied = false;\n this.detectedLowLatencyStream = void 0;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Waiting for\",\n minSegments,\n \"segments to buffer before playback\"\n );\n }\n if (minSegments === 0 || !this.config.autoplay) {\n this.hasInitialBufferCompleted = true;\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n this.reloadingLiveStream = false;\n });\n this.hls.on(import_hls.default.Events.LEVEL_LOADED, (_evt, data) => {\n this.applyStreamLatencyProfile(data?.details);\n if (this.callbacks.isInAdBreak() || this.callbacks.hasPendingAdBreak()) {\n return;\n }\n const details = data?.details;\n if (!details || !details.fragments || details.fragments.length === 0) {\n return;\n }\n const fragmentsToScan = Math.min(5, details.fragments.length);\n for (let i = 0; i < fragmentsToScan; i++) {\n const frag = details.fragments[i];\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) continue;\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = tag.includes(\"EXT-X-DATERANGE\") ? parseAttributeList(value) : {};\n const hasScteOut = tag.includes(\"EXT-X-CUE-OUT\") || \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n if (hasScteOut) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value, earlyDetection: true }\n };\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] EARLY SCTE-35 DETECTION: Ad break marker found in fragment\", i, \"- starting pre-fetch (NOT playing yet)\");\n }\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"early\", frag)\n });\n return;\n }\n }\n }\n }\n });\n this.hls.on(import_hls.default.Events.FRAG_BUFFERED, async (_evt, _data) => {\n if (this.hasInitialBufferCompleted) {\n return;\n }\n this.bufferedSegmentsCount++;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Buffered segment ${this.bufferedSegmentsCount}/${minSegments}`\n );\n }\n if (this.bufferedSegmentsCount >= minSegments) {\n this.hasInitialBufferCompleted = true;\n if (this.shouldAutoplayAfterBuffering) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Initial buffer complete (${this.bufferedSegmentsCount} segments). Starting playback.`\n );\n }\n await this.video.play()?.catch((err) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Autoplay failed:\", err);\n }\n });\n }\n }\n });\n this.hls.on(import_hls.default.Events.FRAG_PARSING_METADATA, (_evt, data) => {\n const id3Tags = (data?.samples || []).map((s) => ({\n key: \"ID3\",\n value: s?.data,\n ptsSeconds: s?.pts\n }));\n id3Tags.forEach((tag) => this.onId3Tag(tag));\n });\n this.hls.on(import_hls.default.Events.FRAG_LOADED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls.default.Events.FRAG_DECRYPTED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls.default.Events.FRAG_CHANGED, (_evt, data) => {\n const frag = data?.frag;\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) {\n this.callbacks.activatePendingCuesForFragment(frag);\n return;\n }\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n value = \"\";\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) {\n const prog = parseCueOutCont(value);\n const marker = {\n type: \"progress\",\n ...prog?.duration !== void 0 ? { durationSeconds: prog.duration } : {},\n ...prog?.elapsed !== void 0 ? { ptsSeconds: prog.elapsed } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-OUT\")) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-IN\")) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n } else if (tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = parseAttributeList(value);\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { tag, value, attrs }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n }\n if (hasScteIn) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value, attrs } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n }\n }\n }\n this.callbacks.activatePendingCuesForFragment(frag);\n });\n this.hls.on(import_hls.default.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case import_hls.default.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case import_hls.default.ErrorTypes.MEDIA_ERROR:\n this.hls?.recoverMediaError();\n break;\n default:\n this.callbacks.onFatalDestroy();\n break;\n }\n }\n });\n this.hls.attachMedia(this.video);\n }\n isLowLatencyStream() {\n return this.detectedLowLatencyStream;\n }\n applyStreamLatencyProfile(details) {\n if (this.latencyProfileApplied || !this.hls) {\n return;\n }\n if (!details) {\n return;\n }\n if (details.live !== true) {\n this.latencyProfileApplied = true;\n this.detectedLowLatencyStream = false;\n return;\n }\n const isLowLatencyManifest = this.isLowLatencyManifest(details);\n const useLowLatency = isLowLatencyManifest && !!this.config.lowLatencyMode;\n this.detectedLowLatencyStream = useLowLatency;\n this.latencyProfileApplied = true;\n const cfg = this.hls.config;\n if (useLowLatency) {\n cfg.maxLiveSyncPlaybackRate = 1.5;\n cfg.maxBufferHole = 0.5;\n delete cfg.liveSyncDuration;\n } else {\n cfg.maxLiveSyncPlaybackRate = 1.1;\n cfg.maxBufferHole = 1;\n delete cfg.liveSyncDuration;\n cfg.liveSyncDurationCount = 3;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live latency profile: ${useLowLatency ? \"LL-HLS (low latency)\" : \"standard live (stability)\"}`,\n {\n isLowLatencyManifest,\n lowLatencyModeRequested: !!this.config.lowLatencyMode,\n canBlockReload: details.canBlockReload,\n partTarget: details.partTarget,\n partHoldBack: details.partHoldBack,\n partListLength: Array.isArray(details.partList) ? details.partList.length : 0,\n targetDuration: details.targetduration ?? details.targetDuration,\n maxLiveSyncPlaybackRate: cfg.maxLiveSyncPlaybackRate,\n maxBufferHole: cfg.maxBufferHole\n }\n );\n }\n }\n isLowLatencyManifest(details) {\n if (!details) {\n return false;\n }\n const hasParts = Array.isArray(details.partList) && details.partList.length > 0;\n const hasPartTarget = typeof details.partTarget === \"number\" && details.partTarget > 0;\n const hasPartHoldBack = typeof details.partHoldBack === \"number\" && details.partHoldBack > 0;\n const canBlockReload = details.canBlockReload === true;\n return hasParts || hasPartTarget || hasPartHoldBack || canBlockReload;\n }\n onId3Tag(tag) {\n if (typeof tag.ptsSeconds === \"number\") {\n this.timing.updatePtsDrift(tag.ptsSeconds);\n }\n const marker = parseScte35FromId3(tag);\n if (marker) {\n this.callbacks.onScte35Cue(marker, {\n source: \"id3\",\n readiness: \"playback\"\n });\n }\n }\n processFragmentScte35Payload(payloadData, fragmentSn, fragmentStartSeconds) {\n const payload = normalizeFragmentPayload(payloadData);\n if (!payload) {\n return;\n }\n const markers = parseScte35FromTsPackets(\n payload,\n this.cueManager.tsScte35Pids,\n this.cueManager.pmtPids,\n this.cueManager.processedTsScte35Sections\n );\n markers.forEach((marker) => {\n const context = {\n source: \"ts\",\n readiness: \"early\"\n };\n if (fragmentSn !== void 0) {\n context.fragmentSn = fragmentSn;\n }\n if (fragmentStartSeconds !== void 0) {\n context.fragmentStartSeconds = fragmentStartSeconds;\n }\n this.callbacks.onScte35Cue(marker, context);\n });\n }\n getLiveSyncPosition() {\n const pos = this.hls?.liveSyncPosition;\n return typeof pos === \"number\" && Number.isFinite(pos) ? pos : void 0;\n }\n restartLoadAt(position) {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.stopLoad();\n this.hls.startLoad(position);\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to restart HLS load at live edge:\", error);\n }\n }\n }\n recoverMediaError() {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.recoverMediaError();\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] recoverMediaError() failed:\", error);\n }\n }\n }\n reloadLiveStream() {\n const hls = this.hls;\n if (!hls) {\n return;\n }\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Hard-reloading live stream (destroy hls \\u2192 reset video \\u2192 fresh setupHls)\"\n );\n }\n try {\n this.reloadingLiveStream = true;\n hls.stopLoad();\n hls.detachMedia();\n hls.destroy();\n this.hls = void 0;\n try {\n this.video.removeAttribute(\"src\");\n this.video.load();\n } catch (error) {\n console.warn(\"[StormcloudVideoPlayer] video.load() threw after src removal:\", error);\n }\n } catch (error) {\n this.reloadingLiveStream = false;\n this.hls = void 0;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to tear down during hard-reload:\", error);\n }\n return;\n }\n const recreateDelayMs = 600;\n window.setTimeout(() => {\n if (this.hls) {\n this.reloadingLiveStream = false;\n return;\n }\n try {\n this.setupHls();\n } catch (error) {\n this.reloadingLiveStream = false;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to rebuild pipeline during hard-reload:\", error);\n }\n }\n }, recreateDelayMs);\n }\n destroy() {\n this.hls?.destroy();\n this.hls = void 0;\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n HlsEngine\n});\n"]}
1
+ {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\HlsEngine.cjs"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","HlsEngine_exports","HlsEngine","module","exports","import_hls","require","parseCueOutDuration","num","parseFloat","trim","Number","isNaN","match","dStr","d","parseCueOutCont","res","elapsedMatch","durationMatch","e","elapsed","duration","slashMatch","parseAttributeList","attrs","regex","exec","rawVal","startsWith","endsWith","slice","toNumber","val","n","getDateRangeDurationSeconds","decodeId3ValueToText","decoder","TextDecoder","fatal","text","decode","test","out","i","length","String","fromCharCode","getFragmentStartSeconds","frag","candidates","start","startPTS","candidate","isFinite","parseScte35FromId3","tag","cueOutMatch","arg","dur","marker","type","ptsSeconds","durationSeconds","raw","id3","cueOutContMatch","cont","cueInMatch","daterangeMatch","hasScteOut","hasScteIn","klass","Uint8Array","bin","parseScte35Binary","normalizeFragmentPayload","payload","ArrayBuffer","isView","view","buffer","byteOffset","byteLength","detectTsPacketFormat","data","packetSizes","packetSize","tsPayloadOffset","offset","matchedPackets","packetStart","getPsiSectionStart","payloadUnitStart","pointerField","sectionStart","getPsiSectionLength","parsePatSection","pmtPids","sectionLength","sectionEnd","Math","min","programNumber","pid","add","descriptorsIdentifyScte35","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","programInfoLength","streamType","elementaryPid","esInfoLength","hasProcessedTsScte35Section","section","processedSections","checksum","has","size","firstKey","values","next","delete","addScte35SectionMarker","markers","source","push","appendScte35Bytes","bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","set","Array","parseScte35FromTsPackets","packetInfo","sectionAssemblers","Map","tsStart","secondByte","thirdByte","fourthByte","adaptationFieldControl","hasPayload","payloadStart","adaptationLength","payloadEnd","BitReader","buf","bytePos","bitPos","readBits","numBits","result","remainingInByte","toRead","currentByte","shift","mask","bits","skipBits","bytePosition","readSpliceTime","r","ptsAdjustmentTicks","timeSpecifiedFlag","high","low","ptsTicks","markerTypeFromSegmentationTypeId","segmentationTypeId","parseScte35SegmentationDescriptor","descriptor","identifier","segmentationEventId","cancelIndicator","flags","programSegmentationFlag","segmentationDurationFlag","componentCount","durationTicks","segmentationUpidLength","markerType","parseScte35SegmentationDescriptors","descriptorLoopLength","descriptorOffset","descriptorTag","descriptorLength","descriptorDataStart","descriptorDataEnd","descriptorMarker","ptsAdjHigh","ptsAdjLow","spliceCommandLength","spliceCommandType","spliceEventId","commandBodyStart","cancel","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","componentPtsSeconds","expectedDescriptorOffset","splice_command_type","splice_event_id","segmentation_event_id","config","video","cueManager","timing","callbacks","isLiveStream","nativeHlsMode","videoSrcProtection","reloadingLiveStream","bufferedSegmentsCount","shouldAutoplayAfterBuffering","hasInitialBufferCompleted","latencyProfileApplied","debug","debugAdTiming","shouldUseNativeHls","getStreamType","canNative","canPlayType","allowNativeHls","setupNativeHls","adBehavior","src","lowLatencyMode","console","log","isLive","autoplay","play","catch","setupHls","hls","default","enableWorker","backBufferLength","liveDurationInfinity","maxLiveSyncPlaybackRate","maxBufferLength","maxMaxBufferLength","maxBufferSize","maxBufferHole","highBufferWatchdogPeriod","nudgeOffset","nudgeMaxRetry","startPosition","on","Events","MEDIA_ATTACHED","loadSource","MANIFEST_PARSED","_","_data","minSegments","levels","some","level","details","live","onManifestParsed","detectedLowLatencyStream","minSegmentsBeforePlay","LEVEL_LOADED","_evt","applyStreamLatencyProfile","isInAdBreak","hasPendingAdBreak","fragments","fragmentsToScan","tagList","isArray","entry","idx","indexOf","substring","includes","isDateRange","earlyDetection","onScte35Cue","createScte35CueContext","FRAG_BUFFERED","err","warn","FRAG_PARSING_METADATA","id3Tags","samples","map","s","pts","forEach","onId3Tag","FRAG_LOADED","processFragmentScte35Payload","sn","FRAG_DECRYPTED","FRAG_CHANGED","activatePendingCuesForFragment","prog","ERROR","ErrorTypes","NETWORK_ERROR","startLoad","MEDIA_ERROR","recoverMediaError","onFatalDestroy","attachMedia","isLowLatencyStream","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","updatePtsDrift","readiness","payloadData","fragmentSn","fragmentStartSeconds","processedTsScte35Sections","context","getLiveSyncPosition","pos","liveSyncPosition","restartLoadAt","position","stopLoad","error","reloadLiveStream","detachMedia","destroy","removeAttribute","load","recreateDelayMs","window","setTimeout"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/player/HlsEngine.ts\nvar HlsEngine_exports = {};\n__export(HlsEngine_exports, {\n HlsEngine: () => HlsEngine\n});\nmodule.exports = __toCommonJS(HlsEngine_exports);\nvar import_hls = __toESM(require(\"hls.js\"), 1);\n\n// src/player/Scte35Parser.ts\nfunction parseCueOutDuration(value) {\n const num = parseFloat(value.trim());\n if (!Number.isNaN(num)) return num;\n const match = value.match(/(?:^|[,\\s])DURATION\\s*=\\s*([0-9.]+)/i) || value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (match && match[1] != null) {\n const dStr = match[1];\n const d = parseFloat(dStr);\n return Number.isNaN(d) ? void 0 : d;\n }\n return void 0;\n}\nfunction parseCueOutCont(value) {\n const res = {};\n const elapsedMatch = value.match(/Elapsed\\s*=\\s*([0-9.]+)/i);\n const durationMatch = value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (elapsedMatch && elapsedMatch[1] != null) {\n const e = parseFloat(elapsedMatch[1]);\n if (!Number.isNaN(e)) res.elapsed = e;\n }\n if (durationMatch && durationMatch[1] != null) {\n const d = parseFloat(durationMatch[1]);\n if (!Number.isNaN(d)) res.duration = d;\n }\n if (!(\"elapsed\" in res) || !(\"duration\" in res)) {\n const slashMatch = value.match(/([0-9.]+)\\s*\\/\\s*([0-9.]+)/);\n if (slashMatch && slashMatch[1] && slashMatch[2]) {\n const elapsed = parseFloat(slashMatch[1]);\n const duration = parseFloat(slashMatch[2]);\n if (!Number.isNaN(elapsed) && !(\"elapsed\" in res)) res.elapsed = elapsed;\n if (!Number.isNaN(duration) && !(\"duration\" in res)) res.duration = duration;\n }\n }\n if (\"elapsed\" in res || \"duration\" in res) return res;\n return void 0;\n}\nfunction parseAttributeList(value) {\n const attrs = {};\n const regex = /([A-Z0-9-]+)=((\"[^\"]*\")|([^\",]*))(?:,|$)/gi;\n let match;\n while ((match = regex.exec(value)) !== null) {\n const key = match[1] ?? \"\";\n let rawVal = match[3] ?? match[4] ?? \"\";\n if (rawVal.startsWith('\"') && rawVal.endsWith('\"')) {\n rawVal = rawVal.slice(1, -1);\n }\n if (key) {\n attrs[key] = rawVal;\n }\n }\n return attrs;\n}\nfunction toNumber(val) {\n if (val == null) return void 0;\n const n = typeof val === \"string\" ? parseFloat(val) : Number(val);\n return Number.isNaN(n) ? void 0 : n;\n}\nfunction getDateRangeDurationSeconds(attrs) {\n return toNumber(attrs[\"DURATION\"]) ?? toNumber(attrs[\"PLANNED-DURATION\"]);\n}\nfunction decodeId3ValueToText(value) {\n try {\n if (typeof value === \"string\") return value;\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n const text = decoder.decode(value);\n if (text && /[\\x20-\\x7E]/.test(text)) return text;\n let out = \"\";\n for (let i = 0; i < value.length; i++)\n out += String.fromCharCode(value[i]);\n return out;\n } catch {\n return void 0;\n }\n}\nfunction getFragmentStartSeconds(frag) {\n const candidates = [frag?.start, frag?.startPTS];\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return void 0;\n}\nfunction parseScte35FromId3(tag) {\n const text = decodeId3ValueToText(tag.value);\n if (!text) return void 0;\n const cueOutMatch = text.match(/EXT-X-CUE-OUT(?::([^\\r\\n]*))?/i) || text.match(/CUE-OUT(?::([^\\r\\n]*))?/i);\n if (cueOutMatch) {\n const arg = (cueOutMatch[1] ?? \"\").trim();\n const dur = parseCueOutDuration(arg);\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...dur !== void 0 ? { durationSeconds: dur } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueOutContMatch = text.match(/EXT-X-CUE-OUT-CONT:([^\\r\\n]*)/i);\n if (cueOutContMatch) {\n const arg = (cueOutContMatch[1] ?? \"\").trim();\n const cont = parseCueOutCont(arg);\n const marker = {\n type: \"progress\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...cont?.duration !== void 0 ? { durationSeconds: cont.duration } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueInMatch = text.match(/EXT-X-CUE-IN\\b/i) || text.match(/CUE-IN\\b/i);\n if (cueInMatch) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const daterangeMatch = text.match(/EXT-X-DATERANGE:([^\\r\\n]*)/i);\n if (daterangeMatch) {\n const attrs = parseAttributeList(daterangeMatch[1] ?? \"\");\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n if (hasScteIn) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n }\n if (/SCTE35-OUT/i.test(text)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (/SCTE35-IN/i.test(text)) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (tag.value instanceof Uint8Array) {\n const bin = parseScte35Binary(tag.value);\n if (bin) return bin;\n }\n return void 0;\n}\nfunction normalizeFragmentPayload(payload) {\n if (payload instanceof Uint8Array) {\n return payload;\n }\n if (payload instanceof ArrayBuffer) {\n return new Uint8Array(payload);\n }\n if (ArrayBuffer.isView(payload)) {\n const view = payload;\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n }\n return void 0;\n}\nfunction detectTsPacketFormat(data) {\n const packetSizes = [188, 192, 204];\n for (const packetSize of packetSizes) {\n const tsPayloadOffset = packetSize === 192 ? 4 : 0;\n for (let offset = 0; offset < packetSize; offset++) {\n let matchedPackets = 0;\n for (let packetStart = offset; packetStart + tsPayloadOffset < data.length && matchedPackets < 5; packetStart += packetSize) {\n if (data[packetStart + tsPayloadOffset] !== 71) {\n break;\n }\n matchedPackets++;\n }\n if (matchedPackets >= 2) {\n return { offset, packetSize, tsPayloadOffset };\n }\n }\n }\n return void 0;\n}\nfunction getPsiSectionStart(payload, payloadUnitStart) {\n if (!payloadUnitStart) {\n return void 0;\n }\n const pointerField = payload[0];\n if (pointerField == null) {\n return void 0;\n }\n const sectionStart = 1 + pointerField;\n return sectionStart < payload.length ? sectionStart : void 0;\n}\nfunction getPsiSectionLength(data, offset) {\n return ((data[offset + 1] ?? 0) & 15) << 8 | (data[offset + 2] ?? 0);\n}\nfunction parsePatSection(payload, payloadUnitStart, pmtPids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 8 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 0) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n for (let offset = sectionStart + 8; offset + 4 <= sectionEnd - 4; offset += 4) {\n const programNumber = (payload[offset] ?? 0) << 8 | (payload[offset + 1] ?? 0);\n const pid = ((payload[offset + 2] ?? 0) & 31) << 8 | (payload[offset + 3] ?? 0);\n if (programNumber !== 0) {\n pmtPids.add(pid);\n }\n }\n}\nfunction descriptorsIdentifyScte35(data, start, end) {\n let offset = start;\n while (offset + 2 <= end) {\n const tag = data[offset] ?? 0;\n const length = data[offset + 1] ?? 0;\n const descriptorStart = offset + 2;\n const descriptorEnd = descriptorStart + length;\n if (descriptorEnd > end) {\n return false;\n }\n const registration = length >= 4 ? String.fromCharCode(\n data[descriptorStart] ?? 0,\n data[descriptorStart + 1] ?? 0,\n data[descriptorStart + 2] ?? 0,\n data[descriptorStart + 3] ?? 0\n ) : \"\";\n if (tag === 138 || registration === \"CUEI\" || registration === \"SCTE\") {\n return true;\n }\n offset = descriptorEnd;\n }\n return false;\n}\nfunction parsePmtSection(payload, payloadUnitStart, tsScte35Pids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 12 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 2) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n const programInfoLength = ((payload[sectionStart + 10] ?? 0) & 15) << 8 | (payload[sectionStart + 11] ?? 0);\n let offset = sectionStart + 12 + programInfoLength;\n while (offset + 5 <= sectionEnd - 4) {\n const streamType = payload[offset] ?? 0;\n const elementaryPid = ((payload[offset + 1] ?? 0) & 31) << 8 | (payload[offset + 2] ?? 0);\n const esInfoLength = ((payload[offset + 3] ?? 0) & 15) << 8 | (payload[offset + 4] ?? 0);\n const descriptorStart = offset + 5;\n const descriptorEnd = Math.min(descriptorStart + esInfoLength, sectionEnd - 4);\n if (streamType === 134 || streamType === 6 && descriptorsIdentifyScte35(payload, descriptorStart, descriptorEnd)) {\n tsScte35Pids.add(elementaryPid);\n }\n offset = descriptorStart + esInfoLength;\n }\n}\nfunction hasProcessedTsScte35Section(section, processedSections) {\n let checksum = 0;\n for (let i = 0; i < section.length; i++) {\n checksum = checksum * 31 + (section[i] ?? 0) >>> 0;\n }\n const key = `${section.length}:${checksum}`;\n if (processedSections.has(key)) {\n return true;\n }\n processedSections.add(key);\n if (processedSections.size > 200) {\n const firstKey = processedSections.values().next().value;\n if (firstKey) {\n processedSections.delete(firstKey);\n }\n }\n return false;\n}\nfunction addScte35SectionMarker(section, markers, processedSections) {\n if (section[0] !== 252 || hasProcessedTsScte35Section(section, processedSections)) {\n return;\n }\n const marker = parseScte35Binary(section);\n if (!marker) {\n return;\n }\n marker.raw = {\n ...typeof marker.raw === \"object\" && marker.raw ? marker.raw : {},\n source: \"ts-packet\"\n };\n markers.push(marker);\n}\nfunction appendScte35Bytes(pid, bytes, assemblers, markers, processedSections) {\n const assembler = assemblers.get(pid);\n if (!assembler) {\n return;\n }\n for (let i = 0; i < bytes.length && assembler.bytes.length < assembler.expectedLength; i++) {\n assembler.bytes.push(bytes[i] ?? 0);\n }\n if (assembler.bytes.length >= assembler.expectedLength) {\n assemblers.delete(pid);\n addScte35SectionMarker(new Uint8Array(assembler.bytes), markers, processedSections);\n }\n}\nfunction collectScte35SectionsFromPayload(pid, payload, payloadUnitStart, assemblers, markers, processedSections) {\n if (payload.length === 0) {\n return;\n }\n let offset = 0;\n if (payloadUnitStart) {\n const pointerField = payload[0] ?? 0;\n const previousAssembler = assemblers.get(pid);\n if (previousAssembler && pointerField > 0) {\n appendScte35Bytes(\n pid,\n payload.subarray(1, Math.min(1 + pointerField, payload.length)),\n assemblers,\n markers,\n processedSections\n );\n }\n assemblers.delete(pid);\n offset = 1 + pointerField;\n } else {\n appendScte35Bytes(pid, payload, assemblers, markers, processedSections);\n return;\n }\n while (offset + 3 <= payload.length) {\n const tableId = payload[offset];\n if (tableId == null || tableId === 255) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, offset);\n const totalLength = 3 + sectionLength;\n if (sectionLength <= 0 || totalLength <= 3) {\n return;\n }\n if (offset + totalLength <= payload.length) {\n addScte35SectionMarker(\n payload.subarray(offset, offset + totalLength),\n markers,\n processedSections\n );\n offset += totalLength;\n } else {\n assemblers.set(pid, {\n bytes: Array.from(payload.subarray(offset)),\n expectedLength: totalLength\n });\n return;\n }\n }\n}\nfunction parseScte35FromTsPackets(data, tsScte35Pids, pmtPids, processedSections) {\n const packetInfo = detectTsPacketFormat(data);\n if (!packetInfo) {\n return [];\n }\n const markers = [];\n const sectionAssemblers = /* @__PURE__ */ new Map();\n for (let packetStart = packetInfo.offset; packetStart + packetInfo.packetSize <= data.length; packetStart += packetInfo.packetSize) {\n const tsStart = packetStart + packetInfo.tsPayloadOffset;\n if (data[tsStart] !== 71) {\n continue;\n }\n const secondByte = data[tsStart + 1];\n const thirdByte = data[tsStart + 2];\n const fourthByte = data[tsStart + 3];\n if (secondByte == null || thirdByte == null || fourthByte == null || (secondByte & 128) !== 0) {\n continue;\n }\n const payloadUnitStart = (secondByte & 64) !== 0;\n const pid = (secondByte & 31) << 8 | thirdByte;\n const adaptationFieldControl = fourthByte >> 4 & 3;\n const hasPayload = adaptationFieldControl === 1 || adaptationFieldControl === 3;\n if (!hasPayload) {\n continue;\n }\n let payloadStart = tsStart + 4;\n if (adaptationFieldControl === 3) {\n const adaptationLength = data[payloadStart];\n if (adaptationLength == null) {\n continue;\n }\n payloadStart += 1 + adaptationLength;\n }\n const payloadEnd = Math.min(tsStart + 188, data.length);\n if (payloadStart >= payloadEnd || payloadStart >= data.length) {\n continue;\n }\n const payload = data.subarray(payloadStart, payloadEnd);\n if (pid === 0) {\n parsePatSection(payload, payloadUnitStart, pmtPids);\n } else if (pmtPids.has(pid)) {\n parsePmtSection(payload, payloadUnitStart, tsScte35Pids);\n } else if (tsScte35Pids.has(pid)) {\n collectScte35SectionsFromPayload(\n pid,\n payload,\n payloadUnitStart,\n sectionAssemblers,\n markers,\n processedSections\n );\n }\n }\n return markers;\n}\nvar BitReader = class {\n constructor(buf) {\n this.buf = buf;\n this.bytePos = 0;\n this.bitPos = 0;\n }\n readBits(numBits) {\n let result = 0;\n while (numBits > 0) {\n if (this.bytePos >= this.buf.length) return result;\n const remainingInByte = 8 - this.bitPos;\n const toRead = Math.min(numBits, remainingInByte);\n const currentByte = this.buf[this.bytePos];\n const shift = remainingInByte - toRead;\n const mask = (1 << toRead) - 1 & 255;\n const bits = currentByte >> shift & mask;\n result = result << toRead | bits;\n this.bitPos += toRead;\n if (this.bitPos >= 8) {\n this.bitPos = 0;\n this.bytePos += 1;\n }\n numBits -= toRead;\n }\n return result >>> 0;\n }\n skipBits(n) {\n this.readBits(n);\n }\n get bytePosition() {\n return this.bitPos === 0 ? this.bytePos : this.bytePos + 1;\n }\n};\nfunction readSpliceTime(r, ptsAdjustmentTicks) {\n const timeSpecifiedFlag = r.readBits(1) === 1;\n if (!timeSpecifiedFlag) {\n r.readBits(7);\n return void 0;\n }\n r.readBits(6);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const ptsTicks = (high * 4294967296 + low + ptsAdjustmentTicks) % 8589934592;\n return ptsTicks / 9e4;\n}\nfunction markerTypeFromSegmentationTypeId(segmentationTypeId) {\n switch (segmentationTypeId) {\n case 16:\n case 34:\n case 48:\n case 50:\n case 52:\n case 54:\n return \"start\";\n case 17:\n case 35:\n case 49:\n case 51:\n case 53:\n case 55:\n return \"end\";\n default:\n return void 0;\n }\n}\nfunction parseScte35SegmentationDescriptor(descriptor) {\n if (descriptor.length < 11) {\n return void 0;\n }\n const identifier = String.fromCharCode(\n descriptor[0] ?? 0,\n descriptor[1] ?? 0,\n descriptor[2] ?? 0,\n descriptor[3] ?? 0\n );\n if (identifier !== \"CUEI\") {\n return void 0;\n }\n const segmentationEventId = (descriptor[4] ?? 0) * 16777216 + ((descriptor[5] ?? 0) << 16) + ((descriptor[6] ?? 0) << 8) + (descriptor[7] ?? 0);\n const cancelIndicator = ((descriptor[8] ?? 0) & 128) !== 0;\n if (cancelIndicator) {\n return void 0;\n }\n const flags = descriptor[9] ?? 0;\n const programSegmentationFlag = (flags & 128) !== 0;\n const segmentationDurationFlag = (flags & 64) !== 0;\n let offset = 10;\n if (!programSegmentationFlag) {\n const componentCount = descriptor[offset] ?? 0;\n offset += 1 + componentCount * 6;\n if (offset > descriptor.length) {\n return void 0;\n }\n }\n let durationSeconds = void 0;\n if (segmentationDurationFlag) {\n if (offset + 5 > descriptor.length) {\n return void 0;\n }\n const durationTicks = (descriptor[offset] ?? 0) * 4294967296 + (descriptor[offset + 1] ?? 0) * 16777216 + ((descriptor[offset + 2] ?? 0) << 16) + ((descriptor[offset + 3] ?? 0) << 8) + (descriptor[offset + 4] ?? 0);\n durationSeconds = durationTicks / 9e4;\n offset += 5;\n }\n if (offset + 2 > descriptor.length) {\n return void 0;\n }\n offset += 1;\n const segmentationUpidLength = descriptor[offset] ?? 0;\n offset += 1 + segmentationUpidLength;\n if (offset >= descriptor.length) {\n return void 0;\n }\n const segmentationTypeId = descriptor[offset] ?? 0;\n const markerType = markerTypeFromSegmentationTypeId(segmentationTypeId);\n if (!markerType) {\n return void 0;\n }\n return {\n type: markerType,\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n segmentationEventId\n };\n}\nfunction parseScte35SegmentationDescriptors(data, offset) {\n if (offset + 2 > data.length) {\n return void 0;\n }\n const descriptorLoopLength = (data[offset] ?? 0) << 8 | (data[offset + 1] ?? 0);\n let descriptorOffset = offset + 2;\n const descriptorEnd = Math.min(\n data.length,\n descriptorOffset + descriptorLoopLength\n );\n while (descriptorOffset + 2 <= descriptorEnd) {\n const descriptorTag = data[descriptorOffset] ?? 0;\n const descriptorLength = data[descriptorOffset + 1] ?? 0;\n const descriptorDataStart = descriptorOffset + 2;\n const descriptorDataEnd = descriptorDataStart + descriptorLength;\n if (descriptorDataEnd > descriptorEnd) {\n return void 0;\n }\n if (descriptorTag === 2) {\n const descriptorMarker = parseScte35SegmentationDescriptor(\n data.subarray(descriptorDataStart, descriptorDataEnd)\n );\n if (descriptorMarker) {\n return descriptorMarker;\n }\n }\n descriptorOffset = descriptorDataEnd;\n }\n return void 0;\n}\nfunction parseScte35Binary(data) {\n const r = new BitReader(data);\n const tableId = r.readBits(8);\n if (tableId !== 252) return void 0;\n r.readBits(1);\n r.readBits(1);\n r.readBits(2);\n const sectionLength = r.readBits(12);\n if (sectionLength <= 0 || data.length < 3 + sectionLength) {\n return void 0;\n }\n r.readBits(8);\n r.readBits(1);\n r.readBits(6);\n const ptsAdjHigh = r.readBits(1);\n const ptsAdjLow = r.readBits(32);\n const ptsAdjustmentTicks = ptsAdjHigh * 4294967296 + ptsAdjLow;\n r.readBits(8);\n r.readBits(12);\n const spliceCommandLength = r.readBits(12);\n const spliceCommandType = r.readBits(8);\n let markerType;\n let durationSeconds = void 0;\n let ptsSeconds = void 0;\n let spliceEventId = void 0;\n const commandBodyStart = r.bytePosition;\n if (spliceCommandType === 5) {\n spliceEventId = r.readBits(32);\n const cancel = r.readBits(1) === 1;\n r.readBits(7);\n if (cancel) return void 0;\n const outOfNetwork = r.readBits(1) === 1;\n const programSpliceFlag = r.readBits(1) === 1;\n const durationFlag = r.readBits(1) === 1;\n const spliceImmediateFlag = r.readBits(1) === 1;\n r.readBits(4);\n markerType = outOfNetwork ? \"start\" : \"end\";\n if (programSpliceFlag && !spliceImmediateFlag) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else if (!programSpliceFlag) {\n const componentCount = r.readBits(8);\n for (let i = 0; i < componentCount; i++) {\n r.readBits(8);\n if (!spliceImmediateFlag) {\n const componentPtsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n if (ptsSeconds === void 0) {\n ptsSeconds = componentPtsSeconds;\n }\n }\n }\n }\n if (durationFlag) {\n r.readBits(6);\n r.readBits(1);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const durationTicks = high * 4294967296 + low;\n durationSeconds = durationTicks / 9e4;\n }\n r.readBits(16);\n r.readBits(8);\n r.readBits(8);\n } else if (spliceCommandType === 6) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else {\n return void 0;\n }\n const expectedDescriptorOffset = spliceCommandLength === 4095 ? r.bytePosition : commandBodyStart + spliceCommandLength;\n const descriptorMarker = parseScte35SegmentationDescriptors(\n data,\n expectedDescriptorOffset\n );\n if (descriptorMarker) {\n markerType = descriptorMarker.type;\n if (durationSeconds === void 0) {\n durationSeconds = descriptorMarker.durationSeconds;\n }\n }\n if (!markerType) {\n return void 0;\n }\n const marker = {\n type: markerType,\n ...ptsSeconds !== void 0 ? { ptsSeconds } : {},\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: {\n splice_command_type: spliceCommandType,\n ...spliceEventId !== void 0 ? { splice_event_id: spliceEventId } : {},\n ...descriptorMarker?.segmentationEventId !== void 0 ? { segmentation_event_id: descriptorMarker.segmentationEventId } : {}\n }\n };\n return marker;\n}\n\n// src/player/HlsEngine.ts\nvar HlsEngine = class {\n constructor(config, video, cueManager, timing, callbacks) {\n this.isLiveStream = false;\n this.nativeHlsMode = false;\n this.videoSrcProtection = null;\n this.reloadingLiveStream = false;\n this.bufferedSegmentsCount = 0;\n this.shouldAutoplayAfterBuffering = false;\n this.hasInitialBufferCompleted = false;\n this.latencyProfileApplied = false;\n this.config = config;\n this.video = video;\n this.cueManager = cueManager;\n this.timing = timing;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n shouldUseNativeHls(getStreamType) {\n const streamType = getStreamType();\n if (streamType === \"other\") {\n return true;\n }\n const canNative = this.video.canPlayType(\"application/vnd.apple.mpegurl\");\n return !!(this.config.allowNativeHls && canNative);\n }\n async setupNativeHls() {\n this.nativeHlsMode = true;\n this.videoSrcProtection = this.config.src;\n this.video.src = this.config.src;\n this.isLiveStream = this.config.isLiveStream ?? (this.config.lowLatencyMode ?? false);\n if (this.debug) {\n const adBehavior = this.isLiveStream ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\n \"[StormcloudVideoPlayer] Using native HLS playback:\",\n {\n isLive: this.isLiveStream,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n }\n );\n }\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n setupHls() {\n this.hls = new import_hls.default({\n enableWorker: true,\n backBufferLength: 30,\n liveDurationInfinity: true,\n lowLatencyMode: !!this.config.lowLatencyMode,\n maxLiveSyncPlaybackRate: 1.1,\n maxBufferLength: 30,\n maxMaxBufferLength: 600,\n maxBufferSize: 60 * 1e3 * 1e3,\n maxBufferHole: 1,\n highBufferWatchdogPeriod: 2,\n nudgeOffset: 0.2,\n nudgeMaxRetry: 5,\n startPosition: -1\n });\n this.hls.on(import_hls.default.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(import_hls.default.Events.MANIFEST_PARSED, async (_, _data) => {\n this.isLiveStream = this.config.isLiveStream ?? (this.hls?.levels?.some(\n (level) => level?.details?.live === true || level?.details?.type === \"LIVE\"\n ) ?? false);\n await this.callbacks.onManifestParsed(this.isLiveStream);\n this.bufferedSegmentsCount = 0;\n this.hasInitialBufferCompleted = false;\n this.shouldAutoplayAfterBuffering = !!this.config.autoplay;\n this.latencyProfileApplied = false;\n this.detectedLowLatencyStream = void 0;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Waiting for\",\n minSegments,\n \"segments to buffer before playback\"\n );\n }\n if (minSegments === 0 || !this.config.autoplay) {\n this.hasInitialBufferCompleted = true;\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n this.reloadingLiveStream = false;\n });\n this.hls.on(import_hls.default.Events.LEVEL_LOADED, (_evt, data) => {\n this.applyStreamLatencyProfile(data?.details);\n if (this.callbacks.isInAdBreak() || this.callbacks.hasPendingAdBreak()) {\n return;\n }\n const details = data?.details;\n if (!details || !details.fragments || details.fragments.length === 0) {\n return;\n }\n const fragmentsToScan = Math.min(5, details.fragments.length);\n for (let i = 0; i < fragmentsToScan; i++) {\n const frag = details.fragments[i];\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) continue;\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) continue;\n if (tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-DATERANGE\")) {\n const isDateRange = tag.includes(\"EXT-X-DATERANGE\");\n const attrs = isDateRange ? parseAttributeList(value) : {};\n const hasScteOut = tag.includes(\"EXT-X-CUE-OUT\") || \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n if (hasScteOut) {\n const durationSeconds = isDateRange ? getDateRangeDurationSeconds(attrs) : parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value, earlyDetection: true }\n };\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] EARLY SCTE-35 DETECTION: Ad break marker found in fragment\", i, \"- starting pre-fetch (NOT playing yet)\");\n }\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"early\", frag)\n });\n return;\n }\n }\n }\n }\n });\n this.hls.on(import_hls.default.Events.FRAG_BUFFERED, async (_evt, _data) => {\n if (this.hasInitialBufferCompleted) {\n return;\n }\n this.bufferedSegmentsCount++;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Buffered segment ${this.bufferedSegmentsCount}/${minSegments}`\n );\n }\n if (this.bufferedSegmentsCount >= minSegments) {\n this.hasInitialBufferCompleted = true;\n if (this.shouldAutoplayAfterBuffering) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Initial buffer complete (${this.bufferedSegmentsCount} segments). Starting playback.`\n );\n }\n await this.video.play()?.catch((err) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Autoplay failed:\", err);\n }\n });\n }\n }\n });\n this.hls.on(import_hls.default.Events.FRAG_PARSING_METADATA, (_evt, data) => {\n const id3Tags = (data?.samples || []).map((s) => ({\n key: \"ID3\",\n value: s?.data,\n ptsSeconds: s?.pts\n }));\n id3Tags.forEach((tag) => this.onId3Tag(tag));\n });\n this.hls.on(import_hls.default.Events.FRAG_LOADED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls.default.Events.FRAG_DECRYPTED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls.default.Events.FRAG_CHANGED, (_evt, data) => {\n const frag = data?.frag;\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) {\n this.callbacks.activatePendingCuesForFragment(frag);\n return;\n }\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n value = \"\";\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) {\n const prog = parseCueOutCont(value);\n const marker = {\n type: \"progress\",\n ...prog?.duration !== void 0 ? { durationSeconds: prog.duration } : {},\n ...prog?.elapsed !== void 0 ? { ptsSeconds: prog.elapsed } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-OUT\")) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-IN\")) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n } else if (tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = parseAttributeList(value);\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = getDateRangeDurationSeconds(attrs);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { tag, value, attrs }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n }\n if (hasScteIn) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value, attrs } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n }\n }\n }\n this.callbacks.activatePendingCuesForFragment(frag);\n });\n this.hls.on(import_hls.default.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case import_hls.default.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case import_hls.default.ErrorTypes.MEDIA_ERROR:\n this.hls?.recoverMediaError();\n break;\n default:\n this.callbacks.onFatalDestroy();\n break;\n }\n }\n });\n this.hls.attachMedia(this.video);\n }\n isLowLatencyStream() {\n return this.detectedLowLatencyStream;\n }\n applyStreamLatencyProfile(details) {\n if (this.latencyProfileApplied || !this.hls) {\n return;\n }\n if (!details) {\n return;\n }\n if (details.live !== true) {\n this.latencyProfileApplied = true;\n this.detectedLowLatencyStream = false;\n return;\n }\n const isLowLatencyManifest = this.isLowLatencyManifest(details);\n const useLowLatency = isLowLatencyManifest && !!this.config.lowLatencyMode;\n this.detectedLowLatencyStream = useLowLatency;\n this.latencyProfileApplied = true;\n const cfg = this.hls.config;\n if (useLowLatency) {\n cfg.maxLiveSyncPlaybackRate = 1.5;\n cfg.maxBufferHole = 0.5;\n delete cfg.liveSyncDuration;\n } else {\n cfg.maxLiveSyncPlaybackRate = 1.1;\n cfg.maxBufferHole = 1;\n delete cfg.liveSyncDuration;\n cfg.liveSyncDurationCount = 3;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live latency profile: ${useLowLatency ? \"LL-HLS (low latency)\" : \"standard live (stability)\"}`,\n {\n isLowLatencyManifest,\n lowLatencyModeRequested: !!this.config.lowLatencyMode,\n canBlockReload: details.canBlockReload,\n partTarget: details.partTarget,\n partHoldBack: details.partHoldBack,\n partListLength: Array.isArray(details.partList) ? details.partList.length : 0,\n targetDuration: details.targetduration ?? details.targetDuration,\n maxLiveSyncPlaybackRate: cfg.maxLiveSyncPlaybackRate,\n maxBufferHole: cfg.maxBufferHole\n }\n );\n }\n }\n isLowLatencyManifest(details) {\n if (!details) {\n return false;\n }\n const hasParts = Array.isArray(details.partList) && details.partList.length > 0;\n const hasPartTarget = typeof details.partTarget === \"number\" && details.partTarget > 0;\n const hasPartHoldBack = typeof details.partHoldBack === \"number\" && details.partHoldBack > 0;\n const canBlockReload = details.canBlockReload === true;\n return hasParts || hasPartTarget || hasPartHoldBack || canBlockReload;\n }\n onId3Tag(tag) {\n if (typeof tag.ptsSeconds === \"number\") {\n this.timing.updatePtsDrift(tag.ptsSeconds);\n }\n const marker = parseScte35FromId3(tag);\n if (marker) {\n this.callbacks.onScte35Cue(marker, {\n source: \"id3\",\n readiness: \"playback\"\n });\n }\n }\n processFragmentScte35Payload(payloadData, fragmentSn, fragmentStartSeconds) {\n const payload = normalizeFragmentPayload(payloadData);\n if (!payload) {\n return;\n }\n const markers = parseScte35FromTsPackets(\n payload,\n this.cueManager.tsScte35Pids,\n this.cueManager.pmtPids,\n this.cueManager.processedTsScte35Sections\n );\n markers.forEach((marker) => {\n const context = {\n source: \"ts\",\n readiness: \"early\"\n };\n if (fragmentSn !== void 0) {\n context.fragmentSn = fragmentSn;\n }\n if (fragmentStartSeconds !== void 0) {\n context.fragmentStartSeconds = fragmentStartSeconds;\n }\n this.callbacks.onScte35Cue(marker, context);\n });\n }\n getLiveSyncPosition() {\n const pos = this.hls?.liveSyncPosition;\n return typeof pos === \"number\" && Number.isFinite(pos) ? pos : void 0;\n }\n restartLoadAt(position) {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.stopLoad();\n this.hls.startLoad(position);\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to restart HLS load at live edge:\", error);\n }\n }\n }\n recoverMediaError() {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.recoverMediaError();\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] recoverMediaError() failed:\", error);\n }\n }\n }\n reloadLiveStream() {\n const hls = this.hls;\n if (!hls) {\n return;\n }\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Hard-reloading live stream (destroy hls \\u2192 reset video \\u2192 fresh setupHls)\"\n );\n }\n try {\n this.reloadingLiveStream = true;\n hls.stopLoad();\n hls.detachMedia();\n hls.destroy();\n this.hls = void 0;\n try {\n this.video.removeAttribute(\"src\");\n this.video.load();\n } catch (error) {\n console.warn(\"[StormcloudVideoPlayer] video.load() threw after src removal:\", error);\n }\n } catch (error) {\n this.reloadingLiveStream = false;\n this.hls = void 0;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to tear down during hard-reload:\", error);\n }\n return;\n }\n const recreateDelayMs = 600;\n window.setTimeout(() => {\n if (this.hls) {\n this.reloadingLiveStream = false;\n return;\n }\n try {\n this.setupHls();\n } catch (error) {\n this.reloadingLiveStream = false;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to rebuild pipeline during hard-reload:\", error);\n }\n }\n }, recreateDelayMs);\n }\n destroy() {\n this.hls?.destroy();\n this.hls = void 0;\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n HlsEngine\n});\n"]}
@@ -130,6 +130,9 @@ __export(Scte35Parser_exports, {
130
130
  detectTsPacketFormat: function detectTsPacketFormat1() {
131
131
  return detectTsPacketFormat;
132
132
  },
133
+ getDateRangeDurationSeconds: function getDateRangeDurationSeconds1() {
134
+ return getDateRangeDurationSeconds;
135
+ },
133
136
  getFragmentStartSeconds: function getFragmentStartSeconds1() {
134
137
  return getFragmentStartSeconds;
135
138
  },
@@ -219,6 +222,10 @@ function toNumber(val) {
219
222
  var n = typeof val === "string" ? parseFloat(val) : Number(val);
220
223
  return Number.isNaN(n) ? void 0 : n;
221
224
  }
225
+ function getDateRangeDurationSeconds(attrs) {
226
+ var _toNumber;
227
+ return (_toNumber = toNumber(attrs["DURATION"])) !== null && _toNumber !== void 0 ? _toNumber : toNumber(attrs["PLANNED-DURATION"]);
228
+ }
222
229
  function isManifestBasedMarker(marker) {
223
230
  var raw = marker.raw;
224
231
  if (!raw) return false;
@@ -925,6 +932,7 @@ function parseScte35Binary(data) {
925
932
  0 && (module.exports = {
926
933
  decodeId3ValueToText: decodeId3ValueToText,
927
934
  detectTsPacketFormat: detectTsPacketFormat,
935
+ getDateRangeDurationSeconds: getDateRangeDurationSeconds,
928
936
  getFragmentStartSeconds: getFragmentStartSeconds,
929
937
  isManifestBasedMarker: isManifestBasedMarker,
930
938
  normalizeFragmentPayload: normalizeFragmentPayload,