@newrelic/video-videojs 3.2.0-beta-0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -5
- package/LICENSE.txt +1 -1
- package/README.md +37 -50
- package/THIRD_PARTY_NOTICES.md +4 -4
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.LICENSE.txt +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.LICENSE.txt +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/umd/newrelic-video-videojs.min.js +1 -1
- package/dist/umd/newrelic-video-videojs.min.js.LICENSE.txt +1 -1
- package/dist/umd/newrelic-video-videojs.min.js.map +1 -1
- package/package.json +10 -9
- package/src/ads/brightcove-ima.js +43 -43
- package/src/ads/dai.js +463 -0
- package/src/ads/ima.js +37 -0
- package/src/ads/videojs-ads.js +98 -80
- package/src/register-plugin.js +2 -1
- package/src/tracker.js +19 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,20 +1,26 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
-
## [
|
|
3
|
+
## [4.0.1] - 2025-09-11
|
|
4
4
|
|
|
5
|
-
###
|
|
5
|
+
### Add
|
|
6
|
+
- Added methods for `Ad Bitrate` and `Ad Rendition Bitrate` in ima.js and dai.js
|
|
7
|
+
|
|
8
|
+
## [4.0.0] - 2025-08-26
|
|
6
9
|
|
|
7
|
-
|
|
10
|
+
### Major Updates:
|
|
11
|
+
- Upgraded `@newrelic/video-core` dependency to version `4.0.0`.
|
|
12
|
+
- Introduced support for SSAI (Server-Side Ad Insertion) Google DAI.
|
|
13
|
+
- Minor fixes to webpack configuration
|
|
8
14
|
|
|
9
15
|
## [3.1.0] - 2025-05-27
|
|
10
16
|
|
|
11
17
|
### Enhancements
|
|
12
18
|
|
|
13
|
-
|
|
19
|
+
* **Publishing to npm:** The package can now be published to npm, making it easily accessible.
|
|
14
20
|
|
|
15
21
|
### Build
|
|
16
22
|
|
|
17
|
-
|
|
23
|
+
* **Distribution Formats:** Added `cjs`, `esm`, and `umd` builds to the `dist` folder, ensuring compatibility with CommonJS, ES Modules, and UMD module formats.
|
|
18
24
|
|
|
19
25
|
## [3.0.1] - 2025-04-24
|
|
20
26
|
|
package/LICENSE.txt
CHANGED
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
same "printed page" as the copyright notice for easier
|
|
187
187
|
identification within third-party archives.
|
|
188
188
|
|
|
189
|
-
Copyright New Relic, Inc.
|
|
189
|
+
Copyright 2019 New Relic, Inc.
|
|
190
190
|
|
|
191
191
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
192
|
you may not use this file except in compliance with the License.
|
package/README.md
CHANGED
|
@@ -2,13 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
# New Relic Videojs Tracker Agent
|
|
4
4
|
|
|
5
|
-
> **⚠️ DISCLAIMER: This is a beta version. Features and APIs may change in future releases.**
|
|
6
|
-
|
|
7
5
|
The New Relic Videojs Tracker enhances your media applications by tracking video events, playback errors, and other activities, providing comprehensive insights into performance and user interactions.
|
|
8
6
|
|
|
9
7
|
- The Videojs tracker is available as a ready-to-use JavaScript snippet for easy copy-paste integration.
|
|
10
8
|
- New Relic Videojs tracker auto-detects events emitted by Videojs Player.
|
|
11
|
-
-
|
|
9
|
+
- Ensure that the **Browser agent** is successfully instrumented before deploying the media tracker.
|
|
12
10
|
- For questions and feedback on this package, please visit the [Explorer's Hub](https://discuss.newrelic.com), New Relic's community support forum.
|
|
13
11
|
- Looking to contribute to the Player Name agent code base? See [DEVELOPING.md](./DEVELOPING.md) for instructions on building and testing the browser agent library, and Contributors.
|
|
14
12
|
|
|
@@ -38,52 +36,51 @@ To integrate New Relic Tracker Agent into your web application effectively, you'
|
|
|
38
36
|
To make the tracker available to your application, install via [NPM](https://docs.npmjs.com/cli/v8/commands/npm-install) or [Yarn](https://classic.yarnpkg.com/lang/en/docs/cli/install/).
|
|
39
37
|
|
|
40
38
|
```shell
|
|
41
|
-
$ npm install @newrelic/video-videojs
|
|
39
|
+
$ npm install @newrelic/video-videojs
|
|
42
40
|
```
|
|
43
41
|
|
|
44
42
|
```shell
|
|
45
|
-
$ yarn add @newrelic/video-videojs
|
|
43
|
+
$ yarn add @newrelic/video-videojs
|
|
46
44
|
```
|
|
47
45
|
|
|
48
46
|
## Instantiating the Videojs Tracker
|
|
49
47
|
|
|
50
|
-
**Important**: When instantiating the VideojsTracker, you must provide New Relic credentials through the options object. This is a mandatory step:
|
|
51
48
|
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
> [!NOTE]
|
|
50
|
+
> **Attention:**
|
|
51
|
+
> This version uses the latest **standalone** version of the Videojs Tracker, In order to initialize it you need to do the following:
|
|
52
|
+
|
|
53
|
+
Steps to get NREUM config
|
|
54
|
+
- Create a New Relic account and obtain your license key.
|
|
55
|
+
- Install the New Relic Streaming video agent in your application.
|
|
56
|
+
- Configure the video agent with your license key and application ID.
|
|
54
57
|
|
|
55
|
-
|
|
56
|
-
var player = videojs('my-video');
|
|
58
|
+
The NREUM config looks like this:
|
|
57
59
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
```javascript
|
|
61
|
+
/* Get the info object from the video agent onboarding */
|
|
62
|
+
options = {
|
|
60
63
|
info: {
|
|
61
|
-
beacon: '
|
|
62
|
-
errorBeacon: 'xxxxxxxxx',
|
|
64
|
+
beacon: 'xxxxxxxxxxx',
|
|
63
65
|
licenseKey: 'xxxxxxxxxxx',
|
|
64
|
-
applicationID: '
|
|
65
|
-
sa: 1,
|
|
66
|
+
applicationID: 'xxxxxxxxxxxx',
|
|
66
67
|
},
|
|
67
68
|
};
|
|
68
|
-
|
|
69
|
-
// Create the tracker with required credentials
|
|
70
|
-
const tracker = new VideojsTracker(player, options);
|
|
71
69
|
```
|
|
72
70
|
|
|
73
|
-
|
|
71
|
+
```javascript
|
|
72
|
+
import VideojsTracker from "@newrelic/video-videojs";
|
|
74
73
|
|
|
75
|
-
|
|
74
|
+
// pass player version
|
|
75
|
+
player.version = videojs.VERSION;
|
|
76
76
|
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
// initialize VideojsTracker with player and options
|
|
78
|
+
const tracker = new VideojsTracker(player, options);
|
|
79
|
+
|
|
80
|
+
// ================================================= //
|
|
81
|
+
|
|
82
|
+
//For setting custom attributes const tracker
|
|
79
83
|
const tracker = new VideojsTracker(player, {
|
|
80
|
-
info: {
|
|
81
|
-
beacon: 'xxxxxxxxxx',
|
|
82
|
-
errorBeacon: 'xxxxxxxxx',
|
|
83
|
-
licenseKey: 'xxxxxxxxxxx',
|
|
84
|
-
applicationID: 'xxxxxxxx',
|
|
85
|
-
sa: 1,
|
|
86
|
-
},
|
|
87
84
|
customData: {
|
|
88
85
|
contentTitle: 'Override Existing Title',
|
|
89
86
|
customPlayerName: 'myGreatPlayer',
|
|
@@ -94,29 +91,20 @@ const tracker = new VideojsTracker(player, {
|
|
|
94
91
|
// For setting userId
|
|
95
92
|
tracker.setUserId('userId');
|
|
96
93
|
|
|
97
|
-
//
|
|
98
|
-
|
|
94
|
+
// set tracker interval, between 1s - 5mins
|
|
95
|
+
tracker.setHarvestInterval(1000)
|
|
99
96
|
|
|
100
|
-
|
|
97
|
+
// For Sending custom Action with Attributes
|
|
98
|
+
tracker.sendCustom('CustomAction', { data: "custom-test" })
|
|
101
99
|
|
|
102
|
-
tracker.sendCustom('CUSTOM_ACTION', 'state time', {
|
|
103
|
-
test1: 'value1',
|
|
104
|
-
test2: 'value2',
|
|
105
|
-
});
|
|
106
100
|
```
|
|
107
101
|
|
|
108
|
-
|
|
102
|
+
## Support for SSAI
|
|
109
103
|
|
|
110
|
-
|
|
104
|
+
> [!NOTE]
|
|
105
|
+
> **Attention:**
|
|
106
|
+
> This version supports tracking for SSAI (Server-Side Ad Insertion), checkout examples in [/samples/dai/index.html](./samples/dai/index.html)
|
|
111
107
|
|
|
112
|
-
1. Log into your New Relic account
|
|
113
|
-
2. Navigate to your Browser application settings
|
|
114
|
-
3. Copy the required values:
|
|
115
|
-
- `beacon`: Your data collection endpoint
|
|
116
|
-
- `errorBeacon`: Your error collection endpoint
|
|
117
|
-
- `licenseKey`: Your license key
|
|
118
|
-
- `applicationID`: Your application ID
|
|
119
|
-
- `sa`: Account ID
|
|
120
108
|
|
|
121
109
|
## Data Model
|
|
122
110
|
|
|
@@ -138,7 +126,6 @@ As noted in our [security policy](../../security/policy), New Relic is committed
|
|
|
138
126
|
|
|
139
127
|
If you believe you have found a security vulnerability in this project or any of New Relic's products or websites, we welcome and greatly appreciate you reporting it to New Relic through [our bug bounty program](https://docs.newrelic.com/docs/security/security-privacy/information-security/report-security-vulnerabilities/).
|
|
140
128
|
|
|
141
|
-
|
|
129
|
+
## License
|
|
142
130
|
|
|
143
|
-
|
|
144
|
-
The video-core also uses source code from third-party libraries. Full details on which libraries are used and the terms under which they are licensed can be found in the [third-party notices document](THIRD_PARTY_NOTICES.md).
|
|
131
|
+
New Relic Videojs Tracker is licensed under the [Apache 2.0](http://apache.org/licenses/LICENSE-2.0.txt) License.
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -36,7 +36,7 @@ code, the source code can be found at [https://github.com/newrelic/video-videojs
|
|
|
36
36
|
|
|
37
37
|
### @newrelic/video-core
|
|
38
38
|
|
|
39
|
-
This product includes source derived from [@newrelic/video-core](https://github.com/newrelic/video-core-js) ([v3.
|
|
39
|
+
This product includes source derived from [@newrelic/video-core](https://github.com/newrelic/video-core-js) ([v3.1.1](https://github.com/newrelic/video-core-js/tree/v3.1.1)), distributed under the [Apache-2.0 License](https://github.com/newrelic/video-core-js/blob/v3.1.1/LICENSE):
|
|
40
40
|
|
|
41
41
|
```
|
|
42
42
|
Apache License
|
|
@@ -247,7 +247,7 @@ This product includes source derived from [@newrelic/video-core](https://github.
|
|
|
247
247
|
|
|
248
248
|
### @babel/core
|
|
249
249
|
|
|
250
|
-
This product includes source derived from [@babel/core](https://github.com/babel/babel) ([v7.
|
|
250
|
+
This product includes source derived from [@babel/core](https://github.com/babel/babel) ([v7.27.1](https://github.com/babel/babel/tree/v7.27.1)), distributed under the [MIT License](https://github.com/babel/babel/blob/v7.27.1/LICENSE):
|
|
251
251
|
|
|
252
252
|
```
|
|
253
253
|
MIT License
|
|
@@ -307,7 +307,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
307
307
|
|
|
308
308
|
### @babel/preset-env
|
|
309
309
|
|
|
310
|
-
This product includes source derived from [@babel/preset-env](https://github.com/babel/babel) ([v7.
|
|
310
|
+
This product includes source derived from [@babel/preset-env](https://github.com/babel/babel) ([v7.27.2](https://github.com/babel/babel/tree/v7.27.2)), distributed under the [MIT License](https://github.com/babel/babel/blob/v7.27.2/LICENSE):
|
|
311
311
|
|
|
312
312
|
```
|
|
313
313
|
MIT License
|
|
@@ -1021,7 +1021,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
1021
1021
|
|
|
1022
1022
|
### webpack
|
|
1023
1023
|
|
|
1024
|
-
This product includes source derived from [webpack](https://github.com/webpack/webpack) ([v5.
|
|
1024
|
+
This product includes source derived from [webpack](https://github.com/webpack/webpack) ([v5.99.9](https://github.com/webpack/webpack/tree/v5.99.9)), distributed under the [MIT License](https://github.com/webpack/webpack/blob/v5.99.9/LICENSE):
|
|
1025
1025
|
|
|
1026
1026
|
```
|
|
1027
1027
|
Copyright JS Foundation and other contributors
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/*! For license information please see index.js.LICENSE.txt */
|
|
2
|
-
(()=>{"use strict";var e={38:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s,r=(s=i(472))&&s.__esModule?s:{default:s};class n extends r.default{static isUsing(e){return!!e.FreeWheelPlugin&&"undefined"!=typeof tv&&tv.freewheel}getTrackerName(){return"freewheel-ads"}getPlayerName(){return"freewheel-ads"}getPlayerVersion(){return this.player.FreeWheelPlugin.VERSION}getPlayhead(){if(this.player.ads.ad.currentTime)return 1e3*this.player.ads.ad.currentTime()}getDuration(){if(this.player.ads.ad.duration)return 1e3*this.player.ads.ad.duration}getVideoId(){return this.player.ads.ad.id}getAdPartner(){return"freewheel"}getAdCreativeId(){try{return this.player.ads.provider.event.adInstance.getActiveCreativeRendition().getId()}catch(e){}}getSrc(){try{return this.player.ads.provider.event.adInstance.getActiveCreativeRendition().getPrimaryCreativeRenditionAsset().getUrl()}catch(e){}}getTitle(){try{return this.player.ads.provider.event.adInstance.getActiveCreativeRendition().getPrimaryCreativeRenditionAsset().getName()}catch(e){}}getAdPosition(){switch(this.player.ads.ad.type){case"PREROLL":return nrvideo.Constants.AdPositions.PRE;case"MIDROLL":return nrvideo.Constants.AdPositions.MID;case"POSTROLL":return nrvideo.Constants.AdPositions.POST}}}t.default=n},64:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=n(i(555)),r=n(i(472));function n(e){return e&&e.__esModule?e:{default:e}}class a extends r.default{static isUsing(e){return!!e.ima3}getTrackerName(){return"brightcove-ima-ads"}getPlayerName(){return"brightcove-ima-ads"}getPlayhead(){return this.player?.ima3?.adPlayer?.currentTime()}registerListeners(){s.default.Log.debugCommonVideoEvents(this.player,[null,"ima3-ready","ima3error","ima3-ad-error","ima3-started","ima3-complete","ima3-paused","ima3-resumed","ads-request","ads-load","ads-ad-started","ads-ad-ended","ads-pause","ads-play","ads-click","ads-pod-started","ads-pod-ended","ads-allpods-completed"]),this.player.on("ima3-started",this.onStarted.bind(this)),this.player.on("ima3-paused",this.onPaused.bind(this)),this.player.on("ima3-resumed",this.onResume.bind(this)),this.player.on("ima3-complete",this.onComplete.bind(this)),this.player.on("ima3-skipped",this.onSkipped.bind(this)),this.player.on("adserror",this.onError.bind(this)),this.player.on("ads-click",this.onClick.bind(this))}unregisterListeners(){this.player.off("ima3-started",this.onStarted),this.player.off("ima3-paused",this.onPaused),this.player.off("ima3-resumed",this.onResume),this.player.off("ima3-complete",this.onComplete),this.player.off("ima3-skipped",this.onSkipped),this.player.off("adserror",this.onError),this.player.off("ads-click",this.onClick)}onStarted(e){this.sendRequest(),this.sendStart()}onPaused(e){this.sendPause()}onResume(e){this.sendResume()}onComplete(e){this.sendEnd()}onSkipped(e){this.sendEnd({skipped:!0})}onError(e){this.sendError()}onClick(e){this.sendClick()}}t.default=a},257:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class i{constructor(e){this.tech=e.vhs_}getResource(e){return this.tech.url}getRenditionName(e){try{var t=this.tech.levels[this.tech.currentLevel];if(t&&t.name)return t.name}catch(e){}return null}getRenditionBitrate(e){try{var t=this.tech.levels[this.tech.currentLevel];if(t&&t.bitrate)return t.bitrate}catch(e){}return null}getRenditionWidth(e){try{var t=this.tech.levels[this.tech.currentLevel];if(t&&t.width)return t.width}catch(e){}return null}getRenditionHeight(e){try{var t=this.tech.levels[this.tech.currentLevel];if(t&&t.height)return t.height}catch(e){}return null}}t.default=i,i.isUsing=function(e){return!!e.vhs_}},298:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=n(i(555)),r=n(i(472));function n(e){return e&&e.__esModule?e:{default:e}}class a extends r.default{static isUsing(e){return e.ima&&"undefined"!=typeof google}getTrackerName(){return"ima-ads"}getPlayerName(){return"ima"}getPlayerVersion(){return"ima: "+google.ima.VERSION+"; contrib-ads: "+this.player.ads.VERSION}getCuePoints(){return this.player.ima.getAdsManager().getCuePoints()}getAdPosition(){if(this.lastAdData&&this.lastAdData.podInfo&&void 0!==this.lastAdData.podInfo.podIndex){const e=this.lastAdData.podInfo.podIndex;return 0===e?"pre":-1===e?"post":"mid"}return null}getDuration(){return this.lastAdData&&void 0!==this.lastAdData.duration?1e3*this.lastAdData.duration:null}getVideoId(){return this.lastAdData&&this.lastAdData.adId?this.lastAdData.adId:null}getAdCreativeId(){return this.lastAdData&&this.lastAdData.creativeId?this.lastAdData.creativeId:null}getSrc(){return this.lastAdData&&this.lastAdData.mediaUrl?this.lastAdData.mediaUrl:null}getTitle(){return this.lastAdData&&this.lastAdData.title?this.lastAdData.title:null}getPlayhead(){let e=this.player.ima.getAdsManager();if(e)return 1e3*(this.getDuration()-e.getRemainingTime())}getPlayrate(){return this.player.playbackRate()}getAdPartner(){return"ima"}registerListeners(){let e=google.ima.AdEvent.Type,t=google.ima.AdErrorEvent.Type.AD_ERROR;this.lastAdData=null,s.default.Log.debugCommonVideoEvents(this.player.ima.addEventListener,[null,e.ALL_ADS_COMPLETED,e.LINEAR_CHANGED,e.COMPLETE,e.USER_CLOSE,e.IMPRESSION,e.CONTENT_PAUSE_REQUESTED,e.CONTENT_RESUME_REQUESTED,e.SKIPPED,e.SKIPPABLE_STATE_CHANGED,e.LOADED,e.PAUSED,e.RESUMED,e.STARTED,e.AD_CAN_PLAY,e.AD_METADATA,e.EXPANDED_CHANGED,e.AD_BREAK_READY,e.LOG,e.CLICK,e.FIRST_QUARTILE,e.MIDPOINT,e.THIRD_QUARTILE,t]),this.player.ima.addEventListener(e.LOADED,this.onLoaded.bind(this)),this.player.ima.addEventListener(e.STARTED,this.onStart.bind(this)),this.player.ima.addEventListener(e.PAUSED,this.onPaused.bind(this)),this.player.ima.addEventListener(e.RESUMED,this.onResumed.bind(this)),this.player.ima.addEventListener(e.COMPLETE,this.onComplete.bind(this)),this.player.ima.addEventListener(e.SKIPPED,this.onSkipped.bind(this)),this.player.ima.addEventListener(e.CLICK,this.onClick.bind(this)),this.player.ima.addEventListener(e.FIRST_QUARTILE,this.onFirstQuartile.bind(this)),this.player.ima.addEventListener(e.MIDPOINT,this.onMidpoint.bind(this)),this.player.ima.addEventListener(e.THIRD_QUARTILE,this.onThirdQuartile.bind(this)),this.player.ima.addEventListener(t,this.onError.bind(this))}unregisterListeners(){let e=google.ima.AdEvent.Type,t=google.ima.AdErrorEvent.Type.AD_ERROR;this.player.ima.removeEventListener(e.LOADED,this.onLoaded),this.player.ima.removeEventListener(e.STARTED,this.onLoaded.bind(this)),this.player.ima.removeEventListener(e.IMPRESSION,this.onImpression),this.player.ima.removeEventListener(e.PAUSED,this.onPaused),this.player.ima.removeEventListener(e.RESUMED,this.onResumed),this.player.ima.removeEventListener(e.COMPLETE,this.onComplete),this.player.ima.removeEventListener(e.SKIPPED,this.onSkipped),this.player.ima.removeEventListener(e.CLICK,this.onClick),this.player.ima.removeEventListener(e.FIRST_QUARTILE,this.onFirstQuartile),this.player.ima.removeEventListener(e.MIDPOINT,this.onMidpoint),this.player.ima.removeEventListener(e.THIRD_QUARTILE,this.onThirdQuartile),this.player.ima.removeEventListener(t,this.onError),this.lastAdData=null}onLoaded(e){this.lastAdData=this.getAdData(),this.sendRequest()}onStart(e){this.lastAdData=this.getAdData(),this.sendStart()}onComplete(e){this.sendEnd(),this.lastAdData=null}onSkipped(e){this.sendEnd({skipped:!0}),this.lastAdData=null}onError(e){const t=e.getError(),i=t.getErrorCode(),s=t.getMessage();this.sendError({adError:t,errorCode:i,errorMessage:s})}onClick(e){this.sendAdClick()}onFirstQuartile(){this.sendAdQuartile({adQuartile:1})}onMidpoint(){this.sendAdQuartile({adQuartile:2})}onThirdQuartile(){this.sendAdQuartile({adQuartile:3})}onPaused(){this.sendPause()}onResumed(){this.sendResume()}getAdData(){try{const e=this.player.ima.getAdsManager();if(e){const t=e.getCurrentAd();if(t)return{adId:t.getAdId(),creativeId:t.getCreativeId(),duration:t.getDuration(),mediaUrl:t.getMediaUrl(),title:t.getTitle(),podInfo:t.getAdPodInfo()?.data}}return null}catch(e){return null}}}t.default=a},302:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BrightcoveImaAdsTracker",{enumerable:!0,get:function(){return h.default}}),Object.defineProperty(t,"ContribHlsTech",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(t,"FreewheelAdsTracker",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(t,"HlsJsTech",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"ImaAdsTracker",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(t,"ShakaTech",{enumerable:!0,get:function(){return d.default}}),Object.defineProperty(t,"VideojsAdsTracker",{enumerable:!0,get:function(){return o.default}}),t.default=void 0;var s=c(i(555)),r=c(i(330)),n=c(i(409)),a=c(i(257)),d=c(i(338)),o=c(i(472)),l=c(i(298)),h=c(i(64)),u=c(i(38));function c(e){return e&&e.__esModule?e:{default:e}}class p extends s.default.VideoTracker{constructor(e,t){super(e,t),this.isContentEnd=!1,this.imaAdCuePoints="",s.default.Core.addTracker(this,t)}getTech(){let e=this.player.tech({IWillNotUseThisInPlugins:!0});if(e){if(n.default.isUsing(e))return new n.default(e);if(a.default.isUsing(e))return new a.default(e);if(d.default.isUsing(e))return new d.default(e)}}getTrackerName(){return"videojs"}getInstrumentationProvider(){return"New Relic"}getInstrumentationName(){return this.getPlayerName()}getInstrumentationVersion(){return this.getPlayerVersion()}getTrackerVersion(){return r.default.version}getPlayhead(){return this.player.ads&&"ads-playback"===this.player.ads.state&&this.player.ads.snapshot&&this.player.ads.snapshot.currentTime?1e3*this.player.ads.snapshot.currentTime:this.player.absoluteTime?1e3*this.player.absoluteTime():1e3*this.player.currentTime()}getDuration(){return this.player.mediainfo&&void 0!==this.player.mediainfo.duration?1e3*this.player.mediainfo.duration:1e3*this.player.duration()}getTitle(){return this.player?.mediainfo?.name}getId(){return this.player?.mediainfo?.id}getLanguage(){return this.player?.language()}getSrc(){let e=this.getTech();return e&&e.getSrc?e.getSrc():this.player.currentSrc()}getPlayerName(){return this.player?.name()||"videojs"}getPlayerVersion(){return this.player?.version}isMuted(){return this.player.muted()}getBitrate(){let e=this.getTech();return e?.tech?.stats?.bandwidth}getRenditionName(){let e=this.getTech();if(e&&e.getRenditionName)return e.getRenditionName()}getRenditionBitrate(){let e=this.getTech();if(e&&e.getRenditionBitrate)return e.getRenditionBitrate()}getRenditionHeight(){let e=this.getTech();return e&&e.getRenditionHeight?e.getRenditionHeight():this.player.videoHeight()}getRenditionWidth(){let e=this.getTech();return e&&e.getRenditionWidth?e.getRenditionWidth():this.player.videoWidth()}getPlayrate(){return this.player.playbackRate()}isAutoplayed(){return this.player.autoplay()}isFullscreen(){return this.player.isFullscreen()}getPreload(){return this.player.preload()}registerListeners(){s.default.Log.debugCommonVideoEvents(this.player,["adstart","adend","adskip","adsready","adserror","dispose"]),this.player.on("loadstart",this.onDownload.bind(this)),this.player.on("loadeddata",this.onDownload.bind(this)),this.player.on("loadedmetadata",this.onDownload.bind(this)),this.player.on("adsready",this.onAdsready.bind(this)),this.player.on("adstart",this.onAdStart.bind(this)),this.player.on("adend",this.onAdEnd.bind(this)),this.player.on("play",this.onPlay.bind(this)),this.player.on("pause",this.onPause.bind(this)),this.player.on("playing",this.onPlaying.bind(this)),this.player.on("abort",this.onAbort.bind(this)),this.player.on("ended",this.onEnded.bind(this)),this.player.on("dispose",this.onDispose.bind(this)),this.player.on("seeking",this.onSeeking.bind(this)),this.player.on("seeked",this.onSeeked.bind(this)),this.player.on("error",this.onError.bind(this)),this.player.on("waiting",this.onWaiting.bind(this)),this.player.on("timeupdate",this.onTimeupdate.bind(this)),this.player.on("ads-allpods-completed",this.OnAdsAllpodsCompleted.bind(this))}unregisterListeners(){this.player.off("loadstart",this.onDownload),this.player.off("loadeddata",this.onDownload),this.player.off("loadedmetadata",this.onDownload),this.player.off("adsready",this.onAdsready),this.player.off("adstart",this.onAdStart),this.player.off("adend",this.onAdEnd),this.player.off("play",this.onPlay),this.player.off("pause",this.onPause),this.player.off("playing",this.onPlaying),this.player.off("abort",this.onAbort),this.player.off("ended",this.onEnded),this.player.off("dispose",this.onDispose),this.player.off("seeking",this.onSeeking),this.player.off("seeked",this.onSeeked),this.player.off("error",this.onError),this.player.off("waiting",this.onWaiting),this.player.off("timeupdate",this.onTimeupdate),this.player.off("ads-allpods-completed",this.OnAdsAllpodsCompleted.bind(this))}onDownload(e){this.sendDownload({state:e.type})}onAdsready(){this.adsTracker||(h.default.isUsing(this.player)?this.setAdsTracker(new h.default(this.player)):l.default.isUsing(this.player)?this.setAdsTracker(new l.default(this.player)):u.default.isUsing(this.player)?this.setAdsTracker(new u.default(this.player)):this.setAdsTracker(new o.default(this.player)))}onAdStart(){this.currentAdPlaying=!0,this.imaAdCuePoints||(this.imaAdCuePoints=this.player?.ima?.getAdsManager().getCuePoints())}onAdEnd(){this.isContentEnd&&this.sendEnd()}OnAdsAllpodsCompleted(){this.onEnded.bind(this),this.FreewheelAdsCompleted=!0}onPlay(){this.sendRequest()}onPause(){this.sendPause()}onPlaying(){this.sendResume(),this.sendBufferEnd()}onAbort(){this.sendEnd()}onEnded(){this.adsTracker?(this.isContentEnd=!0,this.imaAdCuePoints&&!this.imaAdCuePoints.includes(-1)&&this.sendEnd()):this.sendEnd()}onDispose(){this.sendEnd()}onSeeking(){this.sendSeekStart()}onSeeked(){this.sendSeekEnd()}onError(){const e=this.player.error(),t=e.code,i=e.message;this.player.error&&this.player.error()&&this.sendError({errorCode:t,errorMessage:i})}onWaiting(e){this.sendBufferStart()}onTimeupdate(e){this.getPlayhead()>.1&&this.sendStart()}}t.default=p},330:e=>{e.exports=JSON.parse('{"name":"@newrelic/video-videojs","version":"3.2.0-beta-0","description":"New relic tracker for Videojs","main":"dist/cjs/index.js","module":"dist/esm/index.js","scripts":{"build":"webpack --mode production","build:dev":"webpack --mode development","watch":"webpack --mode production --progress --color --watch","watch:dev":"webpack --progress --color --watch --mode development","prezip":"npm run build","zip":"zip -P newrelic -x \'*.DS_Store\' -x \'samples/agent.js\' -r videojs.zip dist samples README.md CHANGELOG.md EULA.md","clean":"rm -rf dist *.zip","deploy":"node scripts/deploy.js","third-party-updates":"oss third-party manifest --includeOptDeps && oss third-party notices --includeOptDeps && git add THIRD_PARTY_NOTICES.md third_party_manifest.json"},"repository":{"type":"git","url":"https://github.com/newrelic/video-videojs-js.git"},"author":"Jordi Aguilar","contributors":["Andreu Santarén Llop"],"license":"Apache-2.0","devDependencies":{"@babel/core":"^7.24.5","@babel/plugin-transform-modules-commonjs":"^7.24.1","@babel/preset-env":"^7.24.5","@newrelic/newrelic-oss-cli":"^0.1.2","aws-sdk":"^2.920.0","babel-loader":"^9.1.3","videojs-ima":"2.1.0","webpack":"^5.91.0","webpack-cli":"^4.9.2"},"files":["THIRD_PARTY_NOTICES.md","dist","src","licesnse","CHANGELOG.md","README.md","!test"],"publishConfig":{"access":"public"},"dependencies":{"@newrelic/video-core":"^3.2.0-beta-1"}}')},338:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class i{constructor(e){this.tech=e.shakaPlayer}getSrc(e){try{return this.tech.getManifestUri()}catch(e){}return null}getRenditionBitrate(e){try{return this.tech.getStats().streamBandwidth}catch(e){}return null}getRenditionWidth(e){try{var t=this.tech.getVariantTracks();for(var i in t){var s=t[i];if(s.active&&"video"===s.type)return s.width}}catch(e){}return null}getRenditionHeight(e){try{var t=this.tech.getVariantTracks();for(var i in t){var s=t[i];if(s.active&&"video"===s.type)return s.height}}catch(e){}return null}}t.default=i,i.isUsing=function(e){return!!e.shakaPlayer}},409:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class i{constructor(e){this.tech=e.vhs}getRenditionName(){try{var e=this.tech.playlists.media();if(e&&e.attributes)return e.attributes.NAME}catch(e){}return null}getRenditionBitrate(){try{var e=this.tech.playlists.media();if(e&&e.attributes)return e.attributes.BANDWIDTH}catch(e){}return null}getRenditionWidth(){try{var e=this.tech.playlists.media();if(e&&e.attributes&&e.attributes.RESOLUTION)return e.attributes.RESOLUTION.width}catch(e){}return null}getRenditionHeight(){try{var e=this.tech.playlists.media();if(e&&e.attributes&&e.attributes.RESOLUTION)return e.attributes.RESOLUTION.height}catch(e){}return null}}t.default=i,i.isUsing=function(e){return!!e.vhs}},472:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=n(i(555)),r=n(i(330));function n(e){return e&&e.__esModule?e:{default:e}}class a extends s.default.VideoTracker{getTrackerName(){return"videojs-ads"}getTrackerVersion(){return r.default.version}isMuted(){return this.player.muted()}getRenditionHeight(){return null}getRenditionWidth(){return null}getPlayerName(){return"videojs-ads"}getPlayerVersion(){return this.player.ads.VERSION}registerListeners(){s.default.Log.debugCommonVideoEvents(this.player,[null,"ads-request","ads-load","adstart","adend","adskip","adserror","ads-click","ads-pod-started","ads-pod-ended","ads-first-quartile","ads-midpoint","ads-third-quartile","ads-pause","ads-play","adtimeout"]),this.player.on("ads-request",this.onAdrequest.bind(this)),this.player.on("ads-load",this.onAdload.bind(this)),this.player.on("adstart",this.onAdstart.bind(this)),this.player.on("adend",this.onAdend.bind(this)),this.player.on("adskip",this.onAdskip.bind(this)),this.player.on("adserror",this.onAdserror.bind(this)),this.player.on("ads-click",this.onAdsClick.bind(this)),this.player.on("ads-pod-started",this.onPodStart.bind(this)),this.player.on("ads-pod-ended",this.onPodEnd.bind(this)),this.player.on("ads-first-quartile",this.onFirstQuartile.bind(this)),this.player.on("ads-midpoint",this.onMidpoint.bind(this)),this.player.on("ads-third-quartile",this.onThirdQuartile.bind(this)),this.player.on("ads-pause",this.onAdspause.bind(this)),this.player.on("ads-play",this.onAdsplay.bind(this))}unregisterListeners(){this.player.off("ads-request",this.onAdrequest),this.player.off("ads-load",this.onAdload),this.player.off("adstart",this.onAdstart),this.player.off("adend",this.onAdend),this.player.off("adskip",this.onAdskip),this.player.off("adserror",this.onAdserror),this.player.off("ads-click",this.onAdsClick),this.player.off("ads-pod-started",this.onPodStart),this.player.off("ads-pod-ended",this.onPodEnd),this.player.off("ads-first-quartile",this.onFirstQuartile),this.player.off("ads-midpoint",this.onMidpoint),this.player.off("ads-third-quartile",this.onThirdQuartile),this.player.off("ads-pause",this.onAdspause),this.player.off("ads-play",this.onAdsplay)}onAdrequest(e){this.sendRequest(),this.sendDownload({state:"ads-request"})}onAdload(e){this.sendDownload({state:"ads-load"})}onAdstart(e){this.sendRequest(),this.sendStart()}onAdend(e){this.sendEnd()}onAdskip(e){this.sendEnd({skipped:!0})}onAdserror(e){this.sendError()}onAdsClick(e){this.sendAdClick({url:"unknown"})}onPodStart(e){this.sendAdBreakStart()}onPodEnd(e){this.sendAdBreakEnd()}onFirstQuartile(){this.sendAdQuartile({quartile:1})}onMidpoint(){this.sendAdQuartile({quartile:2})}onThirdQuartile(){this.sendAdQuartile({quartile:3})}onAdspause(){this.sendPause()}onAdsplay(){this.sendResume()}}t.default=a},555:(e,t,i)=>{i.r(t),i.d(t,{__esModule:()=>d,default:()=>o});var s={51:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class i{}i.AdPositions={PRE:"pre",MID:"mid",POST:"post"},i.INTERVAL=1e4,i.MAX_EVENTS_PER_BATCH=1e3,i.MAX_PAYLOAD_SIZE=1,i.MAX_BEACON_SIZE=.0625,i.MAX_EVENT_SIZE=.0625,i.VALID_EVENT_TYPES=["VideoAction","VideoAdAction","VideoErrorAction","VideoCustomAction"],i.COLLECTOR={US:"bam-cell.nr-data.net",EU:"bam.eu01.nr-data.net",Stage:"staging-bam-cell.nr-data.net",GOV:"gov-bam.nr-data.net"},t.default=i},144:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class i{static error(...e){s(e,i.Levels.ERROR,"darkred")}static warn(...e){s(e,i.Levels.WARNING,"darkorange")}static notice(...e){s([].slice.call(arguments),i.Levels.NOTICE,"darkcyan")}static debug(...e){s(e,i.Levels.DEBUG,"indigo")}static debugCommonVideoEvents(e,t,s){try{if(i.level<=i.Levels.DEBUG){s=s||function(e){i.debug("Event: "+e.type)};var r=["canplay","buffering","waiting","ended","play","playing","pause","resume","error","abort","seek","seeking","seeked","stalled","dispose","loadeddata","loadstart","loadedmetadata"];t&&(null===t[0]?(t.shift(),r=t):r=r.concat(t));for(var n=0;n<r.length;n++)"function"==typeof e?e.call(window,r[n],s):e.on?e.on(r[n],s):e.addEventListener?e.addEventListener(r[n],s):e.addEventHandler?e.addEventHandler(r[n],s):i.warn("debugCommonVideoEvents: No common listener function found for ",e)}}catch(e){i.warn(e)}}}function s(e,t,s){t=t||i.Levels.NOTICE,s=s||"darkcyan";var a,d,o=i.prefix;i.includeTime&&(o+="["+("0"+(a=new Date).getDate()).slice(-2)+":"+("0"+a.getMinutes()).slice(-2)+":"+("0"+a.getSeconds()).slice(-2)+"."+("00"+a.getMilliseconds()).slice(-3)+"] "),o+=function(e){return n[e]}(t)+":",i.level<=t&&t!==i.Levels.SILENT&&(!i.colorful||"undefined"!=typeof document&&document.documentMode?r(e,o):(d=t===i.Levels.ERROR&&console.error?console.error:t===i.Levels.WARNING&&console.warn?console.warn:t===i.Levels.DEBUG&&console.debug&&null==window.cast?console.debug:console.log,o="%c"+o,e.splice(0,0,o,"color: "+s),d.apply(console,e)))}function r(e,t){if(e instanceof Array)for(var i in e)r(e[i],t);else"string"==typeof e?console.log(t+" "+e):(console.log(t+"↵"),console.log(e))}i.Levels={SILENT:5,ERROR:4,WARNING:3,NOTICE:2,DEBUG:1,ALL:0},i.level=i.Levels.ERROR,i.colorful=!0,i.includeTime=!0,i.prefix="[nrvideo]";const n={4:"e",3:"w",2:"n",1:"d"};!function(){if("undefined"!=typeof window&&window.location&&window.location.search){var e=/\?.*&*nrvideo-debug=(.+)/i.exec(window.location.search);null!==e&&("true"===e[1]?i.level=i.Levels.ALL:i.level=e[1]),null!==/\?.*&*nrvideo-colors=false/i.exec(window.location.search)&&(i.colorful=!1)}}(),t.default=i},302:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=d(i(330)),r=d(i(568)),n=d(i(455)),a=d(i(51));function d(e){return e&&e.__esModule?e:{default:e}}class o extends r.default{constructor(e){super(),this.customData={},this.heartbeat=null,this.parentTracker=null,this._trackerReadyChrono=new n.default,this._trackerReadyChrono.start(),this._actionTable=a.default.ACTION_TABLE,this._actionAdTable=a.default.ACTION_AD_TABLE,e=e||{},this.setOptions(e)}setOptions(e){e&&(e.parentTracker&&(this.parentTracker=e.parentTracker),e.customData&&(this.customData=e.customData),e.heartbeat&&(this.heartbeat=e.heartbeat))}dispose(){this.unregisterListeners()}registerListeners(){}unregisterListeners(){}getHeartbeat(){return this.state._isAd?2e3:this.heartbeat?this.heartbeat:this.parentTracker&&this.parentTracker.heartbeat?this.parentTracker.heartbeat:3e4}startHeartbeat(){this._heartbeatInterval=setInterval(this.sendHeartbeat.bind(this),Math.max(this.getHeartbeat(),2e3))}stopHeartbeat(){this._heartbeatInterval&&clearInterval(this._heartbeatInterval)}sendHeartbeat(e){this.sendVideoAction(o.Events.HEARTBEAT,e)}getAttributes(e,t){(e=e||{}).trackerName=this.getTrackerName(),e.trackerVersion=this.getTrackerVersion(),e.coreVersion=s.default.version,e.timeSinceTrackerReady=this._trackerReadyChrono.getDeltaTime();for(let t in this.customData)e[t]=this.customData[t];return null!=document.hidden&&(e.isBackgroundEvent=document.hidden),e}getTrackerVersion(){return s.default.version}getTrackerName(){return"base-tracker"}sendVideoAction(e,t){this.emit("VideoAction",e,this.getAttributes(t))}sendVideoAdAction(e,t){this.emit("VideoAdAction",e,this.getAttributes(t))}sendVideoErrorAction(e,t){let i=this.isAd()?"adError":"videoError";this.emit("VideoErrorAction",e,this.getAttributes(t,i))}sendVideoCustomAction(e,t){this.emit("VideoCustomAction",e,this.getAttributes(t,"customAction"))}}o.Events={HEARTBEAT:"HEARTBEAT"},t.default=o},324:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NRVideoHarvester=void 0;var s=a(i(51)),r=a(i(330)),n=i(347);function a(e){return e&&e.__esModule?e:{default:e}}const{INTERVAL:d,MAX_EVENTS_PER_BATCH:o,MAX_PAYLOAD_SIZE:l,MAX_BEACON_SIZE:h}=s.default;t.NRVideoHarvester=class{#e=!1;#t;#i=null;constructor(e){this.#t=e,window.addEventListener("pagehide",()=>this.triggerHarvest({isFinalHarvest:!0}))}startTimer(){if(this.#e)return;this.#e=!0;const e=()=>{this.triggerHarvest({}),this.#e&&(this.#i=setTimeout(e,d))};this.#i=setTimeout(e,d)}stopTimer(){this.#e=!1,this.#i&&(clearTimeout(this.#i),this.#i=null)}triggerHarvest(e={}){if(!this.#t.isEmpty())try{const t=this.#t.drain(),i=e.isFinalHarvest?h:l,s=this.chunkEvents(t,i);s.forEach((t,i)=>{const r=i===s.length-1;this.sendChunk(t,e,r)})}catch(e){console.error("Error during harvest:",e)}}chunkEvents(e,t){const i=[];let s=[];for(const r of e)if(s.length>=o&&(i.push(s),s=[]),s.push(r),(0,n.getPayloadSize)({ins:s})>t){const e=s.pop();s.length>0&&i.push(s),s=[e]}return s.length>0&&i.push(s),i}sendChunk(e,t,i){const s=this.#s();if(!s)return void this.#t.postHarvestCleanup({retry:!1,status:0});const r={body:{ins:e}};(0,n.callApi)({url:s,payload:r,options:t},t=>{t.retry&&(t.chunk=e),this.#t.postHarvestCleanup(t)})}#s(){try{if(!window.NRVIDEO||!window.NRVIDEO.info)throw new Error("NRVIDEO info is not available.");const{beacon:e,licenseKey:t,applicationID:i,sa:s}=window.NRVIDEO.info;if(!e||!t||!i)throw new Error("Options object provided by New Relic is not correctly initialized");return`https://${e}/ins/1/${t}?a=${i}&v=${r.default.version}&ref=${window.location.href}&ca=VA`}catch(e){return console.error(e.message),null}}}},328:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=n(i(455)),r=n(i(144));function n(e){return e&&e.__esModule?e:{default:e}}t.default=class{constructor(){this.reset(),this._createdAt=Date.now(),this._hb=!0,this._acc=0,this._bufferAcc=0}reset(){this._viewSession=null,this._viewCount=0,this._isAd=!1,this.numberOfErrors=0,this.numberOfAds=0,this.numberOfVideos=0,this.totalPlaytime=0,this.totalAdPlaytime=0,this.isAdBreak=!1,this.initialBufferingHappened=!1,this.resetFlags(),this.resetChronos()}resetFlags(){this.isPlayerReady=!1,this.isRequested=!1,this.isStarted=!1,this.isPaused=!1,this.isSeeking=!1,this.isBuffering=!1,this.isPlaying=!1}resetChronos(){this.timeSinceRequested=new s.default,this.timeSinceStarted=new s.default,this.timeSincePaused=new s.default,this.timeSinceSeekBegin=new s.default,this.timeSinceBufferBegin=new s.default,this.timeSinceAdBreakStart=new s.default,this.timeSinceLastDownload=new s.default,this.timeSinceLastHeartbeat=new s.default,this.timeSinceLastRenditionChange=new s.default,this.timeSinceLastAdQuartile=new s.default,this.timeSinceLastAd=new s.default,this.timeSinceResumed=new s.default,this.timeSinceSeekEnd=new s.default,this.playtimeSinceLastEvent=new s.default,this.customTimeSinceAttributes={},this.elapsedTime=new s.default,this.bufferElapsedTime=new s.default}isAd(){return this._isAd}setIsAd(e){this._isAd=e}setTimeSinceAttribute(e){this.customTimeSinceAttributes[e]=new s.default,this.customTimeSinceAttributes[e].start()}removeTimeSinceAttribute(e){delete this.customTimeSinceAttributes[e]}getViewSession(){if(!this._viewSession){let e=(new Date).getTime(),t=Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2);this._viewSession=e+"-"+t}return this._viewSession}getViewId(){return this.getViewSession()+"-"+this._viewCount}getStateAttributes(e){e=e||{},this.isAd()?(this.isRequested&&(e.timeSinceAdRequested=this.timeSinceRequested.getDeltaTime(),e.timeSinceLastAdHeartbeat=this.timeSinceLastHeartbeat.getDeltaTime()),this.isStarted&&(e.timeSinceAdStarted=this.timeSinceStarted.getDeltaTime()),this.isPaused&&(e.timeSinceAdPaused=this.timeSincePaused.getDeltaTime()),this.isBuffering&&(e.timeSinceAdBufferBegin=this.timeSinceBufferBegin.getDeltaTime()),this.isSeeking&&(e.timeSinceAdSeekBegin=this.timeSinceSeekBegin.getDeltaTime()),this.isAdBreak&&(e.timeSinceAdBreakBegin=this.timeSinceAdBreakStart.getDeltaTime()),e.numberOfAds=this.numberOfAds):(this.isRequested&&(e.timeSinceRequested=this.timeSinceRequested.getDeltaTime(),e.timeSinceLastHeartbeat=this.timeSinceLastHeartbeat.getDeltaTime()),this.isStarted&&(e.timeSinceStarted=this.timeSinceStarted.getDeltaTime()),this.isPaused&&(e.timeSincePaused=this.timeSincePaused.getDeltaTime()),this.isBuffering&&(e.timeSinceBufferBegin=this.timeSinceBufferBegin.getDeltaTime()),this.isSeeking&&(e.timeSinceSeekBegin=this.timeSinceSeekBegin.getDeltaTime()),e.timeSinceLastAd=this.timeSinceLastAd.getDeltaTime(),e.numberOfVideos=this.numberOfVideos),e.numberOfErrors=this.numberOfErrors,this.isAd()||(this.playtimeSinceLastEvent.startTime>0?e.playtimeSinceLastEvent=this.playtimeSinceLastEvent.getDeltaTime():e.playtimeSinceLastEvent=0,this.isPlaying?this.playtimeSinceLastEvent.start():this.playtimeSinceLastEvent.reset(),this.totalPlaytime+=e.playtimeSinceLastEvent,e.totalPlaytime=this.totalPlaytime);for(const[t,i]of Object.entries(this.customTimeSinceAttributes))e[t]=i.getDeltaTime();return e}calculateBufferType(e){let t="";return t=e?"initial":this.isSeeking?"seek":this.isPaused?"pause":"connection",r.default.debug("Buffer Type = "+t),t}goViewCountUp(){this._viewCount++}goPlayerReady(){return!this.isPlayerReady&&(this.isPlayerReady=!0,!0)}goRequest(){return!this.isRequested&&(this.isRequested=!0,this.timeSinceLastAd.reset(),this.timeSinceRequested.start(),!0)}goStart(){return!(!this.isRequested||this.isStarted||(this.isAd()?this.numberOfAds++:this.numberOfVideos++,this.isStarted=!0,this.isPlaying=!0,this.timeSinceStarted.start(),this.playtimeSinceLastEvent.start(),0))}goEnd(){return!!this.isRequested&&(this.numberOfErrors=0,this.resetFlags(),this.timeSinceRequested.stop(),this.timeSinceStarted.stop(),this.playtimeSinceLastEvent.stop(),!0)}goPause(){return!(!this.isStarted||this.isPaused||(this.isPaused=!0,this.isPlaying=!1,this.timeSincePaused.start(),this.playtimeSinceLastEvent.stop(),this.timeSinceResumed.reset(),this.isBuffering&&(this._bufferAcc+=this.bufferElapsedTime.getDeltaTime()),this.elapsedTime.start(),0))}goResume(){return!(!this.isStarted||!this.isPaused||(this.isPaused=!1,this.isPlaying=!0,this.timeSincePaused.stop(),this.timeSinceResumed.start(),this._hb?(this._acc=this.elapsedTime.getDeltaTime(),this._hb=!1):(this.isBuffering&&this.bufferElapsedTime.start(),this._acc+=this.elapsedTime.getDeltaTime()),0))}goBufferStart(){return!(!this.isRequested||this.isBuffering||(this.isBuffering=!0,this.isPlaying=!1,this.timeSinceBufferBegin.start(),this.bufferElapsedTime.start(),0))}goBufferEnd(){return!(!this.isRequested||!this.isBuffering||(this.isBuffering=!1,this.isPlaying=!0,this.timeSinceBufferBegin.stop(),this._hb?(this._bufferAcc=this.bufferElapsedTime.getDeltaTime(),this._hb=!1):this._bufferAcc+=this.bufferElapsedTime.getDeltaTime(),0))}goSeekStart(){return!(!this.isStarted||this.isSeeking||(this.isSeeking=!0,this.isPlaying=!1,this.timeSinceSeekBegin.start(),this.timeSinceSeekEnd.reset(),0))}goSeekEnd(){return!(!this.isStarted||!this.isSeeking||(this.isSeeking=!1,this.isPlaying=!0,this.timeSinceSeekBegin.stop(),this.timeSinceSeekEnd.start(),0))}goAdBreakStart(){return!this.isAdBreak&&(this.isAdBreak=!0,this.timeSinceAdBreakStart.start(),!0)}goAdBreakEnd(){return!!this.isAdBreak&&(this.isRequested=!1,this.isAdBreak=!1,this.totalAdPlaytime=this.timeSinceAdBreakStart.getDeltaTime(),this.timeSinceAdBreakStart.stop(),!0)}goDownload(){this.timeSinceLastDownload.start()}goHeartbeat(){this.timeSinceLastHeartbeat.start()}goRenditionChange(){this.timeSinceLastRenditionChange.start()}goAdQuartile(){this.timeSinceLastAdQuartile.start()}goError(){this.isError=!0,this.numberOfErrors++}goLastAd(){this.timeSinceLastAd.start()}}},330:e=>{e.exports=JSON.parse('{"name":"@newrelic/video-core","version":"3.2.0-beta-1","description":"New Relic video tracking core library","main":"./dist/cjs/index.js","module":"./dist/esm/index.js","scripts":{"build":"webpack --mode production","build:dev":"webpack --mode development","watch":"webpack --mode production --progress --color --watch","watch:dev":"webpack --progress --color --watch","clean":"rm -rf dist coverage doc","test":"nyc --reporter=html --reporter=text mocha --require @babel/register","doc":"jsdoc -c jsdoc.json -d documentation","deploy":"node scripts/deploy.js","third-party-updates":"oss third-party manifest --includeOptDeps && oss third-party notices --includeOptDeps && git add THIRD_PARTY_NOTICES.md third_party_manifest.json"},"repository":{"type":"git","url":"https://github.com/newrelic/video-core-js"},"author":"Jordi Aguilar","contributors":["Andreu Santarén Llop"],"license":"Apache-2.0","devDependencies":{"@babel/core":"^7.24.5","@babel/plugin-transform-modules-commonjs":"^7.24.1","@babel/preset-env":"^7.24.5","@babel/register":"^7.24.6","@newrelic/newrelic-oss-cli":"^0.1.2","aws-sdk":"^2.920.0","babel-loader":"^9.1.3","chai":"^4.3.4","diff":"^5.0.0","jsdom":"^25.0.1","mocha":"^10.4.0","nyc":"^15.1.0","sinon":"^2.4.1","webpack":"^5.91.0","webpack-cli":"^4.9.2"},"files":["THIRD_PARTY_NOTICES.md","dist","src","CHANGELOG.md","LICENSE","README.md","!test"],"publishConfig":{"access":"public"}}')},347:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.callApi=function({url:e,payload:t,options:i={}},s){if(!e||!t||!s)return console.error("callApi: Missing required parameters"),void(s&&s({retry:!1,status:0}));let r;try{r=JSON.stringify(t.body)}catch(e){return console.error("callApi: Error serializing payload",e),void s({retry:!1,status:0})}if(i.isFinalHarvest&&navigator.sendBeacon)try{const t=navigator.sendBeacon(e,r);s({retry:!t,status:t?200:0})}catch(e){s({retry:!0,status:0})}else fetch(e,{method:"POST",body:r,headers:{"Content-Type":"application/json"},keepalive:i.isFinalHarvest}).then(e=>{const t=function(e){switch(e){case 408:case 429:case 500:return!0;case 401:case 403:case 404:return!1}return e>=502&&e<=504||e>=512&&e<=530}(e.status);s({retry:t,status:e.status,ok:e.ok})}).catch(()=>{s({retry:!0,status:0})})},t.getPayloadSize=function(e){if(!e||"object"!=typeof e)return 0;try{const t=JSON.stringify(e);return(new TextEncoder).encode(t).length/1048576}catch(e){return console.error("getPayloadSize: Error calculating payload size",e),0}}},399:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s,r=(s=i(144))&&s.__esModule?s:{default:s},n=i(449),a=i(418);class d{static addTracker(e,t){(0,a.setAuthConfig)(t.info),e.on&&e.emit?(o.push(e),e.on("*",l),"function"==typeof e.trackerInit&&e.trackerInit()):r.default.error("Tried to load a non-tracker.",e)}static removeTracker(e){e.off("*",l),e.dispose();let t=o.indexOf(e);-1!==t&&o.splice(t,1)}static getTrackers(){return o}static send(e,t,i){i.timeSinceLoad=window.performance.now()/1e3,(0,n.recordEvent)(e,{actionName:t,...i})}static sendError(e){d.send("ERROR",e)}}let o=[];function l(e){let t=function(e){let t={};for(let i in e)null!==e[i]&&void 0!==e[i]&&(t[i]=e[i]);return t}(e.data);r.default.level<=r.default.Levels.DEBUG?r.default.notice("Sent",e.type,t):r.default.notice("Sent",e.type),d.send(e.eventType,e.type,t)}t.default=d},418:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.setAuthConfig=function(e){try{if(!e||"object"!=typeof e||Array.isArray(e))throw new Error("setAuthConfig: info parameter must be a valid object");if(function(e){if(!e||"object"!=typeof e)return!1;const{licenseKey:t,appName:i,region:s,applicationID:r,beacon:n}=e;return!!(t&&"string"==typeof t&&0!==t.trim().length&&(r?n&&"string"==typeof n&&n.trim().length>0:i&&"string"==typeof i&&i.trim().length>0&&s&&"string"==typeof s&&s.trim().length>0))}(e)){const{licenseKey:t,appName:i,region:s,beacon:r,sa:a,applicationID:d}=e;window.NRVIDEO=window.NRVIDEO||{};let o=r;if(!o&&s){if(!n[s])throw new Error(`setAuthConfig: Invalid region '${s}'. Valid regions: ${Object.keys(n).join(", ")}`);o=n[s]}return window.NRVIDEO.info={beacon:o,licenseKey:t,applicationID:d||null,appName:i||null,sa:a||0},!0}{const t=function(e){if(!e||"object"!=typeof e)return"info parameter must be a valid object";const{licenseKey:t,appName:i,region:s,applicationID:r,beacon:n}=e;if(!t||"string"!=typeof t||0===t.trim().length)return"licenseKey is required and must be a non-empty string";if(r){if(!n||"string"!=typeof n||0===n.trim().length)return"beacon URL is required when using applicationID"}else{if(!i||"string"!=typeof i||0===i.trim().length)return"appName is required when not using applicationID";if(!s||"string"!=typeof s||0===s.trim().length)return"region is required when not using applicationID"}return"configuration validation failed"}(e);throw new Error(`setAuthConfig: ${t}`)}}catch(e){return console.error("setAuthConfig:",e.message),!1}};var s,r=(s=i(51))&&s.__esModule?s:{default:s};const{COLLECTOR:n}=r.default},431:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NRVideoEventAggregator=void 0;var s,r=i(347),n=(s=i(51))&&s.__esModule?s:{default:s};const{MAX_EVENTS_PER_BATCH:a,MAX_PAYLOAD_SIZE:d}=n.default;t.NRVideoEventAggregator=class{#r=[];#n=[];isEmpty(){return 0===this.#r.length&&0===this.#n.length}drain(){const e=[...this.#n,...this.#r];return this.#r=[],this.#n=[],e}add(e){this.#r.push(e)}postHarvestCleanup(e){if(e.retry&&e.chunk?.length){for(;this.#n.length>0&&((0,r.getPayloadSize)(this.#n)+(0,r.getPayloadSize)(e.chunk)>d||this.#n.length+e.chunk.length>a);)this.#n.shift();this.#n.push(...e.chunk)}else this.#n=[]}}},449:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.recordEvent=function(e,t={}){if("string"!=typeof e||0===e.length||!d.includes(e))return console.warn("recordEvent: Invalid eventType provided:",e),!1;if(null!==t&&("object"!=typeof t||Array.isArray(t)))return console.warn("recordEvent: attributes must be a plain object"),!1;if(t=t||{},!window.NRVIDEO||!window.NRVIDEO.info)return console.error("recordEvent: NRVIDEO not properly initialized"),!1;try{const{appName:i}=window.NRVIDEO.info,s={...t,eventType:e,appName:i,timestamp:Date.now()},a=(0,n.getPayloadSize)(s);return a>o?(console.warn(`recordEvent: Event size (${a} bytes) exceeds maximum (${o} bytes)`),!1):(r.customEventAggregator.add(s),!0)}catch(e){return console.error("recordEvent: Error recording event:",e),!1}};var s,r=i(487),n=i(347),a=(s=i(51))&&s.__esModule?s:{default:s};const{VALID_EVENT_TYPES:d,MAX_EVENT_SIZE:o}=a.default},455:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class i{constructor(){this.reset()}reset(){this.startTime=0,this.stopTime=0,this.offset=0}getDeltaTime(){return this.startTime?this.offset+((new Date).getTime()-this.startTime):null}start(){this.startTime=(new Date).getTime(),this.stopTime=0}stop(){return this.stopTime=(new Date).getTime(),this.getDeltaTime()}clone(){var e=new i;return e.startTime=this.startTime,e.stopTime=this.stopTime,e.offset=this.offset,e}}t.default=i},487:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.customEventAggregator=void 0;var s=i(431),r=i(324);const n=t.customEventAggregator=new s.NRVideoEventAggregator;new r.NRVideoHarvester(n).startTimer()},568:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=class{on(e,t){if(this._listeners=this._listeners||{},"function"==typeof t)return this._listeners[e]=this._listeners[e]||[],this._listeners[e].push(t),this}off(e,t){if(this._listeners=this._listeners||{},this._listeners[e]){var i=this._listeners[e].indexOf(t);-1!==i&&this._listeners[e].splice(i,1)}return this}emit(e,t,i){return this._listeners=this._listeners||{},i=i||{},Array.isArray(this._listeners[t])&&this._listeners[t].forEach(s=>{s.call(this,{eventType:e,type:t,data:i,target:this})}),Array.isArray(this._listeners["*"])&&this._listeners["*"].forEach(s=>{s.call(this,{eventType:e,type:t,data:i,target:this})}),this}}},793:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=d(i(144)),r=d(i(302)),n=d(i(328)),a=d(i(330));function d(e){return e&&e.__esModule?e:{default:e}}class o extends r.default{constructor(e,t){super(),this.state=new n.default,this.adsTracker=null,this._lastBufferType=null,this._userId=null,t=t||{},this.setOptions(t),e&&this.setPlayer(e,t.tag),s.default.notice("Tracker "+this.getTrackerName()+" v"+this.getTrackerVersion()+" is ready.")}setUserId(e){this._userId=e}setOptions(e){e&&(e.adsTracker&&this.setAdsTracker(e.adsTracker),"boolean"==typeof e.isAd&&this.setIsAd(e.isAd),r.default.prototype.setOptions.apply(this,arguments))}setPlayer(e,t){(this.player||this.tag)&&this.dispose(),"undefined"!=typeof document&&document.getElementById&&("string"==typeof e&&(e=document.getElementById(e)),"string"==typeof t&&(t=document.getElementById(t))),t=t||e,this.player=e,this.tag=t,this.registerListeners()}isAd(){return this.state.isAd()}setIsAd(e){this.state.setIsAd(e)}setAdsTracker(e){this.disposeAdsTracker(),e&&(this.adsTracker=e,this.adsTracker.setIsAd(!0),this.adsTracker.parentTracker=this,this.adsTracker.on("*",l.bind(this)))}disposeAdsTracker(){this.adsTracker&&(this.adsTracker.off("*",l),this.adsTracker.dispose())}dispose(){this.stopHeartbeat(),this.disposeAdsTracker(),this.unregisterListeners(),this.player=null,this.tag=null}registerListeners(){}unregisterListeners(){}getViewId(){return this.parentTracker?this.parentTracker.getViewId():this.state.getViewId()}getViewSession(){return this.parentTracker?this.parentTracker.getViewSession():this.state.getViewSession()}getVideoId(){return null}getTitle(){return null}isLive(){return null}getBitrate(){return null}getWebkitBitrate(){if(this.tag&&this.tag.webkitVideoDecodedByteCount){let e;if(this._lastWebkitBitrate){e=this.tag.webkitVideoDecodedByteCount;let t=e-this._lastWebkitBitrate,i=this.getHeartbeat()/1e3;e=Math.round(t/i*8)}return this._lastWebkitBitrate=this.tag.webkitVideoDecodedByteCount,e||null}}getRenditionName(){return null}getRenditionBitrate(){return null}getRenditionShift(e){let t,i=this.getRenditionBitrate();return this.isAd()?(t=this._lastAdRendition,e&&(this._lastAdRendition=i)):(t=this._lastRendition,e&&(this._lastRendition=i)),i&&t?i>t?"up":i<t?"down":null:null}getRenditionHeight(){return this.tag?this.tag.videoHeight:null}getRenditionWidth(){return this.tag?this.tag.videoWidth:null}getDuration(){return this.tag?this.tag.duration:null}getPlayhead(){return this.tag?this.tag.currentTime:null}getLanguage(){return null}getSrc(){return this.tag?this.tag.currentSrc:null}getPlayrate(){return this.tag?this.tag.playbackRate:null}isMuted(){return this.tag?this.tag.muted:null}isFullscreen(){return null}getCdn(){return null}getPlayerName(){return this.getTrackerName()}getPlayerVersion(){return a.default.version}getFps(){return null}isAutoplayed(){return this.tag?this.tag.autoplay:null}getPreload(){return this.tag?this.tag.preload:null}getAdQuartile(){return null}getAdPosition(){return this.parentTracker?this.parentTracker.state.isStarted?"mid":"pre":null}getAdPartner(){return null}getAdCreativeId(){return null}getInstrumentationProvider(){return null}getInstrumentationName(){return null}getInstrumentationVersion(){return null}getAttributes(e,t){if(void 0===(e=r.default.prototype.getAttributes.apply(this,arguments)).isAd&&(e.isAd=this.isAd()),e.viewSession=this.getViewSession(),e.viewId=this.getViewId(),e.playerName=this.getPlayerName(),e.playerVersion=this.getPlayerVersion(),e["instrumentation.provider"]=this.getInstrumentationProvider(),e["instrumentation.name"]=this.getInstrumentationName(),e["instrumentation.version"]=this.getInstrumentationVersion(),e["enduser.id"]=this._userId,e.src="Browser","customAction"===t)return e;try{e.pageUrl=window.location.href}catch(e){}this.isAd()?(e.adId=this.getVideoId(),e.adTitle=this.getTitle(),e.adSrc=this.getSrc(),e.adCdn=this.getCdn(),e.adBitrate=this.getBitrate()||this.getWebkitBitrate()||this.getRenditionBitrate(),e.adRenditionName=this.getRenditionName(),e.adRenditionBitrate=this.getRenditionBitrate(),e.adRenditionHeight=this.getRenditionHeight(),e.adRenditionWidth=this.getRenditionWidth(),e.adDuration=this.getDuration(),e.adPlayhead=this.getPlayhead(),e.adLanguage=this.getLanguage(),e.adIsMuted=this.isMuted(),e.adFps=this.getFps(),e.adPosition=this.getAdPosition(),e.adCreativeId=this.getAdCreativeId(),e.adPartner=this.getAdPartner()):(e.contentId=this.getVideoId(),e.contentTitle=this.getTitle(),e.contentSrc=this.getSrc(),e.contentCdn=this.getCdn(),e.contentPlayhead=this.getPlayhead(),e.contentIsLive=this.isLive(),e.contentBitrate=this.getBitrate()||this.getWebkitBitrate()||this.getRenditionBitrate(),e.contentRenditionName=this.getRenditionName(),e.contentRenditionBitrate=this.getRenditionBitrate(),e.contentRenditionHeight=this.getRenditionHeight(),e.contentRenditionWidth=this.getRenditionWidth(),e.contentDuration=this.getDuration(),e.contentLanguage=this.getLanguage(),e.contentPlayrate=this.getPlayrate(),e.contentIsFullscreen=this.isFullscreen(),e.contentIsMuted=this.isMuted(),e.contentIsAutoplayed=this.isAutoplayed(),e.contentPreload=this.getPreload(),e.contentFps=this.getFps(),null!=this.adsTracker&&this.adsTracker.state.totalAdPlaytime>0&&(e.totalAdPlaytime=this.adsTracker.state.totalAdPlaytime)),this.state.getStateAttributes(e);for(let t in this.customData)e[t]=this.customData[t];return e}sendCustom(e,t,i){i=i||{},this.sendVideoCustomAction(e,i),this.state.setTimeSinceAttribute(t)}sendPlayerReady(e){this.state.goPlayerReady()&&(e=e||{},this.sendVideoAction(o.Events.PLAYER_READY,e))}sendRequest(e){if(this.state.goRequest()){let t;this.isAd()?(t=o.Events.AD_REQUEST,this.sendVideoAdAction(t,e)):(t=o.Events.CONTENT_REQUEST,this.sendVideoAction(t,e))}}sendStart(e){if(this.state.goStart()){let t;this.isAd()?(t=o.Events.AD_START,this.parentTracker&&(this.parentTracker.state.isPlaying=!1),this.sendVideoAdAction(t,e)):(t=o.Events.CONTENT_START,this.sendVideoAction(t,e)),this.startHeartbeat(),this.state.goHeartbeat()}}sendEnd(e){if(this.state.goEnd()){let t;e=e||{},this.isAd()?(t=o.Events.AD_END,e.timeSinceAdRequested=this.state.timeSinceRequested.getDeltaTime(),e.timeSinceAdStarted=this.state.timeSinceStarted.getDeltaTime(),this.parentTracker&&(this.parentTracker.state.isPlaying=!0)):(t=o.Events.CONTENT_END,e.timeSinceRequested=this.state.timeSinceRequested.getDeltaTime(),e.timeSinceStarted=this.state.timeSinceStarted.getDeltaTime()),this.stopHeartbeat(),this.isAd()?this.sendVideoAdAction(t,e):this.sendVideoAction(t,e),this.parentTracker&&this.isAd()&&this.parentTracker.state.goLastAd(),this.state.goViewCountUp(),this.state.totalPlaytime=0}}sendPause(e){if(this.state.goPause()){let t=this.isAd()?o.Events.AD_PAUSE:o.Events.CONTENT_PAUSE;this.isAd()?this.sendVideoAdAction(t,e):this.sendVideoAction(t,e)}}sendResume(e){if(this.state.goResume()){let t;e=e||{},this.isAd()?(t=o.Events.AD_RESUME,e.timeSinceAdPaused=this.state.timeSincePaused.getDeltaTime()):(t=o.Events.CONTENT_RESUME,e.timeSincePaused=this.state.timeSincePaused.getDeltaTime()),this.isAd()?this.sendVideoAdAction(t,e):this.sendVideoAction(t,e)}}sendBufferStart(e){if(this.state.goBufferStart()){let t;e=e||{},t=this.isAd()?o.Events.AD_BUFFER_START:o.Events.CONTENT_BUFFER_START,e=this.buildBufferAttributes(e),this._lastBufferType=e.bufferType,this.isAd()?this.sendVideoAdAction(t,e):this.sendVideoAction(t,e)}}sendBufferEnd(e){if(this.state.goBufferEnd()){let t;e=e||{},this.isAd()?(t=o.Events.AD_BUFFER_END,e.timeSinceAdBufferBegin=this.state.timeSinceBufferBegin.getDeltaTime()):(t=o.Events.CONTENT_BUFFER_END,e.timeSinceBufferBegin=this.state.timeSinceBufferBegin.getDeltaTime()),e=this.buildBufferAttributes(e),null!=this._lastBufferType&&(e.bufferType=this._lastBufferType),this.isAd()?this.sendVideoAdAction(t,e):this.sendVideoAction(t,e),this.state.initialBufferingHappened=!0}}buildBufferAttributes(e){return null==e.timeSinceStarted||e.timeSinceStarted<100?e.isInitialBuffering=!this.state.initialBufferingHappened:e.isInitialBuffering=!1,e.bufferType=this.state.calculateBufferType(e.isInitialBuffering),e.timeSinceResumed=this.state.timeSinceResumed.getDeltaTime(),e.timeSinceSeekEnd=this.state.timeSinceSeekEnd.getDeltaTime(),e}sendSeekStart(e){if(this.state.goSeekStart()){let t;t=this.isAd()?o.Events.AD_SEEK_START:o.Events.CONTENT_SEEK_START,this.isAd()?this.sendVideoAdAction(t,e):this.sendVideoAction(t,e)}}sendSeekEnd(e){if(this.state.goSeekEnd()){let t;e=e||{},this.isAd()?(t=o.Events.AD_SEEK_END,e.timeSinceAdSeekBegin=this.state.timeSinceSeekBegin.getDeltaTime()):(t=o.Events.CONTENT_SEEK_END,e.timeSinceSeekBegin=this.state.timeSinceSeekBegin.getDeltaTime()),this.isAd()?this.sendVideoAdAction(t,e):this.sendVideoAction(t,e)}}sendDownload(e){(e=e||{}).state||s.default.warn("Called sendDownload without { state: xxxxx }."),this.sendVideoAction(o.Events.DOWNLOAD,e),this.state.goDownload()}sendError(e){(e=e||{}).isAd=this.isAd(),this.state.goError();let t=this.isAd()?o.Events.AD_ERROR:o.Events.CONTENT_ERROR;this.sendVideoErrorAction(t,e)}sendRenditionChanged(e){let t;(e=e||{}).timeSinceLastRenditionChange=this.state.timeSinceLastRenditionChange.getDeltaTime(),e.shift=this.getRenditionShift(!0),t=this.isAd()?o.Events.AD_RENDITION_CHANGE:o.Events.CONTENT_RENDITION_CHANGE,this.isAd()?this.sendVideoAdAction(t,e):this.sendVideoAction(t,e),this.state.goRenditionChange()}sendHeartbeat(e){if(this.state.isRequested){let t,i=this.getHeartbeat();this.state._hb=!0,i=this.adjustElapsedTimeForPause(i),this.isAd()?(t=o.Events.AD_HEARTBEAT,"bitmovin-ads"===this.getPlayerName()?this.sendVideoAdAction(t,e):this.sendVideoAdAction(t,{elapsedTime:i,...e})):(t=o.Events.CONTENT_HEARTBEAT,this.sendVideoAction(t,{elapsedTime:i,...e})),this.state.goHeartbeat()}}adjustElapsedTimeForPause(e){return this.state._acc&&(e-=this.state._acc,this.state._acc=0),this.state.isPaused&&((e-=this.state.elapsedTime.getDeltaTime())<10&&(e=0),this.state.elapsedTime.start()),this.state._bufferAcc?(e-=this.state._bufferAcc,this.state._bufferAcc=0):this.state.isBuffering&&((e-=this.state.bufferElapsedTime.getDeltaTime())<5&&(e=0),this.state.bufferElapsedTime.start()),Math.max(0,e)}sendAdBreakStart(e){this.isAd()&&this.state.goAdBreakStart()&&(this.state.totalAdPlaytime=0,this.parentTracker&&(this.parentTracker.state.isPlaying=!1),this.sendVideoAdAction(o.Events.AD_BREAK_START,e))}sendAdBreakEnd(e){this.isAd()&&this.state.goAdBreakEnd()&&((e=e||{}).timeSinceAdBreakBegin=this.state.timeSinceAdBreakStart.getDeltaTime(),this.sendVideoAdAction(o.Events.AD_BREAK_END,e),this.parentTracker&&(this.parentTracker.state.isPlaying=!0),this.stopHeartbeat(),this.parentTracker&&this.isAd()&&this.parentTracker.state.goLastAd())}sendAdQuartile(e){this.isAd()&&((e=e||{}).quartile||s.default.warn("Called sendAdQuartile without { quartile: xxxxx }."),e.timeSinceLastAdQuartile=this.state.timeSinceLastAdQuartile.getDeltaTime(),this.sendVideoAdAction(o.Events.AD_QUARTILE,e),this.state.goAdQuartile())}sendAdClick(e){this.isAd()&&((e=e||{}).url||s.default.warn("Called sendAdClick without { url: xxxxx }."),this.sendVideoAdAction(o.Events.AD_CLICK,e))}}function l(e){e.type!==o.Events.AD_ERROR?this.sendVideoAdAction(e.type,e.data):this.sendVideoErrorAction(e.type,e.data)}o.Events={PLAYER_READY:"PLAYER_READY",DOWNLOAD:"DOWNLOAD",ERROR:"ERROR",CONTENT_REQUEST:"CONTENT_REQUEST",CONTENT_START:"CONTENT_START",CONTENT_END:"CONTENT_END",CONTENT_PAUSE:"CONTENT_PAUSE",CONTENT_RESUME:"CONTENT_RESUME",CONTENT_SEEK_START:"CONTENT_SEEK_START",CONTENT_SEEK_END:"CONTENT_SEEK_END",CONTENT_BUFFER_START:"CONTENT_BUFFER_START",CONTENT_BUFFER_END:"CONTENT_BUFFER_END",CONTENT_HEARTBEAT:"CONTENT_HEARTBEAT",CONTENT_RENDITION_CHANGE:"CONTENT_RENDITION_CHANGE",CONTENT_ERROR:"CONTENT_ERROR",AD_REQUEST:"AD_REQUEST",AD_START:"AD_START",AD_END:"AD_END",AD_PAUSE:"AD_PAUSE",AD_RESUME:"AD_RESUME",AD_SEEK_START:"AD_SEEK_START",AD_SEEK_END:"AD_SEEK_END",AD_BUFFER_START:"AD_BUFFER_START",AD_BUFFER_END:"AD_BUFFER_END",AD_HEARTBEAT:"AD_HEARTBEAT",AD_RENDITION_CHANGE:"AD_RENDITION_CHANGE",AD_ERROR:"AD_ERROR",AD_BREAK_START:"AD_BREAK_START",AD_BREAK_END:"AD_BREAK_END",AD_QUARTILE:"AD_QUARTILE",AD_CLICK:"AD_CLICK"},t.default=o}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return s[e](i,i.exports,n),i.exports}var a={};(()=>{var e=a;Object.defineProperty(e,"B",{value:!0}),e.A=void 0;var t=c(n(399)),i=c(n(51)),s=c(n(455)),r=c(n(144)),d=c(n(568)),o=c(n(302)),l=c(n(793)),h=c(n(328)),u=n(330);function c(e){return e&&e.__esModule?e:{default:e}}const p={Constants:i.default,Chrono:s.default,Log:r.default,Emitter:d.default,Tracker:o.default,VideoTracker:l.default,VideoTrackerState:h.default,Core:t.default,version:u.version};e.A=p})();const d=a.B,o=a.A}},t={};function i(s){var r=t[s];if(void 0!==r)return r.exports;var n=t[s]={exports:{}};return e[s](n,n.exports,i),n.exports}i.d=(e,t)=>{for(var s in t)i.o(t,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};(()=>{var e=s;Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t,r=(t=i(302))&&t.__esModule?t:{default:t};e.default=r.default})(),module.exports.VideojsTracker=s})();
|
|
2
|
+
(()=>{"use strict";var e={38:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s,r=(s=i(472))&&s.__esModule?s:{default:s};class a extends r.default{static isUsing(e){return!!e.FreeWheelPlugin&&"undefined"!=typeof tv&&tv.freewheel}getTrackerName(){return"freewheel-ads"}getPlayerName(){return"freewheel-ads"}getPlayerVersion(){return this.player.FreeWheelPlugin.VERSION}getPlayhead(){if(this.player.ads.ad.currentTime)return 1e3*this.player.ads.ad.currentTime()}getDuration(){if(this.player.ads.ad.duration)return 1e3*this.player.ads.ad.duration}getVideoId(){return this.player.ads.ad.id}getAdPartner(){return"freewheel"}getAdCreativeId(){try{return this.player.ads.provider.event.adInstance.getActiveCreativeRendition().getId()}catch(e){}}getSrc(){try{return this.player.ads.provider.event.adInstance.getActiveCreativeRendition().getPrimaryCreativeRenditionAsset().getUrl()}catch(e){}}getTitle(){try{return this.player.ads.provider.event.adInstance.getActiveCreativeRendition().getPrimaryCreativeRenditionAsset().getName()}catch(e){}}getAdPosition(){switch(this.player.ads.ad.type){case"PREROLL":return nrvideo.Constants.AdPositions.PRE;case"MIDROLL":return nrvideo.Constants.AdPositions.MID;case"POSTROLL":return nrvideo.Constants.AdPositions.POST}}}t.default=a},64:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=a(i(555)),r=a(i(472));function a(e){return e&&e.__esModule?e:{default:e}}class n extends r.default{static isUsing(e){return!!e.ima3}getTrackerName(){return"brightcove-ima-ads"}getPlayerName(){return"brightcove-ima-ads"}getPlayhead(){return this.player?.ima3?.adPlayer?.currentTime()}registerListeners(){s.default.Log.debugCommonVideoEvents(this.player,[null,"ima3-ready","ima3error","ima3-ad-error","ima3-started","ima3-complete","ima3-paused","ima3-resumed","ads-request","ads-load","ads-ad-started","ads-ad-ended","ads-pause","ads-play","ads-click","ads-pod-started","ads-pod-ended","ads-allpods-completed"]),this.player.on("ima3-started",this.onStarted.bind(this)),this.player.on("ima3-paused",this.onPaused.bind(this)),this.player.on("ima3-resumed",this.onResume.bind(this)),this.player.on("ima3-complete",this.onComplete.bind(this)),this.player.on("ima3-skipped",this.onSkipped.bind(this)),this.player.on("adserror",this.onError.bind(this)),this.player.on("ads-click",this.onClick.bind(this))}unregisterListeners(){this.player.off("ima3-started",this.onStarted),this.player.off("ima3-paused",this.onPaused),this.player.off("ima3-resumed",this.onResume),this.player.off("ima3-complete",this.onComplete),this.player.off("ima3-skipped",this.onSkipped),this.player.off("adserror",this.onError),this.player.off("ads-click",this.onClick)}onStarted(e){this.sendRequest(),this.sendStart()}onPaused(e){this.sendPause()}onResume(e){this.sendResume()}onComplete(e){this.sendEnd()}onSkipped(e){this.sendEnd({skipped:!0})}onError(e){this.sendError()}onClick(e){this.sendClick()}}t.default=n},257:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class i{constructor(e){this.tech=e.vhs_}getResource(e){return this.tech.url}getRenditionName(e){try{var t=this.tech.levels[this.tech.currentLevel];if(t&&t.name)return t.name}catch(e){}return null}getRenditionBitrate(e){try{var t=this.tech.levels[this.tech.currentLevel];if(t&&t.bitrate)return t.bitrate}catch(e){}return null}getRenditionWidth(e){try{var t=this.tech.levels[this.tech.currentLevel];if(t&&t.width)return t.width}catch(e){}return null}getRenditionHeight(e){try{var t=this.tech.levels[this.tech.currentLevel];if(t&&t.height)return t.height}catch(e){}return null}}t.default=i,i.isUsing=function(e){return!!e.vhs_}},298:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=a(i(555)),r=a(i(472));function a(e){return e&&e.__esModule?e:{default:e}}class n extends r.default{static isUsing(e){return e.ima&&"undefined"!=typeof google}getTrackerName(){return"ima-ads"}getPlayerName(){return"ima"}getPlayerVersion(){return"ima: "+google.ima.VERSION+"; contrib-ads: "+this.player.ads.VERSION}getCuePoints(){return this.player.ima.getAdsManager().getCuePoints()}getAdPosition(){if(this.lastAdData&&this.lastAdData.podInfo&&void 0!==this.lastAdData.podInfo.podIndex){const e=this.lastAdData.podInfo.podIndex;return 0===e?"pre":-1===e?"post":"mid"}return null}getDuration(){return this.lastAdData&&void 0!==this.lastAdData.duration?1e3*this.lastAdData.duration:null}getVideoId(){return this.lastAdData&&this.lastAdData.adId?this.lastAdData.adId:null}getAdCreativeId(){return this.lastAdData&&this.lastAdData.creativeId?this.lastAdData.creativeId:null}getSrc(){return this.lastAdData&&this.lastAdData.mediaUrl?this.lastAdData.mediaUrl:null}getTitle(){return this.lastAdData&&this.lastAdData.title?this.lastAdData.title:null}getPlayhead(){let e=this.player.ima.getAdsManager();if(e)return 1e3*(this.getDuration()-e.getRemainingTime())}getPlayrate(){return this.player.playbackRate()}getAdPartner(){return"ima"}getWebkitBitrate(){const e=this.getAdVideoElement();if(e&&e.webkitVideoDecodedByteCount){let t;if(this._lastAdWebkitBitrate>0){const i=e.webkitVideoDecodedByteCount-this._lastAdWebkitBitrate,s=this.getHeartbeat()/1e3;t=Math.round(i/s*8)}return this._lastAdWebkitBitrate=e.webkitVideoDecodedByteCount,t??null}return null}getRenditionBitrate(){if(this.lastAdData)return this.lastAdData.renditionBitrate}registerListeners(){let e=google.ima.AdEvent.Type,t=google.ima.AdErrorEvent.Type.AD_ERROR;this.lastAdData=null,s.default.Log.debugCommonVideoEvents(this.player.ima.addEventListener,[null,e.ALL_ADS_COMPLETED,e.LINEAR_CHANGED,e.COMPLETE,e.USER_CLOSE,e.IMPRESSION,e.CONTENT_PAUSE_REQUESTED,e.CONTENT_RESUME_REQUESTED,e.SKIPPED,e.SKIPPABLE_STATE_CHANGED,e.LOADED,e.PAUSED,e.RESUMED,e.STARTED,e.AD_CAN_PLAY,e.AD_METADATA,e.EXPANDED_CHANGED,e.AD_BREAK_READY,e.LOG,e.CLICK,e.FIRST_QUARTILE,e.MIDPOINT,e.THIRD_QUARTILE,t]),this.player.ima.addEventListener(e.LOADED,this.onLoaded.bind(this)),this.player.ima.addEventListener(e.STARTED,this.onStart.bind(this)),this.player.ima.addEventListener(e.PAUSED,this.onPaused.bind(this)),this.player.ima.addEventListener(e.RESUMED,this.onResumed.bind(this)),this.player.ima.addEventListener(e.COMPLETE,this.onComplete.bind(this)),this.player.ima.addEventListener(e.SKIPPED,this.onSkipped.bind(this)),this.player.ima.addEventListener(e.CLICK,this.onClick.bind(this)),this.player.ima.addEventListener(e.FIRST_QUARTILE,this.onFirstQuartile.bind(this)),this.player.ima.addEventListener(e.MIDPOINT,this.onMidpoint.bind(this)),this.player.ima.addEventListener(e.THIRD_QUARTILE,this.onThirdQuartile.bind(this)),this.player.ima.addEventListener(t,this.onError.bind(this))}unregisterListeners(){let e=google.ima.AdEvent.Type,t=google.ima.AdErrorEvent.Type.AD_ERROR;this.player.ima.removeEventListener(e.LOADED,this.onLoaded),this.player.ima.removeEventListener(e.STARTED,this.onLoaded.bind(this)),this.player.ima.removeEventListener(e.IMPRESSION,this.onImpression),this.player.ima.removeEventListener(e.PAUSED,this.onPaused),this.player.ima.removeEventListener(e.RESUMED,this.onResumed),this.player.ima.removeEventListener(e.COMPLETE,this.onComplete),this.player.ima.removeEventListener(e.SKIPPED,this.onSkipped),this.player.ima.removeEventListener(e.CLICK,this.onClick),this.player.ima.removeEventListener(e.FIRST_QUARTILE,this.onFirstQuartile),this.player.ima.removeEventListener(e.MIDPOINT,this.onMidpoint),this.player.ima.removeEventListener(e.THIRD_QUARTILE,this.onThirdQuartile),this.player.ima.removeEventListener(t,this.onError),this.lastAdData=null}onLoaded(e){this.lastAdData=this.getAdData(),this.sendRequest()}onStart(e){this.lastAdData=this.getAdData(),this._lastAdWebkitBitrate=0,this.sendStart()}onComplete(e){this.sendEnd(),this.lastAdData=null}onSkipped(e){this.sendEnd({skipped:!0}),this.lastAdData=null}onError(e){const t=e.getError(),i=t.getErrorCode(),s=t.getMessage();this.sendError({adError:t,errorCode:i,errorMessage:s})}onClick(e){this.sendAdClick()}onFirstQuartile(){this.sendAdQuartile({adQuartile:1})}onMidpoint(){this.sendAdQuartile({adQuartile:2})}onThirdQuartile(){this.sendAdQuartile({adQuartile:3})}onPaused(){this.sendPause()}onResumed(){this.sendResume()}getAdData(){try{const e=this.player.ima.getAdsManager();if(e){const t=e.getCurrentAd();if(t)return{adId:t.getAdId(),creativeId:t.getCreativeId(),duration:t.getDuration(),mediaUrl:t.getMediaUrl(),title:t.getTitle(),podInfo:t.getAdPodInfo()?.data,renditionBitrate:t.getVastMediaBitrate()}}return null}catch(e){return null}}getAdVideoElement(){if(this.player.ima&&this.player.ima.controller&&this.player.ima.controller.adUi){const e=this.player.ima.controller.adUi.adContainerDiv;if(e){const t=e.querySelector("video");if(t)return t}}}}t.default=n},302:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BrightcoveImaAdsTracker",{enumerable:!0,get:function(){return h.default}}),Object.defineProperty(t,"ContribHlsTech",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"FreewheelAdsTracker",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(t,"HlsJsTech",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(t,"ImaAdsTracker",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(t,"ShakaTech",{enumerable:!0,get:function(){return d.default}}),Object.defineProperty(t,"VideojsAdsTracker",{enumerable:!0,get:function(){return o.default}}),t.default=void 0;var s=g(i(555)),r=g(i(330)),a=g(i(409)),n=g(i(257)),d=g(i(338)),o=g(i(472)),l=g(i(298)),h=g(i(64)),u=g(i(38)),c=g(i(717));function g(e){return e&&e.__esModule?e:{default:e}}class f extends s.default.VideoTracker{constructor(e,t){super(e,t),this.isContentEnd=!1,this.imaAdCuePoints="",this.daiInitialized=!1,s.default.Core.addTracker(this,t)}getTech(){let e=this.player.tech({IWillNotUseThisInPlugins:!0});if(e){if(a.default.isUsing(e))return new a.default(e);if(n.default.isUsing(e))return new n.default(e);if(d.default.isUsing(e))return new d.default(e)}}getTrackerName(){return"videojs"}getInstrumentationProvider(){return"New Relic"}getInstrumentationName(){return this.getPlayerName()}getInstrumentationVersion(){return this.getPlayerVersion()}getTrackerVersion(){return r.default.version}getPlayhead(){return this.player.ads&&"ads-playback"===this.player.ads.state&&this.player.ads.snapshot&&this.player.ads.snapshot.currentTime?1e3*this.player.ads.snapshot.currentTime:this.player.absoluteTime?1e3*this.player.absoluteTime():1e3*this.player.currentTime()}getDuration(){return this.player.mediainfo&&void 0!==this.player.mediainfo.duration?1e3*this.player.mediainfo.duration:1e3*this.player.duration()}getTitle(){return this.player?.mediainfo?.name}getId(){return this.player?.mediainfo?.id}getLanguage(){return this.player?.language()}getSrc(){let e=this.getTech();return e&&e.getSrc?e.getSrc():this.player.currentSrc()}getPlayerName(){return this.player?.name()||"videojs"}getPlayerVersion(){return this.player?.version||videojs.VERSION}isMuted(){return this.player.muted()}getBitrate(){const e=this.getTech();return e?.tech?.stats?.bandwidth}getRenditionName(){let e=this.getTech();if(e&&e.getRenditionName)return e.getRenditionName()}getRenditionBitrate(){let e=this.getTech();if(e&&e.getRenditionBitrate)return e.getRenditionBitrate()}getRenditionHeight(){let e=this.getTech();return e&&e.getRenditionHeight?e.getRenditionHeight():this.player.videoHeight()}getRenditionWidth(){let e=this.getTech();return e&&e.getRenditionWidth?e.getRenditionWidth():this.player.videoWidth()}getPlayrate(){return this.player.playbackRate()}isAutoplayed(){return this.player.autoplay()}isFullscreen(){return this.player.isFullscreen()}getPreload(){return this.player.preload()}registerListeners(){s.default.Log.debugCommonVideoEvents(this.player,["adstart","adend","adskip","adsready","adserror","dispose"]),this.player.on("loadstart",this.onDownload.bind(this)),this.player.on("loadeddata",this.onDownload.bind(this)),this.player.on("loadedmetadata",this.onDownload.bind(this)),this.player.on("adsready",this.onAdsready.bind(this)),this.player.on("adstart",this.onAdStart.bind(this)),this.player.on("adend",this.onAdEnd.bind(this)),this.player.on("play",this.onPlay.bind(this)),this.player.on("pause",this.onPause.bind(this)),this.player.on("playing",this.onPlaying.bind(this)),this.player.on("abort",this.onAbort.bind(this)),this.player.on("ended",this.onEnded.bind(this)),this.player.on("dispose",this.onDispose.bind(this)),this.player.on("seeking",this.onSeeking.bind(this)),this.player.on("seeked",this.onSeeked.bind(this)),this.player.on("error",this.onError.bind(this)),this.player.on("waiting",this.onWaiting.bind(this)),this.player.on("timeupdate",this.onTimeupdate.bind(this)),this.player.on("ads-allpods-completed",this.OnAdsAllpodsCompleted.bind(this)),this.player.on("stream-manager",this.onStreamManager.bind(this))}unregisterListeners(){this.player.off("loadstart",this.onDownload),this.player.off("loadeddata",this.onDownload),this.player.off("loadedmetadata",this.onDownload),this.player.off("adsready",this.onAdsready),this.player.off("adstart",this.onAdStart),this.player.off("adend",this.onAdEnd),this.player.off("play",this.onPlay),this.player.off("pause",this.onPause),this.player.off("playing",this.onPlaying),this.player.off("abort",this.onAbort),this.player.off("ended",this.onEnded),this.player.off("dispose",this.onDispose),this.player.off("seeking",this.onSeeking),this.player.off("seeked",this.onSeeked),this.player.off("error",this.onError),this.player.off("waiting",this.onWaiting),this.player.off("timeupdate",this.onTimeupdate),this.player.off("ads-allpods-completed",this.OnAdsAllpodsCompleted.bind(this)),this.player.off("stream-manager",this.onStreamManager.bind(this))}onDownload(e){this.sendDownload({state:e.type})}onStreamManager(e){if(!this.adsTracker&&e.StreamManager){const t=new c.default(this.player);t.setStreamManager(e.StreamManager),this.setAdsTracker(t)}}onAdsready(){this.adsTracker||(h.default.isUsing(this.player)?this.setAdsTracker(new h.default(this.player)):l.default.isUsing(this.player)?this.setAdsTracker(new l.default(this.player)):u.default.isUsing(this.player)?this.setAdsTracker(new u.default(this.player)):this.setAdsTracker(new o.default(this.player)))}onAdStart(){this.currentAdPlaying=!0,this.imaAdCuePoints||(this.imaAdCuePoints=this.player?.ima?.getAdsManager().getCuePoints())}onAdEnd(){this.isContentEnd&&this.sendEnd()}OnAdsAllpodsCompleted(){this.onEnded.bind(this),this.FreewheelAdsCompleted=!0}onPlay(){this.sendRequest()}onPause(){this.sendPause()}onPlaying(){this.sendResume(),this.sendBufferEnd()}onAbort(){this.sendEnd()}onEnded(){this.adsTracker?(this.isContentEnd=!0,this.imaAdCuePoints&&!this.imaAdCuePoints.includes(-1)&&this.sendEnd()):this.sendEnd()}onDispose(){this.sendEnd()}onSeeking(){this.sendSeekStart()}onSeeked(){this.sendSeekEnd()}onError(){const e=this.player.error(),t=e.code,i=e.message;this.player.error&&this.player.error()&&this.sendError({errorCode:t,errorMessage:i})}onWaiting(e){this.sendBufferStart()}onTimeupdate(e){this.getPlayhead()>.1&&this.sendStart()}}t.default=f},330:e=>{e.exports=JSON.parse('{"name":"@newrelic/video-videojs","version":"4.0.1","description":"New relic tracker for Videojs","main":"dist/cjs/index.js","module":"dist/esm/index.js","scripts":{"build":"webpack --mode production","build:dev":"webpack --mode development","watch":"webpack --mode production --progress --color --watch","watch:dev":"webpack --progress --color --watch --mode development","prezip":"npm run build","zip":"zip -P newrelic -x \'*.DS_Store\' -x \'samples/agent.js\' -r videojs.zip dist samples README.md CHANGELOG.md EULA.md","clean":"rm -rf dist *.zip","deploy":"node scripts/deploy.js","third-party-updates":"oss third-party manifest --includeOptDeps && oss third-party notices --includeOptDeps && git add THIRD_PARTY_NOTICES.md third_party_manifest.json"},"repository":{"type":"git","url":"https://github.com/newrelic/video-videojs-js.git"},"author":"Jordi Aguilar","contributors":["Andreu Santarén Llop","Bharat Saraswat","Malay Chandan"],"license":"Apache-2.0","devDependencies":{"@babel/core":"^7.24.5","@babel/plugin-transform-modules-commonjs":"^7.24.1","@babel/preset-env":"^7.24.5","aws-sdk":"^2.920.0","@newrelic/newrelic-oss-cli":"^0.1.2","babel-loader":"^9.1.3","videojs-ima":"2.1.0","webpack":"^5.91.0","webpack-cli":"^4.9.2"},"dependencies":{"@newrelic/video-core":"^4.0.0"},"files":["THIRD_PARTY_NOTICES.md","dist","CHANGELOG.md","README.md","src","!test"],"publishConfig":{"access":"public"}}')},338:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class i{constructor(e){this.tech=e.shakaPlayer}getSrc(e){try{return this.tech.getManifestUri()}catch(e){}return null}getRenditionBitrate(e){try{return this.tech.getStats().streamBandwidth}catch(e){}return null}getRenditionWidth(e){try{var t=this.tech.getVariantTracks();for(var i in t){var s=t[i];if(s.active&&"video"===s.type)return s.width}}catch(e){}return null}getRenditionHeight(e){try{var t=this.tech.getVariantTracks();for(var i in t){var s=t[i];if(s.active&&"video"===s.type)return s.height}}catch(e){}return null}}t.default=i,i.isUsing=function(e){return!!e.shakaPlayer}},409:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class i{constructor(e){this.tech=e.vhs}getRenditionName(){try{var e=this.tech.playlists.media();if(e&&e.attributes)return e.attributes.NAME}catch(e){}return null}getRenditionBitrate(){try{var e=this.tech.playlists.media();if(e&&e.attributes)return e.attributes.BANDWIDTH}catch(e){}return null}getRenditionWidth(){try{var e=this.tech.playlists.media();if(e&&e.attributes&&e.attributes.RESOLUTION)return e.attributes.RESOLUTION.width}catch(e){}return null}getRenditionHeight(){try{var e=this.tech.playlists.media();if(e&&e.attributes&&e.attributes.RESOLUTION)return e.attributes.RESOLUTION.height}catch(e){}return null}}t.default=i,i.isUsing=function(e){return!!e.vhs}},472:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=o(i(555)),r=o(i(330)),a=o(i(409)),n=o(i(257)),d=o(i(338));function o(e){return e&&e.__esModule?e:{default:e}}class l extends s.default.VideoTracker{getTech(){const e=this.player.tech({IWillNotUseThisInPlugins:!0});if(e){if(a.default.isUsing(e))return new a.default(e);if(n.default.isUsing(e))return new n.default(e);if(d.default.isUsing(e))return new d.default(e)}}getTrackerName(){return"videojs-ads"}getTrackerVersion(){return r.default.version}isMuted(){return this.player.muted()}getRenditionHeight(){return null}getRenditionWidth(){return null}getPlayerName(){return"videojs-ads"}getPlayerVersion(){return this.player.ads.VERSION}registerListeners(){s.default.Log.debugCommonVideoEvents(this.player,[null,"ads-request","ads-load","adstart","adend","adskip","adserror","ads-click","ads-pod-started","ads-pod-ended","ads-first-quartile","ads-midpoint","ads-third-quartile","ads-pause","ads-play","adtimeout"]),this.player.on("ads-request",this.onAdrequest.bind(this)),this.player.on("ads-load",this.onAdload.bind(this)),this.player.on("adstart",this.onAdstart.bind(this)),this.player.on("adend",this.onAdend.bind(this)),this.player.on("adskip",this.onAdskip.bind(this)),this.player.on("adserror",this.onAdserror.bind(this)),this.player.on("ads-click",this.onAdsClick.bind(this)),this.player.on("ads-pod-started",this.onPodStart.bind(this)),this.player.on("ads-pod-ended",this.onPodEnd.bind(this)),this.player.on("ads-first-quartile",this.onFirstQuartile.bind(this)),this.player.on("ads-midpoint",this.onMidpoint.bind(this)),this.player.on("ads-third-quartile",this.onThirdQuartile.bind(this)),this.player.on("ads-pause",this.onAdspause.bind(this)),this.player.on("ads-play",this.onAdsplay.bind(this))}unregisterListeners(){this.player.off("ads-request",this.onAdrequest),this.player.off("ads-load",this.onAdload),this.player.off("adstart",this.onAdstart),this.player.off("adend",this.onAdend),this.player.off("adskip",this.onAdskip),this.player.off("adserror",this.onAdserror),this.player.off("ads-click",this.onAdsClick),this.player.off("ads-pod-started",this.onPodStart),this.player.off("ads-pod-ended",this.onPodEnd),this.player.off("ads-first-quartile",this.onFirstQuartile),this.player.off("ads-midpoint",this.onMidpoint),this.player.off("ads-third-quartile",this.onThirdQuartile),this.player.off("ads-pause",this.onAdspause),this.player.off("ads-play",this.onAdsplay)}onAdrequest(e){this.sendRequest(),this.sendDownload({state:"ads-request"})}onAdload(e){this.sendDownload({state:"ads-load"})}onAdstart(e){this.sendRequest(),this.sendStart()}onAdend(e){this.sendEnd()}onAdskip(e){this.sendEnd({skipped:!0})}onAdserror(e){this.sendError()}onAdsClick(e){this.sendAdClick({url:"unknown"})}onPodStart(e){this.sendAdBreakStart()}onPodEnd(e){this.sendAdBreakEnd()}onFirstQuartile(){this.sendAdQuartile({quartile:1})}onMidpoint(){this.sendAdQuartile({quartile:2})}onThirdQuartile(){this.sendAdQuartile({quartile:3})}onAdspause(){this.sendPause()}onAdsplay(){this.sendResume()}}t.default=l},555:(e,t,i)=>{i.r(t),i.d(t,{__esModule:()=>d,default:()=>o});var s={28:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.OptimizedHttpClient=void 0;var s,r=i(347),a=(s=i(144))&&s.__esModule?s:{default:s};class n{async send(e,t){const{url:i,payload:s,options:r={}}=e;try{if(!i||!s)throw new Error("URL and payload are required");const e={url:i,payload:s,options:r,callback:t};await this.executeRequest(e)}catch(e){a.default.error("Failed to send request:",e.message),t({retry:!1,status:0,error:e.message})}}async executeRequest(e){const{url:t,payload:i,options:s,callback:r}=e,a=Date.now();try{const r=JSON.stringify(i.body);if(s.isFinalHarvest&&navigator.sendBeacon){const i=await this.sendWithBeacon(t,r),s={success:i,status:i?204:0};return void this.handleRequestComplete(e,s,a)}const n=await this.fetchWithTimeout(t,{method:"POST",body:r,headers:{"Content-Type":"application/json"},keepalive:s.isFinalHarvest},1e4),d={success:n.ok,status:n.status,statusText:n.statusText};this.handleRequestComplete(e,d,a)}catch(t){const i={success:!1,status:0,error:t.message};this.handleRequestComplete(e,i,a)}}handleRequestComplete(e,t){const{callback:i}=e;i({retry:!t.success&&(0===t.status||(0,r.shouldRetry)(t.status)),status:t.status,error:t.error})}async sendWithBeacon(e,t){try{return navigator.sendBeacon(e,t)}catch(e){return a.default.warn("sendBeacon failed, falling back to fetch:",e.message),!1}}async fetchWithTimeout(e,t,i){const s=new AbortController,r=setTimeout(()=>s.abort(),i);try{const i=await fetch(e,{...t,signal:s.signal});return clearTimeout(r),i}catch(e){if(clearTimeout(r),"AbortError"===e.name)throw new Error(`Request timeout after ${i}ms`);throw e}}}t.OptimizedHttpClient=n,t.default=n},51:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class i{}i.AdPositions={PRE:"pre",MID:"mid",POST:"post"},i.COLLECTOR={US:["bam.nr-data.net","bam-cell.nr-data.net"],EU:"bam.eu01.nr-data.net",Staging:"staging-bam-cell.nr-data.net",GOV:"gov-bam.nr-data.net"},i.VALID_EVENT_TYPES=["VideoAction","VideoAdAction","VideoErrorAction","VideoCustomAction"],i.MAX_PAYLOAD_SIZE=1048576,i.MAX_BEACON_SIZE=61440,i.MAX_EVENTS_PER_BATCH=1e3,i.INTERVAL=1e4,t.default=i},144:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class i{static error(...e){s(e,i.Levels.ERROR,"darkred")}static warn(...e){s(e,i.Levels.WARNING,"darkorange")}static notice(...e){s([].slice.call(arguments),i.Levels.NOTICE,"darkcyan")}static debug(...e){s(e,i.Levels.DEBUG,"indigo")}static debugCommonVideoEvents(e,t,s){try{if(i.level<=i.Levels.DEBUG){s=s||function(e){i.debug("Event: "+e.type)};var r=["canplay","buffering","waiting","ended","play","playing","pause","resume","error","abort","seek","seeking","seeked","stalled","dispose","loadeddata","loadstart","loadedmetadata"];t&&(null===t[0]?(t.shift(),r=t):r=r.concat(t));for(var a=0;a<r.length;a++)"function"==typeof e?e.call(window,r[a],s):e.on?e.on(r[a],s):e.addEventListener?e.addEventListener(r[a],s):e.addEventHandler?e.addEventHandler(r[a],s):i.warn("debugCommonVideoEvents: No common listener function found for ",e)}}catch(e){i.warn(e)}}}function s(e,t,s){t=t||i.Levels.NOTICE,s=s||"darkcyan";var n,d,o=i.prefix;i.includeTime&&(o+="["+("0"+(n=new Date).getDate()).slice(-2)+":"+("0"+n.getMinutes()).slice(-2)+":"+("0"+n.getSeconds()).slice(-2)+"."+("00"+n.getMilliseconds()).slice(-3)+"] "),o+=function(e){return a[e]}(t)+":",i.level<=t&&t!==i.Levels.SILENT&&(!i.colorful||"undefined"!=typeof document&&document.documentMode?r(e,o):(d=t===i.Levels.ERROR&&console.error?console.error:t===i.Levels.WARNING&&console.warn?console.warn:t===i.Levels.DEBUG&&console.debug&&null==window.cast?console.debug:console.log,o="%c"+o,e.splice(0,0,o,"color: "+s),d.apply(console,e)))}function r(e,t){if(e instanceof Array)for(var i in e)r(e[i],t);else"string"==typeof e?console.log(t+" "+e):(console.log(t+"↵"),console.log(e))}i.Levels={SILENT:5,ERROR:4,WARNING:3,NOTICE:2,DEBUG:1,ALL:0},i.level=i.Levels.ERROR,i.colorful=!0,i.includeTime=!0,i.prefix="[nrvideo]";const a={4:"e",3:"w",2:"n",1:"d"};!function(){if("undefined"!=typeof window&&window.location&&window.location.search){var e=/\?.*&*nrvideo-debug=(.+)/i.exec(window.location.search);null!==e&&("true"===e[1]?i.level=i.Levels.ALL:i.level=e[1]),null!==/\?.*&*nrvideo-colors=false/i.exec(window.location.search)&&(i.colorful=!1)}}(),t.default=i},302:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=l(i(330)),r=l(i(568)),a=l(i(455)),n=l(i(51)),d=i(487),o=l(i(144));function l(e){return e&&e.__esModule?e:{default:e}}class h extends r.default{constructor(e){super(),this.customData={},this.heartbeat=null,this.parentTracker=null,this._trackerReadyChrono=new a.default,this._trackerReadyChrono.start(),this._actionTable=n.default.ACTION_TABLE,this._actionAdTable=n.default.ACTION_AD_TABLE,e=e||{},this.setOptions(e)}setOptions(e){e&&(e.parentTracker&&(this.parentTracker=e.parentTracker),e.customData&&(this.customData=e.customData),e.heartbeat&&(this.heartbeat=e.heartbeat))}dispose(){this.unregisterListeners()}registerListeners(){}unregisterListeners(){}getHeartbeat(){return this.state._isAd?2e3:this.heartbeat?this.heartbeat:this.parentTracker&&this.parentTracker.heartbeat?this.parentTracker.heartbeat:3e4}startHeartbeat(){this._heartbeatInterval=setInterval(this.sendHeartbeat.bind(this),Math.max(this.getHeartbeat(),2e3))}stopHeartbeat(){this._heartbeatInterval&&clearInterval(this._heartbeatInterval)}sendHeartbeat(e){this.sendVideoAction(h.Events.HEARTBEAT,e)}getAttributes(e,t){(e=e||{}).trackerName=this.getTrackerName(),e.trackerVersion=this.getTrackerVersion(),e.coreVersion=s.default.version,e.timeSinceTrackerReady=this._trackerReadyChrono.getDeltaTime();for(let t in this.customData)e[t]=this.customData[t];return null!=document.hidden&&(e.isBackgroundEvent=document.hidden),e}getTrackerVersion(){return s.default.version}getTrackerName(){return"base-tracker"}sendVideoAction(e,t){this.emit("VideoAction",e,this.getAttributes(t))}sendVideoAdAction(e,t){this.emit("VideoAdAction",e,this.getAttributes(t))}sendVideoErrorAction(e,t){let i=this.isAd()?"adError":"videoError";this.emit("VideoErrorAction",e,this.getAttributes(t,i))}sendVideoCustomAction(e,t){this.emit("VideoCustomAction",e,this.getAttributes(t,"customAction"))}setHarvestInterval(e){if(d.videoAnalyticsHarvester)try{d.videoAnalyticsHarvester.setHarvestInterval(e)}catch(e){return void o.default.error("Failed to set harvest interval:",e.message)}else o.default.error("VideoAnalyticsHarvester is not available")}}h.Events={HEARTBEAT:"HEARTBEAT"},t.default=h},328:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=a(i(455)),r=a(i(144));function a(e){return e&&e.__esModule?e:{default:e}}t.default=class{constructor(){this.reset(),this._createdAt=Date.now(),this._hb=!0,this._acc=0,this._bufferAcc=0}reset(){this._viewSession=null,this._viewCount=0,this._isAd=!1,this.numberOfErrors=0,this.numberOfAds=0,this.numberOfVideos=0,this.totalPlaytime=0,this.totalAdPlaytime=0,this.isAdBreak=!1,this.initialBufferingHappened=!1,this.resetFlags(),this.resetChronos()}resetFlags(){this.isPlayerReady=!1,this.isRequested=!1,this.isStarted=!1,this.isPaused=!1,this.isSeeking=!1,this.isBuffering=!1,this.isPlaying=!1}resetChronos(){this.timeSinceRequested=new s.default,this.timeSinceStarted=new s.default,this.timeSincePaused=new s.default,this.timeSinceSeekBegin=new s.default,this.timeSinceBufferBegin=new s.default,this.timeSinceAdBreakStart=new s.default,this.timeSinceLastDownload=new s.default,this.timeSinceLastHeartbeat=new s.default,this.timeSinceLastRenditionChange=new s.default,this.timeSinceLastAdQuartile=new s.default,this.timeSinceLastAd=new s.default,this.timeSinceResumed=new s.default,this.timeSinceSeekEnd=new s.default,this.playtimeSinceLastEvent=new s.default,this.customTimeSinceAttributes={},this.elapsedTime=new s.default,this.bufferElapsedTime=new s.default}isAd(){return this._isAd}setIsAd(e){this._isAd=e}setTimeSinceAttribute(e){this.customTimeSinceAttributes[e]=new s.default,this.customTimeSinceAttributes[e].start()}removeTimeSinceAttribute(e){delete this.customTimeSinceAttributes[e]}getViewSession(){if(!this._viewSession){let e=(new Date).getTime(),t=Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2);this._viewSession=e+"-"+t}return this._viewSession}getViewId(){return this.getViewSession()+"-"+this._viewCount}getStateAttributes(e){e=e||{},this.isAd()?(this.isRequested&&(e.timeSinceAdRequested=this.timeSinceRequested.getDeltaTime(),e.timeSinceLastAdHeartbeat=this.timeSinceLastHeartbeat.getDeltaTime()),this.isStarted&&(e.timeSinceAdStarted=this.timeSinceStarted.getDeltaTime()),this.isPaused&&(e.timeSinceAdPaused=this.timeSincePaused.getDeltaTime()),this.isBuffering&&(e.timeSinceAdBufferBegin=this.timeSinceBufferBegin.getDeltaTime()),this.isSeeking&&(e.timeSinceAdSeekBegin=this.timeSinceSeekBegin.getDeltaTime()),this.isAdBreak&&(e.timeSinceAdBreakBegin=this.timeSinceAdBreakStart.getDeltaTime()),e.numberOfAds=this.numberOfAds):(this.isRequested&&(e.timeSinceRequested=this.timeSinceRequested.getDeltaTime(),e.timeSinceLastHeartbeat=this.timeSinceLastHeartbeat.getDeltaTime()),this.isStarted&&(e.timeSinceStarted=this.timeSinceStarted.getDeltaTime()),this.isPaused&&(e.timeSincePaused=this.timeSincePaused.getDeltaTime()),this.isBuffering&&(e.timeSinceBufferBegin=this.timeSinceBufferBegin.getDeltaTime()),this.isSeeking&&(e.timeSinceSeekBegin=this.timeSinceSeekBegin.getDeltaTime()),e.timeSinceLastAd=this.timeSinceLastAd.getDeltaTime(),e.numberOfVideos=this.numberOfVideos),e.numberOfErrors=this.numberOfErrors,this.isAd()||(this.playtimeSinceLastEvent.startTime>0?e.playtimeSinceLastEvent=this.playtimeSinceLastEvent.getDeltaTime():e.playtimeSinceLastEvent=0,this.isPlaying?this.playtimeSinceLastEvent.start():this.playtimeSinceLastEvent.reset(),this.totalPlaytime+=e.playtimeSinceLastEvent,e.totalPlaytime=this.totalPlaytime);for(const[t,i]of Object.entries(this.customTimeSinceAttributes))e[t]=i.getDeltaTime();return e}calculateBufferType(e){let t="";return t=e?"initial":this.isSeeking?"seek":this.isPaused?"pause":"connection",r.default.debug("Buffer Type = "+t),t}goViewCountUp(){this._viewCount++}goPlayerReady(){return!this.isPlayerReady&&(this.isPlayerReady=!0,!0)}goRequest(){return!this.isRequested&&(this.isRequested=!0,this.timeSinceLastAd.reset(),this.timeSinceRequested.start(),!0)}goStart(){return!(!this.isRequested||this.isStarted||(this.isAd()?this.numberOfAds++:this.numberOfVideos++,this.isStarted=!0,this.isPlaying=!0,this.timeSinceStarted.start(),this.playtimeSinceLastEvent.start(),0))}goEnd(){return!!this.isRequested&&(this.numberOfErrors=0,this.resetFlags(),this.timeSinceRequested.stop(),this.timeSinceStarted.stop(),this.playtimeSinceLastEvent.stop(),!0)}goPause(){return!(!this.isStarted||this.isPaused||(this.isPaused=!0,this.isPlaying=!1,this.timeSincePaused.start(),this.playtimeSinceLastEvent.stop(),this.timeSinceResumed.reset(),this.isBuffering&&(this._bufferAcc+=this.bufferElapsedTime.getDeltaTime()),this.elapsedTime.start(),0))}goResume(){return!(!this.isStarted||!this.isPaused||(this.isPaused=!1,this.isPlaying=!0,this.timeSincePaused.stop(),this.timeSinceResumed.start(),this._hb?(this._acc=this.elapsedTime.getDeltaTime(),this._hb=!1):(this.isBuffering&&this.bufferElapsedTime.start(),this._acc+=this.elapsedTime.getDeltaTime()),0))}goBufferStart(){return!(!this.isRequested||this.isBuffering||(this.isBuffering=!0,this.isPlaying=!1,this.timeSinceBufferBegin.start(),this.bufferElapsedTime.start(),0))}goBufferEnd(){return!(!this.isRequested||!this.isBuffering||(this.isBuffering=!1,this.isPlaying=!0,this.timeSinceBufferBegin.stop(),this._hb?(this._bufferAcc=this.bufferElapsedTime.getDeltaTime(),this._hb=!1):this._bufferAcc+=this.bufferElapsedTime.getDeltaTime(),0))}goSeekStart(){return!(!this.isStarted||this.isSeeking||(this.isSeeking=!0,this.isPlaying=!1,this.timeSinceSeekBegin.start(),this.timeSinceSeekEnd.reset(),0))}goSeekEnd(){return!(!this.isStarted||!this.isSeeking||(this.isSeeking=!1,this.isPlaying=!0,this.timeSinceSeekBegin.stop(),this.timeSinceSeekEnd.start(),0))}goAdBreakStart(){return!this.isAdBreak&&(this.isAdBreak=!0,this.timeSinceAdBreakStart.start(),!0)}goAdBreakEnd(){return!!this.isAdBreak&&(this.isRequested=!1,this.isAdBreak=!1,this.totalAdPlaytime=this.timeSinceAdBreakStart.getDeltaTime(),this.timeSinceAdBreakStart.stop(),!0)}goDownload(){this.timeSinceLastDownload.start()}goHeartbeat(){this.timeSinceLastHeartbeat.start()}goRenditionChange(){this.timeSinceLastRenditionChange.start()}goAdQuartile(){this.timeSinceLastAdQuartile.start()}goError(){this.isError=!0,this.numberOfErrors++}goLastAd(){this.timeSinceLastAd.start()}}},330:e=>{e.exports=JSON.parse('{"name":"@newrelic/video-core","version":"4.0.0","description":"New Relic video tracking core library","main":"./dist/cjs/index.js","module":"./dist/esm/index.js","scripts":{"build":"webpack --mode production","build:dev":"webpack --mode development","watch":"webpack --mode production --progress --color --watch","watch:dev":"webpack --progress --color --watch","clean":"rm -rf dist coverage doc","test":"nyc --reporter=html --reporter=text mocha --require @babel/register","doc":"jsdoc -c jsdoc.json -d documentation","deploy":"node scripts/deploy.js","third-party-updates":"oss third-party manifest --includeOptDeps && oss third-party notices --includeOptDeps && git add THIRD_PARTY_NOTICES.md third_party_manifest.json"},"repository":{"type":"git","url":"https://github.com/newrelic/video-core-js"},"author":"Jordi Aguilar","contributors":["Andreu Santarén Llop","Malay Chandan","Bharat Sarsawat"],"license":"Apache-2.0","devDependencies":{"@babel/core":"^7.24.5","@babel/plugin-transform-modules-commonjs":"^7.24.1","@newrelic/newrelic-oss-cli":"^0.1.2","@babel/preset-env":"^7.24.5","@babel/register":"^7.24.6","aws-sdk":"^2.920.0","babel-loader":"^9.1.3","chai":"^4.3.4","diff":"^5.0.0","jsdom":"^25.0.1","mocha":"^10.4.0","nyc":"^15.1.0","sinon":"^2.4.1","webpack":"^5.91.0","webpack-cli":"^4.9.2"},"files":["THIRD_PARTY_NOTICES.md","dist","src","CHANGELOG.md","LICENSE","README.md","src","!test"],"publishConfig":{"access":"public"}}')},347:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.buildUrl=function(e){try{if(!window.NRVIDEO||!window.NRVIDEO.info)throw new Error("NRVIDEO info is not available.");let{beacon:t,licenseKey:i,applicationID:r}=window.NRVIDEO.info;if(!t||!i)throw new Error("Options object provided by New Relic is not correctly initialized");return r?`https://${e||t}/ins/1/${i}?a=${r}&v=${s.default.version}&ref=${window.location.href}&ca=VA`:`https://${e||t}/ins/1/${i}?&v=${s.default.version}&ref=${window.location.href}&ca=VA`}catch(e){return console.error(e.message),null}},t.compressPayload=function(e){const t=JSON.stringify(e),i=new Blob([t]).stream(),s=new CompressionStream("gzip"),r=i.pipeThrough(s);return new Response(r).blob()},t.dataSize=function(e){if("string"==typeof e&&e.length)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return function(e){try{return JSON.stringify(e,n())??""}catch(e){return r.default.error("Error stringifying value:",e.message),""}}(e).length}catch(e){return}}},t.decompressPayload=async function(e){try{let t;if(e instanceof Blob)t=e.stream();else if(e instanceof ArrayBuffer)t=new Blob([e]).stream();else{if(!(e instanceof Uint8Array))throw new Error("Unsupported compressed data type");t=new Blob([e]).stream()}const i=new DecompressionStream("gzip"),s=t.pipeThrough(i),r=new Response(s),a=await r.text();return JSON.parse(a)}catch(e){throw new Error(`Failed to decompress payload: ${e.message}`)}},t.shouldRetry=function(e){switch(e){case 408:case 429:case 500:return!0;case 401:case 403:case 404:return!1}return e>=502&&e<=504||e>=512&&e<=530};var s=a(i(330)),r=a(i(144));function a(e){return e&&e.__esModule?e:{default:e}}const n=()=>{const e=new WeakSet;return(t,i)=>{if("object"==typeof i&&null!==i){if(e.has(i))return;e.add(i)}return i}}},374:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.HarvestScheduler=void 0;var s=i(431),r=i(413),a=i(28),n=i(347),d=l(i(51)),o=l(i(144));function l(e){return e&&e.__esModule?e:{default:e}}t.HarvestScheduler=class{constructor(e){this.eventBuffer=e,this.retryQueueHandler=new r.RetryQueueHandler,this.httpClient=new a.OptimizedHttpClient,this.fallBackUrl="",this.retryCount=0,this.eventBuffer instanceof s.NrVideoEventAggregator&&this.eventBuffer.setSmartHarvestCallback((e,t)=>this.triggerSmartHarvest(e,t)),this.isStarted=!1,this.currentTimerId=null,this.harvestCycle=d.default.INTERVAL,this.isHarvesting=!1,this.setupPageLifecycleHandlers()}startScheduler(){this.isStarted?o.default.warn("Harvest scheduler is already started"):(this.isStarted=!0,o.default.notice("Starting harvest scheduler",{harvestCycle:this.harvestCycle,eventBufferSize:this.eventBuffer?this.eventBuffer.size():0}),this.scheduleNextHarvest())}stopScheduler(){this.isStarted&&(this.isStarted=!1,this.currentTimerId&&(clearTimeout(this.currentTimerId),this.currentTimerId=null),o.default.notice("Harvest scheduler stopped"))}async triggerSmartHarvest(e,t){if(o.default.notice(`${e} harvest triggered at ${t}% threshold`,{type:e,threshold:t}),this.eventBuffer&&!this.eventBuffer.isEmpty()){this.currentTimerId&&(clearTimeout(this.currentTimerId),this.currentTimerId=null);try{await this.triggerHarvest({})}catch(t){o.default.error(`${e} harvest failed:`,t.message)}finally{this.isStarted&&this.scheduleNextHarvest()}}}scheduleNextHarvest(){if(!this.isStarted)return;const e=this.harvestCycle;this.currentTimerId=setTimeout(()=>this.onHarvestInterval(),e)}async onHarvestInterval(){try{const e=this.eventBuffer&&!this.eventBuffer.isEmpty(),t=this.retryQueueHandler&&this.retryQueueHandler.getQueueSize()>0;if(!e&&!t)return;await this.triggerHarvest({})}catch(e){o.default.error("Error during scheduled harvest:",e.message)}finally{this.scheduleNextHarvest()}}async triggerHarvest(e={}){if(this.isHarvesting)return{success:!1,reason:"harvest_in_progress"};this.isHarvesting=!0;try{let t=this.drainEvents(e);if(e.isFinalHarvest){const e=d.default.MAX_BEACON_SIZE;(0,n.dataSize)(t)>e&&(t=this.trimEventsToFit(t,e))}const i=await this.sendChunk(t,e,!0);return{success:i.success,totalChunks:1,results:[i]}}catch(e){return o.default.error("Harvest cycle failed:",e.message),this.handleHarvestFailure(e),{success:!1,error:e.message,consecutiveFailures:this.consecutiveFailures}}finally{this.isHarvesting=!1}}trimEventsToFit(e,t){if(0===e.length)return e;const i=[];let s=0;for(let r=e.length-1;r>=0;r--){const a=e[r],d=(0,n.dataSize)({ins:[a,...i]});d>t||(i.unshift(a),s=d)}const r=e.length-i.length;if(r>0){const a=e.slice(0,r);o.default.warn(`Discarded ${r} events to fit beacon size limit`,{originalCount:e.length,trimmedCount:i.length,finalSize:s,maxSize:t}),this.retryQueueHandler&&this.retryQueueHandler.addFailedEvents(a)}return i}drainEvents(){const e=this.eventBuffer.drain();let t=[...e],i=(0,n.dataSize)(e);if(this.retryQueueHandler&&this.retryQueueHandler.getQueueSize()>0){const e=d.default.MAX_PAYLOAD_SIZE-i,s=d.default.MAX_EVENTS_PER_BATCH-t.length;if(e>0&&s>0){const i=this.retryQueueHandler.getRetryEventsToFit(e,s);i.length>0&&(t=[...i,...t])}}return t}async sendChunk(e,t,i){const s={url:(0,n.buildUrl)(this.fallBackUrl),payload:{body:{ins:e}},options:{...t,isLastChunk:i}};return new Promise(t=>{this.httpClient.send(s,i=>{i.retry?this.handleRequestFailure(e):(this.retryCount=0,this.fallBackUrl=""),t({success:!i.retry,status:i.status,error:i.error,chunk:e,eventCount:e.length})})})}handleRequestFailure(e){this.retryQueueHandler.addFailedEvents(e),"US"===window.NRVIDEO?.info?.region&&(this.retryCount++,this.retryCount>5?(this.retryCount=0,this.fallBackUrl=""):this.retryCount>=2&&(this.fallBackUrl=d.default.COLLECTOR.US[1]))}handleHarvestFailure(e){this.consecutiveFailures++,o.default.warn("Harvest failure handled",{error:e.message,consecutiveFailures:this.consecutiveFailures})}updateHarvestInterval(e){"number"!=typeof e&&isNaN(e)?o.default.warn("Invalid newInterval provided to updateHarvestInterval"):e<1e3||e>3e5?o.default.warn("newInterval out of bounds (1000-300000), ignoring"):this.harvestCycle!==e&&(this.harvestCycle=e,o.default.notice("Updated harvestCycle:",this.harvestCycle),this.currentTimerId&&(clearTimeout(this.currentTimerId),this.currentTimerId=null),this.isStarted&&this.scheduleNextHarvest())}setupPageLifecycleHandlers(){let e=!1;const t=()=>{e||(e=!0,this.triggerHarvest({isFinalHarvest:!0,force:!0}))};document.addEventListener("visibilitychange",()=>{document.hidden&&t()}),window.addEventListener("pagehide",()=>{t()}),window.addEventListener("beforeunload",()=>{t()})}}},399:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s,r=(s=i(144))&&s.__esModule?s:{default:s},a=i(449),n=i(659);class d{static addTracker(e,t){t?.info&&(0,n.setVideoConfig)(t.info),e.on&&e.emit?(o.push(e),e.on("*",l),"function"==typeof e.trackerInit&&e.trackerInit()):r.default.error("Tried to load a non-tracker.",e)}static removeTracker(e){e.off("*",l),e.dispose();let t=o.indexOf(e);-1!==t&&o.splice(t,1)}static getTrackers(){return o}static send(e,t,i){const s={actionName:t,...i};return(0,a.recordEvent)(e,s)}static sendError(e){return(0,a.recordEvent)("VideoErrorAction",{actionName:"ERROR",...e})}static async forceHarvest(){try{const{videoAnalyticsHarvester:e}=i(487);return await e.forceHarvest()}catch(e){return r.default.error("Failed to force harvest:",e.message),{success:!1,error:e.message}}}}let o=[];function l(e){try{let t=function(e){let t={};for(let i in e)null!==e[i]&&void 0!==e[i]&&(t[i]=e[i]);return t}(e.data);r.default.level<=r.default.Levels.DEBUG?r.default.notice("Sent",e.type,t):r.default.notice("Sent",e.type),d.send(e.eventType,e.type,t)}catch(e){r.default.error("Error in event handler:",e.message)}}t.default=d},413:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.RetryQueueHandler=void 0;var s=n(i(144)),r=i(347),a=n(i(51));function n(e){return e&&e.__esModule?e:{default:e}}const{MAX_PAYLOAD_SIZE:d,MAX_EVENTS_PER_BATCH:o}=a.default;class l{constructor(){this.retryQueue=[],this.maxQueueSize=o,this.maxQueueSizeBytes=d}addFailedEvents(e){try{const t=Array.isArray(e)?e:[e];s.default.notice(`Adding ${t.length} failed events to retry queue`,{queueSizeBefore:this.retryQueue.length});for(const e of t){this.retryQueue.length>=this.maxQueueSize&&this.evictOldestEvent();const t=(0,r.dataSize)(e);for(;(0,r.dataSize)(this.retryQueue)+t>this.maxQueueSizeBytes;)this.evictOldestEvent();this.retryQueue.push({...e})}}catch(e){s.default.error("Failed to add events to retry queue:",e.message)}}discardEvent(e,t){s.default.warn("Discarded event",{reason:t,eventType:e.eventType})}evictOldestEvent(){if(this.retryQueue.length>0){const e=this.retryQueue.shift();this.discardEvent(e,"Queue full - evicted oldest")}}getRetryEventsToFit(e,t){const i=[];let s=0,a=0;for(let n=this.retryQueue.length-1;n>=0;n--){const d=this.retryQueue[n];if(a>=t)break;const o=(0,r.dataSize)(d);if(s+o>e)break;i.unshift(d),s+=o,a++,this.retryQueue.splice(n,1)}return i}getQueueSize(){return this.retryQueue.length}clear(){this.retryQueue=[]}}t.RetryQueueHandler=l,t.default=l},431:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.NrVideoEventAggregator=void 0;var s=n(i(144)),r=n(i(51)),a=i(347);function n(e){return e&&e.__esModule?e:{default:e}}const{MAX_PAYLOAD_SIZE:d,MAX_EVENTS_PER_BATCH:o}=r.default;class l{constructor(){this.buffer=[],this.maxPayloadSize=d,this.maxEventsPerBatch=o,this.currentPayloadSize=0,this.totalEvents=0,this.smartHarvestPayloadThreshold=Math.floor(.6*this.maxPayloadSize),this.overflowPayloadThreshold=Math.floor(.9*this.maxPayloadSize),this.smartHarvestEventThreshold=Math.floor(.6*this.maxEventsPerBatch),this.overflowEventThreshold=Math.floor(.9*this.maxEventsPerBatch),this.onSmartHarvestTrigger=null}add(e){try{const t=(0,a.dataSize)(e),i=this.currentPayloadSize+t>=this.maxPayloadSize,s=this.totalEvents+1>=this.maxEventsPerBatch;return(i||s)&&this.makeRoom(t),this.buffer.push(e),this.totalEvents++,this.currentPayloadSize+=t,this.checkSmartHarvestTrigger(),!0}catch(e){return s.default.error("Failed to add event to buffer:",e.message),!1}}checkSmartHarvestTrigger(){const e=this.currentPayloadSize/this.maxPayloadSize,t=this.totalEvents/this.maxEventsPerBatch,i=this.currentPayloadSize>=this.overflowPayloadThreshold,r=this.totalEvents>=this.overflowEventThreshold;if(i||r){const r=i?`payload ${this.currentPayloadSize}/${this.maxPayloadSize} bytes (${Math.round(100*e)}%)`:`events ${this.totalEvents}/${this.maxEventsPerBatch} (${Math.round(100*t)}%)`;s.default.warn(`OVERFLOW PREVENTION: ${r} - Emergency harvest triggered`),this.onSmartHarvestTrigger&&"function"==typeof this.onSmartHarvestTrigger&&this.onSmartHarvestTrigger("overflow",90)}else{const e=this.currentPayloadSize>=this.smartHarvestPayloadThreshold,t=this.totalEvents>=this.smartHarvestEventThreshold;(e||t)&&this.onSmartHarvestTrigger&&"function"==typeof this.onSmartHarvestTrigger&&this.onSmartHarvestTrigger("smart",60)}}setSmartHarvestCallback(e){this.onSmartHarvestTrigger=e}drain(){try{const e=this.buffer.splice(0);return this.totalEvents=0,this.currentPayloadSize=0,e}catch(e){return s.default.error("Failed to drain events from buffer:",e.message),[]}}isEmpty(){return 0===this.totalEvents}size(){return this.totalEvents}clear(){this.buffer=[],this.totalEvents=0}makeRoom(e){if(e>this.maxPayloadSize)s.default.error("Event dropped: Event size exceeds maximum payload size.");else for(;(this.totalEvents>=this.maxEventsPerBatch||this.currentPayloadSize+e>=this.maxPayloadSize)&&this.buffer.length>0;){const e=this.buffer.shift(),t=(0,a.dataSize)(e);this.totalEvents--,this.currentPayloadSize-=t,s.default.warn("Event buffer full, oldest event removed.")}}}t.NrVideoEventAggregator=l,t.default=l},449:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.recordEvent=function(e,t={}){try{if(!r.default.VALID_EVENT_TYPES.includes(e))return a.default.warn("Invalid event type provided to recordEvent",{eventType:e}),!1;if(!window?.NRVIDEO?.info)return;const{appName:i,applicationID:n}=window.NRVIDEO.info,d={...t,eventType:e,...n?{}:{appName:i},timestamp:Date.now(),timeSinceLoad:window.performance?window.performance.now()/1e3:null};return s.videoAnalyticsHarvester.addEvent(d)}catch(e){return a.default.error("Failed to record event:",e.message),!1}};var s=i(487),r=n(i(51)),a=n(i(144));function n(e){return e&&e.__esModule?e:{default:e}}},455:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class i{constructor(){this.reset()}reset(){this.startTime=0,this.stopTime=0,this.offset=0}getDeltaTime(){return this.startTime?this.offset+((new Date).getTime()-this.startTime):null}start(){this.startTime=(new Date).getTime(),this.stopTime=0}stop(){return this.stopTime=(new Date).getTime(),this.getDeltaTime()}clone(){var e=new i;return e.startTime=this.startTime,e.stopTime=this.stopTime,e.offset=this.offset,e}}t.default=i},487:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.videoAnalyticsHarvester=void 0;var s,r=i(374),a=i(431),n=(s=i(144))&&s.__esModule?s:{default:s};const d=new class{constructor(){this.isInitialized=!1,this.harvestScheduler=null,this.eventBuffer=null}initialize(){if(this.isInitialized)n.default.warn("Video analytics agent already initialized");else try{this.eventBuffer=new a.NrVideoEventAggregator,this.harvestScheduler=new r.HarvestScheduler(this.eventBuffer),this.harvestScheduler.startScheduler(),this.isInitialized=!0,n.default.notice("Video analytics agent initialized successfully")}catch(e){n.default.error("Failed to initialize video analytics agent:",e.message)}}addEvent(e){this.isInitialized||(n.default.warn("Video analytics agent not initialized, initializing now"),this.initialize());try{return this.eventBuffer.add(e)}catch(e){return n.default.error("Failed to add event to harvesting system:",e.message),!1}}setHarvestInterval(e){this.isInitialized||this.initialize(),this.harvestScheduler.updateHarvestInterval(e)}};t.videoAnalyticsHarvester=d},568:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=class{on(e,t){if(this._listeners=this._listeners||{},"function"==typeof t)return this._listeners[e]=this._listeners[e]||[],this._listeners[e].push(t),this}off(e,t){if(this._listeners=this._listeners||{},this._listeners[e]){var i=this._listeners[e].indexOf(t);-1!==i&&this._listeners[e].splice(i,1)}return this}emit(e,t,i){return this._listeners=this._listeners||{},i=i||{},Array.isArray(this._listeners[t])&&this._listeners[t].forEach(s=>{s.call(this,{eventType:e,type:t,data:i,target:this})}),Array.isArray(this._listeners["*"])&&this._listeners["*"].forEach(s=>{s.call(this,{eventType:e,type:t,data:i,target:this})}),this}}},659:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.setVideoConfig=function(e){return o.setConfiguration(e)},t.videoConfiguration=void 0;var s=a(i(144)),r=a(i(51));function a(e){return e&&e.__esModule?e:{default:e}}const{COLLECTOR:n}=r.default;class d{setConfiguration(e){return this.initializeGlobalConfig(e),s.default.notice("Video analytics configuration initialized successfully"),!0}validateRequiredFields(e){if(!e||"object"!=typeof e)return s.default.error("Configuration must be an object"),!1;const{licenseKey:t,appName:i,region:r,applicationID:a,beacon:d}=e;if(!t)return s.default.error("licenseKey is required"),!1;if(a){if(!d)return s.default.error("beacon is required when applicationID is provided"),!1;if(!Object.values(n).flatMap(e=>e).includes(d))return s.default.error(`Invalid beacon: ${d}`),!1}else{if(!i||!r)return s.default.error("appName and region are required when applicationID is not provided"),!1;if(!n[r])return s.default.error(`Invalid region: ${r}. Valid regions are: ${Object.keys(n).join(", ")}`),!1}return!0}initializeGlobalConfig(e){if(!this.validateRequiredFields(e))return;let{licenseKey:t,appName:i,region:s,beacon:a,applicationID:d}=e;a="US"===s?r.default.COLLECTOR.US[0]:a||n[s],window.NRVIDEO={info:{...s?{region:s}:{},beacon:a,licenseKey:t,applicationID:d,...d?{}:{appName:i}}}}}const o=t.videoConfiguration=new d;t.default=d},793:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=d(i(144)),r=d(i(302)),a=d(i(328)),n=d(i(330));function d(e){return e&&e.__esModule?e:{default:e}}class o extends r.default{constructor(e,t){super(),this.state=new a.default,this.adsTracker=null,this._lastBufferType=null,this._userId=null,t=t||{},this.setOptions(t),e&&this.setPlayer(e,t.tag),s.default.notice("Tracker "+this.getTrackerName()+" v"+this.getTrackerVersion()+" is ready.")}setUserId(e){this._userId=e}setOptions(e){e&&(e.adsTracker&&this.setAdsTracker(e.adsTracker),"boolean"==typeof e.isAd&&this.setIsAd(e.isAd),r.default.prototype.setOptions.apply(this,arguments))}setPlayer(e,t){(this.player||this.tag)&&this.dispose(),"undefined"!=typeof document&&document.getElementById&&("string"==typeof e&&(e=document.getElementById(e)),"string"==typeof t&&(t=document.getElementById(t))),t=t||e,this.player=e,this.tag=t,this.registerListeners()}isAd(){return this.state.isAd()}setIsAd(e){this.state.setIsAd(e)}setAdsTracker(e){this.disposeAdsTracker(),e&&(this.adsTracker=e,this.adsTracker.setIsAd(!0),this.adsTracker.parentTracker=this,this.adsTracker.on("*",l.bind(this)))}disposeAdsTracker(){this.adsTracker&&(this.adsTracker.off("*",l),this.adsTracker.dispose())}dispose(){this.stopHeartbeat(),this.disposeAdsTracker(),this.unregisterListeners(),this.player=null,this.tag=null}registerListeners(){}unregisterListeners(){}getViewId(){return this.parentTracker?this.parentTracker.getViewId():this.state.getViewId()}getViewSession(){return this.parentTracker?this.parentTracker.getViewSession():this.state.getViewSession()}getVideoId(){return null}getTitle(){return null}isLive(){return null}getBitrate(){return null}getWebkitBitrate(){if(this.tag&&this.tag.webkitVideoDecodedByteCount){let e;if(this._lastWebkitBitrate){e=this.tag.webkitVideoDecodedByteCount;let t=e-this._lastWebkitBitrate,i=this.getHeartbeat()/1e3;e=Math.round(t/i*8)}return this._lastWebkitBitrate=this.tag.webkitVideoDecodedByteCount,e||null}}getRenditionName(){return null}getRenditionBitrate(){return null}getRenditionShift(e){let t,i=this.getRenditionBitrate();return this.isAd()?(t=this._lastAdRendition,e&&(this._lastAdRendition=i)):(t=this._lastRendition,e&&(this._lastRendition=i)),i&&t?i>t?"up":i<t?"down":null:null}getRenditionHeight(){return this.tag?this.tag.videoHeight:null}getRenditionWidth(){return this.tag?this.tag.videoWidth:null}getDuration(){return this.tag?this.tag.duration:null}getPlayhead(){return this.tag?this.tag.currentTime:null}getLanguage(){return null}getSrc(){return this.tag?this.tag.currentSrc:null}getPlayrate(){return this.tag?this.tag.playbackRate:null}isMuted(){return this.tag?this.tag.muted:null}isFullscreen(){return null}getCdn(){return null}getPlayerName(){return this.getTrackerName()}getPlayerVersion(){return n.default.version}getFps(){return null}isAutoplayed(){return this.tag?this.tag.autoplay:null}getPreload(){return this.tag?this.tag.preload:null}getAdQuartile(){return null}getAdPosition(){return this.parentTracker?this.parentTracker.state.isStarted?"mid":"pre":null}getAdPartner(){return null}getAdCreativeId(){return null}getInstrumentationProvider(){return null}getInstrumentationName(){return null}getInstrumentationVersion(){return null}getAttributes(e,t){if(void 0===(e=r.default.prototype.getAttributes.apply(this,arguments)).isAd&&(e.isAd=this.isAd()),e.viewSession=this.getViewSession(),e.viewId=this.getViewId(),e.playerName=this.getPlayerName(),e.playerVersion=this.getPlayerVersion(),e["instrumentation.provider"]=this.getInstrumentationProvider(),e["instrumentation.name"]=this.getInstrumentationName(),e["instrumentation.version"]=this.getInstrumentationVersion(),e["enduser.id"]=this._userId,e.src="Browser","customAction"===t)return e;try{e.pageUrl=window.location.href}catch(e){}this.isAd()?(e.adId=this.getVideoId(),e.adTitle=this.getTitle(),e.adSrc=this.getSrc(),e.adCdn=this.getCdn(),e.adBitrate=this.getBitrate()||this.getWebkitBitrate()||this.getRenditionBitrate(),e.adRenditionName=this.getRenditionName(),e.adRenditionBitrate=this.getRenditionBitrate(),e.adRenditionHeight=this.getRenditionHeight(),e.adRenditionWidth=this.getRenditionWidth(),e.adDuration=this.getDuration(),e.adPlayhead=this.getPlayhead(),e.adLanguage=this.getLanguage(),e.adIsMuted=this.isMuted(),e.adFps=this.getFps(),e.adPosition=this.getAdPosition(),e.adCreativeId=this.getAdCreativeId(),e.adPartner=this.getAdPartner()):(e.contentId=this.getVideoId(),e.contentTitle=this.getTitle(),e.contentSrc=this.getSrc(),e.contentCdn=this.getCdn(),e.contentPlayhead=this.getPlayhead(),e.contentIsLive=this.isLive(),e.contentBitrate=this.getBitrate()||this.getWebkitBitrate()||this.getRenditionBitrate(),e.contentRenditionName=this.getRenditionName(),e.contentRenditionBitrate=this.getRenditionBitrate(),e.contentRenditionHeight=this.getRenditionHeight(),e.contentRenditionWidth=this.getRenditionWidth(),e.contentDuration=this.getDuration(),e.contentLanguage=this.getLanguage(),e.contentPlayrate=this.getPlayrate(),e.contentIsFullscreen=this.isFullscreen(),e.contentIsMuted=this.isMuted(),e.contentIsAutoplayed=this.isAutoplayed(),e.contentPreload=this.getPreload(),e.contentFps=this.getFps(),null!=this.adsTracker&&this.adsTracker.state.totalAdPlaytime>0&&(e.totalAdPlaytime=this.adsTracker.state.totalAdPlaytime)),this.state.getStateAttributes(e);for(let t in this.customData)e[t]=this.customData[t];return e}sendCustom(e,t,i){i=i||{},this.sendVideoCustomAction(e,i),this.state.setTimeSinceAttribute(t)}sendPlayerReady(e){this.state.goPlayerReady()&&(e=e||{},this.sendVideoAction(o.Events.PLAYER_READY,e))}sendRequest(e){if(this.state.goRequest()){let t;this.isAd()?(t=o.Events.AD_REQUEST,this.sendVideoAdAction(t,e)):(t=o.Events.CONTENT_REQUEST,this.sendVideoAction(t,e))}}sendStart(e){if(this.state.goStart()){let t;this.isAd()?(t=o.Events.AD_START,this.parentTracker&&(this.parentTracker.state.isPlaying=!1),this.sendVideoAdAction(t,e)):(t=o.Events.CONTENT_START,this.sendVideoAction(t,e)),this.startHeartbeat(),this.state.goHeartbeat()}}sendEnd(e){if(this.state.goEnd()){let t;e=e||{},this.isAd()?(t=o.Events.AD_END,e.timeSinceAdRequested=this.state.timeSinceRequested.getDeltaTime(),e.timeSinceAdStarted=this.state.timeSinceStarted.getDeltaTime(),this.parentTracker&&(this.parentTracker.state.isPlaying=!0)):(t=o.Events.CONTENT_END,e.timeSinceRequested=this.state.timeSinceRequested.getDeltaTime(),e.timeSinceStarted=this.state.timeSinceStarted.getDeltaTime()),this.stopHeartbeat(),this.isAd()?this.sendVideoAdAction(t,e):this.sendVideoAction(t,e),this.parentTracker&&this.isAd()&&this.parentTracker.state.goLastAd(),this.state.goViewCountUp(),this.state.totalPlaytime=0}}sendPause(e){if(this.state.goPause()){let t=this.isAd()?o.Events.AD_PAUSE:o.Events.CONTENT_PAUSE;this.isAd()?this.sendVideoAdAction(t,e):this.sendVideoAction(t,e)}}sendResume(e){if(this.state.goResume()){let t;e=e||{},this.isAd()?(t=o.Events.AD_RESUME,e.timeSinceAdPaused=this.state.timeSincePaused.getDeltaTime()):(t=o.Events.CONTENT_RESUME,e.timeSincePaused=this.state.timeSincePaused.getDeltaTime()),this.isAd()?this.sendVideoAdAction(t,e):this.sendVideoAction(t,e)}}sendBufferStart(e){if(this.state.goBufferStart()){let t;e=e||{},t=this.isAd()?o.Events.AD_BUFFER_START:o.Events.CONTENT_BUFFER_START,e=this.buildBufferAttributes(e),this._lastBufferType=e.bufferType,this.isAd()?this.sendVideoAdAction(t,e):this.sendVideoAction(t,e)}}sendBufferEnd(e){if(this.state.goBufferEnd()){let t;e=e||{},this.isAd()?(t=o.Events.AD_BUFFER_END,e.timeSinceAdBufferBegin=this.state.timeSinceBufferBegin.getDeltaTime()):(t=o.Events.CONTENT_BUFFER_END,e.timeSinceBufferBegin=this.state.timeSinceBufferBegin.getDeltaTime()),e=this.buildBufferAttributes(e),null!=this._lastBufferType&&(e.bufferType=this._lastBufferType),this.isAd()?this.sendVideoAdAction(t,e):this.sendVideoAction(t,e),this.state.initialBufferingHappened=!0}}buildBufferAttributes(e){return null==e.timeSinceStarted||e.timeSinceStarted<100?e.isInitialBuffering=!this.state.initialBufferingHappened:e.isInitialBuffering=!1,e.bufferType=this.state.calculateBufferType(e.isInitialBuffering),e.timeSinceResumed=this.state.timeSinceResumed.getDeltaTime(),e.timeSinceSeekEnd=this.state.timeSinceSeekEnd.getDeltaTime(),e}sendSeekStart(e){if(this.state.goSeekStart()){let t;t=this.isAd()?o.Events.AD_SEEK_START:o.Events.CONTENT_SEEK_START,this.isAd()?this.sendVideoAdAction(t,e):this.sendVideoAction(t,e)}}sendSeekEnd(e){if(this.state.goSeekEnd()){let t;e=e||{},this.isAd()?(t=o.Events.AD_SEEK_END,e.timeSinceAdSeekBegin=this.state.timeSinceSeekBegin.getDeltaTime()):(t=o.Events.CONTENT_SEEK_END,e.timeSinceSeekBegin=this.state.timeSinceSeekBegin.getDeltaTime()),this.isAd()?this.sendVideoAdAction(t,e):this.sendVideoAction(t,e)}}sendDownload(e){(e=e||{}).state||s.default.warn("Called sendDownload without { state: xxxxx }."),this.sendVideoAction(o.Events.DOWNLOAD,e),this.state.goDownload()}sendError(e){(e=e||{}).isAd=this.isAd(),this.state.goError();let t=this.isAd()?o.Events.AD_ERROR:o.Events.CONTENT_ERROR;this.sendVideoErrorAction(t,e)}sendRenditionChanged(e){let t;(e=e||{}).timeSinceLastRenditionChange=this.state.timeSinceLastRenditionChange.getDeltaTime(),e.shift=this.getRenditionShift(!0),t=this.isAd()?o.Events.AD_RENDITION_CHANGE:o.Events.CONTENT_RENDITION_CHANGE,this.isAd()?this.sendVideoAdAction(t,e):this.sendVideoAction(t,e),this.state.goRenditionChange()}sendHeartbeat(e){if(this.state.isRequested){let t,i=this.getHeartbeat();this.state._hb=!0,i=this.adjustElapsedTimeForPause(i),this.isAd()?(t=o.Events.AD_HEARTBEAT,"bitmovin-ads"===this.getPlayerName()?this.sendVideoAdAction(t,e):this.sendVideoAdAction(t,{elapsedTime:i,...e})):(t=o.Events.CONTENT_HEARTBEAT,this.sendVideoAction(t,{elapsedTime:i,...e})),this.state.goHeartbeat()}}adjustElapsedTimeForPause(e){return this.state._acc&&(e-=this.state._acc,this.state._acc=0),this.state.isPaused&&((e-=this.state.elapsedTime.getDeltaTime())<10&&(e=0),this.state.elapsedTime.start()),this.state._bufferAcc?(e-=this.state._bufferAcc,this.state._bufferAcc=0):this.state.isBuffering&&((e-=this.state.bufferElapsedTime.getDeltaTime())<5&&(e=0),this.state.bufferElapsedTime.start()),Math.max(0,e)}sendAdBreakStart(e){this.isAd()&&this.state.goAdBreakStart()&&(this.state.totalAdPlaytime=0,this.parentTracker&&(this.parentTracker.state.isPlaying=!1),this.sendVideoAdAction(o.Events.AD_BREAK_START,e))}sendAdBreakEnd(e){this.isAd()&&this.state.goAdBreakEnd()&&((e=e||{}).timeSinceAdBreakBegin=this.state.timeSinceAdBreakStart.getDeltaTime(),this.sendVideoAdAction(o.Events.AD_BREAK_END,e),this.parentTracker&&(this.parentTracker.state.isPlaying=!0),this.stopHeartbeat(),this.parentTracker&&this.isAd()&&this.parentTracker.state.goLastAd())}sendAdQuartile(e){this.isAd()&&((e=e||{}).quartile||s.default.warn("Called sendAdQuartile without { quartile: xxxxx }."),e.timeSinceLastAdQuartile=this.state.timeSinceLastAdQuartile.getDeltaTime(),this.sendVideoAdAction(o.Events.AD_QUARTILE,e),this.state.goAdQuartile())}sendAdClick(e){this.isAd()&&((e=e||{}).url||s.default.warn("Called sendAdClick without { url: xxxxx }."),this.sendVideoAdAction(o.Events.AD_CLICK,e))}}function l(e){e.type!==o.Events.AD_ERROR?this.sendVideoAdAction(e.type,e.data):this.sendVideoErrorAction(e.type,e.data)}o.Events={PLAYER_READY:"PLAYER_READY",DOWNLOAD:"DOWNLOAD",ERROR:"ERROR",CONTENT_REQUEST:"CONTENT_REQUEST",CONTENT_START:"CONTENT_START",CONTENT_END:"CONTENT_END",CONTENT_PAUSE:"CONTENT_PAUSE",CONTENT_RESUME:"CONTENT_RESUME",CONTENT_SEEK_START:"CONTENT_SEEK_START",CONTENT_SEEK_END:"CONTENT_SEEK_END",CONTENT_BUFFER_START:"CONTENT_BUFFER_START",CONTENT_BUFFER_END:"CONTENT_BUFFER_END",CONTENT_HEARTBEAT:"CONTENT_HEARTBEAT",CONTENT_RENDITION_CHANGE:"CONTENT_RENDITION_CHANGE",CONTENT_ERROR:"CONTENT_ERROR",AD_REQUEST:"AD_REQUEST",AD_START:"AD_START",AD_END:"AD_END",AD_PAUSE:"AD_PAUSE",AD_RESUME:"AD_RESUME",AD_SEEK_START:"AD_SEEK_START",AD_SEEK_END:"AD_SEEK_END",AD_BUFFER_START:"AD_BUFFER_START",AD_BUFFER_END:"AD_BUFFER_END",AD_HEARTBEAT:"AD_HEARTBEAT",AD_RENDITION_CHANGE:"AD_RENDITION_CHANGE",AD_ERROR:"AD_ERROR",AD_BREAK_START:"AD_BREAK_START",AD_BREAK_END:"AD_BREAK_END",AD_QUARTILE:"AD_QUARTILE",AD_CLICK:"AD_CLICK"},t.default=o}},r={};function a(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return s[e](i,i.exports,a),i.exports}var n={};(()=>{var e=n;Object.defineProperty(e,"B",{value:!0}),e.A=void 0;var t=A(a(399)),i=A(a(51)),s=A(a(455)),r=A(a(144)),d=A(a(568)),o=A(a(302)),l=A(a(793)),h=A(a(328)),u=a(431),c=a(413),g=a(28),f=a(374),m=a(449),p=a(330);function A(e){return e&&e.__esModule?e:{default:e}}const E={Constants:i.default,Chrono:s.default,Log:r.default,Emitter:d.default,Tracker:o.default,VideoTracker:l.default,VideoTrackerState:h.default,Core:t.default,version:p.version,NrVideoEventAggregator:u.NrVideoEventAggregator,RetryQueueHandler:c.RetryQueueHandler,OptimizedHttpClient:g.OptimizedHttpClient,HarvestScheduler:f.HarvestScheduler,recordEvent:m.recordEvent};e.A=E})();const d=n.B,o=n.A},717:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=a(i(555)),r=a(i(472));function a(e){return e&&e.__esModule?e:{default:e}}const n={DAI_STREAM_INITIALIZED:"dai-stream-initialized",DAI_STREAM_LOADED:"dai-stream-loaded",DAI_STREAM_ERROR:"dai-stream-error",DAI_AD_BREAK_STARTED:"dai-ad-break-started",DAI_AD_BREAK_ENDED:"dai-ad-break-ended",DAI_AD_PERIOD_STARTED:"dai-ad-period-started",DAI_AD_PERIOD_ENDED:"dai-ad-period-ended",DAI_AD_STARTED:"dai-ad-started",DAI_AD_FIRST_QUARTILE:"dai-ad-first-quartile",DAI_AD_MIDPOINT:"dai-ad-midpoint",DAI_AD_THIRD_QUARTILE:"dai-ad-third-quartile",DAI_AD_COMPLETE:"dai-ad-complete",DAI_AD_SKIPPED:"dai-ad-skipped",DAI_AD_PAUSED:"dai-ad-paused",DAI_AD_RESUMED:"dai-ad-resumed",DAI_AD_CLICKED:"dai-ad-clicked",DAI_AD_ERROR:"dai-ad-error",DAI_CUEPOINTS_CHANGED:"dai-cuepoints-changed",DAI_TIMED_METADATA:"dai-timed-metadata"};class d extends r.default{static isUsing(e){return e.imaDai&&"function"==typeof e.imaDai||e.dai&&void 0!==e.dai.VERSION||e.ima&&e.ima.dai||e.streamManager}constructor(e){super(e),this.streamManager=null,this.currentAdData=null,this.adBreakData=null,this.streamData=null,this.cuePoints=[],this.initialized=!1,this.eventHandlers=null}setStreamManager(e){this.streamManager=e,this.setupStreamManagerListeners(),this.initialized=!0,s.default.Log.debug("DaiAdsTracker: StreamManager set and listeners registered")}setupStreamManagerListeners(){if(!this.streamManager||!google?.ima?.dai?.api?.StreamEvent)return void s.default.Log.warn("DaiAdsTracker: StreamManager or DAI API not available");const e=google.ima.dai.api.StreamEvent.Type;this.eventHandlers={[e.LOADED]:this.onStreamLoaded.bind(this),[e.STREAM_INITIALIZED]:this.onStreamInitialized.bind(this),[e.ERROR]:this.onStreamError.bind(this),[e.AD_BREAK_STARTED]:this.onAdBreakStarted.bind(this),[e.AD_BREAK_ENDED]:this.onAdBreakEnded.bind(this),[e.AD_PERIOD_STARTED]:this.onAdPeriodStarted.bind(this),[e.AD_PERIOD_ENDED]:this.onAdPeriodEnded.bind(this),[e.STARTED]:this.onAdStarted.bind(this),[e.FIRST_QUARTILE]:this.onAdFirstQuartile.bind(this),[e.MIDPOINT]:this.onAdMidpoint.bind(this),[e.THIRD_QUARTILE]:this.onAdThirdQuartile.bind(this),[e.COMPLETE]:this.onAdComplete.bind(this),[e.SKIPPED]:this.onAdSkipped.bind(this),[e.PAUSED]:this.onAdPaused.bind(this),[e.RESUMED]:this.onAdResumed.bind(this),[e.CLICK]:this.onAdClicked.bind(this),[e.VIDEO_CLICKED]:this.onAdClicked.bind(this),[e.CUEPOINTS_CHANGED]:this.onCuePointsChanged.bind(this),[e.TIMED_METADATA]:this.onTimedMetadata.bind(this)},Object.entries(this.eventHandlers).forEach(([e,t])=>{this.streamManager.addEventListener(e,t)}),s.default.Log.debug("DaiAdsTracker: StreamManager listeners registered")}registerListeners(){super.registerListeners(),s.default.Log.debugCommonVideoEvents(this.player,[null,Object.values(n)])}unregisterListeners(){super.unregisterListeners(),this.streamManager&&this.eventHandlers&&Object.entries(this.eventHandlers).forEach(([e,t])=>{this.streamManager.removeEventListener(e,t)}),this.streamManager=null,this.currentAdData=null,this.adBreakData=null,this.streamData=null,this.cuePoints=[],this.initialized=!1,this.eventHandlers=null}onStreamLoaded(e){this.streamData=this.extractStreamData(e),s.default.Log.debug("DaiAdsTracker: Stream loaded",this.streamData),this.sendRequest()}onStreamInitialized(e){s.default.Log.debug("DaiAdsTracker: Stream initialized"),this.sendDownload({state:"stream-initialized"})}onStreamError(e){const t=this.extractErrorData(e);s.default.Log.error("DaiAdsTracker: Stream error",t),this.sendError(t)}onAdBreakStarted(e){this.adBreakData=this.extractAdBreakData(e),s.default.Log.debug("DaiAdsTracker: Ad break started",this.adBreakData),this.sendAdBreakStart(this.adBreakData)}onAdBreakEnded(e){s.default.Log.debug("DaiAdsTracker: Ad break ended"),this.sendAdBreakEnd(),this.adBreakData=null}onAdPeriodStarted(e){s.default.Log.debug("DaiAdsTracker: Ad period started"),this.adBreakData||this.onAdBreakStarted(e)}onAdPeriodEnded(e){s.default.Log.debug("DaiAdsTracker: Ad period ended")}onAdStarted(e){this.currentAdData=this.extractAdData(e),s.default.Log.debug("DaiAdsTracker: Ad started",this.currentAdData),this.sendStart()}onAdFirstQuartile(e){s.default.Log.debug("DaiAdsTracker: Ad first quartile"),this.sendAdQuartile({quartile:1})}onAdMidpoint(e){s.default.Log.debug("DaiAdsTracker: Ad midpoint"),this.sendAdQuartile({quartile:2})}onAdThirdQuartile(e){s.default.Log.debug("DaiAdsTracker: Ad third quartile"),this.sendAdQuartile({quartile:3})}onAdComplete(e){s.default.Log.debug("DaiAdsTracker: Ad complete"),this.sendEnd(),this.currentAdData=null}onAdSkipped(e){s.default.Log.debug("DaiAdsTracker: Ad skipped"),this.sendEnd({skipped:!0}),this.currentAdData=null}onAdPaused(e){s.default.Log.debug("DaiAdsTracker: Ad paused"),this.sendPause()}onAdResumed(e){s.default.Log.debug("DaiAdsTracker: Ad resumed"),this.sendResume()}onAdClicked(e){s.default.Log.debug("DaiAdsTracker: Ad clicked"),this.sendAdClick({url:this.getClickThroughUrl()})}onCuePointsChanged(e){this.cuePoints=this.extractCuePoints(e),s.default.Log.debug("DaiAdsTracker: Cue points changed",this.cuePoints)}onTimedMetadata(e){const t=this.extractTimedMetadata(e);s.default.Log.debug("DaiAdsTracker: Timed metadata",t)}extractStreamData(e){try{const t=e.getStreamData();return{streamId:t?.streamId,url:t?.url,adTagParameters:t?.adTagParameters,streamType:this.getStreamType()}}catch(e){return s.default.Log.warn("DaiAdsTracker: Failed to extract stream data",e),{}}}extractAdBreakData(e){try{const t=e.getAdBreak();return{adBreakId:t?.id,adBreakTitle:t?.title,adCount:t?.ads?.length||0,position:this.getAdPosition()}}catch(e){return s.default.Log.warn("DaiAdsTracker: Failed to extract ad break data",e),{}}}extractAdData(e){try{const t=e.getAd();return{adId:t?.getAdId(),creativeId:t?.getCreativeId(),duration:t?.getDuration(),title:t?.getTitle(),description:t?.getDescription(),advertiserName:t?.getAdvertiserName(),clickThroughUrl:t?.getClickThroughUrl(),dealId:t?.getDealId(),wrapperAdIds:t?.getWrapperAdIds(),position:this.getAdPosition()}}catch(e){return s.default.Log.warn("DaiAdsTracker: Failed to extract ad data",e),{}}}extractErrorData(e){try{const t=e.getError();return{errorCode:t?.getErrorCode(),errorMessage:t?.getMessage(),innerError:t?.getInnerError()}}catch(e){return s.default.Log.warn("DaiAdsTracker: Failed to extract error data",e),{errorMessage:"Unknown DAI error"}}}extractCuePoints(e){try{return e.getCuepoints()||[]}catch(e){return s.default.Log.warn("DaiAdsTracker: Failed to extract cue points",e),[]}}extractTimedMetadata(e){try{return{type:e.getType(),data:e.getData()}}catch(e){return s.default.Log.warn("DaiAdsTracker: Failed to extract timed metadata",e),{}}}getTrackerName(){return"dai-ads"}getPlayerName(){return"videojs-dai"}getPlayerVersion(){return this.player.dai?.VERSION?this.player.dai.VERSION:this.player.ima?.VERSION?`ima-dai: ${this.player.ima.VERSION}`:"unknown"}getAdCuePoints(){return this.cuePoints}getAdPosition(){if(!this.currentAdData&&!this.adBreakData)return null;const e=this.player.currentTime(),t=this.player.duration();return e<5?"pre":t&&e>t-10?"post":"mid"}getDuration(){return void 0!==this.currentAdData?.duration?1e3*this.currentAdData.duration:null}getVideoId(){return this.currentAdData?.adId||null}getAdCreativeId(){return this.currentAdData?.creativeId||null}getTitle(){return this.currentAdData?.title||null}getSrc(){return this.streamData?.url||null}getPlayhead(){if(this.streamManager)try{return 1e3*this.streamManager.getStreamTime()}catch(e){return 1e3*this.player.currentTime()}return 1e3*this.player.currentTime()}getAdPartner(){return"google-dai"}getClickThroughUrl(){return this.currentAdData?.clickThroughUrl||null}getStreamType(){if(this.streamData?.streamType)return this.streamData.streamType;return this.player.duration()===1/0?"live":"vod"}isLiveStream(){return"live"===this.getStreamType()}getCurrentAdBreak(){return this.adBreakData}getCurrentAd(){return this.currentAdData}getStreamData(){return this.streamData}getBitrate(){const e=this.getTech();if(e&&e.tech&&e.tech.stats)return e.tech.stats.bandwidth}getRenditionBitrate(){const e=this.getTech();if(e&&e.getRenditionBitrate)return e.getRenditionBitrate()}}t.default=d}},t={};function i(s){var r=t[s];if(void 0!==r)return r.exports;var a=t[s]={exports:{}};return e[s](a,a.exports,i),a.exports}i.d=(e,t)=>{for(var s in t)i.o(t,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};(()=>{var e=s;Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t,r=(t=i(302))&&t.__esModule?t:{default:t};e.default=r.default})(),module.exports.VideojsTracker=s})();
|
|
3
3
|
//# sourceMappingURL=index.js.map
|