@trillboards/ads-sdk 2.2.1 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +56 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +56 -3
- package/dist/index.mjs.map +1 -1
- package/dist/react.js +56 -3
- package/dist/react.js.map +1 -1
- package/dist/react.mjs +56 -3
- package/dist/react.mjs.map +1 -1
- package/dist/trillboards-lite.global.js +1 -1
- package/dist/trillboards-lite.global.js.map +1 -1
- package/package.json +1 -1
package/dist/react.js
CHANGED
|
@@ -950,7 +950,7 @@ var WaterfallEngine = class {
|
|
|
950
950
|
};
|
|
951
951
|
|
|
952
952
|
// src/player/ProgrammaticPlayer.ts
|
|
953
|
-
var
|
|
953
|
+
var _ProgrammaticPlayer = class _ProgrammaticPlayer {
|
|
954
954
|
constructor(events, timeoutMs = 12e3) {
|
|
955
955
|
// ── Public state ──────────────────────────────────────────
|
|
956
956
|
this.vastTagUrl = null;
|
|
@@ -1037,8 +1037,11 @@ var ProgrammaticPlayer = class {
|
|
|
1037
1037
|
this.telemetry.recordRequest();
|
|
1038
1038
|
const correlator = Date.now();
|
|
1039
1039
|
const finalUrl = vastUrl.includes("correlator=") ? vastUrl.replace(/correlator=[^&]*/, `correlator=${correlator}`) : `${vastUrl}${vastUrl.includes("?") ? "&" : "?"}correlator=${correlator}`;
|
|
1040
|
-
|
|
1041
|
-
|
|
1040
|
+
const imaReady = await this.ensureImaSdk();
|
|
1041
|
+
if (!imaReady) {
|
|
1042
|
+
const msg = "Google IMA SDK not loaded";
|
|
1043
|
+
this.events.emit("programmatic_error", { error: msg, code: void 0 });
|
|
1044
|
+
onError(msg);
|
|
1042
1045
|
this.telemetry.recordError();
|
|
1043
1046
|
this.waterfallEngine.recordFailure(sourceName);
|
|
1044
1047
|
return;
|
|
@@ -1055,6 +1058,50 @@ var ProgrammaticPlayer = class {
|
|
|
1055
1058
|
onError(err instanceof Error ? err.message : String(err));
|
|
1056
1059
|
}
|
|
1057
1060
|
}
|
|
1061
|
+
/**
|
|
1062
|
+
* Ensure Google IMA SDK is available. If already loaded, resolves
|
|
1063
|
+
* immediately. Otherwise injects the `<script>` tag and waits.
|
|
1064
|
+
* Matches the Lite SDK's `loadImaScript()` pattern.
|
|
1065
|
+
*/
|
|
1066
|
+
async ensureImaSdk() {
|
|
1067
|
+
if (typeof google !== "undefined" && google?.ima) return true;
|
|
1068
|
+
if (typeof document === "undefined") return false;
|
|
1069
|
+
const existing = document.querySelector(
|
|
1070
|
+
`script[src="${_ProgrammaticPlayer.IMA_SDK_URL}"]`
|
|
1071
|
+
);
|
|
1072
|
+
if (existing) {
|
|
1073
|
+
return new Promise((resolve) => {
|
|
1074
|
+
const start = Date.now();
|
|
1075
|
+
const check = () => {
|
|
1076
|
+
if (typeof google !== "undefined" && google?.ima) {
|
|
1077
|
+
resolve(true);
|
|
1078
|
+
} else if (Date.now() - start > 5e3) {
|
|
1079
|
+
resolve(false);
|
|
1080
|
+
} else {
|
|
1081
|
+
setTimeout(check, 100);
|
|
1082
|
+
}
|
|
1083
|
+
};
|
|
1084
|
+
check();
|
|
1085
|
+
});
|
|
1086
|
+
}
|
|
1087
|
+
if (!_ProgrammaticPlayer.imaLoadPromise) {
|
|
1088
|
+
_ProgrammaticPlayer.imaLoadPromise = new Promise((resolve) => {
|
|
1089
|
+
const script = document.createElement("script");
|
|
1090
|
+
script.src = _ProgrammaticPlayer.IMA_SDK_URL;
|
|
1091
|
+
script.async = true;
|
|
1092
|
+
script.onload = () => {
|
|
1093
|
+
_ProgrammaticPlayer.imaLoadPromise = null;
|
|
1094
|
+
resolve(true);
|
|
1095
|
+
};
|
|
1096
|
+
script.onerror = () => {
|
|
1097
|
+
_ProgrammaticPlayer.imaLoadPromise = null;
|
|
1098
|
+
resolve(false);
|
|
1099
|
+
};
|
|
1100
|
+
document.head.appendChild(script);
|
|
1101
|
+
});
|
|
1102
|
+
}
|
|
1103
|
+
return _ProgrammaticPlayer.imaLoadPromise;
|
|
1104
|
+
}
|
|
1058
1105
|
// ── IMA request / playback lifecycle ──────────────────────
|
|
1059
1106
|
async requestAdsViaIMA(vastUrl, onComplete, onError) {
|
|
1060
1107
|
return new Promise((resolve) => {
|
|
@@ -1256,6 +1303,12 @@ var ProgrammaticPlayer = class {
|
|
|
1256
1303
|
this.telemetry.reset();
|
|
1257
1304
|
}
|
|
1258
1305
|
};
|
|
1306
|
+
// ── IMA SDK loader ──────────────────────────────────────────
|
|
1307
|
+
/** IMA script URL */
|
|
1308
|
+
_ProgrammaticPlayer.IMA_SDK_URL = "https://imasdk.googleapis.com/js/sdkloader/ima3.js";
|
|
1309
|
+
/** Singleton load promise so concurrent calls don't insert multiple scripts. */
|
|
1310
|
+
_ProgrammaticPlayer.imaLoadPromise = null;
|
|
1311
|
+
var ProgrammaticPlayer = _ProgrammaticPlayer;
|
|
1259
1312
|
|
|
1260
1313
|
// src/player/Player.ts
|
|
1261
1314
|
var MAX_AD_DURATION_SECONDS = 300;
|