stormcloud-video-player 0.8.70 → 0.8.71

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":"AAAA;;;;;AACA,IAAIA,YAAYC,OAAOC,cAAc;AACrC,IAAIC,mBAAmBF,OAAOG,wBAAwB;AACtD,IAAIC,oBAAoBJ,OAAOK,mBAAmB;AAClD,IAAIC,eAAeN,OAAOO,SAAS,CAACC,cAAc;AAClD,IAAIC,WAAW,kBAACC,QAAQC;IACtB,IAAK,IAAIC,QAAQD,IACfZ,UAAUW,QAAQE,MAAM;QAAEC,KAAKF,GAAG,CAACC,KAAK;QAAEE,YAAY;IAAK;AAC/D;AACA,IAAIC,cAAc,qBAACC,IAAIC,MAAMC,QAAQC;IACnC,IAAIF,QAAQ,CAAA,OAAOA,qCAAP,SAAOA,KAAG,MAAM,YAAY,OAAOA,SAAS,YAAY;YAC7D,kCAAA,2BAAA;;;gBAAA,IAAIG,MAAJ;gBACH,IAAI,CAACd,aAAae,IAAI,CAACL,IAAII,QAAQA,QAAQF,QACzCnB,UAAUiB,IAAII,KAAK;oBAAEP,KAAK,SAALA;+BAAWI,IAAI,CAACG,IAAI;;oBAAEN,YAAY,CAAEK,CAAAA,OAAOjB,iBAAiBe,MAAMG,IAAG,KAAMD,KAAKL,UAAU;gBAAC;;YAFpH,QAAK,YAAWV,kBAAkBa,0BAA7B,SAAA,6BAAA,QAAA,yBAAA;;YAAA;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;IAGP;IACA,OAAOD;AACT;AACA,IAAIM,eAAe,sBAACC;WAAQR,YAAYhB,UAAU,CAAC,GAAG,cAAc;QAAEyB,OAAO;IAAK,IAAID;;AAEtF,+BAA+B;AAC/B,IAAIE,yBAAyB,CAAC;AAC9BhB,SAASgB,wBAAwB;IAC/BC,yBAAyB,SAAzBA;eAA+BA;;IAC/BC,kBAAkB,SAAlBA;eAAwBA;;IACxBC,iBAAiB,SAAjBA;eAAuBA;;IACvBC,0BAA0B,SAA1BA;eAAgCA;;IAChCC,iBAAiB,SAAjBA;eAAuBA;;IACvBC,uBAAuB,SAAvBA;eAA6BA;;AAC/B;AACAC,OAAOC,OAAO,GAAGX,aAAaG;AAC9B,IAAIE,mBAAmB;AACvB,IAAID,0BAA0B;AAC9B,SAASK,sBAAsBG,MAAM;QAEvBA;IADZ,IAAIA,OAAOC,oBAAoB,KAAK,MAAM,OAAO,KAAK;IACtD,IAAMC,OAAMF,qBAAAA,OAAOG,UAAU,cAAjBH,yCAAAA,mBAAmBI,IAAI;IACnC,IAAI,CAACF,KAAK;QACRG,QAAQC,IAAI,CACV;QAEF,OAAO,KAAK;IACd;IACA,IAAI;QACF,IAAMC,MAAM,IAAIC,IAAIN;QACpB,IAAIK,IAAIE,QAAQ,KAAK,YAAYF,IAAIE,QAAQ,KAAK,SAAS;YACzD,MAAM,IAAIC,MAAM,AAAC,wBAAoC,OAAbH,IAAIE,QAAQ;QACtD;QACA,OAAOF,IAAII,QAAQ;IACrB,EAAE,eAAM;QACNN,QAAQC,IAAI,CAAC;QACb,OAAO,KAAK;IACd;AACF;AACA,SAASZ,gBAAgBkB,OAAO,EAAEC,WAAW,EAAEC,gBAAgB;IAC7D,IAAMP,MAAM,IAAIC,IAAII;IACpB,IAAMG,QAAQC,KAAKC,GAAG,CAAC,GAAGD,KAAKE,KAAK,CAACL;IACrC,IAAMM,SAASH,KAAKC,GAAG,CAAC,GAAGD,KAAKI,GAAG,CAAC3B,kBAAkBuB,KAAKE,KAAK,CAACJ;IACjEP,IAAIc,YAAY,CAACC,GAAG,CAAC,QAAQC,OAAOR;IACpCR,IAAIc,YAAY,CAACC,GAAG,CAAC,QAAQC,OAAOJ;IACpCZ,IAAIc,YAAY,CAACC,GAAG,CAAC,YAAYC,OAAOP,KAAKE,KAAK,CAACH,QAAQ;IAC3DR,IAAIc,YAAY,CAACC,GAAG,CAAC,SAASC,OAAOJ;IACrC,OAAOZ,IAAII,QAAQ;AACrB;AACA,SAAShB,yBAAyB6B,MAAM;;QAItBA;IAHhB,IAAIA,OAAOC,KAAK,IAAI,MAAM;QACxB,OAAOD,OAAOE,UAAU,GAAG,IAAI,SAAS;IAC1C;IACA,IAAMC,mBAAUH,gBAAAA,OAAOC,KAAK,cAAZD,oCAAAA,cAAcG,OAAO,uCAAIJ,OAAOC,OAAOC,KAAK;IAC5D,IAAI,6DAA6DG,IAAI,CAACD,YAAYA,QAAQE,QAAQ,CAACrC,0BAA0B;QAC3H,OAAO;IACT;IACA,OAAO;AACT;AACA,SAASI,gBAAgBW,GAAG;IAC1B,IAAI;QACF,IAAMuB,SAAS,IAAItB,IAAID;QACvB,OAAO,AAAC,GAAkBuB,OAAhBA,OAAOC,MAAM,EAAmB,OAAhBD,OAAOE,QAAQ;IAC3C,EAAE,eAAM;YACCzB;QAAP,QAAOA,cAAAA,IAAI0B,KAAK,CAAC,IAAI,CAAC,EAAE,cAAjB1B,yBAAAA,cAAqB;IAC9B;AACF;AACA,6DAA6D;AAC7D,KAAMT,CAAAA,OAAOC,OAAO,GAAG;IACrBP,yBAAAA;IACAC,kBAAAA;IACAC,iBAAAA;IACAC,0BAAAA;IACAC,iBAAAA;IACAC,uBAAAA;AACF,CAAA","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":"AAAA;;;;;AACA,IAAIA,YAAYC,OAAOC,cAAc;AACrC,IAAIC,mBAAmBF,OAAOG,wBAAwB;AACtD,IAAIC,oBAAoBJ,OAAOK,mBAAmB;AAClD,IAAIC,eAAeN,OAAOO,SAAS,CAACC,cAAc;AAClD,IAAIC,WAAW,kBAACC,QAAQC;IACtB,IAAK,IAAIC,QAAQD,IACfZ,UAAUW,QAAQE,MAAM;QAAEC,KAAKF,GAAG,CAACC,KAAK;QAAEE,YAAY;IAAK;AAC/D;AACA,IAAIC,cAAc,qBAACC,IAAIC,MAAMC,QAAQC;IACnC,IAAIF,QAAQ,CAAA,OAAOA,qCAAP,SAAOA,KAAG,MAAM,YAAY,OAAOA,SAAS,YAAY;YAC7D,kCAAA,2BAAA;;;gBAAA,IAAIG,MAAJ;gBACH,IAAI,CAACd,aAAae,IAAI,CAACL,IAAII,QAAQA,QAAQF,QACzCnB,UAAUiB,IAAII,KAAK;oBAAEP,KAAK,SAALA;+BAAWI,IAAI,CAACG,IAAI;;oBAAEN,YAAY,CAAEK,CAAAA,OAAOjB,iBAAiBe,MAAMG,IAAG,KAAMD,KAAKL,UAAU;gBAAC;;YAFpH,QAAK,YAAWV,kBAAkBa,0BAA7B,SAAA,6BAAA,QAAA,yBAAA;;YAAA;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;IAGP;IACA,OAAOD;AACT;AACA,IAAIM,eAAe,sBAACC;WAAQR,YAAYhB,UAAU,CAAC,GAAG,cAAc;QAAEyB,OAAO;IAAK,IAAID;;AAEtF,+BAA+B;AAC/B,IAAIE,yBAAyB,CAAC;AAC9BhB,SAASgB,wBAAwB;IAC/BC,yBAAyB,SAAzBA;eAA+BA;;IAC/BC,kBAAkB,SAAlBA;eAAwBA;;IACxBC,iBAAiB,SAAjBA;eAAuBA;;IACvBC,0BAA0B,SAA1BA;eAAgCA;;IAChCC,iBAAiB,SAAjBA;eAAuBA;;IACvBC,uBAAuB,SAAvBA;eAA6BA;;AAC/B;AACAC,OAAOC,OAAO,GAAGX,aAAaG;AAC9B,IAAIE,mBAAmB;AACvB,IAAID,0BAA0B;AAC9B,IAAIQ,0BAA0B;AAC9B,SAASH,sBAAsBI,MAAM;QAEvBA,oBAOOA;IARnB,IAAIA,OAAOC,oBAAoB,KAAK,MAAM,OAAO,KAAK;IACtD,IAAMC,OAAMF,qBAAAA,OAAOG,UAAU,cAAjBH,yCAAAA,mBAAmBI,IAAI;IACnC,IAAI,CAACF,KAAK;QACRG,QAAQC,IAAI,CACV;QAEF,OAAO,KAAK;IACd;IACA,IAAMC,cAAaP,qBAAAA,OAAOO,UAAU,cAAjBP,yCAAAA,mBAAmBI,IAAI;IAC1C,IAAI,CAACG,YAAY;QACfF,QAAQC,IAAI,CACV;QAEF,OAAO,KAAK;IACd;IACA,IAAME,aAAaC,mBAAmBF;IACtC,IAAI;QACF,IAAMG,iBAAiBR,IAAIS,MAAM,CAACZ,6BAA6B,CAAC;QAChE,IAAMa,MAAM,IAAIC,IAAIH,iBAAiBR,IAAIY,OAAO,CAACf,yBAAyBS,cAAcN;QACxF,IAAIU,IAAIG,QAAQ,KAAK,YAAYH,IAAIG,QAAQ,KAAK,SAAS;YACzD,MAAM,IAAIC,MAAM,AAAC,wBAAoC,OAAbJ,IAAIG,QAAQ;QACtD;QACA,IAAI,CAACL,gBAAgB;YACnB,IAAMO,OAAOL,IAAIM,QAAQ,CAACJ,OAAO,CAAC,QAAQ;YAC1CF,IAAIM,QAAQ,GAAG,gBAAgBC,IAAI,CAACF,QAAQA,KAAKH,OAAO,CAAC,iBAAiB,AAAC,IAAc,OAAXN,YAAW,WAAS,AAAC,GAAUA,OAARS,MAAK,KAAc,OAAXT,YAAW;QAC1H;QACA,OAAOI,IAAIQ,QAAQ;IACrB,EAAE,eAAM;QACNf,QAAQC,IAAI,CAAC;QACb,OAAO,KAAK;IACd;AACF;AACA,SAASb,gBAAgB4B,OAAO,EAAEC,WAAW,EAAEC,gBAAgB;IAC7D,IAAMX,MAAM,IAAIC,IAAIQ;IACpB,IAAMG,QAAQC,KAAKC,GAAG,CAAC,GAAGD,KAAKE,KAAK,CAACL;IACrC,IAAMM,SAASH,KAAKC,GAAG,CAAC,GAAGD,KAAKI,GAAG,CAACrC,kBAAkBiC,KAAKE,KAAK,CAACJ;IACjEX,IAAIkB,YAAY,CAACC,GAAG,CAAC,QAAQC,OAAOR;IACpCZ,IAAIkB,YAAY,CAACC,GAAG,CAAC,QAAQC,OAAOJ;IACpChB,IAAIkB,YAAY,CAACC,GAAG,CAAC,YAAYC,OAAOP,KAAKE,KAAK,CAACH,QAAQ;IAC3DZ,IAAIkB,YAAY,CAACC,GAAG,CAAC,SAASC,OAAOJ;IACrC,OAAOhB,IAAIQ,QAAQ;AACrB;AACA,SAAS1B,yBAAyBuC,MAAM;;QAItBA;IAHhB,IAAIA,OAAOC,KAAK,IAAI,MAAM;QACxB,OAAOD,OAAOE,UAAU,GAAG,IAAI,SAAS;IAC1C;IACA,IAAMC,mBAAUH,gBAAAA,OAAOC,KAAK,cAAZD,oCAAAA,cAAcG,OAAO,uCAAIJ,OAAOC,OAAOC,KAAK;IAC5D,IAAI,6DAA6Df,IAAI,CAACiB,YAAYA,QAAQC,QAAQ,CAAC9C,0BAA0B;QAC3H,OAAO;IACT;IACA,OAAO;AACT;AACA,SAASI,gBAAgBiB,GAAG;IAC1B,IAAI;QACF,IAAM0B,SAAS,IAAIzB,IAAID;QACvB,OAAO,AAAC,GAAkB0B,OAAhBA,OAAOC,MAAM,EAAmB,OAAhBD,OAAOpB,QAAQ;IAC3C,EAAE,eAAM;YACCN;QAAP,QAAOA,cAAAA,IAAI4B,KAAK,CAAC,IAAI,CAAC,EAAE,cAAjB5B,yBAAAA,cAAqB;IAC9B;AACF;AACA,6DAA6D;AAC7D,KAAMf,CAAAA,OAAOC,OAAO,GAAG;IACrBP,yBAAAA;IACAC,kBAAAA;IACAC,iBAAAA;IACAC,0BAAAA;IACAC,iBAAAA;IACAC,uBAAAA;AACF,CAAA","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;
@@ -9210,19 +9210,31 @@ var HlsEngine = /*#__PURE__*/ function() {
9210
9210
  // src/player/EdgePodRequest.ts
9211
9211
  var EDGE_POD_MAX_ADS = 10;
9212
9212
  var EDGE_POD_EXCEEDS_BUDGET = "edge_pod_exceeds_budget";
9213
+ var LICENSE_KEY_PLACEHOLDER = /\{licenseKey\}|%7BlicenseKey%7D/gi;
9213
9214
  function resolveEdgePodBaseUrl(config) {
9214
- var _config_edgePodUrl;
9215
+ var _config_edgePodUrl, _config_licenseKey;
9215
9216
  if (config.enableEdgePodRequest !== true) return void 0;
9216
9217
  var raw = (_config_edgePodUrl = config.edgePodUrl) === null || _config_edgePodUrl === void 0 ? void 0 : _config_edgePodUrl.trim();
9217
9218
  if (!raw) {
9218
9219
  console.warn("[AdBreak][EDGE] enableEdgePodRequest is true but edgePodUrl is missing; using GAM only");
9219
9220
  return void 0;
9220
9221
  }
9222
+ var licenseKey = (_config_licenseKey = config.licenseKey) === null || _config_licenseKey === void 0 ? void 0 : _config_licenseKey.trim();
9223
+ if (!licenseKey) {
9224
+ console.warn("[AdBreak][EDGE] enableEdgePodRequest is true but licenseKey is missing; using GAM only");
9225
+ return void 0;
9226
+ }
9227
+ var encodedKey = encodeURIComponent(licenseKey);
9221
9228
  try {
9222
- var url = new URL(raw);
9229
+ var hasPlaceholder = raw.search(LICENSE_KEY_PLACEHOLDER) !== -1;
9230
+ var url = new URL(hasPlaceholder ? raw.replace(LICENSE_KEY_PLACEHOLDER, encodedKey) : raw);
9223
9231
  if (url.protocol !== "https:" && url.protocol !== "http:") {
9224
9232
  throw new Error("unsupported protocol ".concat(url.protocol));
9225
9233
  }
9234
+ if (!hasPlaceholder) {
9235
+ var path = url.pathname.replace(/\/+$/, "");
9236
+ url.pathname = /\/[^/]+\/pod$/.test(path) ? path.replace(/\/[^/]+\/pod$/, "/".concat(encodedKey, "/pod")) : "".concat(path, "/").concat(encodedKey, "/pod");
9237
+ }
9226
9238
  return url.toString();
9227
9239
  } catch (unused) {
9228
9240
  console.warn("[AdBreak][EDGE] edgePodUrl is not a valid http(s) URL; using GAM only");
@@ -11700,6 +11712,25 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
11700
11712
  return this.floorLadderEnabled;
11701
11713
  }
11702
11714
  },
11715
+ {
11716
+ key: "setEdgePodRequest",
11717
+ value: function setEdgePodRequest(update) {
11718
+ if (update.enableEdgePodRequest === this.config.enableEdgePodRequest && update.edgePodUrl === this.config.edgePodUrl) {
11719
+ return;
11720
+ }
11721
+ if (update.enableEdgePodRequest === void 0) delete this.config.enableEdgePodRequest;
11722
+ else this.config.enableEdgePodRequest = update.enableEdgePodRequest;
11723
+ if (update.edgePodUrl === void 0) delete this.config.edgePodUrl;
11724
+ else this.config.edgePodUrl = update.edgePodUrl;
11725
+ this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);
11726
+ }
11727
+ },
11728
+ {
11729
+ key: "getEdgePodUrl",
11730
+ value: function getEdgePodUrl() {
11731
+ return this.edgePodBaseUrl;
11732
+ }
11733
+ },
11703
11734
  {
11704
11735
  key: "warnOnInvalidFloorLadder",
11705
11736
  value: function warnOnInvalidFloorLadder(report) {