@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/index.mjs
CHANGED
|
@@ -947,7 +947,7 @@ var WaterfallEngine = class {
|
|
|
947
947
|
};
|
|
948
948
|
|
|
949
949
|
// src/player/ProgrammaticPlayer.ts
|
|
950
|
-
var
|
|
950
|
+
var _ProgrammaticPlayer = class _ProgrammaticPlayer {
|
|
951
951
|
constructor(events, timeoutMs = 12e3) {
|
|
952
952
|
// ── Public state ──────────────────────────────────────────
|
|
953
953
|
this.vastTagUrl = null;
|
|
@@ -1034,8 +1034,11 @@ var ProgrammaticPlayer = class {
|
|
|
1034
1034
|
this.telemetry.recordRequest();
|
|
1035
1035
|
const correlator = Date.now();
|
|
1036
1036
|
const finalUrl = vastUrl.includes("correlator=") ? vastUrl.replace(/correlator=[^&]*/, `correlator=${correlator}`) : `${vastUrl}${vastUrl.includes("?") ? "&" : "?"}correlator=${correlator}`;
|
|
1037
|
-
|
|
1038
|
-
|
|
1037
|
+
const imaReady = await this.ensureImaSdk();
|
|
1038
|
+
if (!imaReady) {
|
|
1039
|
+
const msg = "Google IMA SDK not loaded";
|
|
1040
|
+
this.events.emit("programmatic_error", { error: msg, code: void 0 });
|
|
1041
|
+
onError(msg);
|
|
1039
1042
|
this.telemetry.recordError();
|
|
1040
1043
|
this.waterfallEngine.recordFailure(sourceName);
|
|
1041
1044
|
return;
|
|
@@ -1052,6 +1055,50 @@ var ProgrammaticPlayer = class {
|
|
|
1052
1055
|
onError(err instanceof Error ? err.message : String(err));
|
|
1053
1056
|
}
|
|
1054
1057
|
}
|
|
1058
|
+
/**
|
|
1059
|
+
* Ensure Google IMA SDK is available. If already loaded, resolves
|
|
1060
|
+
* immediately. Otherwise injects the `<script>` tag and waits.
|
|
1061
|
+
* Matches the Lite SDK's `loadImaScript()` pattern.
|
|
1062
|
+
*/
|
|
1063
|
+
async ensureImaSdk() {
|
|
1064
|
+
if (typeof google !== "undefined" && google?.ima) return true;
|
|
1065
|
+
if (typeof document === "undefined") return false;
|
|
1066
|
+
const existing = document.querySelector(
|
|
1067
|
+
`script[src="${_ProgrammaticPlayer.IMA_SDK_URL}"]`
|
|
1068
|
+
);
|
|
1069
|
+
if (existing) {
|
|
1070
|
+
return new Promise((resolve) => {
|
|
1071
|
+
const start = Date.now();
|
|
1072
|
+
const check = () => {
|
|
1073
|
+
if (typeof google !== "undefined" && google?.ima) {
|
|
1074
|
+
resolve(true);
|
|
1075
|
+
} else if (Date.now() - start > 5e3) {
|
|
1076
|
+
resolve(false);
|
|
1077
|
+
} else {
|
|
1078
|
+
setTimeout(check, 100);
|
|
1079
|
+
}
|
|
1080
|
+
};
|
|
1081
|
+
check();
|
|
1082
|
+
});
|
|
1083
|
+
}
|
|
1084
|
+
if (!_ProgrammaticPlayer.imaLoadPromise) {
|
|
1085
|
+
_ProgrammaticPlayer.imaLoadPromise = new Promise((resolve) => {
|
|
1086
|
+
const script = document.createElement("script");
|
|
1087
|
+
script.src = _ProgrammaticPlayer.IMA_SDK_URL;
|
|
1088
|
+
script.async = true;
|
|
1089
|
+
script.onload = () => {
|
|
1090
|
+
_ProgrammaticPlayer.imaLoadPromise = null;
|
|
1091
|
+
resolve(true);
|
|
1092
|
+
};
|
|
1093
|
+
script.onerror = () => {
|
|
1094
|
+
_ProgrammaticPlayer.imaLoadPromise = null;
|
|
1095
|
+
resolve(false);
|
|
1096
|
+
};
|
|
1097
|
+
document.head.appendChild(script);
|
|
1098
|
+
});
|
|
1099
|
+
}
|
|
1100
|
+
return _ProgrammaticPlayer.imaLoadPromise;
|
|
1101
|
+
}
|
|
1055
1102
|
// ── IMA request / playback lifecycle ──────────────────────
|
|
1056
1103
|
async requestAdsViaIMA(vastUrl, onComplete, onError) {
|
|
1057
1104
|
return new Promise((resolve) => {
|
|
@@ -1253,6 +1300,12 @@ var ProgrammaticPlayer = class {
|
|
|
1253
1300
|
this.telemetry.reset();
|
|
1254
1301
|
}
|
|
1255
1302
|
};
|
|
1303
|
+
// ── IMA SDK loader ──────────────────────────────────────────
|
|
1304
|
+
/** IMA script URL */
|
|
1305
|
+
_ProgrammaticPlayer.IMA_SDK_URL = "https://imasdk.googleapis.com/js/sdkloader/ima3.js";
|
|
1306
|
+
/** Singleton load promise so concurrent calls don't insert multiple scripts. */
|
|
1307
|
+
_ProgrammaticPlayer.imaLoadPromise = null;
|
|
1308
|
+
var ProgrammaticPlayer = _ProgrammaticPlayer;
|
|
1256
1309
|
|
|
1257
1310
|
// src/player/Player.ts
|
|
1258
1311
|
var MAX_AD_DURATION_SECONDS = 300;
|