@eyevinn/player-analytics-client-sdk-web 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/publish-gh-package.yml +1 -1
- package/.github/workflows/publish-npmjs.yml +1 -1
- package/dist/index.js +65 -92
- package/dist/index.js.map +1 -1
- package/dist/module.js +65 -92
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts +0 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -6
- package/dist/src/PlayerAnalytics.d.ts +0 -33
- package/dist/src/PlayerAnalyticsConnector.d.ts +0 -30
- package/dist/src/utils/Reporter.d.ts +0 -23
- package/dist/src/utils/constants.d.ts +0 -19
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var $g5Y9E$eyevinnplayeranalyticsspecificationpackagejson = require("@eyevinn/player-analytics-specification/package.json");
|
|
2
|
-
var $g5Y9E$
|
|
2
|
+
var $g5Y9E$eyevinnmediaeventfilter = require("@eyevinn/media-event-filter");
|
|
3
3
|
|
|
4
4
|
function $parcel$export(e, n, v, s) {
|
|
5
5
|
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
@@ -16,25 +16,6 @@ var $7d88e8cdd46a09a5$exports = {};
|
|
|
16
16
|
|
|
17
17
|
$parcel$export($7d88e8cdd46a09a5$exports, "PlayerAnalytics", () => $7d88e8cdd46a09a5$export$f76c463fe9cb9f15, (v) => $7d88e8cdd46a09a5$export$f76c463fe9cb9f15 = v);
|
|
18
18
|
|
|
19
|
-
var $e8f16a459684b36f$export$342d7dbd8323f55e;
|
|
20
|
-
(function($e8f16a459684b36f$export$342d7dbd8323f55e) {
|
|
21
|
-
$e8f16a459684b36f$export$342d7dbd8323f55e["loading"] = "loading";
|
|
22
|
-
$e8f16a459684b36f$export$342d7dbd8323f55e["loaded"] = "loaded";
|
|
23
|
-
$e8f16a459684b36f$export$342d7dbd8323f55e["play"] = "playing";
|
|
24
|
-
$e8f16a459684b36f$export$342d7dbd8323f55e["resume"] = "playing";
|
|
25
|
-
$e8f16a459684b36f$export$342d7dbd8323f55e["pause"] = "paused";
|
|
26
|
-
$e8f16a459684b36f$export$342d7dbd8323f55e["seeking"] = "seeking";
|
|
27
|
-
$e8f16a459684b36f$export$342d7dbd8323f55e["seeked"] = "seeked";
|
|
28
|
-
$e8f16a459684b36f$export$342d7dbd8323f55e["buffering"] = "buffering";
|
|
29
|
-
$e8f16a459684b36f$export$342d7dbd8323f55e["buffered"] = "buffered";
|
|
30
|
-
$e8f16a459684b36f$export$342d7dbd8323f55e["ended"] = "stopped";
|
|
31
|
-
$e8f16a459684b36f$export$342d7dbd8323f55e["error"] = "error";
|
|
32
|
-
$e8f16a459684b36f$export$342d7dbd8323f55e["warning"] = "warning";
|
|
33
|
-
$e8f16a459684b36f$export$342d7dbd8323f55e["bitratechanged"] = "bitrate_changed";
|
|
34
|
-
$e8f16a459684b36f$export$342d7dbd8323f55e["heartbeat"] = "heartbeat";
|
|
35
|
-
$e8f16a459684b36f$export$342d7dbd8323f55e["metadata"] = "metadata";
|
|
36
|
-
})($e8f16a459684b36f$export$342d7dbd8323f55e || ($e8f16a459684b36f$export$342d7dbd8323f55e = {
|
|
37
|
-
}));
|
|
38
19
|
var $e8f16a459684b36f$export$31c453b5fe09788d = 30000;
|
|
39
20
|
var $e8f16a459684b36f$export$8a65ed80196068d4 = ($parcel$interopDefault($g5Y9E$eyevinnplayeranalyticsspecificationpackagejson)).version;
|
|
40
21
|
|
|
@@ -450,9 +431,6 @@ var $7d88e8cdd46a09a5$export$f76c463fe9cb9f15 = function() {
|
|
|
450
431
|
$7d88e8cdd46a09a5$export$f76c463fe9cb9f15.prototype.playing = function(data) {
|
|
451
432
|
this.analyticsReporter.send(data);
|
|
452
433
|
};
|
|
453
|
-
$7d88e8cdd46a09a5$export$f76c463fe9cb9f15.prototype.paused = function(data) {
|
|
454
|
-
this.pause(data);
|
|
455
|
-
};
|
|
456
434
|
$7d88e8cdd46a09a5$export$f76c463fe9cb9f15.prototype.pause = function(data) {
|
|
457
435
|
this.analyticsReporter.send(data);
|
|
458
436
|
};
|
|
@@ -492,7 +470,6 @@ var $c2e08ff125b5bcd1$exports = {};
|
|
|
492
470
|
$parcel$export($c2e08ff125b5bcd1$exports, "PlayerAnalyticsConnector", () => $c2e08ff125b5bcd1$export$2daf9923c014a26e, (v) => $c2e08ff125b5bcd1$export$2daf9923c014a26e = v);
|
|
493
471
|
|
|
494
472
|
|
|
495
|
-
|
|
496
473
|
var $c2e08ff125b5bcd1$var$__assign = undefined && undefined.__assign || function() {
|
|
497
474
|
$c2e08ff125b5bcd1$var$__assign = Object.assign || function(t) {
|
|
498
475
|
for(var s, i = 1, n = arguments.length; i < n; i++){
|
|
@@ -658,69 +635,65 @@ var $c2e08ff125b5bcd1$export$2daf9923c014a26e = function() {
|
|
|
658
635
|
$c2e08ff125b5bcd1$export$2daf9923c014a26e.prototype.load = function(player) {
|
|
659
636
|
this.player = player;
|
|
660
637
|
this.playerAnalytics.loading($c2e08ff125b5bcd1$var$__assign({
|
|
661
|
-
event:
|
|
638
|
+
event: "loading"
|
|
662
639
|
}, this.playbackState()));
|
|
663
640
|
this.initiateVideoEventFilter();
|
|
664
641
|
};
|
|
665
642
|
$c2e08ff125b5bcd1$export$2daf9923c014a26e.prototype.initiateVideoEventFilter = function() {
|
|
666
643
|
var _this = this;
|
|
667
644
|
if (!this.player) return;
|
|
668
|
-
this.videoEventFilter =
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
645
|
+
this.videoEventFilter = $g5Y9E$eyevinnmediaeventfilter.getMediaEventFilter({
|
|
646
|
+
mediaElement: this.player,
|
|
647
|
+
mp4Mode: false,
|
|
648
|
+
callback: function(event) {
|
|
649
|
+
var eventType;
|
|
650
|
+
var extraData = {
|
|
651
|
+
};
|
|
652
|
+
switch(event){
|
|
653
|
+
case $g5Y9E$eyevinnmediaeventfilter.FilteredMediaEvent.LOADED:
|
|
654
|
+
eventType = "loaded";
|
|
655
|
+
break;
|
|
656
|
+
case $g5Y9E$eyevinnmediaeventfilter.FilteredMediaEvent.PLAYING:
|
|
657
|
+
eventType = "playing";
|
|
658
|
+
_this.startInterval();
|
|
659
|
+
break;
|
|
660
|
+
case $g5Y9E$eyevinnmediaeventfilter.FilteredMediaEvent.PAUSE:
|
|
661
|
+
eventType = "paused";
|
|
662
|
+
break;
|
|
663
|
+
case $g5Y9E$eyevinnmediaeventfilter.FilteredMediaEvent.SEEKING:
|
|
664
|
+
eventType = "seeking";
|
|
665
|
+
break;
|
|
666
|
+
case $g5Y9E$eyevinnmediaeventfilter.FilteredMediaEvent.SEEKED:
|
|
667
|
+
eventType = "seeked";
|
|
668
|
+
break;
|
|
669
|
+
case $g5Y9E$eyevinnmediaeventfilter.FilteredMediaEvent.BUFFERING:
|
|
670
|
+
eventType = "buffering";
|
|
671
|
+
break;
|
|
672
|
+
case $g5Y9E$eyevinnmediaeventfilter.FilteredMediaEvent.BUFFERED:
|
|
673
|
+
eventType = "buffered";
|
|
674
|
+
break;
|
|
675
|
+
case $g5Y9E$eyevinnmediaeventfilter.FilteredMediaEvent.ENDED:
|
|
676
|
+
eventType = "stopped";
|
|
677
|
+
extraData["reason"] = "ended";
|
|
678
|
+
_this.stopInterval();
|
|
679
|
+
break;
|
|
680
|
+
default:
|
|
681
|
+
break;
|
|
682
|
+
}
|
|
683
|
+
try {
|
|
684
|
+
if (!_this.analyticsInitiated) {
|
|
685
|
+
console.warn("[PlayerAnalyticsConnector] Analytics not initiated");
|
|
686
|
+
return;
|
|
687
|
+
}
|
|
688
|
+
if (eventType) _this.playerAnalytics[eventType == "paused" ? "pause" : eventType]($c2e08ff125b5bcd1$var$__assign($c2e08ff125b5bcd1$var$__assign({
|
|
689
|
+
event: eventType
|
|
690
|
+
}, _this.playbackState()), Object.keys(extraData).length > 0 && {
|
|
691
|
+
payload: extraData
|
|
692
|
+
}));
|
|
693
|
+
} catch (err) {
|
|
694
|
+
console.error(err);
|
|
695
|
+
}
|
|
718
696
|
}
|
|
719
|
-
_this.playerAnalytics[eventType]($c2e08ff125b5bcd1$var$__assign($c2e08ff125b5bcd1$var$__assign({
|
|
720
|
-
event: eventType
|
|
721
|
-
}, _this.playbackState()), Object.keys(extraData).length > 0 && {
|
|
722
|
-
payload: extraData
|
|
723
|
-
}));
|
|
724
697
|
});
|
|
725
698
|
};
|
|
726
699
|
$c2e08ff125b5bcd1$export$2daf9923c014a26e.prototype.startInterval = function() {
|
|
@@ -728,7 +701,7 @@ var $c2e08ff125b5bcd1$export$2daf9923c014a26e = function() {
|
|
|
728
701
|
if (this.heartbeatIntervalTimer) return;
|
|
729
702
|
this.heartbeatIntervalTimer = setInterval(function() {
|
|
730
703
|
_this.playerAnalytics.heartbeat($c2e08ff125b5bcd1$var$__assign({
|
|
731
|
-
event:
|
|
704
|
+
event: "heartbeat"
|
|
732
705
|
}, _this.playbackState()));
|
|
733
706
|
}, this.heartbeatInterval);
|
|
734
707
|
};
|
|
@@ -741,7 +714,7 @@ var $c2e08ff125b5bcd1$export$2daf9923c014a26e = function() {
|
|
|
741
714
|
return;
|
|
742
715
|
}
|
|
743
716
|
this.playerAnalytics.bitrateChanged($c2e08ff125b5bcd1$var$__assign($c2e08ff125b5bcd1$var$__assign({
|
|
744
|
-
event:
|
|
717
|
+
event: "bitrate_changed"
|
|
745
718
|
}, this.playbackState()), {
|
|
746
719
|
payload: payload
|
|
747
720
|
}));
|
|
@@ -752,7 +725,7 @@ var $c2e08ff125b5bcd1$export$2daf9923c014a26e = function() {
|
|
|
752
725
|
return;
|
|
753
726
|
}
|
|
754
727
|
this.playerAnalytics.stopped($c2e08ff125b5bcd1$var$__assign($c2e08ff125b5bcd1$var$__assign({
|
|
755
|
-
event:
|
|
728
|
+
event: "stopped"
|
|
756
729
|
}, this.playbackState()), {
|
|
757
730
|
payload: {
|
|
758
731
|
reason: "aborted"
|
|
@@ -766,12 +739,12 @@ var $c2e08ff125b5bcd1$export$2daf9923c014a26e = function() {
|
|
|
766
739
|
return;
|
|
767
740
|
}
|
|
768
741
|
this.playerAnalytics.error($c2e08ff125b5bcd1$var$__assign($c2e08ff125b5bcd1$var$__assign({
|
|
769
|
-
event:
|
|
742
|
+
event: "error"
|
|
770
743
|
}, this.playbackState()), {
|
|
771
744
|
payload: error
|
|
772
745
|
}));
|
|
773
746
|
this.playerAnalytics.stopped($c2e08ff125b5bcd1$var$__assign($c2e08ff125b5bcd1$var$__assign({
|
|
774
|
-
event:
|
|
747
|
+
event: "stopped"
|
|
775
748
|
}, this.playbackState()), {
|
|
776
749
|
payload: {
|
|
777
750
|
reason: "error"
|
|
@@ -785,7 +758,7 @@ var $c2e08ff125b5bcd1$export$2daf9923c014a26e = function() {
|
|
|
785
758
|
return;
|
|
786
759
|
}
|
|
787
760
|
this.playerAnalytics.metadata($c2e08ff125b5bcd1$var$__assign($c2e08ff125b5bcd1$var$__assign({
|
|
788
|
-
event:
|
|
761
|
+
event: "metadata"
|
|
789
762
|
}, this.playbackState()), {
|
|
790
763
|
payload: payload
|
|
791
764
|
}));
|
|
@@ -796,15 +769,15 @@ var $c2e08ff125b5bcd1$export$2daf9923c014a26e = function() {
|
|
|
796
769
|
return;
|
|
797
770
|
}
|
|
798
771
|
this.playerAnalytics.warning($c2e08ff125b5bcd1$var$__assign($c2e08ff125b5bcd1$var$__assign({
|
|
799
|
-
event:
|
|
772
|
+
event: "warning"
|
|
800
773
|
}, this.playbackState()), {
|
|
801
774
|
payload: payload
|
|
802
775
|
}));
|
|
803
776
|
};
|
|
804
777
|
$c2e08ff125b5bcd1$export$2daf9923c014a26e.prototype.playbackState = function() {
|
|
805
|
-
var _a, _b, _c, _d;
|
|
806
|
-
var
|
|
807
|
-
var
|
|
778
|
+
var _a, _b, _c, _d, _e;
|
|
779
|
+
var duration = ((_a = this.player) === null || _a === void 0 ? void 0 : _a.duration) && ((_b = this.player) === null || _b === void 0 ? void 0 : _b.duration) !== Infinity && ((_c = this.player) === null || _c === void 0 ? void 0 : _c.duration) > 0 ? this.player.duration : -1;
|
|
780
|
+
var playhead = ((_d = this.player) === null || _d === void 0 ? void 0 : _d.currentTime) && duration !== -1 ? (_e = this.player) === null || _e === void 0 ? void 0 : _e.currentTime : -1;
|
|
808
781
|
return {
|
|
809
782
|
sessionId: this.sessionId,
|
|
810
783
|
timestamp: Date.now(),
|
|
@@ -819,7 +792,7 @@ var $c2e08ff125b5bcd1$export$2daf9923c014a26e = function() {
|
|
|
819
792
|
}
|
|
820
793
|
this.stopInterval();
|
|
821
794
|
this.heartbeatInterval = null;
|
|
822
|
-
this.videoEventFilter && this.videoEventFilter.
|
|
795
|
+
this.videoEventFilter && this.videoEventFilter.teardown();
|
|
823
796
|
this.videoEventFilter = null;
|
|
824
797
|
};
|
|
825
798
|
$c2e08ff125b5bcd1$export$2daf9923c014a26e.prototype.destroy = function() {
|
|
@@ -829,7 +802,7 @@ var $c2e08ff125b5bcd1$export$2daf9923c014a26e = function() {
|
|
|
829
802
|
}
|
|
830
803
|
this.playerAnalytics.destroy();
|
|
831
804
|
this.heartbeatInterval = null;
|
|
832
|
-
this.videoEventFilter && this.videoEventFilter.
|
|
805
|
+
this.videoEventFilter && this.videoEventFilter.teardown();
|
|
833
806
|
this.stopInterval();
|
|
834
807
|
};
|
|
835
808
|
return $c2e08ff125b5bcd1$export$2daf9923c014a26e;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";;;;;;;;;;;;;;;;;;AIAA,GAAA,CAAY,yCAgBX;CAhBD,QAAA,CAAY,yCAAU,EAAtB,CAAA;IACE,yCAAA,CAAA,CAAA,YAAA,CAAmB;IACnB,yCAAA,CAAA,CAAA,WAAA,CAAiB;IACjB,yCAAA,CAAA,CAAA,SAAA,CAAgB;IAChB,yCAAA,CAAA,CAAA,WAAA,CAAkB;IAClB,yCAAA,CAAA,CAAA,UAAA,CAAgB;IAChB,yCAAA,CAAA,CAAA,YAAA,CAAmB;IACnB,yCAAA,CAAA,CAAA,WAAA,CAAiB;IACjB,yCAAA,CAAA,CAAA,cAAA,CAAuB;IACvB,yCAAA,CAAA,CAAA,aAAA,CAAqB;IACrB,yCAAA,CAAA,CAAA,UAAA,CAAiB;IACjB,yCAAA,CAAA,CAAA,UAAA,CAAe;IACf,yCAAA,CAAA,CAAA,YAAA,CAAmB;IACnB,yCAAA,CAAA,CAAA,mBAAA,CAAkC;IAClC,yCAAA,CAAA,CAAA,cAAA,CAAuB;IACvB,yCAAA,CAAA,CAAA,aAAA,CAAqB;AACvB,CAAC,EAhBW,yCAAU,KAAV,yCAAU,GAAA,CAAA;AAAA,CAAA;AAkBf,GAAA,CAAM,yCAAkB,GAAG,KAAK;AAGhC,GAAA,CAAM,yCAAY,GAAG,+EAAW,CAAC,OAAO;;;;;;;A,G,C,8B,0B,Q,I,Q,G,C;I,8B,G,M,C,M,I,Q,C,C,E,C;Q,G,C,G,C,C,E,C,G,C,E,C,G,S,C,M,E,C,G,C,E,C,G,C;Y,C,G,S,C,C;Y,G,C,G,C,C,I,C,C,E,E,M,C,S,C,c,C,I,C,C,E,C,G,C,C,C,I,C,C,C;Q,C;Q,M,C,C;I,C;I,M,C,8B,C,K,C,I,E,S;A,C;A,G,C,+B,0B,S,I,Q,C,O,E,U,E,C,E,S,E,C;a,K,C,K,E,C;Q,M,C,K,Y,C,G,K,G,G,C,C,C,Q,C,O,E,C;Y,O,C,K;Q,C;I,C;I,M,C,G,E,C,K,C,G,O,G,Q,C,O,E,M,E,C;iB,S,C,K,E,C;Y,G,C,C;gB,I,C,S,C,I,C,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,Q,C,K,E,C;Y,G,C,C;gB,I,C,S,C,C,Q,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,I,C,M,E,C;Y,M,C,I,G,O,C,M,C,K,I,K,C,M,C,K,E,I,C,S,E,Q;Q,C;Q,I,E,S,G,S,C,K,C,O,E,U,I,C,C,G,I;I,C;A,C;A,G,C,iC,0B,W,I,Q,C,O,E,I,E,C;I,G,C,C,G,C;Q,K,E,C;Q,I,E,Q,G,C;Y,E,E,C,C,C,I,C,E,K,C,C,C,C;Y,M,C,C,C,C;Q,C;Q,I,E,C,C;Q,G,E,C,C;I,C,E,C,E,C,E,C,E,C;a,I,C,C,E,C;Q,M,C,Q,C,C,E,C;Y,M,C,I,C,C;gB,C;gB,C;Y,C;Q,C;I,C;a,I,C,E,E,C;Q,E,E,C,E,K,C,G,C,S,C,C;c,C,C,G,C,C;Y,E,E,C,G,C,E,C,K,C,G,E,C,C,I,C,G,C,C,C,W,E,C,C,I,C,C,C,a,C,G,C,C,C,a,C,C,I,C,C,G,C,I,C,C,I,O,C,G,C,C,I,C,C,E,E,C,C,I,I,E,M,C,C;Y,E,E,C,G,C,E,C,E,E,G,C;gB,E,C,C,I,C;gB,C,C,K;Y,C;Y,M,C,E,C,C;gB,I,C,C;gB,I,C,C;oB,C,G,E;oB,K;gB,I,C,C;oB,C,C,K;oB,M,C,C;wB,K,E,E,C,C;wB,I,E,K;oB,C;gB,I,C,C;oB,C,C,K;oB,C,G,E,C,C;oB,E,G,C;A,yB;oB,C;oB,Q;gB,I,C,C;oB,E,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;oB,E,I,C,G,C,C,I,E,C,G,C,C,M,G,C,I,C,C,C,C,M,G,C,O,E,C,C,M,C,I,E,C,C,M,C,G,C;wB,C,G,C;wB,Q;oB,C;oB,E,E,E,C,C,M,C,M,C,I,E,C,C,I,C,C,C,K,E,C,C,I,C,C,C,I,C;wB,C,C,K,G,E,C,C;wB,K;oB,C;oB,E,E,E,C,C,M,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,G,E;wB,K;oB,C;oB,E,E,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,C,G,C,I,C,E;wB,K;oB,C;oB,E,E,C,C,C,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;Y,E,G,I,C,I,C,O,E,C;Q,C,C,K,E,C,E,C;Y,E,G,C;A,iB;gB,C;Y,C;Y,C,G,C;Q,C,Q,C;Y,C,G,C,G,C;Q,C;Q,E,E,E,C,C,I,C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AI,CAAC,SAAS;gCACzB,WAAW,EAAE,IAAI,CAAC,WAAW;4BAC9B,CAAA;wBAAA,CAAA;;Y,C;Q,C;IAEJ,CAAA;IAEM,yCAAA,CAAA,SAAA,CAAA,IAAI,GAAX,QAAA,CAAY,IAA2B,EAAhC,CAAA;QACL,EAAA,GAAK,IAAI,CAAC,WAAW,EACnB,MAAA,CAAO,OAAO,CAAC,IAAI,CACjB,CAAsD,uDACtD,IAAI;QAER,GAAA,CAAM,OAAO,GAAA,8BAAA,CAAA,CAAA;YACX,SAAS,EAAE,IAAI,CAAC,SAAS;QAAA,CAAA,EACtB,IAAI;QAET,EAAA,EAAI,IAAI,CAAC,KAAK,EACZ,OAAO,CAAC,GAAG,CAAC,CAAmC,oCAAE,OAAO;aAExD,KAAK,CAAC,CAAA,EAAA,MAAA,CAAG,IAAI,CAAC,YAAY,GAAI,CAA9B;YACE,MAAM,EAAE,CAAM;YACd,IAAI,EAAE,CAAM;YACZ,KAAK,EAAE,CAAU;YACjB,OAAO,EAAE,CAAT;gBACE,CAAc,eAAE,CAAiC;gBACjD,CAAc,eAAE,IAAI,CAAC,KAAK;gBAC1B,CAAgB,iBAAE,yCAAY;YAC/B,CAAA;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO;QAC7B,CAAA;IAEL,CAAC;IACH,MAAA,CAAA,yCAAC;AAAD,CA/FA;;;A,G,C,+B,0B,S,I,Q,C,O,E,U,E,C,E,S,E,C;a,K,C,K,E,C;Q,M,C,K,Y,C,G,K,G,G,C,C,C,Q,C,O,E,C;Y,O,C,K;Q,C;I,C;I,M,C,G,E,C,K,C,G,O,G,Q,C,O,E,M,E,C;iB,S,C,K,E,C;Y,G,C,C;gB,I,C,S,C,I,C,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,Q,C,K,E,C;Y,G,C,C;gB,I,C,S,C,C,Q,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,I,C,M,E,C;Y,M,C,I,G,O,C,M,C,K,I,K,C,M,C,K,E,I,C,S,E,Q;Q,C;Q,I,E,S,G,S,C,K,C,O,E,U,I,C,C,G,I;I,C;A,C;A,G,C,iC,0B,W,I,Q,C,O,E,I,E,C;I,G,C,C,G,C;Q,K,E,C;Q,I,E,Q,G,C;Y,E,E,C,C,C,I,C,E,K,C,C,C,C;Y,M,C,C,C,C;Q,C;Q,I,E,C,C;Q,G,E,C,C;I,C,E,C,E,C,E,C,E,C;a,I,C,C,E,C;Q,M,C,Q,C,C,E,C;Y,M,C,I,C,C;gB,C;gB,C;Y,C;Q,C;I,C;a,I,C,E,E,C;Q,E,E,C,E,K,C,G,C,S,C,C;c,C,C,G,C,C;Y,E,E,C,G,C,E,C,K,C,G,E,C,C,I,C,G,C,C,C,W,E,C,C,I,C,C,C,a,C,G,C,C,C,a,C,C,I,C,C,G,C,I,C,C,I,O,C,G,C,C,I,C,C,E,E,C,C,I,I,E,M,C,C;Y,E,E,C,G,C,E,C,E,E,G,C;gB,E,C,C,I,C;gB,C,C,K;Y,C;Y,M,C,E,C,C;gB,I,C,C;gB,I,C,C;oB,C,G,E;oB,K;gB,I,C,C;oB,C,C,K;oB,M,C,C;wB,K,E,E,C,C;wB,I,E,K;oB,C;gB,I,C,C;oB,C,C,K;oB,C,G,E,C,C;oB,E,G,C;A,yB;oB,C;oB,Q;gB,I,C,C;oB,E,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;oB,E,I,C,G,C,C,I,E,C,G,C,C,M,G,C,I,C,C,C,C,M,G,C,O,E,C,C,M,C,I,E,C,C,M,C,G,C;wB,C,G,C;wB,Q;oB,C;oB,E,E,E,C,C,M,C,M,C,I,E,C,C,I,C,C,C,K,E,C,C,I,C,C,C,I,C;wB,C,C,K,G,E,C,C;wB,K;oB,C;oB,E,E,E,C,C,M,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,G,E;wB,K;oB,C;oB,E,E,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,C,G,C,I,C,E;wB,K;oB,C;oB,E,E,C,C,C,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;Y,E,G,I,C,I,C,O,E,C;Q,C,C,K,E,C,E,C;Y,E,G,C;A,iB;gB,C;Y,C;Y,C,G,C;Q,C,Q,C;Y,C,G,C,G,C;Q,C;Q,E,E,E,C,C,I,C,E,K,C,E,C,C;Q,M,C,C;Y,K,E,E,C,C,I,E,C,C,I,I,C,C;Y,I,E,I;Q,C;I,C;I,M,C,C,G,C;Q,I,E,I,C,C;Q,C,Q,I,C,C;Q,C,S,I,C,C;I,C,E,M,C,M,K,C,c,C,C,M,C,Q,I,Q,G,C;Q,M,C,I;I,C,G,C;A,C;AJMA,GAAA,CAAA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EAAzB,CAAA;QACL,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI;IAClC,CAAC;IAEM,yCAAA,CAAA,SAAA,CAAA,cAAc,GAArB,QAAA,CAAsB,IAA0B,EAAzC,CAAA;QACL,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI;IAClC,CAAC;IAEM,yCAAA,CAAA,SAAA,CAAA,KAAK,GAAZ,QAAA,CAAa,IAAiB,EAAvB,CAAA;QACL,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI;IAClC,CAAC;IAEM,yCAAA,CAAA,SAAA,CAAA,OAAO,GAAd,QAAA,CAAe,IAAmB,EAA3B,CAAA;QACL,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI;IAClC,CAAC;IAEM,yCAAA,CAAA,SAAA,CAAA,OAAO,GAAd,QAAA,CAAe,IAAmB,EAA3B,CAAA;QACL,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI;IAClC,CAAC;IAEM,yCAAA,CAAA,SAAA,CAAA,OAAO,GAAd,QAAO,GAAA,CAAA;QACL,IAAI,CAAC,iBAAiB,GAAG,IAAI;IAC/B,CAAC;IACH,MAAA,CAAA,yCAAC;AAAD,CA7FA;;;;;;;;;A,G,C,8B,0B,Q,I,Q,G,C;I,8B,G,M,C,M,I,Q,C,C,E,C;Q,G,C,G,C,C,E,C,G,C,E,C,G,S,C,M,E,C,G,C,E,C,G,C;Y,C,G,S,C,C;Y,G,C,G,C,C,I,C,C,E,E,M,C,S,C,c,C,I,C,C,E,C,G,C,C,C,I,C,C,C;Q,C;Q,M,C,C;I,C;I,M,C,8B,C,K,C,I,E,S;A,C;A,G,C,+B,0B,S,I,Q,C,O,E,U,E,C,E,S,E,C;a,K,C,K,E,C;Q,M,C,K,Y,C,G,K,G,G,C,C,C,Q,C,O,E,C;Y,O,C,K;Q,C;I,C;I,M,C,G,E,C,K,C,G,O,G,Q,C,O,E,M,E,C;iB,S,C,K,E,C;Y,G,C,C;gB,I,C,S,C,I,C,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,Q,C,K,E,C;Y,G,C,C;gB,I,C,S,C,C,Q,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,I,C,M,E,C;Y,M,C,I,G,O,C,M,C,K,I,K,C,M,C,K,E,I,C,S,E,Q;Q,C;Q,I,E,S,G,S,C,K,C,O,E,U,I,C,C,G,I;I,C;A,C;A,G,C,iC,0B,W,I,Q,C,O,E,I,E,C;I,G,C,C,G,C;Q,K,E,C;Q,I,E,Q,G,C;Y,E,E,C,C,C,I,C,E,K,C,C,C,C;Y,M,C,C,C,C;Q,C;Q,I,E,C,C;Q,G,E,C,C;I,C,E,C,E,C,E,C,E,C;a,I,C,C,E,C;Q,M,C,Q,C,C,E,C;Y,M,C,I,C,C;gB,C;gB,C;Y,C;Q,C;I,C;a,I,C,E,E,C;Q,E,E,C,E,K,C,G,C,S,C,C;c,C,C,G,C,C;Y,E,E,C,G,C,E,C,K,C,G,E,C,C,I,C,G,C,C,C,W,E,C,C,I,C,C,C,a,C,G,C,C,C,a,C,C,I,C,C,G,C,I,C,C,I,O,C,G,C,C,I,C,C,E,E,C,C,I,I,E,M,C,C;Y,E,E,C,G,C,E,C,E,E,G,C;gB,E,C,C,I,C;gB,C,C,K;Y,C;Y,M,C,E,C,C;gB,I,C,C;gB,I,C,C;oB,C,G,E;oB,K;gB,I,C,C;oB,C,C,K;oB,M,C,C;wB,K,E,E,C,C;wB,I,E,K;oB,C;gB,I,C,C;oB,C,C,K;oB,C,G,E,C,C;oB,E,G,C;A,yB;oB,C;oB,Q;gB,I,C,C;oB,E,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;oB,E,I,C,G,C,C,I,E,C,G,C,C,M,G,C,I,C,C,C,C,M,G,C,O,E,C,C,M,C,I,E,C,C,M,C,G,C;wB,C,G,C;wB,Q;oB,C;oB,E,E,E,C,C,M,C,M,C,I,E,C,C,I,C,C,C,K,E,C,C,I,C,C,C,I,C;wB,C,C,K,G,E,C,C;wB,K;oB,C;oB,E,E,E,C,C,M,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,G,E;wB,K;oB,C;oB,E,E,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,C,G,C,I,C,E;wB,K;oB,C;oB,E,E,C,C,C,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;Y,E,G,I,C,I,C,O,E,C;Q,C,C,K,E,C,E,C;Y,E,G,C;A,iB;gB,C;Y,C;Y,C,G,C;Q,C,Q,C;Y,C,G,C,G,C;Q,C;Q,E,E,E,C,C,I,C,E,K,C,E,C,C;Q,M,C,C;Y,K,E,E,C,C,I,E,C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","sources":["index.ts","src/PlayerAnalytics.ts","PlayerAnalytics.ts","src/utils/constants.ts","constants.ts","src/utils/Reporter.ts","Reporter.ts","src/PlayerAnalyticsConnector.ts","PlayerAnalyticsConnector.ts"],"sourcesContent":["export {\n PlayerAnalytics,\n IPlayerAnalyticsInitOptions,\n} from \"./src/PlayerAnalytics\";\n\nexport {\n PlayerAnalyticsConnector,\n IPlayerAnalyticsConnectorInitOptions,\n} from \"./src/PlayerAnalyticsConnector\";\n","import {\n PlayerAnalyticsClientModule,\n TBitrateChangedEvent,\n TBufferedEvent,\n TBufferingEvent,\n TErrorEvent,\n THeartbeatEvent,\n TInitEvent,\n TLoadedEvent,\n TLoadingEvent,\n TMetadataEvent,\n TPausedEvent,\n TPlayingEvent,\n TSeekedEvent,\n TSeekingEvent,\n TStoppedEvent,\n TWarningEvent,\n} from \"@eyevinn/player-analytics-specification\";\nimport { HEARTBEAT_INTERVAL } from \"./utils/constants\";\nimport { Reporter } from \"./utils/Reporter\";\n\nexport interface IPlayerAnalyticsInitOptions {\n sessionId?: string;\n heartbeatInterval?: number;\n}\n\nexport class PlayerAnalytics implements PlayerAnalyticsClientModule {\n private debug = false;\n private eventsinkUrl: string;\n private analyticsReporter: Reporter;\n constructor(eventsinkUrl: string, debug?: boolean) {\n this.debug = debug;\n this.eventsinkUrl = eventsinkUrl;\n }\n\n public async initiateAnalyticsReporter({\n sessionId,\n heartbeatInterval = HEARTBEAT_INTERVAL,\n }: IPlayerAnalyticsInitOptions) {\n this.analyticsReporter = new Reporter({\n sessionId,\n eventsinkUrl: this.eventsinkUrl,\n debug: this.debug,\n heartbeatInterval,\n });\n\n const { sessionId: generatedSessionId, isInitiated } =\n await this.analyticsReporter.init(sessionId);\n\n return { sessionId: generatedSessionId, heartbeatInterval, isInitiated };\n }\n\n public init(data: TInitEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public metadata(data: TMetadataEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public heartbeat(data: THeartbeatEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public loading(data: TLoadingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public loaded(data: TLoadedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public playing(data: TPlayingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public paused(data: TPausedEvent): void {\n this.pause(data);\n }\n\n public pause(data: TPausedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public buffering(data: TBufferingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public buffered(data: TBufferedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public seeking(data: TSeekingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public seeked(data: TSeekedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public bitrateChanged(data: TBitrateChangedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public error(data: TErrorEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public warning(data: TWarningEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public stopped(data: TStoppedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public destroy() {\n this.analyticsReporter = null;\n }\n}\n",null,"export enum EPASEvents {\n loading = \"loading\",\n loaded = \"loaded\",\n play = \"playing\",\n resume = \"playing\",\n pause = \"paused\",\n seeking = \"seeking\",\n seeked = \"seeked\",\n buffering = \"buffering\",\n buffered = \"buffered\",\n ended = \"stopped\",\n error = \"error\",\n warning = \"warning\",\n bitratechanged = \"bitrate_changed\",\n heartbeat = \"heartbeat\",\n metadata = \"metadata\",\n}\n\nexport const HEARTBEAT_INTERVAL = 30000;\n\nimport packageJson from \"@eyevinn/player-analytics-specification/package.json\";\nexport const EPAS_VERSION = packageJson.version;\n",null,"import {\n TInitEvent,\n TPlayerAnalyticsEvent,\n} from \"@eyevinn/player-analytics-specification\";\nimport { EPAS_VERSION, HEARTBEAT_INTERVAL } from \"./constants\";\n\nexport interface IReporterOptions {\n eventsinkUrl: string;\n heartbeatInterval?: number;\n sessionId?: string;\n debug?: boolean;\n}\n\nexport interface IReporterPostOptions {\n event: string;\n timestamp: number;\n playhead: number;\n duration: number;\n}\n\nexport class Reporter {\n private debug: boolean;\n private eventsinkUrl: string;\n private sessionId?: string;\n private heartbeatInterval?: number;\n private isInitiated = false;\n\n constructor(options: IReporterOptions) {\n this.debug = options.debug;\n this.eventsinkUrl = options.eventsinkUrl;\n this.sessionId = options.sessionId;\n this.heartbeatInterval = options.heartbeatInterval || HEARTBEAT_INTERVAL;\n\n if (this.debug) {\n console.log(\"[AnalyticsReporter] Initiated AnalyticsReporter\", options);\n }\n }\n\n public async init(sessionId?: string): Promise<Record<string, any>> {\n this.sessionId = sessionId || this.sessionId;\n const data: TInitEvent = {\n event: \"init\",\n sessionId: this.sessionId,\n timestamp: Date.now(),\n playhead: -1,\n duration: -1,\n };\n if (this.debug) {\n console.log(\"[AnalyticsReporter] Init session:\", data);\n this.isInitiated = true;\n return {\n sessionId: this.sessionId,\n heartbeatInterval: this.heartbeatInterval,\n isInitiated: this.isInitiated,\n };\n } else {\n const initResponse = await fetch(`${this.eventsinkUrl}`, {\n method: \"POST\",\n mode: \"cors\",\n cache: \"no-cache\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n \"X-EPAS-Event\": data.event,\n \"X-EPAS-Version\": EPAS_VERSION,\n },\n body: JSON.stringify(data),\n });\n if (!initResponse.ok) {\n throw new Error(\n `[AnalyticsReporter] init failed: ${initResponse.statusText}`\n );\n }\n const initResponseJson = await initResponse.json();\n\n if (!this.sessionId && !initResponseJson.sessionId) {\n throw new Error(`[AnalyticsReporter] init failed: no sessionId`);\n }\n if (initResponseJson.sessionId) {\n this.sessionId = initResponseJson.sessionId;\n }\n this.isInitiated = true;\n return {\n heartbeatInterval: this.heartbeatInterval,\n sessionId: this.sessionId,\n isInitiated: this.isInitiated,\n };\n }\n }\n\n public send(data: TPlayerAnalyticsEvent): void {\n if (!this.isInitiated)\n return console.warn(\n \"[AnalyticsReporter] Cannot report before initiation:\",\n data\n );\n const payload = {\n sessionId: this.sessionId,\n ...data,\n };\n if (this.debug) {\n console.log(\"[AnalyticsReporter] Send payload:\", payload);\n } else {\n fetch(`${this.eventsinkUrl}`, {\n method: \"POST\",\n mode: \"cors\",\n cache: \"no-cache\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n \"X-EPAS-Event\": data.event,\n \"X-EPAS-Version\": EPAS_VERSION,\n },\n body: JSON.stringify(payload),\n });\n }\n }\n}\n",null,"import { VideoEventFilter, PlayerEvents } from \"@eyevinn/video-event-filter\";\nimport { EPASEvents } from \"./utils/constants\";\nimport { PlayerAnalytics } from \"./PlayerAnalytics\";\nimport {\n TBaseEvent,\n TBitrateChangedEventPayload,\n TErrorEventPayload,\n TMetadataEventPayload,\n UUID,\n} from \"@eyevinn/player-analytics-specification\";\n\nexport interface IPlayerAnalyticsConnectorInitOptions {\n sessionId?: string;\n heartbeatInterval?: number;\n}\n\nexport class PlayerAnalyticsConnector {\n private eventsinkUrl: string;\n private sessionId: UUID;\n private player: HTMLVideoElement;\n\n private playerAnalytics: PlayerAnalytics;\n private analyticsInitiated = false;\n\n private videoEventFilter: VideoEventFilter;\n private videoEventListener: any;\n\n private heartbeatInterval: number;\n private heartbeatIntervalTimer: ReturnType<typeof setInterval>;\n\n constructor(eventsinkUrl: string, debug?: boolean) {\n this.eventsinkUrl = eventsinkUrl;\n this.playerAnalytics = new PlayerAnalytics(this.eventsinkUrl, debug);\n }\n\n public async init(options: IPlayerAnalyticsConnectorInitOptions) {\n this.sessionId = options.sessionId;\n const { heartbeatInterval, isInitiated } =\n await this.playerAnalytics.initiateAnalyticsReporter({\n sessionId: this.sessionId,\n ...options,\n });\n\n this.analyticsInitiated = isInitiated;\n this.heartbeatInterval = heartbeatInterval;\n }\n\n public load(player: HTMLVideoElement) {\n this.player = player;\n this.playerAnalytics.loading({\n event: EPASEvents.loading,\n ...this.playbackState(),\n });\n this.initiateVideoEventFilter();\n }\n\n private initiateVideoEventFilter() {\n if (!this.player) return;\n this.videoEventFilter = new VideoEventFilter(this.player);\n this.videoEventFilter.addEventListener(\n \"*\",\n (this.videoEventListener = (event: PlayerEvents) => {\n if (!Object.keys(EPASEvents).includes(event)) return;\n let eventType;\n const extraData = {};\n if (!event) return;\n switch (event) {\n case PlayerEvents.Loaded:\n eventType = EPASEvents.loaded;\n break;\n case PlayerEvents.Loading:\n eventType = EPASEvents.loading;\n break;\n case PlayerEvents.Play:\n case PlayerEvents.Resume:\n eventType = EPASEvents.play;\n this.startInterval();\n break;\n case PlayerEvents.Pause:\n eventType = EPASEvents.pause;\n break;\n case PlayerEvents.Seeking:\n eventType = EPASEvents.seeking;\n break;\n case PlayerEvents.Seeked:\n eventType = EPASEvents.seeked;\n break;\n case PlayerEvents.Buffering:\n eventType = EPASEvents.buffering;\n break;\n case PlayerEvents.Buffered:\n eventType = EPASEvents.buffered;\n break;\n case PlayerEvents.Ended:\n eventType = EPASEvents.ended;\n (extraData as any).reason = \"ended\";\n this.stopInterval();\n break;\n case PlayerEvents.Error:\n eventType = EPASEvents.error;\n (extraData as any).reason = \"error\";\n this.stopInterval();\n break;\n default:\n break;\n }\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics[eventType]({\n event: eventType,\n ...this.playbackState(),\n ...(Object.keys(extraData).length > 0 && { payload: extraData }),\n });\n })\n );\n }\n\n private startInterval() {\n if (this.heartbeatIntervalTimer) return;\n this.heartbeatIntervalTimer = setInterval(() => {\n this.playerAnalytics.heartbeat({\n event: EPASEvents.heartbeat,\n ...this.playbackState(),\n });\n }, this.heartbeatInterval);\n }\n\n private stopInterval() {\n clearInterval(this.heartbeatIntervalTimer);\n }\n\n public reportBitrateChange(payload: TBitrateChangedEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.bitrateChanged({\n event: EPASEvents.bitratechanged,\n ...this.playbackState(),\n payload,\n });\n }\n\n public reportStop() {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.stopped({\n event: EPASEvents.ended,\n ...this.playbackState(),\n payload: { reason: \"aborted\" },\n });\n this.stopInterval();\n }\n\n public reportError(error: TErrorEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.error({\n event: EPASEvents.error,\n ...this.playbackState(),\n payload: error,\n });\n this.playerAnalytics.stopped({\n event: EPASEvents.ended,\n ...this.playbackState(),\n payload: { reason: \"error\" },\n });\n this.stopInterval();\n }\n\n public reportMetadata(payload: TMetadataEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.metadata({\n event: EPASEvents.metadata,\n ...this.playbackState(),\n payload,\n });\n }\n\n public reportWarning(payload: TErrorEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.warning({\n event: EPASEvents.warning,\n ...this.playbackState(),\n payload,\n });\n }\n\n private playbackState(): TBaseEvent {\n const playhead =\n !this.player?.currentTime && this.player?.currentTime !== 0\n ? -1\n : this.player.currentTime || 0;\n const duration =\n !this.player?.duration && this.player?.duration !== 0\n ? -1\n : this.player.duration || 0;\n return {\n sessionId: this.sessionId,\n timestamp: Date.now(),\n playhead,\n duration,\n };\n }\n\n public deinit() {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.stopInterval();\n this.heartbeatInterval = null;\n this.videoEventFilter &&\n this.videoEventFilter.removeEventListener(\"*\", this.videoEventListener);\n this.videoEventFilter = null;\n }\n\n public destroy() {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.destroy();\n this.heartbeatInterval = null;\n this.videoEventFilter &&\n this.videoEventFilter.removeEventListener(\"*\", this.videoEventListener);\n this.stopInterval();\n }\n}\n",null],"names":[],"version":3,"file":"index.js.map"}
|
|
1
|
+
{"mappings":";;;;;;;;;;;;;;;;;;AEAO,GAAA,CAAM,yCAAkB,GAAG,KAAK;AAGhC,GAAA,CAAM,yCAAY,GAAG,+EAAW,CAAC,OAAO;;;;;;;A,G,C,8B,0B,Q,I,Q,G,C;I,8B,G,M,C,M,I,Q,C,C,E,C;Q,G,C,G,C,C,E,C,G,C,E,C,G,S,C,M,E,C,G,C,E,C,G,C;Y,C,G,S,C,C;Y,G,C,G,C,C,I,C,C,E,E,M,C,S,C,c,C,I,C,C,E,C,G,C,C,C,I,C,C,C;Q,C;Q,M,C,C;I,C;I,M,C,8B,C,K,C,I,E,S;A,C;A,G,C,+B,0B,S,I,Q,C,O,E,U,E,C,E,S,E,C;a,K,C,K,E,C;Q,M,C,K,Y,C,G,K,G,G,C,C,C,Q,C,O,E,C;Y,O,C,K;Q,C;I,C;I,M,C,G,E,C,K,C,G,O,G,Q,C,O,E,M,E,C;iB,S,C,K,E,C;Y,G,C,C;gB,I,C,S,C,I,C,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,Q,C,K,E,C;Y,G,C,C;gB,I,C,S,C,C,Q,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,I,C,M,E,C;Y,M,C,I,G,O,C,M,C,K,I,K,C,M,C,K,E,I,C,S,E,Q;Q,C;Q,I,E,S,G,S,C,K,C,O,E,U,I,C,C,G,I;I,C;A,C;A,G,C,iC,0B,W,I,Q,C,O,E,I,E,C;I,G,C,C,G,C;Q,K,E,C;Q,I,E,Q,G,C;Y,E,E,C,C,C,I,C,E,K,C,C,C,C;Y,M,C,C,C,C;Q,C;Q,I,E,C,C;Q,G,E,C,C;I,C,E,C,E,C,E,C,E,C;a,I,C,C,E,C;Q,M,C,Q,C,C,E,C;Y,M,C,I,C,C;gB,C;gB,C;Y,C;Q,C;I,C;a,I,C,E,E,C;Q,E,E,C,E,K,C,G,C,S,C,C;c,C,C,G,C,C;Y,E,E,C,G,C,E,C,K,C,G,E,C,C,I,C,G,C,C,C,W,E,C,C,I,C,C,C,a,C,G,C,C,C,a,C,C,I,C,C,G,C,I,C,C,I,O,C,G,C,C,I,C,C,E,E,C,C,I,I,E,M,C,C;Y,E,E,C,G,C,E,C,E,E,G,C;gB,E,C,C,I,C;gB,C,C,K;Y,C;Y,M,C,E,C,C;gB,I,C,C;gB,I,C,C;oB,C,G,E;oB,K;gB,I,C,C;oB,C,C,K;oB,M,C,C;wB,K,E,E,C,C;wB,I,E,K;oB,C;gB,I,C,C;oB,C,C,K;oB,C,G,E,C,C;oB,E,G,C;A,yB;oB,C;oB,Q;gB,I,C,C;oB,E,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;oB,E,I,C,G,C,C,I,E,C,G,C,C,M,G,C,I,C,C,C,C,M,G,C,O,E,C,C,M,C,I,E,C,C,M,C,G,C;wB,C,G,C;wB,Q;oB,C;oB,E,E,E,C,C,M,C,M,C,I,E,C,C,I,C,C,C,K,E,C,C,I,C,C,C,I,C;wB,C,C,K,G,E,C,C;wB,K;oB,C;oB,E,E,E,C,C,M,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,G,E;wB,K;oB,C;oB,E,E,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,C,G,C,I,C,E;wB,K;oB,C;oB,E,E,C,C,C,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;Y,E,G,I,C,I,C,O,E,C;Q,C,C,K,E,C,E,C;Y,E,G,C;A,iB;gB,C;Y,C;Y,C,G,C;Q,C,Q,C;Y,C,G,C,G,C;Q,C;Q,E,E,E,C,C,I,C,E,K,C,E,C,C;Q,M,C,C;Y,K,E,E,C,C,I,E,C,C,I,I,C,C;Y,I,E,I;Q,C;I,C;I,M,C,C,G,C;Q,I,E,I,C,C;Q,C,Q,I,C,C;Q,C,S,I,C,C;I,C,E,M,C,M,K,C,c,C,C,M,C,Q,I,Q,G,C;Q,M,C,I;I,C,G,C;A,C;ACiB/C,GAAA,CAAA,yCAAA,GAAA,QAAA,GAAA,CAAA;aAOE,yCAAA,CAAY,OAAyB,EAArC,CAAA;QAFQ,IAAA,CAAA,WAAW,GAAG,KAAK;QAGzB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;QAC1B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY;QACxC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS;QAClC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,yCAAkB;QAExE,EAAA,EAAI,IAAI,CAAC,KAAK,EACZ,OAAO,CAAC,GAAG,CAAC,CAAiD,kDAAE,OAAO;IAE1E,CAAC;IAEY,yCAAA,CAAA,SAAA,CAAA,IAAI,GAAjB,QAAA,CAAkB,SAAkB,EAAvB,CAAA;QAA0B,MAAA,CAAA,+BAAA,CAAA,IAAA,EAAA,IAAA,CAAA,CAAA,EAAA,OAAO,EAAP,QAAA,GAAA,CAAA;Y,G,C,I,E,Y,E,gB;Y,M,C,iC,C,I,E,Q,C,E,E,C;gB,M,C,E,C,K;oB,I,C,C;wBACrC,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,IAAI,CAAC,SAAS;wBACtC,IAAI,GAAe,CAAnB;4BACJ,KAAK,EAAE,CAAM;4BACb,SAAS,EAAE,IAAI,CAAC,SAAS;4BACzB,SAAS,EAAE,IAAI,CAAC,GAAG;4BACnB,QAAQ,EAAE,EAAE;4BACZ,QAAQ,EAAE,EAAE;wBACb,CAAA;wBACG,EAAA,GAAA,IAAI,CAAC,KAAK,EAAV,MAAA,CAAA,CAAA;AAAA,6BAAA,AAAA,CAAA,AAAA,EAAA,AAAA,KAAA,AAAA,EAAA;AAAA,6BAAA;wBAAA,CAAA;wBACF,OAAO,CAAC,GAAG,CAAC,CAAmC,oCAAE,IAAI;wBACrD,IAAI,CAAC,WAAW,GAAG,IAAI;wBACvB,MAAA,CAAA,CAAA;AAAA,6BAAA,AAAA,CAAA,AAAA,EAAA,AAAA,MAAA,AAAA,EAAA;4BAAO,CAAP;gCACE,SAAS,EAAE,IAAI,CAAC,SAAS;gCACzB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gCACzC,WAAW,EAAE,IAAI,CAAC,WAAW;4BAC9B,CAAA;wBAAA,CAAA;oBAEoB,IAAA,CAAA,CAAA;wBAAA,MAAA,CAAA,CAAA;AAAA,6BAAA,AAAA,CAAA,AAAA,EAAA,AAAA,KAAA,AAAA,EAAA;4BAAM,KAAK,CAAC,CAAA,EAAA,MAAA,CAAG,IAAI,CAAC,YAAY,GAAI,CAApC;gCACnB,MAAM,EAAE,CAAM;gCACd,IAAI,EAAE,CAAM;gCACZ,KAAK,EAAE,CAAU;gCACjB,OAAO,EAAE,CAAT;oCACE,CAAc,eAAE,CAAiC;oCACjD,CAAc,eAAE,IAAI,CAAC,KAAK;oCAC1B,CAAgB,iBAAE,yCAAY;gCAC/B,CAAA;gCACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;4BAC1B,CAAA;wBAAC,CAAA;oB,I,C,C;wBAVI,YAAY,GAAG,EAAA,CAAA,IAAA;wBAWrB,EAAA,GAAK,YAAY,CAAC,EAAE,EAClB,KAAA,CAAM,GAAA,CAAI,KAAK,CACb,CAAA,mCAAA,MAAA,CAAoC,YAAY,CAAC,UAAU;wBAGtC,MAAA,CAAA,CAAA;AAAA,6BAAA,AAAA,CAAA,AAAA,EAAA,AAAA,KAAA,AAAA,EAAA;4BAAM,YAAY,CAAC,IAAI;wBAAE,CAAA;oB,I,C,C;wBAA5C,gBAAgB,GAAG,EAAA,CAAA,IAAA;wBAEzB,EAAA,GAAK,IAAI,CAAC,SAAS,KAAK,gBAAgB,CAAC,SAAS,EAChD,KAAA,CAAM,GAAA,CAAI,KAAK,CAAC,CAA+C;wBAEjE,EAAA,EAAI,gBAAgB,CAAC,SAAS,EAC5B,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,SAAS;wBAE7C,IAAI,CAAC,WAAW,GAAG,IAAI;wBACvB,MAAA,CAAA,CAAA;AAAA,6BAAA,AAAA,CAAA,AAAA,EAAA,AAAA,MAAA,AAAA,EAAA;4BAAO,CAAP;gCACE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gCACzC,SAAS,EAAE,IAAI,CAAC,SAAS;gCACzB,WAAW,EAAE,IAAI,CAAC,WAAW;4BAC9B,CAAA;wBAAA,CAAA;;Y,C;Q,C;IAEJ,CAAA;IAEM,yCAAA,CAAA,SAAA,CAAA,IAAI,GAAX,QAAA,CAAY,IAA2B,EAAhC,CAAA;QACL,EAAA,GAAK,IAAI,CAAC,WAAW,EACnB,MAAA,CAAO,OAAO,CAAC,IAAI,CACjB,CAAsD,uDACtD,IAAI;QAER,GAAA,CAAM,OAAO,GAAA,8BAAA,CAAA,CAAA;YACX,SAAS,EAAE,IAAI,CAAC,SAAS;QAAA,CAAA,EACtB,IAAI;QAET,EAAA,EAAI,IAAI,CAAC,KAAK,EACZ,OAAO,CAAC,GAAG,CAAC,CAAmC,oCAAE,OAAO;aAExD,KAAK,CAAC,CAAA,EAAA,MAAA,CAAG,IAAI,CAAC,YAAY,GAAI,CAA9B;YACE,MAAM,EAAE,CAAM;YACd,IAAI,EAAE,CAAM;YACZ,KAAK,EAAE,CAAU;YACjB,OAAO,EAAE,CAAT;gBACE,CAAc,eAAE,CAAiC;gBACjD,CAAc,eAAE,IAAI,CAAC,KAAK;gBAC1B,CAAgB,iBAAE,yCAAY;YAC/B,CAAA;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO;QAC7B,CAAA;IAEL,CAAC;IACH,MAAA,CAAA,yCAAC;AAAD,CA/FA;;;A,G,C,+B,0B,S,I,Q,C,O,E,U,E,C,E,S,E,C;a,K,C,K,E,C;Q,M,C,K,Y,C,G,K,G,G,C,C,C,Q,C,O,E,C;Y,O,C,K;Q,C;I,C;I,M,C,G,E,C,K,C,G,O,G,Q,C,O,E,M,E,C;iB,S,C,K,E,C;Y,G,C,C;gB,I,C,S,C,I,C,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,Q,C,K,E,C;Y,G,C,C;gB,I,C,S,C,C,Q,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,I,C,M,E,C;Y,M,C,I,G,O,C,M,C,K,I,K,C,M,C,K,E,I,C,S,E,Q;Q,C;Q,I,E,S,G,S,C,K,C,O,E,U,I,C,C,G,I;I,C;A,C;A,G,C,iC,0B,W,I,Q,C,O,E,I,E,C;I,G,C,C,G,C;Q,K,E,C;Q,I,E,Q,G,C;Y,E,E,C,C,C,I,C,E,K,C,C,C,C;Y,M,C,C,C,C;Q,C;Q,I,E,C,C;Q,G,E,C,C;I,C,E,C,E,C,E,C,E,C;a,I,C,C,E,C;Q,M,C,Q,C,C,E,C;Y,M,C,I,C,C;gB,C;gB,C;Y,C;Q,C;I,C;a,I,C,E,E,C;Q,E,E,C,E,K,C,G,C,S,C,C;c,C,C,G,C,C;Y,E,E,C,G,C,E,C,K,C,G,E,C,C,I,C,G,C,C,C,W,E,C,C,I,C,C,C,a,C,G,C,C,C,a,C,C,I,C,C,G,C,I,C,C,I,O,C,G,C,C,I,C,C,E,E,C,C,I,I,E,M,C,C;Y,E,E,C,G,C,E,C,E,E,G,C;gB,E,C,C,I,C;gB,C,C,K;Y,C;Y,M,C,E,C,C;gB,I,C,C;gB,I,C,C;oB,C,G,E;oB,K;gB,I,C,C;oB,C,C,K;oB,M,C,C;wB,K,E,E,C,C;wB,I,E,K;oB,C;gB,I,C,C;oB,C,C,K;oB,C,G,E,C,C;oB,E,G,C;A,yB;oB,C;oB,Q;gB,I,C,C;oB,E,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;oB,E,I,C,G,C,C,I,E,C,G,C,C,M,G,C,I,C,C,C,C,M,G,C,O,E,C,C,M,C,I,E,C,C,M,C,G,C;wB,C,G,C;wB,Q;oB,C;oB,E,E,E,C,C,M,C,M,C,I,E,C,C,I,C,C,C,K,E,C,C,I,C,C,C,I,C;wB,C,C,K,G,E,C,C;wB,K;oB,C;oB,E,E,E,C,C,M,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,G,E;wB,K;oB,C;oB,E,E,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,C,G,C,I,C,E;wB,K;oB,C;oB,E,E,C,C,C,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;Y,E,G,I,C,I,C,O,E,C;Q,C,C,K,E,C,E,C;Y,E,G,C;A,iB;gB,C;Y,C;Y,C,G,C;Q,C,Q,C;Y,C,G,C,G,C;Q,C;Q,E,E,E,C,C,I,C,E,K,C,E,C,C;Q,M,C,C;Y,K,E,E,C,C,I,E,C,C,I,I,C,C;Y,I,E,I;Q,C;I,C;I,M,C,C,G,C;Q,I,E,I,C,C;Q,C,Q,I,C,C;Q,C,S,I,C,C;I,C,E,M,C,M,K,C,c,C,C,M,C,Q,I,Q,G,C;Q,M,C,I;I,C,G,C;A,C;AFMA,GAAA,CAAA,yCAAA,GAAA,QAAA,GAAA,CAAA;aAIE,yCAAA,CAAY,YAAoB,EAAE,KAAe,EAAjD,CAAA;QAHQ,IAAA,CAAA,KAAK,GAAG,KAAK;QAInB,IAAI,CAAC,KAAK,GAAG,KAAK;QAClB,IAAI,CAAC,YAAY,GAAG,YAAY;IAClC,CAAC;IAEY,yCAAA,CAAA,SAAA,CAAA,yBAAyB,GAAtC,QAAA,CAAuC,EAGT,EAHjB,CAAA;QACX,GAAA,CAAA,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,EAAA,GAAA,EAAA,CAAA,iBAAsC,EAAtC,iBAAiB,GAAA,EAAA,KAAA,IAAA,CAAA,CAAA,GAAG,yCAAkB,GAAA,EAAA;Q,M,C,+B,C,I,E,I,C,C,E,I,C,C,E,Q,G,C;Y,G,C,E,E,kB,E,W;Y,M,C,iC,C,I,E,Q,C,E,E,C;gB,M,C,E,C,K;oB,I,C,C;wBAEtC,IAAI,CAAC,iBAAiB,GAAG,GAAA,CAAI,kCAAQ,CAAC,CAAtC;4BACE,SAAS,EAAA,SAAA;4BACT,YAAY,EAAE,IAAI,CAAC,YAAY;4BAC/B,KAAK,EAAE,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E,C;Q,G,C,G,C,C,E,C,G,C,E,C,G,S,C,M,E,C,G,C,E,C,G,C;Y,C,G,S,C,C;Y,G,C,G,C,C,I,C,C,E,E,M,C,S,C,c,C,I,C,C,E,C,G,C,C,C,I,C,C,C;Q,C;Q,M,C,C;I,C;I,M,C,8B,C,K,C,I,E,S;A,C;A,G,C,+B,0B,S,I,Q,C,O,E,U,E,C,E,S,E,C;a,K,C,K,E,C;Q,M,C,K,Y,C,G,K,G,G,C,C,C,Q,C,O,E,C;Y,O,C,K;Q,C;I,C;I,M,C,G,E,C,K,C,G,O,G,Q,C,O,E,M,E,C;iB,S,C,K,E,C;Y,G,C,C;gB,I,C,S,C,I,C,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,Q,C,K,E,C;Y,G,C,C;gB,I,C,S,C,C,Q,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,I,C,M,E,C;Y,M,C,I,G,O,C,M,C,K,I,K,C,M,C,K,E,I,C,S,E,Q;Q,C;Q,I,E,S,G,S,C,K,C,O,E,U,I,C,C,G,I;I,C;A,C;A,G,C,iC,0B,W,I,Q,C,O,E,I,E,C;I,G,C,C,G,C;Q,K,E,C;Q,I,E,Q,G,C;Y,E,E,C,C,C,I,C,E,K,C,C,C,C;Y,M,C,C,C,C;Q,C;Q,I,E,C,C;Q,G,E,C,C;I,C,E,C,E,C,E,C,E,C;a,I,C,C,E,C;Q,M,C,Q,C,C,E,C;Y,M,C,I,C,C;gB,C;gB,C;Y,C;Q,C;I,C;a,I,C,E,E,C;Q,E,E,C,E,K,C,G,C,S,C,C;c,C,C,G,C,C;Y,E,E,C,G,C,E,C,K,C,G,E,C,C,I,C,G,C,C,C,W,E,C,C,I,C,C,C,a,C,G,C,C,C,a,C,C,I,C,C,G,C,I,C,C,I,O,C,G,C,C,I,C,C,E,E,C,C,I,I,E,M,C,C;Y,E,E,C,G,C,E,C,E,E,G,C;gB,E,C,C,I,C;gB,C,C,K;Y,C;Y,M,C,E,C,C;gB,I,C,C;gB,I,C,C;oB,C,G,E;oB,K;gB,I,C,C;oB,C,C,K;oB,M,C,C;wB,K,E,E,C,C;wB,I,E,K;oB,C;gB,I,C,C;oB,C,C,K;oB,C,G,E,C,C;oB,E,G,C;A,yB;oB,C;oB,Q;gB,I,C,C;oB,E,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;oB,E,I,C,G,C,C,I,E,C,G,C,C,M,G,C,I,C,C,C,C,M,G,C,O,E,C,C,M,C,I,E,C,C,M,C,G,C;wB,C,G,C;wB,Q;oB,C;oB,E,E,E,C,C,M,C,M,C,I,E,C,C,I,C,C,C,K,E,C,C,I,C,C,C,I,C;wB,C,C,K,G,E,C,C;wB,K;oB,C;oB,E,E,E,C,C,M,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,G,E;wB,K;oB,C;oB,E,E,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,C,G,C,I,C,E;wB,K;oB,C;oB,E,E,C,C,C,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;Y,E,G,I,C,I,C,O,E,C;Q,C,C,K,E,C,E,C;Y,E,G,C;A,iB;gB,C;Y,C;Y,C,G,C;Q,C,Q,C;Y,C,G,C,G,C;Q,C;Q,E,E,E,C,C,I,C,E,K,C,E,C,C;Q,M,C,C;Y,K,E,E,C,C,I,E,C,C,I,I,C,C;Y,I,E,I;Q,C;I,C;I,M,C,C,G,C;Q,I,E,I,C,C;Q,C,Q,I,C,C;Q,C,S,I,C,C;I,C,E,M,C,M,K,C,c,C,C,M,C,Q,I,Q,G,C;Q,M,C,I;I,C,G,C;A,C;AGNA,GAAA,CAAA,yCAAA,GAAA,QAAA,GAAA,CAAA;aAcE,yCAAA,CAAY,YAAoB,EAAE,KAAe,EAAjD,CAAA;QARQ,IAAA,CAAA,kBAAkB,GAAG,KAAK;QAShC,IAAI,CAAC,YAAY,GAAG,YAAY;QAChC,IAAI,CAAC,eAAe,GAAG,GAAA,CAAI,yCAAe,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK;IACrE,CAAC;IAEY,yCAAA,CAAA,SAAA,CAAA,IAAI,GAAjB,QAAA,CAAkB,OAA6C,EAAlD,CAAA;Q,M,C,+B,C,I,E,I,C,C,E,I,C,C,E,Q,G,C;Y,G,C,E,E,iB,E,W;Y,M,C,iC,C,I,E,Q,C,E,E,C;gB,M,C,E,C,K;oB,I,C,C;wBACX,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS;wBAEhC,MAAA,CAAA,CAAA;AAAA,6BAAA,AAAA,CAAA,AAAA,EAAA,AAAA,KAAA,AAAA,EAAA;4BAAM,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAA,8BAAA,CAAA,CAAA;gCAClD,SAAS,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","sources":["index.ts","src/PlayerAnalytics.ts","src/utils/constants.ts","src/utils/Reporter.ts","src/PlayerAnalyticsConnector.ts"],"sourcesContent":["export {\n PlayerAnalytics,\n IPlayerAnalyticsInitOptions,\n} from \"./src/PlayerAnalytics\";\n\nexport {\n PlayerAnalyticsConnector,\n IPlayerAnalyticsConnectorInitOptions,\n} from \"./src/PlayerAnalyticsConnector\";\n","import {\n PlayerAnalyticsClientModule,\n TBitrateChangedEvent,\n TBufferedEvent,\n TBufferingEvent,\n TErrorEvent,\n THeartbeatEvent,\n TInitEvent,\n TLoadedEvent,\n TLoadingEvent,\n TMetadataEvent,\n TPausedEvent,\n TPlayingEvent,\n TSeekedEvent,\n TSeekingEvent,\n TStoppedEvent,\n TWarningEvent,\n} from \"@eyevinn/player-analytics-specification\";\nimport { HEARTBEAT_INTERVAL } from \"./utils/constants\";\nimport { Reporter } from \"./utils/Reporter\";\n\nexport interface IPlayerAnalyticsInitOptions {\n sessionId?: string;\n heartbeatInterval?: number;\n}\n\nexport class PlayerAnalytics implements PlayerAnalyticsClientModule {\n private debug = false;\n private eventsinkUrl: string;\n private analyticsReporter: Reporter;\n constructor(eventsinkUrl: string, debug?: boolean) {\n this.debug = debug;\n this.eventsinkUrl = eventsinkUrl;\n }\n\n public async initiateAnalyticsReporter({\n sessionId,\n heartbeatInterval = HEARTBEAT_INTERVAL,\n }: IPlayerAnalyticsInitOptions) {\n this.analyticsReporter = new Reporter({\n sessionId,\n eventsinkUrl: this.eventsinkUrl,\n debug: this.debug,\n heartbeatInterval,\n });\n\n const { sessionId: generatedSessionId, isInitiated } =\n await this.analyticsReporter.init(sessionId);\n\n return { sessionId: generatedSessionId, heartbeatInterval, isInitiated };\n }\n\n public init(data: TInitEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public metadata(data: TMetadataEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public heartbeat(data: THeartbeatEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public loading(data: TLoadingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public loaded(data: TLoadedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public playing(data: TPlayingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public pause(data: TPausedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public buffering(data: TBufferingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public buffered(data: TBufferedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public seeking(data: TSeekingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public seeked(data: TSeekedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public bitrateChanged(data: TBitrateChangedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public error(data: TErrorEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public warning(data: TWarningEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public stopped(data: TStoppedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public destroy() {\n this.analyticsReporter = null;\n }\n}\n","export const HEARTBEAT_INTERVAL = 30000;\n\nimport packageJson from \"@eyevinn/player-analytics-specification/package.json\";\nexport const EPAS_VERSION = packageJson.version;\n","import {\n TInitEvent,\n TPlayerAnalyticsEvent,\n} from \"@eyevinn/player-analytics-specification\";\nimport { EPAS_VERSION, HEARTBEAT_INTERVAL } from \"./constants\";\n\nexport interface IReporterOptions {\n eventsinkUrl: string;\n heartbeatInterval?: number;\n sessionId?: string;\n debug?: boolean;\n}\n\nexport interface IReporterPostOptions {\n event: string;\n timestamp: number;\n playhead: number;\n duration: number;\n}\n\nexport class Reporter {\n private debug: boolean;\n private eventsinkUrl: string;\n private sessionId?: string;\n private heartbeatInterval?: number;\n private isInitiated = false;\n\n constructor(options: IReporterOptions) {\n this.debug = options.debug;\n this.eventsinkUrl = options.eventsinkUrl;\n this.sessionId = options.sessionId;\n this.heartbeatInterval = options.heartbeatInterval || HEARTBEAT_INTERVAL;\n\n if (this.debug) {\n console.log(\"[AnalyticsReporter] Initiated AnalyticsReporter\", options);\n }\n }\n\n public async init(sessionId?: string): Promise<Record<string, any>> {\n this.sessionId = sessionId || this.sessionId;\n const data: TInitEvent = {\n event: \"init\",\n sessionId: this.sessionId,\n timestamp: Date.now(),\n playhead: -1,\n duration: -1,\n };\n if (this.debug) {\n console.log(\"[AnalyticsReporter] Init session:\", data);\n this.isInitiated = true;\n return {\n sessionId: this.sessionId,\n heartbeatInterval: this.heartbeatInterval,\n isInitiated: this.isInitiated,\n };\n } else {\n const initResponse = await fetch(`${this.eventsinkUrl}`, {\n method: \"POST\",\n mode: \"cors\",\n cache: \"no-cache\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n \"X-EPAS-Event\": data.event,\n \"X-EPAS-Version\": EPAS_VERSION,\n },\n body: JSON.stringify(data),\n });\n if (!initResponse.ok) {\n throw new Error(\n `[AnalyticsReporter] init failed: ${initResponse.statusText}`\n );\n }\n const initResponseJson = await initResponse.json();\n\n if (!this.sessionId && !initResponseJson.sessionId) {\n throw new Error(`[AnalyticsReporter] init failed: no sessionId`);\n }\n if (initResponseJson.sessionId) {\n this.sessionId = initResponseJson.sessionId;\n }\n this.isInitiated = true;\n return {\n heartbeatInterval: this.heartbeatInterval,\n sessionId: this.sessionId,\n isInitiated: this.isInitiated,\n };\n }\n }\n\n public send(data: TPlayerAnalyticsEvent): void {\n if (!this.isInitiated)\n return console.warn(\n \"[AnalyticsReporter] Cannot report before initiation:\",\n data\n );\n const payload = {\n sessionId: this.sessionId,\n ...data,\n };\n if (this.debug) {\n console.log(\"[AnalyticsReporter] Send payload:\", payload);\n } else {\n fetch(`${this.eventsinkUrl}`, {\n method: \"POST\",\n mode: \"cors\",\n cache: \"no-cache\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n \"X-EPAS-Event\": data.event,\n \"X-EPAS-Version\": EPAS_VERSION,\n },\n body: JSON.stringify(payload),\n });\n }\n }\n}\n","import {\n getMediaEventFilter,\n FilteredMediaEvent,\n TMediaEventFilter,\n} from \"@eyevinn/media-event-filter\";\nimport { PlayerAnalytics } from \"./PlayerAnalytics\";\nimport {\n TBaseEvent,\n TBitrateChangedEventPayload,\n TErrorEventPayload,\n TEventType,\n TMetadataEventPayload,\n UUID,\n} from \"@eyevinn/player-analytics-specification\";\n\nexport interface IPlayerAnalyticsConnectorInitOptions {\n sessionId?: string;\n heartbeatInterval?: number;\n}\n\nexport class PlayerAnalyticsConnector {\n private eventsinkUrl: string;\n private sessionId: UUID;\n private player: HTMLVideoElement;\n\n private playerAnalytics: PlayerAnalytics;\n private analyticsInitiated = false;\n\n private videoEventFilter: TMediaEventFilter;\n private videoEventListener: any;\n\n private heartbeatInterval: number;\n private heartbeatIntervalTimer: ReturnType<typeof setInterval>;\n\n constructor(eventsinkUrl: string, debug?: boolean) {\n this.eventsinkUrl = eventsinkUrl;\n this.playerAnalytics = new PlayerAnalytics(this.eventsinkUrl, debug);\n }\n\n public async init(options: IPlayerAnalyticsConnectorInitOptions) {\n this.sessionId = options.sessionId;\n const { heartbeatInterval, isInitiated } =\n await this.playerAnalytics.initiateAnalyticsReporter({\n sessionId: this.sessionId,\n ...options,\n });\n\n this.analyticsInitiated = isInitiated;\n this.heartbeatInterval = heartbeatInterval;\n }\n\n public load(player: HTMLVideoElement) {\n this.player = player;\n this.playerAnalytics.loading({\n event: \"loading\",\n ...this.playbackState(),\n });\n this.initiateVideoEventFilter();\n }\n\n private initiateVideoEventFilter() {\n if (!this.player) return;\n this.videoEventFilter = getMediaEventFilter({\n mediaElement: this.player,\n mp4Mode: false,\n callback: (event: FilteredMediaEvent) => {\n let eventType: TEventType;\n const extraData = {};\n switch (event) {\n case FilteredMediaEvent.LOADED:\n eventType = \"loaded\";\n break;\n case FilteredMediaEvent.PLAYING:\n eventType = \"playing\";\n this.startInterval();\n break;\n case FilteredMediaEvent.PAUSE:\n eventType = \"paused\";\n break;\n case FilteredMediaEvent.SEEKING:\n eventType = \"seeking\";\n break;\n case FilteredMediaEvent.SEEKED:\n eventType = \"seeked\";\n break;\n case FilteredMediaEvent.BUFFERING:\n eventType = \"buffering\";\n break;\n case FilteredMediaEvent.BUFFERED:\n eventType = \"buffered\";\n break;\n case FilteredMediaEvent.ENDED:\n eventType = \"stopped\";\n extraData[\"reason\"] = \"ended\";\n this.stopInterval();\n break;\n default:\n break;\n }\n try {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n if (eventType) {\n this.playerAnalytics[eventType == \"paused\" ? \"pause\" : eventType]({\n event: eventType,\n ...this.playbackState(),\n ...(Object.keys(extraData).length > 0 && { payload: extraData }),\n });\n }\n } catch (err) {\n console.error(err);\n }\n },\n });\n }\n\n private startInterval() {\n if (this.heartbeatIntervalTimer) return;\n this.heartbeatIntervalTimer = setInterval(() => {\n this.playerAnalytics.heartbeat({\n event: \"heartbeat\",\n ...this.playbackState(),\n });\n }, this.heartbeatInterval);\n }\n\n private stopInterval() {\n clearInterval(this.heartbeatIntervalTimer);\n }\n\n public reportBitrateChange(payload: TBitrateChangedEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.bitrateChanged({\n event: \"bitrate_changed\",\n ...this.playbackState(),\n payload,\n });\n }\n\n public reportStop() {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.stopped({\n event: \"stopped\",\n ...this.playbackState(),\n payload: { reason: \"aborted\" },\n });\n this.stopInterval();\n }\n\n public reportError(error: TErrorEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.error({\n event: \"error\",\n ...this.playbackState(),\n payload: error,\n });\n this.playerAnalytics.stopped({\n event: \"stopped\",\n ...this.playbackState(),\n payload: { reason: \"error\" },\n });\n this.stopInterval();\n }\n\n public reportMetadata(payload: TMetadataEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.metadata({\n event: \"metadata\",\n ...this.playbackState(),\n payload,\n });\n }\n\n public reportWarning(payload: TErrorEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.warning({\n event: \"warning\",\n ...this.playbackState(),\n payload,\n });\n }\n\n private playbackState(): TBaseEvent {\n const duration =\n this.player?.duration &&\n this.player?.duration !== Infinity &&\n this.player?.duration > 0\n ? this.player.duration\n : -1;\n const playhead =\n this.player?.currentTime && duration !== -1\n ? this.player?.currentTime\n : -1;\n return {\n sessionId: this.sessionId,\n timestamp: Date.now(),\n playhead,\n duration,\n };\n }\n\n public deinit() {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.stopInterval();\n this.heartbeatInterval = null;\n this.videoEventFilter && this.videoEventFilter.teardown();\n this.videoEventFilter = null;\n }\n\n public destroy() {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.destroy();\n this.heartbeatInterval = null;\n this.videoEventFilter && this.videoEventFilter.teardown();\n this.stopInterval();\n }\n}\n"],"names":[],"version":3,"file":"index.js.map"}
|
package/dist/module.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import $hCgyA$eyevinnplayeranalyticsspecificationpackagejson from "@eyevinn/player-analytics-specification/package.json";
|
|
2
|
-
import {
|
|
2
|
+
import {getMediaEventFilter as $hCgyA$getMediaEventFilter, FilteredMediaEvent as $hCgyA$FilteredMediaEvent} from "@eyevinn/media-event-filter";
|
|
3
3
|
|
|
4
4
|
function $parcel$export(e, n, v, s) {
|
|
5
5
|
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
@@ -8,25 +8,6 @@ var $03bb5e0d0325c534$exports = {};
|
|
|
8
8
|
|
|
9
9
|
$parcel$export($03bb5e0d0325c534$exports, "PlayerAnalytics", () => $03bb5e0d0325c534$export$f76c463fe9cb9f15, (v) => $03bb5e0d0325c534$export$f76c463fe9cb9f15 = v);
|
|
10
10
|
|
|
11
|
-
var $76abaee2435acae3$export$342d7dbd8323f55e;
|
|
12
|
-
(function($76abaee2435acae3$export$342d7dbd8323f55e) {
|
|
13
|
-
$76abaee2435acae3$export$342d7dbd8323f55e["loading"] = "loading";
|
|
14
|
-
$76abaee2435acae3$export$342d7dbd8323f55e["loaded"] = "loaded";
|
|
15
|
-
$76abaee2435acae3$export$342d7dbd8323f55e["play"] = "playing";
|
|
16
|
-
$76abaee2435acae3$export$342d7dbd8323f55e["resume"] = "playing";
|
|
17
|
-
$76abaee2435acae3$export$342d7dbd8323f55e["pause"] = "paused";
|
|
18
|
-
$76abaee2435acae3$export$342d7dbd8323f55e["seeking"] = "seeking";
|
|
19
|
-
$76abaee2435acae3$export$342d7dbd8323f55e["seeked"] = "seeked";
|
|
20
|
-
$76abaee2435acae3$export$342d7dbd8323f55e["buffering"] = "buffering";
|
|
21
|
-
$76abaee2435acae3$export$342d7dbd8323f55e["buffered"] = "buffered";
|
|
22
|
-
$76abaee2435acae3$export$342d7dbd8323f55e["ended"] = "stopped";
|
|
23
|
-
$76abaee2435acae3$export$342d7dbd8323f55e["error"] = "error";
|
|
24
|
-
$76abaee2435acae3$export$342d7dbd8323f55e["warning"] = "warning";
|
|
25
|
-
$76abaee2435acae3$export$342d7dbd8323f55e["bitratechanged"] = "bitrate_changed";
|
|
26
|
-
$76abaee2435acae3$export$342d7dbd8323f55e["heartbeat"] = "heartbeat";
|
|
27
|
-
$76abaee2435acae3$export$342d7dbd8323f55e["metadata"] = "metadata";
|
|
28
|
-
})($76abaee2435acae3$export$342d7dbd8323f55e || ($76abaee2435acae3$export$342d7dbd8323f55e = {
|
|
29
|
-
}));
|
|
30
11
|
var $76abaee2435acae3$export$31c453b5fe09788d = 30000;
|
|
31
12
|
var $76abaee2435acae3$export$8a65ed80196068d4 = $hCgyA$eyevinnplayeranalyticsspecificationpackagejson.version;
|
|
32
13
|
|
|
@@ -442,9 +423,6 @@ var $03bb5e0d0325c534$export$f76c463fe9cb9f15 = function() {
|
|
|
442
423
|
$03bb5e0d0325c534$export$f76c463fe9cb9f15.prototype.playing = function(data) {
|
|
443
424
|
this.analyticsReporter.send(data);
|
|
444
425
|
};
|
|
445
|
-
$03bb5e0d0325c534$export$f76c463fe9cb9f15.prototype.paused = function(data) {
|
|
446
|
-
this.pause(data);
|
|
447
|
-
};
|
|
448
426
|
$03bb5e0d0325c534$export$f76c463fe9cb9f15.prototype.pause = function(data) {
|
|
449
427
|
this.analyticsReporter.send(data);
|
|
450
428
|
};
|
|
@@ -484,7 +462,6 @@ var $85819f9bdebfd936$exports = {};
|
|
|
484
462
|
$parcel$export($85819f9bdebfd936$exports, "PlayerAnalyticsConnector", () => $85819f9bdebfd936$export$2daf9923c014a26e, (v) => $85819f9bdebfd936$export$2daf9923c014a26e = v);
|
|
485
463
|
|
|
486
464
|
|
|
487
|
-
|
|
488
465
|
var $85819f9bdebfd936$var$__assign = undefined && undefined.__assign || function() {
|
|
489
466
|
$85819f9bdebfd936$var$__assign = Object.assign || function(t) {
|
|
490
467
|
for(var s, i = 1, n = arguments.length; i < n; i++){
|
|
@@ -650,69 +627,65 @@ var $85819f9bdebfd936$export$2daf9923c014a26e = function() {
|
|
|
650
627
|
$85819f9bdebfd936$export$2daf9923c014a26e.prototype.load = function(player) {
|
|
651
628
|
this.player = player;
|
|
652
629
|
this.playerAnalytics.loading($85819f9bdebfd936$var$__assign({
|
|
653
|
-
event:
|
|
630
|
+
event: "loading"
|
|
654
631
|
}, this.playbackState()));
|
|
655
632
|
this.initiateVideoEventFilter();
|
|
656
633
|
};
|
|
657
634
|
$85819f9bdebfd936$export$2daf9923c014a26e.prototype.initiateVideoEventFilter = function() {
|
|
658
635
|
var _this = this;
|
|
659
636
|
if (!this.player) return;
|
|
660
|
-
this.videoEventFilter =
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
637
|
+
this.videoEventFilter = $hCgyA$getMediaEventFilter({
|
|
638
|
+
mediaElement: this.player,
|
|
639
|
+
mp4Mode: false,
|
|
640
|
+
callback: function(event) {
|
|
641
|
+
var eventType;
|
|
642
|
+
var extraData = {
|
|
643
|
+
};
|
|
644
|
+
switch(event){
|
|
645
|
+
case $hCgyA$FilteredMediaEvent.LOADED:
|
|
646
|
+
eventType = "loaded";
|
|
647
|
+
break;
|
|
648
|
+
case $hCgyA$FilteredMediaEvent.PLAYING:
|
|
649
|
+
eventType = "playing";
|
|
650
|
+
_this.startInterval();
|
|
651
|
+
break;
|
|
652
|
+
case $hCgyA$FilteredMediaEvent.PAUSE:
|
|
653
|
+
eventType = "paused";
|
|
654
|
+
break;
|
|
655
|
+
case $hCgyA$FilteredMediaEvent.SEEKING:
|
|
656
|
+
eventType = "seeking";
|
|
657
|
+
break;
|
|
658
|
+
case $hCgyA$FilteredMediaEvent.SEEKED:
|
|
659
|
+
eventType = "seeked";
|
|
660
|
+
break;
|
|
661
|
+
case $hCgyA$FilteredMediaEvent.BUFFERING:
|
|
662
|
+
eventType = "buffering";
|
|
663
|
+
break;
|
|
664
|
+
case $hCgyA$FilteredMediaEvent.BUFFERED:
|
|
665
|
+
eventType = "buffered";
|
|
666
|
+
break;
|
|
667
|
+
case $hCgyA$FilteredMediaEvent.ENDED:
|
|
668
|
+
eventType = "stopped";
|
|
669
|
+
extraData["reason"] = "ended";
|
|
670
|
+
_this.stopInterval();
|
|
671
|
+
break;
|
|
672
|
+
default:
|
|
673
|
+
break;
|
|
674
|
+
}
|
|
675
|
+
try {
|
|
676
|
+
if (!_this.analyticsInitiated) {
|
|
677
|
+
console.warn("[PlayerAnalyticsConnector] Analytics not initiated");
|
|
678
|
+
return;
|
|
679
|
+
}
|
|
680
|
+
if (eventType) _this.playerAnalytics[eventType == "paused" ? "pause" : eventType]($85819f9bdebfd936$var$__assign($85819f9bdebfd936$var$__assign({
|
|
681
|
+
event: eventType
|
|
682
|
+
}, _this.playbackState()), Object.keys(extraData).length > 0 && {
|
|
683
|
+
payload: extraData
|
|
684
|
+
}));
|
|
685
|
+
} catch (err) {
|
|
686
|
+
console.error(err);
|
|
687
|
+
}
|
|
710
688
|
}
|
|
711
|
-
_this.playerAnalytics[eventType]($85819f9bdebfd936$var$__assign($85819f9bdebfd936$var$__assign({
|
|
712
|
-
event: eventType
|
|
713
|
-
}, _this.playbackState()), Object.keys(extraData).length > 0 && {
|
|
714
|
-
payload: extraData
|
|
715
|
-
}));
|
|
716
689
|
});
|
|
717
690
|
};
|
|
718
691
|
$85819f9bdebfd936$export$2daf9923c014a26e.prototype.startInterval = function() {
|
|
@@ -720,7 +693,7 @@ var $85819f9bdebfd936$export$2daf9923c014a26e = function() {
|
|
|
720
693
|
if (this.heartbeatIntervalTimer) return;
|
|
721
694
|
this.heartbeatIntervalTimer = setInterval(function() {
|
|
722
695
|
_this.playerAnalytics.heartbeat($85819f9bdebfd936$var$__assign({
|
|
723
|
-
event:
|
|
696
|
+
event: "heartbeat"
|
|
724
697
|
}, _this.playbackState()));
|
|
725
698
|
}, this.heartbeatInterval);
|
|
726
699
|
};
|
|
@@ -733,7 +706,7 @@ var $85819f9bdebfd936$export$2daf9923c014a26e = function() {
|
|
|
733
706
|
return;
|
|
734
707
|
}
|
|
735
708
|
this.playerAnalytics.bitrateChanged($85819f9bdebfd936$var$__assign($85819f9bdebfd936$var$__assign({
|
|
736
|
-
event:
|
|
709
|
+
event: "bitrate_changed"
|
|
737
710
|
}, this.playbackState()), {
|
|
738
711
|
payload: payload
|
|
739
712
|
}));
|
|
@@ -744,7 +717,7 @@ var $85819f9bdebfd936$export$2daf9923c014a26e = function() {
|
|
|
744
717
|
return;
|
|
745
718
|
}
|
|
746
719
|
this.playerAnalytics.stopped($85819f9bdebfd936$var$__assign($85819f9bdebfd936$var$__assign({
|
|
747
|
-
event:
|
|
720
|
+
event: "stopped"
|
|
748
721
|
}, this.playbackState()), {
|
|
749
722
|
payload: {
|
|
750
723
|
reason: "aborted"
|
|
@@ -758,12 +731,12 @@ var $85819f9bdebfd936$export$2daf9923c014a26e = function() {
|
|
|
758
731
|
return;
|
|
759
732
|
}
|
|
760
733
|
this.playerAnalytics.error($85819f9bdebfd936$var$__assign($85819f9bdebfd936$var$__assign({
|
|
761
|
-
event:
|
|
734
|
+
event: "error"
|
|
762
735
|
}, this.playbackState()), {
|
|
763
736
|
payload: error
|
|
764
737
|
}));
|
|
765
738
|
this.playerAnalytics.stopped($85819f9bdebfd936$var$__assign($85819f9bdebfd936$var$__assign({
|
|
766
|
-
event:
|
|
739
|
+
event: "stopped"
|
|
767
740
|
}, this.playbackState()), {
|
|
768
741
|
payload: {
|
|
769
742
|
reason: "error"
|
|
@@ -777,7 +750,7 @@ var $85819f9bdebfd936$export$2daf9923c014a26e = function() {
|
|
|
777
750
|
return;
|
|
778
751
|
}
|
|
779
752
|
this.playerAnalytics.metadata($85819f9bdebfd936$var$__assign($85819f9bdebfd936$var$__assign({
|
|
780
|
-
event:
|
|
753
|
+
event: "metadata"
|
|
781
754
|
}, this.playbackState()), {
|
|
782
755
|
payload: payload
|
|
783
756
|
}));
|
|
@@ -788,15 +761,15 @@ var $85819f9bdebfd936$export$2daf9923c014a26e = function() {
|
|
|
788
761
|
return;
|
|
789
762
|
}
|
|
790
763
|
this.playerAnalytics.warning($85819f9bdebfd936$var$__assign($85819f9bdebfd936$var$__assign({
|
|
791
|
-
event:
|
|
764
|
+
event: "warning"
|
|
792
765
|
}, this.playbackState()), {
|
|
793
766
|
payload: payload
|
|
794
767
|
}));
|
|
795
768
|
};
|
|
796
769
|
$85819f9bdebfd936$export$2daf9923c014a26e.prototype.playbackState = function() {
|
|
797
|
-
var _a, _b, _c, _d;
|
|
798
|
-
var
|
|
799
|
-
var
|
|
770
|
+
var _a, _b, _c, _d, _e;
|
|
771
|
+
var duration = ((_a = this.player) === null || _a === void 0 ? void 0 : _a.duration) && ((_b = this.player) === null || _b === void 0 ? void 0 : _b.duration) !== Infinity && ((_c = this.player) === null || _c === void 0 ? void 0 : _c.duration) > 0 ? this.player.duration : -1;
|
|
772
|
+
var playhead = ((_d = this.player) === null || _d === void 0 ? void 0 : _d.currentTime) && duration !== -1 ? (_e = this.player) === null || _e === void 0 ? void 0 : _e.currentTime : -1;
|
|
800
773
|
return {
|
|
801
774
|
sessionId: this.sessionId,
|
|
802
775
|
timestamp: Date.now(),
|
|
@@ -811,7 +784,7 @@ var $85819f9bdebfd936$export$2daf9923c014a26e = function() {
|
|
|
811
784
|
}
|
|
812
785
|
this.stopInterval();
|
|
813
786
|
this.heartbeatInterval = null;
|
|
814
|
-
this.videoEventFilter && this.videoEventFilter.
|
|
787
|
+
this.videoEventFilter && this.videoEventFilter.teardown();
|
|
815
788
|
this.videoEventFilter = null;
|
|
816
789
|
};
|
|
817
790
|
$85819f9bdebfd936$export$2daf9923c014a26e.prototype.destroy = function() {
|
|
@@ -821,7 +794,7 @@ var $85819f9bdebfd936$export$2daf9923c014a26e = function() {
|
|
|
821
794
|
}
|
|
822
795
|
this.playerAnalytics.destroy();
|
|
823
796
|
this.heartbeatInterval = null;
|
|
824
|
-
this.videoEventFilter && this.videoEventFilter.
|
|
797
|
+
this.videoEventFilter && this.videoEventFilter.teardown();
|
|
825
798
|
this.stopInterval();
|
|
826
799
|
};
|
|
827
800
|
return $85819f9bdebfd936$export$2daf9923c014a26e;
|
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";;;;;;;;;;AIAA,GAAA,CAAY,yCAgBX;CAhBD,QAAA,CAAY,yCAAU,EAAtB,CAAA;IACE,yCAAA,CAAA,CAAA,YAAA,CAAmB;IACnB,yCAAA,CAAA,CAAA,WAAA,CAAiB;IACjB,yCAAA,CAAA,CAAA,SAAA,CAAgB;IAChB,yCAAA,CAAA,CAAA,WAAA,CAAkB;IAClB,yCAAA,CAAA,CAAA,UAAA,CAAgB;IAChB,yCAAA,CAAA,CAAA,YAAA,CAAmB;IACnB,yCAAA,CAAA,CAAA,WAAA,CAAiB;IACjB,yCAAA,CAAA,CAAA,cAAA,CAAuB;IACvB,yCAAA,CAAA,CAAA,aAAA,CAAqB;IACrB,yCAAA,CAAA,CAAA,UAAA,CAAiB;IACjB,yCAAA,CAAA,CAAA,UAAA,CAAe;IACf,yCAAA,CAAA,CAAA,YAAA,CAAmB;IACnB,yCAAA,CAAA,CAAA,mBAAA,CAAkC;IAClC,yCAAA,CAAA,CAAA,cAAA,CAAuB;IACvB,yCAAA,CAAA,CAAA,aAAA,CAAqB;AACvB,CAAC,EAhBW,yCAAU,KAAV,yCAAU,GAAA,CAAA;AAAA,CAAA;AAkBf,GAAA,CAAM,yCAAkB,GAAG,KAAK;AAGhC,GAAA,CAAM,yCAAY,GAAG,qDAAW,CAAC,OAAO;;;;;;;A,G,C,8B,0B,Q,I,Q,G,C;I,8B,G,M,C,M,I,Q,C,C,E,C;Q,G,C,G,C,C,E,C,G,C,E,C,G,S,C,M,E,C,G,C,E,C,G,C;Y,C,G,S,C,C;Y,G,C,G,C,C,I,C,C,E,E,M,C,S,C,c,C,I,C,C,E,C,G,C,C,C,I,C,C,C;Q,C;Q,M,C,C;I,C;I,M,C,8B,C,K,C,I,E,S;A,C;A,G,C,+B,0B,S,I,Q,C,O,E,U,E,C,E,S,E,C;a,K,C,K,E,C;Q,M,C,K,Y,C,G,K,G,G,C,C,C,Q,C,O,E,C;Y,O,C,K;Q,C;I,C;I,M,C,G,E,C,K,C,G,O,G,Q,C,O,E,M,E,C;iB,S,C,K,E,C;Y,G,C,C;gB,I,C,S,C,I,C,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,Q,C,K,E,C;Y,G,C,C;gB,I,C,S,C,C,Q,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,I,C,M,E,C;Y,M,C,I,G,O,C,M,C,K,I,K,C,M,C,K,E,I,C,S,E,Q;Q,C;Q,I,E,S,G,S,C,K,C,O,E,U,I,C,C,G,I;I,C;A,C;A,G,C,iC,0B,W,I,Q,C,O,E,I,E,C;I,G,C,C,G,C;Q,K,E,C;Q,I,E,Q,G,C;Y,E,E,C,C,C,I,C,E,K,C,C,C,C;Y,M,C,C,C,C;Q,C;Q,I,E,C,C;Q,G,E,C,C;I,C,E,C,E,C,E,C,E,C;a,I,C,C,E,C;Q,M,C,Q,C,C,E,C;Y,M,C,I,C,C;gB,C;gB,C;Y,C;Q,C;I,C;a,I,C,E,E,C;Q,E,E,C,E,K,C,G,C,S,C,C;c,C,C,G,C,C;Y,E,E,C,G,C,E,C,K,C,G,E,C,C,I,C,G,C,C,C,W,E,C,C,I,C,C,C,a,C,G,C,C,C,a,C,C,I,C,C,G,C,I,C,C,I,O,C,G,C,C,I,C,C,E,E,C,C,I,I,E,M,C,C;Y,E,E,C,G,C,E,C,E,E,G,C;gB,E,C,C,I,C;gB,C,C,K;Y,C;Y,M,C,E,C,C;gB,I,C,C;gB,I,C,C;oB,C,G,E;oB,K;gB,I,C,C;oB,C,C,K;oB,M,C,C;wB,K,E,E,C,C;wB,I,E,K;oB,C;gB,I,C,C;oB,C,C,K;oB,C,G,E,C,C;oB,E,G,C;A,yB;oB,C;oB,Q;gB,I,C,C;oB,E,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;oB,E,I,C,G,C,C,I,E,C,G,C,C,M,G,C,I,C,C,C,C,M,G,C,O,E,C,C,M,C,I,E,C,C,M,C,G,C;wB,C,G,C;wB,Q;oB,C;oB,E,E,E,C,C,M,C,M,C,I,E,C,C,I,C,C,C,K,E,C,C,I,C,C,C,I,C;wB,C,C,K,G,E,C,C;wB,K;oB,C;oB,E,E,E,C,C,M,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,G,E;wB,K;oB,C;oB,E,E,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,C,G,C,I,C,E;wB,K;oB,C;oB,E,E,C,C,C,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;Y,E,G,I,C,I,C,O,E,C;Q,C,C,K,E,C,E,C;Y,E,G,C;A,iB;gB,C;Y,C;Y,C,G,C;Q,C,Q,C;Y,C,G,C,G,C;Q,C;Q,E,E,E,C,C,I,C,E,K,C,E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SAAS;gCACzB,WAAW,EAAE,IAAI,CAAC,WAAW;4BAC9B,CAAA;wBAAA,CAAA;;Y,C;Q,C;IAEJ,CAAA;IAEM,yCAAA,CAAA,SAAA,CAAA,IAAI,GAAX,QAAA,CAAY,IAA2B,EAAhC,CAAA;QACL,EAAA,GAAK,IAAI,CAAC,WAAW,EACnB,MAAA,CAAO,OAAO,CAAC,IAAI,CACjB,CAAsD,uDACtD,IAAI;QAER,GAAA,CAAM,OAAO,GAAA,8BAAA,CAAA,CAAA;YACX,SAAS,EAAE,IAAI,CAAC,SAAS;QAAA,CAAA,EACtB,IAAI;QAET,EAAA,EAAI,IAAI,CAAC,KAAK,EACZ,OAAO,CAAC,GAAG,CAAC,CAAmC,oCAAE,OAAO;aAExD,KAAK,CAAC,CAAA,EAAA,MAAA,CAAG,IAAI,CAAC,YAAY,GAAI,CAA9B;YACE,MAAM,EAAE,CAAM;YACd,IAAI,EAAE,CAAM;YACZ,KAAK,EAAE,CAAU;YACjB,OAAO,EAAE,CAAT;gBACE,CAAc,eAAE,CAAiC;gBACjD,CAAc,eAAE,IAAI,CAAC,KAAK;gBAC1B,CAAgB,iBAAE,yCAAY;YAC/B,CAAA;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO;QAC7B,CAAA;IAEL,CAAC;IACH,MAAA,CAAA,yCAAC;AAAD,CA/FA;;;A,G,C,+B,0B,S,I,Q,C,O,E,U,E,C,E,S,E,C;a,K,C,K,E,C;Q,M,C,K,Y,C,G,K,G,G,C,C,C,Q,C,O,E,C;Y,O,C,K;Q,C;I,C;I,M,C,G,E,C,K,C,G,O,G,Q,C,O,E,M,E,C;iB,S,C,K,E,C;Y,G,C,C;gB,I,C,S,C,I,C,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,Q,C,K,E,C;Y,G,C,C;gB,I,C,S,C,C,Q,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,I,C,M,E,C;Y,M,C,I,G,O,C,M,C,K,I,K,C,M,C,K,E,I,C,S,E,Q;Q,C;Q,I,E,S,G,S,C,K,C,O,E,U,I,C,C,G,I;I,C;A,C;A,G,C,iC,0B,W,I,Q,C,O,E,I,E,C;I,G,C,C,G,C;Q,K,E,C;Q,I,E,Q,G,C;Y,E,E,C,C,C,I,C,E,K,C,C,C,C;Y,M,C,C,C,C;Q,C;Q,I,E,C,C;Q,G,E,C,C;I,C,E,C,E,C,E,C,E,C;a,I,C,C,E,C;Q,M,C,Q,C,C,E,C;Y,M,C,I,C,C;gB,C;gB,C;Y,C;Q,C;I,C;a,I,C,E,E,C;Q,E,E,C,E,K,C,G,C,S,C,C;c,C,C,G,C,C;Y,E,E,C,G,C,E,C,K,C,G,E,C,C,I,C,G,C,C,C,W,E,C,C,I,C,C,C,a,C,G,C,C,C,a,C,C,I,C,C,G,C,I,C,C,I,O,C,G,C,C,I,C,C,E,E,C,C,I,I,E,M,C,C;Y,E,E,C,G,C,E,C,E,E,G,C;gB,E,C,C,I,C;gB,C,C,K;Y,C;Y,M,C,E,C,C;gB,I,C,C;gB,I,C,C;oB,C,G,E;oB,K;gB,I,C,C;oB,C,C,K;oB,M,C,C;wB,K,E,E,C,C;wB,I,E,K;oB,C;gB,I,C,C;oB,C,C,K;oB,C,G,E,C,C;oB,E,G,C;A,yB;oB,C;oB,Q;gB,I,C,C;oB,E,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;oB,E,I,C,G,C,C,I,E,C,G,C,C,M,G,C,I,C,C,C,C,M,G,C,O,E,C,C,M,C,I,E,C,C,M,C,G,C;wB,C,G,C;wB,Q;oB,C;oB,E,E,E,C,C,M,C,M,C,I,E,C,C,I,C,C,C,K,E,C,C,I,C,C,C,I,C;wB,C,C,K,G,E,C,C;wB,K;oB,C;oB,E,E,E,C,C,M,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,G,E;wB,K;oB,C;oB,E,E,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,C,G,C,I,C,E;wB,K;oB,C;oB,E,E,C,C,C,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;Y,E,G,I,C,I,C,O,E,C;Q,C,C,K,E,C,E,C;Y,E,G,C;A,iB;gB,C;Y,C;Y,C,G,C;Q,C,Q,C;Y,C,G,C,G,C;Q,C;Q,E,E,E,C,C,I,C,E,K,C,E,C,C;Q,M,C,C;Y,K,E,E,C,C,I,E,C,C,I,I,C,C;Y,I,E,I;Q,C;I,C;I,M,C,C,G,C;Q,I,E,I,C,C;Q,C,Q,I,C,C;Q,C,S,I,C,C;I,C,E,M,C,M,K,C,c,C,C,M,C,Q,I,Q,G,C;Q,M,C,I;I,C,G,C;A,C;AJMA,GAAA,CAAA,yCAAA,G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AA;QACL,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI;IAClC,CAAC;IAEM,yCAAA,CAAA,SAAA,CAAA,cAAc,GAArB,QAAA,CAAsB,IAA0B,EAAzC,CAAA;QACL,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI;IAClC,CAAC;IAEM,yCAAA,CAAA,SAAA,CAAA,KAAK,GAAZ,QAAA,CAAa,IAAiB,EAAvB,CAAA;QACL,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI;IAClC,CAAC;IAEM,yCAAA,CAAA,SAAA,CAAA,OAAO,GAAd,QAAA,CAAe,IAAmB,EAA3B,CAAA;QACL,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI;IAClC,CAAC;IAEM,yCAAA,CAAA,SAAA,CAAA,OAAO,GAAd,QAAA,CAAe,IAAmB,EAA3B,CAAA;QACL,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI;IAClC,CAAC;IAEM,yCAAA,CAAA,SAAA,CAAA,OAAO,GAAd,QAAO,GAAA,CAAA;QACL,IAAI,CAAC,iBAAiB,GAAG,IAAI;IAC/B,CAAC;IACH,MAAA,CAAA,yCAAC;AAAD,CA7FA;;;;;;;;;A,G,C,8B,0B,Q,I,Q,G,C;I,8B,G,M,C,M,I,Q,C,C,E,C;Q,G,C,G,C,C,E,C,G,C,E,C,G,S,C,M,E,C,G,C,E,C,G,C;Y,C,G,S,C,C;Y,G,C,G,C,C,I,C,C,E,E,M,C,S,C,c,C,I,C,C,E,C,G,C,C,C,I,C,C,C;Q,C;Q,M,C,C;I,C;I,M,C,8B,C,K,C,I,E,S;A,C;A,G,C,+B,0B,S,I,Q,C,O,E,U,E,C,E,S,E,C;a,K,C,K,E,C;Q,M,C,K,Y,C,G,K,G,G,C,C,C,Q,C,O,E,C;Y,O,C,K;Q,C;I,C;I,M,C,G,E,C,K,C,G,O,G,Q,C,O,E,M,E,C;iB,S,C,K,E,C;Y,G,C,C;gB,I,C,S,C,I,C,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,Q,C,K,E,C;Y,G,C,C;gB,I,C,S,C,C,Q,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,I,C,M,E,C;Y,M,C,I,G,O,C,M,C,K,I,K,C,M,C,K,E,I,C,S,E,Q;Q,C;Q,I,E,S,G,S,C,K,C,O,E,U,I,C,C,G,I;I,C;A,C;A,G,C,iC,0B,W,I,Q,C,O,E,I,E,C;I,G,C,C,G,C;Q,K,E,C;Q,I,E,Q,G,C;Y,E,E,C,C,C,I,C,E,K,C,C,C,C;Y,M,C,C,C,C;Q,C;Q,I,E,C,C;Q,G,E,C,C;I,C,E,C,E,C,E,C,E,C;a,I,C,C,E,C;Q,M,C,Q,C,C,E,C;Y,M,C,I,C,C;gB,C;gB,C;Y,C;Q,C;I,C;a,I,C,E,E,C;Q,E,E,C,E,K,C,G,C,S,C,C;c,C,C,G,C,C;Y,E,E,C,G,C,E,C,K,C,G,E,C,C,I,C,G,C,C,C,W,E,C,C,I,C,C,C,a,C,G,C,C,C,a,C,C,I,C,C,G,C,I,C,C,I,O,C,G,C,C,I,C,C,E,E,C,C,I,I,E,M,C,C;Y,E,E,C,G,C,E,C,E,E,G,C;gB,E,C,C,I,C;gB,C,C,K;Y,C;Y,M,C,E,C,C;gB,I,C,C;gB,I,C,C;oB,C,G,E;oB,K;gB,I,C,C;oB,C,C,K;oB,M,C,C;wB,K,E,E,C,C;wB,I,E,K;oB,C;gB,I,C,C;oB,C,C,K;oB,C,G,E,C,C;oB,E,G,C;A,yB;oB,C;oB,Q;gB,I,C,C;oB,E,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;oB,E,I,C,G,C,C,I,E,C,G,C,C,M,G,C,I,C,C,C,C,M,G,C,O,E,C,C,M,C,I,E,C,C,M,C,G,C;wB,C,G,C;wB,Q;oB,C;oB,E,E,E,C,C,M,C,M,C,I,E,C,C,I,C,C,C,K,E,C,C,I,C,C,C,I,C;wB,C,C,K,G,E,C,C;wB,K;oB,C;oB,E,E,E,C,C,M,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,G,E;wB,K;oB,C;oB,E,E,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,C,G,C,I,C,E;wB,K;oB,C;oB,E,E,C,C,C,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;Y,E,G,I,C,I,C,O,E,C;Q,C,C,K,E,C,E,C;Y,E,G,C;A,iB;gB,C;Y,C;Y,C,G,C;Q,C,Q,C;Y,C,G,C,G,C;Q,C;Q,E,E,E,C,C,I,C,E,K,C,E,C,C;Q,M,C,C;Y,K,E,E,C,C,I,E,C,C,I,I,C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","sources":["index.ts","src/PlayerAnalytics.ts","PlayerAnalytics.ts","src/utils/constants.ts","constants.ts","src/utils/Reporter.ts","Reporter.ts","src/PlayerAnalyticsConnector.ts","PlayerAnalyticsConnector.ts"],"sourcesContent":["export {\n PlayerAnalytics,\n IPlayerAnalyticsInitOptions,\n} from \"./src/PlayerAnalytics\";\n\nexport {\n PlayerAnalyticsConnector,\n IPlayerAnalyticsConnectorInitOptions,\n} from \"./src/PlayerAnalyticsConnector\";\n","import {\n PlayerAnalyticsClientModule,\n TBitrateChangedEvent,\n TBufferedEvent,\n TBufferingEvent,\n TErrorEvent,\n THeartbeatEvent,\n TInitEvent,\n TLoadedEvent,\n TLoadingEvent,\n TMetadataEvent,\n TPausedEvent,\n TPlayingEvent,\n TSeekedEvent,\n TSeekingEvent,\n TStoppedEvent,\n TWarningEvent,\n} from \"@eyevinn/player-analytics-specification\";\nimport { HEARTBEAT_INTERVAL } from \"./utils/constants\";\nimport { Reporter } from \"./utils/Reporter\";\n\nexport interface IPlayerAnalyticsInitOptions {\n sessionId?: string;\n heartbeatInterval?: number;\n}\n\nexport class PlayerAnalytics implements PlayerAnalyticsClientModule {\n private debug = false;\n private eventsinkUrl: string;\n private analyticsReporter: Reporter;\n constructor(eventsinkUrl: string, debug?: boolean) {\n this.debug = debug;\n this.eventsinkUrl = eventsinkUrl;\n }\n\n public async initiateAnalyticsReporter({\n sessionId,\n heartbeatInterval = HEARTBEAT_INTERVAL,\n }: IPlayerAnalyticsInitOptions) {\n this.analyticsReporter = new Reporter({\n sessionId,\n eventsinkUrl: this.eventsinkUrl,\n debug: this.debug,\n heartbeatInterval,\n });\n\n const { sessionId: generatedSessionId, isInitiated } =\n await this.analyticsReporter.init(sessionId);\n\n return { sessionId: generatedSessionId, heartbeatInterval, isInitiated };\n }\n\n public init(data: TInitEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public metadata(data: TMetadataEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public heartbeat(data: THeartbeatEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public loading(data: TLoadingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public loaded(data: TLoadedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public playing(data: TPlayingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public paused(data: TPausedEvent): void {\n this.pause(data);\n }\n\n public pause(data: TPausedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public buffering(data: TBufferingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public buffered(data: TBufferedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public seeking(data: TSeekingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public seeked(data: TSeekedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public bitrateChanged(data: TBitrateChangedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public error(data: TErrorEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public warning(data: TWarningEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public stopped(data: TStoppedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public destroy() {\n this.analyticsReporter = null;\n }\n}\n",null,"export enum EPASEvents {\n loading = \"loading\",\n loaded = \"loaded\",\n play = \"playing\",\n resume = \"playing\",\n pause = \"paused\",\n seeking = \"seeking\",\n seeked = \"seeked\",\n buffering = \"buffering\",\n buffered = \"buffered\",\n ended = \"stopped\",\n error = \"error\",\n warning = \"warning\",\n bitratechanged = \"bitrate_changed\",\n heartbeat = \"heartbeat\",\n metadata = \"metadata\",\n}\n\nexport const HEARTBEAT_INTERVAL = 30000;\n\nimport packageJson from \"@eyevinn/player-analytics-specification/package.json\";\nexport const EPAS_VERSION = packageJson.version;\n",null,"import {\n TInitEvent,\n TPlayerAnalyticsEvent,\n} from \"@eyevinn/player-analytics-specification\";\nimport { EPAS_VERSION, HEARTBEAT_INTERVAL } from \"./constants\";\n\nexport interface IReporterOptions {\n eventsinkUrl: string;\n heartbeatInterval?: number;\n sessionId?: string;\n debug?: boolean;\n}\n\nexport interface IReporterPostOptions {\n event: string;\n timestamp: number;\n playhead: number;\n duration: number;\n}\n\nexport class Reporter {\n private debug: boolean;\n private eventsinkUrl: string;\n private sessionId?: string;\n private heartbeatInterval?: number;\n private isInitiated = false;\n\n constructor(options: IReporterOptions) {\n this.debug = options.debug;\n this.eventsinkUrl = options.eventsinkUrl;\n this.sessionId = options.sessionId;\n this.heartbeatInterval = options.heartbeatInterval || HEARTBEAT_INTERVAL;\n\n if (this.debug) {\n console.log(\"[AnalyticsReporter] Initiated AnalyticsReporter\", options);\n }\n }\n\n public async init(sessionId?: string): Promise<Record<string, any>> {\n this.sessionId = sessionId || this.sessionId;\n const data: TInitEvent = {\n event: \"init\",\n sessionId: this.sessionId,\n timestamp: Date.now(),\n playhead: -1,\n duration: -1,\n };\n if (this.debug) {\n console.log(\"[AnalyticsReporter] Init session:\", data);\n this.isInitiated = true;\n return {\n sessionId: this.sessionId,\n heartbeatInterval: this.heartbeatInterval,\n isInitiated: this.isInitiated,\n };\n } else {\n const initResponse = await fetch(`${this.eventsinkUrl}`, {\n method: \"POST\",\n mode: \"cors\",\n cache: \"no-cache\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n \"X-EPAS-Event\": data.event,\n \"X-EPAS-Version\": EPAS_VERSION,\n },\n body: JSON.stringify(data),\n });\n if (!initResponse.ok) {\n throw new Error(\n `[AnalyticsReporter] init failed: ${initResponse.statusText}`\n );\n }\n const initResponseJson = await initResponse.json();\n\n if (!this.sessionId && !initResponseJson.sessionId) {\n throw new Error(`[AnalyticsReporter] init failed: no sessionId`);\n }\n if (initResponseJson.sessionId) {\n this.sessionId = initResponseJson.sessionId;\n }\n this.isInitiated = true;\n return {\n heartbeatInterval: this.heartbeatInterval,\n sessionId: this.sessionId,\n isInitiated: this.isInitiated,\n };\n }\n }\n\n public send(data: TPlayerAnalyticsEvent): void {\n if (!this.isInitiated)\n return console.warn(\n \"[AnalyticsReporter] Cannot report before initiation:\",\n data\n );\n const payload = {\n sessionId: this.sessionId,\n ...data,\n };\n if (this.debug) {\n console.log(\"[AnalyticsReporter] Send payload:\", payload);\n } else {\n fetch(`${this.eventsinkUrl}`, {\n method: \"POST\",\n mode: \"cors\",\n cache: \"no-cache\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n \"X-EPAS-Event\": data.event,\n \"X-EPAS-Version\": EPAS_VERSION,\n },\n body: JSON.stringify(payload),\n });\n }\n }\n}\n",null,"import { VideoEventFilter, PlayerEvents } from \"@eyevinn/video-event-filter\";\nimport { EPASEvents } from \"./utils/constants\";\nimport { PlayerAnalytics } from \"./PlayerAnalytics\";\nimport {\n TBaseEvent,\n TBitrateChangedEventPayload,\n TErrorEventPayload,\n TMetadataEventPayload,\n UUID,\n} from \"@eyevinn/player-analytics-specification\";\n\nexport interface IPlayerAnalyticsConnectorInitOptions {\n sessionId?: string;\n heartbeatInterval?: number;\n}\n\nexport class PlayerAnalyticsConnector {\n private eventsinkUrl: string;\n private sessionId: UUID;\n private player: HTMLVideoElement;\n\n private playerAnalytics: PlayerAnalytics;\n private analyticsInitiated = false;\n\n private videoEventFilter: VideoEventFilter;\n private videoEventListener: any;\n\n private heartbeatInterval: number;\n private heartbeatIntervalTimer: ReturnType<typeof setInterval>;\n\n constructor(eventsinkUrl: string, debug?: boolean) {\n this.eventsinkUrl = eventsinkUrl;\n this.playerAnalytics = new PlayerAnalytics(this.eventsinkUrl, debug);\n }\n\n public async init(options: IPlayerAnalyticsConnectorInitOptions) {\n this.sessionId = options.sessionId;\n const { heartbeatInterval, isInitiated } =\n await this.playerAnalytics.initiateAnalyticsReporter({\n sessionId: this.sessionId,\n ...options,\n });\n\n this.analyticsInitiated = isInitiated;\n this.heartbeatInterval = heartbeatInterval;\n }\n\n public load(player: HTMLVideoElement) {\n this.player = player;\n this.playerAnalytics.loading({\n event: EPASEvents.loading,\n ...this.playbackState(),\n });\n this.initiateVideoEventFilter();\n }\n\n private initiateVideoEventFilter() {\n if (!this.player) return;\n this.videoEventFilter = new VideoEventFilter(this.player);\n this.videoEventFilter.addEventListener(\n \"*\",\n (this.videoEventListener = (event: PlayerEvents) => {\n if (!Object.keys(EPASEvents).includes(event)) return;\n let eventType;\n const extraData = {};\n if (!event) return;\n switch (event) {\n case PlayerEvents.Loaded:\n eventType = EPASEvents.loaded;\n break;\n case PlayerEvents.Loading:\n eventType = EPASEvents.loading;\n break;\n case PlayerEvents.Play:\n case PlayerEvents.Resume:\n eventType = EPASEvents.play;\n this.startInterval();\n break;\n case PlayerEvents.Pause:\n eventType = EPASEvents.pause;\n break;\n case PlayerEvents.Seeking:\n eventType = EPASEvents.seeking;\n break;\n case PlayerEvents.Seeked:\n eventType = EPASEvents.seeked;\n break;\n case PlayerEvents.Buffering:\n eventType = EPASEvents.buffering;\n break;\n case PlayerEvents.Buffered:\n eventType = EPASEvents.buffered;\n break;\n case PlayerEvents.Ended:\n eventType = EPASEvents.ended;\n (extraData as any).reason = \"ended\";\n this.stopInterval();\n break;\n case PlayerEvents.Error:\n eventType = EPASEvents.error;\n (extraData as any).reason = \"error\";\n this.stopInterval();\n break;\n default:\n break;\n }\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics[eventType]({\n event: eventType,\n ...this.playbackState(),\n ...(Object.keys(extraData).length > 0 && { payload: extraData }),\n });\n })\n );\n }\n\n private startInterval() {\n if (this.heartbeatIntervalTimer) return;\n this.heartbeatIntervalTimer = setInterval(() => {\n this.playerAnalytics.heartbeat({\n event: EPASEvents.heartbeat,\n ...this.playbackState(),\n });\n }, this.heartbeatInterval);\n }\n\n private stopInterval() {\n clearInterval(this.heartbeatIntervalTimer);\n }\n\n public reportBitrateChange(payload: TBitrateChangedEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.bitrateChanged({\n event: EPASEvents.bitratechanged,\n ...this.playbackState(),\n payload,\n });\n }\n\n public reportStop() {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.stopped({\n event: EPASEvents.ended,\n ...this.playbackState(),\n payload: { reason: \"aborted\" },\n });\n this.stopInterval();\n }\n\n public reportError(error: TErrorEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.error({\n event: EPASEvents.error,\n ...this.playbackState(),\n payload: error,\n });\n this.playerAnalytics.stopped({\n event: EPASEvents.ended,\n ...this.playbackState(),\n payload: { reason: \"error\" },\n });\n this.stopInterval();\n }\n\n public reportMetadata(payload: TMetadataEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.metadata({\n event: EPASEvents.metadata,\n ...this.playbackState(),\n payload,\n });\n }\n\n public reportWarning(payload: TErrorEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.warning({\n event: EPASEvents.warning,\n ...this.playbackState(),\n payload,\n });\n }\n\n private playbackState(): TBaseEvent {\n const playhead =\n !this.player?.currentTime && this.player?.currentTime !== 0\n ? -1\n : this.player.currentTime || 0;\n const duration =\n !this.player?.duration && this.player?.duration !== 0\n ? -1\n : this.player.duration || 0;\n return {\n sessionId: this.sessionId,\n timestamp: Date.now(),\n playhead,\n duration,\n };\n }\n\n public deinit() {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.stopInterval();\n this.heartbeatInterval = null;\n this.videoEventFilter &&\n this.videoEventFilter.removeEventListener(\"*\", this.videoEventListener);\n this.videoEventFilter = null;\n }\n\n public destroy() {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.destroy();\n this.heartbeatInterval = null;\n this.videoEventFilter &&\n this.videoEventFilter.removeEventListener(\"*\", this.videoEventListener);\n this.stopInterval();\n }\n}\n",null],"names":[],"version":3,"file":"module.js.map"}
|
|
1
|
+
{"mappings":";;;;;;;;;;AEAO,GAAA,CAAM,yCAAkB,GAAG,KAAK;AAGhC,GAAA,CAAM,yCAAY,GAAG,qDAAW,CAAC,OAAO;;;;;;;A,G,C,8B,0B,Q,I,Q,G,C;I,8B,G,M,C,M,I,Q,C,C,E,C;Q,G,C,G,C,C,E,C,G,C,E,C,G,S,C,M,E,C,G,C,E,C,G,C;Y,C,G,S,C,C;Y,G,C,G,C,C,I,C,C,E,E,M,C,S,C,c,C,I,C,C,E,C,G,C,C,C,I,C,C,C;Q,C;Q,M,C,C;I,C;I,M,C,8B,C,K,C,I,E,S;A,C;A,G,C,+B,0B,S,I,Q,C,O,E,U,E,C,E,S,E,C;a,K,C,K,E,C;Q,M,C,K,Y,C,G,K,G,G,C,C,C,Q,C,O,E,C;Y,O,C,K;Q,C;I,C;I,M,C,G,E,C,K,C,G,O,G,Q,C,O,E,M,E,C;iB,S,C,K,E,C;Y,G,C,C;gB,I,C,S,C,I,C,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,Q,C,K,E,C;Y,G,C,C;gB,I,C,S,C,C,Q,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,I,C,M,E,C;Y,M,C,I,G,O,C,M,C,K,I,K,C,M,C,K,E,I,C,S,E,Q;Q,C;Q,I,E,S,G,S,C,K,C,O,E,U,I,C,C,G,I;I,C;A,C;A,G,C,iC,0B,W,I,Q,C,O,E,I,E,C;I,G,C,C,G,C;Q,K,E,C;Q,I,E,Q,G,C;Y,E,E,C,C,C,I,C,E,K,C,C,C,C;Y,M,C,C,C,C;Q,C;Q,I,E,C,C;Q,G,E,C,C;I,C,E,C,E,C,E,C,E,C;a,I,C,C,E,C;Q,M,C,Q,C,C,E,C;Y,M,C,I,C,C;gB,C;gB,C;Y,C;Q,C;I,C;a,I,C,E,E,C;Q,E,E,C,E,K,C,G,C,S,C,C;c,C,C,G,C,C;Y,E,E,C,G,C,E,C,K,C,G,E,C,C,I,C,G,C,C,C,W,E,C,C,I,C,C,C,a,C,G,C,C,C,a,C,C,I,C,C,G,C,I,C,C,I,O,C,G,C,C,I,C,C,E,E,C,C,I,I,E,M,C,C;Y,E,E,C,G,C,E,C,E,E,G,C;gB,E,C,C,I,C;gB,C,C,K;Y,C;Y,M,C,E,C,C;gB,I,C,C;gB,I,C,C;oB,C,G,E;oB,K;gB,I,C,C;oB,C,C,K;oB,M,C,C;wB,K,E,E,C,C;wB,I,E,K;oB,C;gB,I,C,C;oB,C,C,K;oB,C,G,E,C,C;oB,E,G,C;A,yB;oB,C;oB,Q;gB,I,C,C;oB,E,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;oB,E,I,C,G,C,C,I,E,C,G,C,C,M,G,C,I,C,C,C,C,M,G,C,O,E,C,C,M,C,I,E,C,C,M,C,G,C;wB,C,G,C;wB,Q;oB,C;oB,E,E,E,C,C,M,C,M,C,I,E,C,C,I,C,C,C,K,E,C,C,I,C,C,C,I,C;wB,C,C,K,G,E,C,C;wB,K;oB,C;oB,E,E,E,C,C,M,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,G,E;wB,K;oB,C;oB,E,E,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,C,G,C,I,C,E;wB,K;oB,C;oB,E,E,C,C,C,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;Y,E,G,I,C,I,C,O,E,C;Q,C,C,K,E,C,E,C;Y,E,G,C;A,iB;gB,C;Y,C;Y,C,G,C;Q,C,Q,C;Y,C,G,C,G,C;Q,C;Q,E,E,E,C,C,I,C,E,K,C,E,C,C;Q,M,C,C;Y,K,E,E,C,C,I,E,C,C,I,I,C,C;Y,I,E,I;Q,C;I,C;I,M,C,C,G,C;Q,I,E,I,C,C;Q,C,Q,I,C,C;Q,C,S,I,C,C;I,C,E,M,C,M,K,C,c,C,C,M,C,Q,I,Q,G,C;Q,M,C,I;I,C,G,C;A,C;ACiB/C,GAAA,CAAA,yCAAA,GAAA,QAAA,GAAA,CAAA;aAOE,yCAAA,CAAY,OAAyB,EAArC,CAAA;QAFQ,IAAA,CAAA,WAAW,GAAG,KAAK;QAGzB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;QAC1B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY;QACxC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS;QAClC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,yCAAkB;QAExE,EAAA,EAAI,IAAI,CAAC,KAAK,EACZ,OAAO,CAAC,GAAG,CAAC,CAAiD,kDAAE,OAAO;IAE1E,CAAC;IAEY,yCAAA,CAAA,SAAA,CAAA,IAAI,GAAjB,QAAA,CAAkB,SAAkB,EAAvB,CAAA;QAA0B,M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BAAE,yCAAY;YAC/B,CAAA;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO;QAC7B,CAAA;IAEL,CAAC;IACH,MAAA,CAAA,yCAAC;AAAD,CA/FA;;;A,G,C,+B,0B,S,I,Q,C,O,E,U,E,C,E,S,E,C;a,K,C,K,E,C;Q,M,C,K,Y,C,G,K,G,G,C,C,C,Q,C,O,E,C;Y,O,C,K;Q,C;I,C;I,M,C,G,E,C,K,C,G,O,G,Q,C,O,E,M,E,C;iB,S,C,K,E,C;Y,G,C,C;gB,I,C,S,C,I,C,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,Q,C,K,E,C;Y,G,C,C;gB,I,C,S,C,C,Q,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,I,C,M,E,C;Y,M,C,I,G,O,C,M,C,K,I,K,C,M,C,K,E,I,C,S,E,Q;Q,C;Q,I,E,S,G,S,C,K,C,O,E,U,I,C,C,G,I;I,C;A,C;A,G,C,iC,0B,W,I,Q,C,O,E,I,E,C;I,G,C,C,G,C;Q,K,E,C;Q,I,E,Q,G,C;Y,E,E,C,C,C,I,C,E,K,C,C,C,C;Y,M,C,C,C,C;Q,C;Q,I,E,C,C;Q,G,E,C,C;I,C,E,C,E,C,E,C,E,C;a,I,C,C,E,C;Q,M,C,Q,C,C,E,C;Y,M,C,I,C,C;gB,C;gB,C;Y,C;Q,C;I,C;a,I,C,E,E,C;Q,E,E,C,E,K,C,G,C,S,C,C;c,C,C,G,C,C;Y,E,E,C,G,C,E,C,K,C,G,E,C,C,I,C,G,C,C,C,W,E,C,C,I,C,C,C,a,C,G,C,C,C,a,C,C,I,C,C,G,C,I,C,C,I,O,C,G,C,C,I,C,C,E,E,C,C,I,I,E,M,C,C;Y,E,E,C,G,C,E,C,E,E,G,C;gB,E,C,C,I,C;gB,C,C,K;Y,C;Y,M,C,E,C,C;gB,I,C,C;gB,I,C,C;oB,C,G,E;oB,K;gB,I,C,C;oB,C,C,K;oB,M,C,C;wB,K,E,E,C,C;wB,I,E,K;oB,C;gB,I,C,C;oB,C,C,K;oB,C,G,E,C,C;oB,E,G,C;A,yB;oB,C;oB,Q;gB,I,C,C;oB,E,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;oB,E,I,C,G,C,C,I,E,C,G,C,C,M,G,C,I,C,C,C,C,M,G,C,O,E,C,C,M,C,I,E,C,C,M,C,G,C;wB,C,G,C;wB,Q;oB,C;oB,E,E,E,C,C,M,C,M,C,I,E,C,C,I,C,C,C,K,E,C,C,I,C,C,C,I,C;wB,C,C,K,G,E,C,C;wB,K;oB,C;oB,E,E,E,C,C,M,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,G,E;wB,K;oB,C;oB,E,E,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,C,G,C,I,C,E;wB,K;oB,C;oB,E,E,C,C,C,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;Y,E,G,I,C,I,C,O,E,C;Q,C,C,K,E,C,E,C;Y,E,G,C;A,iB;gB,C;Y,C;Y,C,G,C;Q,C,Q,C;Y,C,G,C,G,C;Q,C;Q,E,E,E,C,C,I,C,E,K,C,E,C,C;Q,M,C,C;Y,K,E,E,C,C,I,E,C,C,I,I,C,C;Y,I,E,I;Q,C;I,C;I,M,C,C,G,C;Q,I,E,I,C,C;Q,C,Q,I,C,C;Q,C,S,I,C,C;I,C,E,M,C,M,K,C,c,C,C,M,C,Q,I,Q,G,C;Q,M,C,I;I,C,G,C;A,C;AFMA,GAAA,CAAA,yCAAA,GAAA,QAAA,GAAA,CAAA;aAIE,yCAAA,CAAY,YAAoB,EAAE,KAAe,EAAjD,CAAA;QAHQ,IAAA,CAAA,KAAK,GAAG,KAAK;QAInB,IAAI,CAAC,KAAK,GAAG,KAAK;QAClB,IAAI,CAAC,YAAY,GAAG,YAAY;IAClC,CAAC;IAEY,yCAAA,CAAA,SAAA,CAAA,yBAAyB,GAAtC,QAAA,CAAuC,EAGT,EAHjB,CAAA;QACX,GAAA,CAAA,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,EAAA,GAAA,EAAA,CAAA,iBAAsC,EAAtC,iBAAiB,GAAA,EAAA,KAAA,IAAA,CAAA,CAAA,GAAG,yCAAkB,GAAA,EAAA;Q,M,C,+B,C,I,E,I,C,C,E,I,C,C,E,Q,G,C;Y,G,C,E,E,kB,E,W;Y,M,C,iC,C,I,E,Q,C,E,E,C;gB,M,C,E,C,K;oB,I,C,C;wBAEtC,IAAI,CAAC,iBAAiB,GAAG,GAAA,CAAI,kCAAQ,CAAC,CAAtC;4BACE,SAAS,EAAA,SAAA;4BACT,YAAY,EAAE,IAAI,CAAC,YAAY;4BAC/B,KAAK,EAAE,IAAI,CAA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C,G,C,C,E,C,G,C,E,C,G,S,C,M,E,C,G,C,E,C,G,C;Y,C,G,S,C,C;Y,G,C,G,C,C,I,C,C,E,E,M,C,S,C,c,C,I,C,C,E,C,G,C,C,C,I,C,C,C;Q,C;Q,M,C,C;I,C;I,M,C,8B,C,K,C,I,E,S;A,C;A,G,C,+B,0B,S,I,Q,C,O,E,U,E,C,E,S,E,C;a,K,C,K,E,C;Q,M,C,K,Y,C,G,K,G,G,C,C,C,Q,C,O,E,C;Y,O,C,K;Q,C;I,C;I,M,C,G,E,C,K,C,G,O,G,Q,C,O,E,M,E,C;iB,S,C,K,E,C;Y,G,C,C;gB,I,C,S,C,I,C,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,Q,C,K,E,C;Y,G,C,C;gB,I,C,S,C,C,Q,K;Y,C,C,K,E,C,E,C;gB,M,C,C;Y,C;Q,C;iB,I,C,M,E,C;Y,M,C,I,G,O,C,M,C,K,I,K,C,M,C,K,E,I,C,S,E,Q;Q,C;Q,I,E,S,G,S,C,K,C,O,E,U,I,C,C,G,I;I,C;A,C;A,G,C,iC,0B,W,I,Q,C,O,E,I,E,C;I,G,C,C,G,C;Q,K,E,C;Q,I,E,Q,G,C;Y,E,E,C,C,C,I,C,E,K,C,C,C,C;Y,M,C,C,C,C;Q,C;Q,I,E,C,C;Q,G,E,C,C;I,C,E,C,E,C,E,C,E,C;a,I,C,C,E,C;Q,M,C,Q,C,C,E,C;Y,M,C,I,C,C;gB,C;gB,C;Y,C;Q,C;I,C;a,I,C,E,E,C;Q,E,E,C,E,K,C,G,C,S,C,C;c,C,C,G,C,C;Y,E,E,C,G,C,E,C,K,C,G,E,C,C,I,C,G,C,C,C,W,E,C,C,I,C,C,C,a,C,G,C,C,C,a,C,C,I,C,C,G,C,I,C,C,I,O,C,G,C,C,I,C,C,E,E,C,C,I,I,E,M,C,C;Y,E,E,C,G,C,E,C,E,E,G,C;gB,E,C,C,I,C;gB,C,C,K;Y,C;Y,M,C,E,C,C;gB,I,C,C;gB,I,C,C;oB,C,G,E;oB,K;gB,I,C,C;oB,C,C,K;oB,M,C,C;wB,K,E,E,C,C;wB,I,E,K;oB,C;gB,I,C,C;oB,C,C,K;oB,C,G,E,C,C;oB,E,G,C;A,yB;oB,C;oB,Q;gB,I,C,C;oB,E,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;oB,E,I,C,G,C,C,I,E,C,G,C,C,M,G,C,I,C,C,C,C,M,G,C,O,E,C,C,M,C,I,E,C,C,M,C,G,C;wB,C,G,C;wB,Q;oB,C;oB,E,E,E,C,C,M,C,M,C,I,E,C,C,I,C,C,C,K,E,C,C,I,C,C,C,I,C;wB,C,C,K,G,E,C,C;wB,K;oB,C;oB,E,E,E,C,C,M,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,G,E;wB,K;oB,C;oB,E,E,C,I,C,C,K,G,C,C,C,G,C;wB,C,C,K,G,C,C,C;wB,C,C,G,C,I,C,E;wB,K;oB,C;oB,E,E,C,C,C,G,C,C,G,C,G;oB,C,C,I,C,G;oB,Q;;Y,E,G,I,C,I,C,O,E,C;Q,C,C,K,E,C,E,C;Y,E,G,C;A,iB;gB,C;Y,C;Y,C,G,C;Q,C,Q,C;Y,C,G,C,G,C;Q,C;Q,E,E,E,C,C,I,C,E,K,C,E,C,C;Q,M,C,C;Y,K,E,E,C,C,I,E,C,C,I,I,C,C;Y,I,E,I;Q,C;I,C;I,M,C,C,G,C;Q,I,E,I,C,C;Q,C,Q,I,C,C;Q,C,S,I,C,C;I,C,E,M,C,M,K,C,c,C,C,M,C,Q,I,Q,G,C;Q,M,C,I;I,C,G,C;A,C;AGNA,GAAA,CAAA,yCAAA,GAAA,QAAA,GAAA,CAAA;aAcE,yCAAA,CAAY,YAAoB,EAAE,KAAe,EAAjD,CAAA;QARQ,IAAA,CAAA,kBAAkB,GAAG,KAAK;QAShC,IAAI,CAAC,YAAY,GAAG,YAAY;QAChC,IAAI,CAAC,eAAe,GAAG,GAAA,CAAI,yCAAe,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK;IACrE,CAAC;IAEY,yCAAA,CAAA,SAAA,CAAA,IAAI,GAAjB,QAAA,CAAkB,OAA6C,EAAlD,CAAA;Q,M,C,+B,C,I,E,I,C,C,E,I,C,C,E,Q,G,C;Y,G,C,E,E,iB,E,W;Y,M,C,iC,C,I,E,Q,C,E,E,C;gB,M,C,E,C,K;oB,I,C,C;wBACX,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS;wBAEhC,MAAA,CAAA,CAAA;AAAA,6BAAA,AAAA,CAAA,AAAA,EAAA,AAAA,KAAA,AAAA,EAAA;4BAAM,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAA,8BAAA,CAAA,CAAA;gCAClD,SAAS,EAAE,IAA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","sources":["index.ts","src/PlayerAnalytics.ts","src/utils/constants.ts","src/utils/Reporter.ts","src/PlayerAnalyticsConnector.ts"],"sourcesContent":["export {\n PlayerAnalytics,\n IPlayerAnalyticsInitOptions,\n} from \"./src/PlayerAnalytics\";\n\nexport {\n PlayerAnalyticsConnector,\n IPlayerAnalyticsConnectorInitOptions,\n} from \"./src/PlayerAnalyticsConnector\";\n","import {\n PlayerAnalyticsClientModule,\n TBitrateChangedEvent,\n TBufferedEvent,\n TBufferingEvent,\n TErrorEvent,\n THeartbeatEvent,\n TInitEvent,\n TLoadedEvent,\n TLoadingEvent,\n TMetadataEvent,\n TPausedEvent,\n TPlayingEvent,\n TSeekedEvent,\n TSeekingEvent,\n TStoppedEvent,\n TWarningEvent,\n} from \"@eyevinn/player-analytics-specification\";\nimport { HEARTBEAT_INTERVAL } from \"./utils/constants\";\nimport { Reporter } from \"./utils/Reporter\";\n\nexport interface IPlayerAnalyticsInitOptions {\n sessionId?: string;\n heartbeatInterval?: number;\n}\n\nexport class PlayerAnalytics implements PlayerAnalyticsClientModule {\n private debug = false;\n private eventsinkUrl: string;\n private analyticsReporter: Reporter;\n constructor(eventsinkUrl: string, debug?: boolean) {\n this.debug = debug;\n this.eventsinkUrl = eventsinkUrl;\n }\n\n public async initiateAnalyticsReporter({\n sessionId,\n heartbeatInterval = HEARTBEAT_INTERVAL,\n }: IPlayerAnalyticsInitOptions) {\n this.analyticsReporter = new Reporter({\n sessionId,\n eventsinkUrl: this.eventsinkUrl,\n debug: this.debug,\n heartbeatInterval,\n });\n\n const { sessionId: generatedSessionId, isInitiated } =\n await this.analyticsReporter.init(sessionId);\n\n return { sessionId: generatedSessionId, heartbeatInterval, isInitiated };\n }\n\n public init(data: TInitEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public metadata(data: TMetadataEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public heartbeat(data: THeartbeatEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public loading(data: TLoadingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public loaded(data: TLoadedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public playing(data: TPlayingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public pause(data: TPausedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public buffering(data: TBufferingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public buffered(data: TBufferedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public seeking(data: TSeekingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public seeked(data: TSeekedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public bitrateChanged(data: TBitrateChangedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public error(data: TErrorEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public warning(data: TWarningEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public stopped(data: TStoppedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public destroy() {\n this.analyticsReporter = null;\n }\n}\n","export const HEARTBEAT_INTERVAL = 30000;\n\nimport packageJson from \"@eyevinn/player-analytics-specification/package.json\";\nexport const EPAS_VERSION = packageJson.version;\n","import {\n TInitEvent,\n TPlayerAnalyticsEvent,\n} from \"@eyevinn/player-analytics-specification\";\nimport { EPAS_VERSION, HEARTBEAT_INTERVAL } from \"./constants\";\n\nexport interface IReporterOptions {\n eventsinkUrl: string;\n heartbeatInterval?: number;\n sessionId?: string;\n debug?: boolean;\n}\n\nexport interface IReporterPostOptions {\n event: string;\n timestamp: number;\n playhead: number;\n duration: number;\n}\n\nexport class Reporter {\n private debug: boolean;\n private eventsinkUrl: string;\n private sessionId?: string;\n private heartbeatInterval?: number;\n private isInitiated = false;\n\n constructor(options: IReporterOptions) {\n this.debug = options.debug;\n this.eventsinkUrl = options.eventsinkUrl;\n this.sessionId = options.sessionId;\n this.heartbeatInterval = options.heartbeatInterval || HEARTBEAT_INTERVAL;\n\n if (this.debug) {\n console.log(\"[AnalyticsReporter] Initiated AnalyticsReporter\", options);\n }\n }\n\n public async init(sessionId?: string): Promise<Record<string, any>> {\n this.sessionId = sessionId || this.sessionId;\n const data: TInitEvent = {\n event: \"init\",\n sessionId: this.sessionId,\n timestamp: Date.now(),\n playhead: -1,\n duration: -1,\n };\n if (this.debug) {\n console.log(\"[AnalyticsReporter] Init session:\", data);\n this.isInitiated = true;\n return {\n sessionId: this.sessionId,\n heartbeatInterval: this.heartbeatInterval,\n isInitiated: this.isInitiated,\n };\n } else {\n const initResponse = await fetch(`${this.eventsinkUrl}`, {\n method: \"POST\",\n mode: \"cors\",\n cache: \"no-cache\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n \"X-EPAS-Event\": data.event,\n \"X-EPAS-Version\": EPAS_VERSION,\n },\n body: JSON.stringify(data),\n });\n if (!initResponse.ok) {\n throw new Error(\n `[AnalyticsReporter] init failed: ${initResponse.statusText}`\n );\n }\n const initResponseJson = await initResponse.json();\n\n if (!this.sessionId && !initResponseJson.sessionId) {\n throw new Error(`[AnalyticsReporter] init failed: no sessionId`);\n }\n if (initResponseJson.sessionId) {\n this.sessionId = initResponseJson.sessionId;\n }\n this.isInitiated = true;\n return {\n heartbeatInterval: this.heartbeatInterval,\n sessionId: this.sessionId,\n isInitiated: this.isInitiated,\n };\n }\n }\n\n public send(data: TPlayerAnalyticsEvent): void {\n if (!this.isInitiated)\n return console.warn(\n \"[AnalyticsReporter] Cannot report before initiation:\",\n data\n );\n const payload = {\n sessionId: this.sessionId,\n ...data,\n };\n if (this.debug) {\n console.log(\"[AnalyticsReporter] Send payload:\", payload);\n } else {\n fetch(`${this.eventsinkUrl}`, {\n method: \"POST\",\n mode: \"cors\",\n cache: \"no-cache\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n \"X-EPAS-Event\": data.event,\n \"X-EPAS-Version\": EPAS_VERSION,\n },\n body: JSON.stringify(payload),\n });\n }\n }\n}\n","import {\n getMediaEventFilter,\n FilteredMediaEvent,\n TMediaEventFilter,\n} from \"@eyevinn/media-event-filter\";\nimport { PlayerAnalytics } from \"./PlayerAnalytics\";\nimport {\n TBaseEvent,\n TBitrateChangedEventPayload,\n TErrorEventPayload,\n TEventType,\n TMetadataEventPayload,\n UUID,\n} from \"@eyevinn/player-analytics-specification\";\n\nexport interface IPlayerAnalyticsConnectorInitOptions {\n sessionId?: string;\n heartbeatInterval?: number;\n}\n\nexport class PlayerAnalyticsConnector {\n private eventsinkUrl: string;\n private sessionId: UUID;\n private player: HTMLVideoElement;\n\n private playerAnalytics: PlayerAnalytics;\n private analyticsInitiated = false;\n\n private videoEventFilter: TMediaEventFilter;\n private videoEventListener: any;\n\n private heartbeatInterval: number;\n private heartbeatIntervalTimer: ReturnType<typeof setInterval>;\n\n constructor(eventsinkUrl: string, debug?: boolean) {\n this.eventsinkUrl = eventsinkUrl;\n this.playerAnalytics = new PlayerAnalytics(this.eventsinkUrl, debug);\n }\n\n public async init(options: IPlayerAnalyticsConnectorInitOptions) {\n this.sessionId = options.sessionId;\n const { heartbeatInterval, isInitiated } =\n await this.playerAnalytics.initiateAnalyticsReporter({\n sessionId: this.sessionId,\n ...options,\n });\n\n this.analyticsInitiated = isInitiated;\n this.heartbeatInterval = heartbeatInterval;\n }\n\n public load(player: HTMLVideoElement) {\n this.player = player;\n this.playerAnalytics.loading({\n event: \"loading\",\n ...this.playbackState(),\n });\n this.initiateVideoEventFilter();\n }\n\n private initiateVideoEventFilter() {\n if (!this.player) return;\n this.videoEventFilter = getMediaEventFilter({\n mediaElement: this.player,\n mp4Mode: false,\n callback: (event: FilteredMediaEvent) => {\n let eventType: TEventType;\n const extraData = {};\n switch (event) {\n case FilteredMediaEvent.LOADED:\n eventType = \"loaded\";\n break;\n case FilteredMediaEvent.PLAYING:\n eventType = \"playing\";\n this.startInterval();\n break;\n case FilteredMediaEvent.PAUSE:\n eventType = \"paused\";\n break;\n case FilteredMediaEvent.SEEKING:\n eventType = \"seeking\";\n break;\n case FilteredMediaEvent.SEEKED:\n eventType = \"seeked\";\n break;\n case FilteredMediaEvent.BUFFERING:\n eventType = \"buffering\";\n break;\n case FilteredMediaEvent.BUFFERED:\n eventType = \"buffered\";\n break;\n case FilteredMediaEvent.ENDED:\n eventType = \"stopped\";\n extraData[\"reason\"] = \"ended\";\n this.stopInterval();\n break;\n default:\n break;\n }\n try {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n if (eventType) {\n this.playerAnalytics[eventType == \"paused\" ? \"pause\" : eventType]({\n event: eventType,\n ...this.playbackState(),\n ...(Object.keys(extraData).length > 0 && { payload: extraData }),\n });\n }\n } catch (err) {\n console.error(err);\n }\n },\n });\n }\n\n private startInterval() {\n if (this.heartbeatIntervalTimer) return;\n this.heartbeatIntervalTimer = setInterval(() => {\n this.playerAnalytics.heartbeat({\n event: \"heartbeat\",\n ...this.playbackState(),\n });\n }, this.heartbeatInterval);\n }\n\n private stopInterval() {\n clearInterval(this.heartbeatIntervalTimer);\n }\n\n public reportBitrateChange(payload: TBitrateChangedEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.bitrateChanged({\n event: \"bitrate_changed\",\n ...this.playbackState(),\n payload,\n });\n }\n\n public reportStop() {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.stopped({\n event: \"stopped\",\n ...this.playbackState(),\n payload: { reason: \"aborted\" },\n });\n this.stopInterval();\n }\n\n public reportError(error: TErrorEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.error({\n event: \"error\",\n ...this.playbackState(),\n payload: error,\n });\n this.playerAnalytics.stopped({\n event: \"stopped\",\n ...this.playbackState(),\n payload: { reason: \"error\" },\n });\n this.stopInterval();\n }\n\n public reportMetadata(payload: TMetadataEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.metadata({\n event: \"metadata\",\n ...this.playbackState(),\n payload,\n });\n }\n\n public reportWarning(payload: TErrorEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.warning({\n event: \"warning\",\n ...this.playbackState(),\n payload,\n });\n }\n\n private playbackState(): TBaseEvent {\n const duration =\n this.player?.duration &&\n this.player?.duration !== Infinity &&\n this.player?.duration > 0\n ? this.player.duration\n : -1;\n const playhead =\n this.player?.currentTime && duration !== -1\n ? this.player?.currentTime\n : -1;\n return {\n sessionId: this.sessionId,\n timestamp: Date.now(),\n playhead,\n duration,\n };\n }\n\n public deinit() {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.stopInterval();\n this.heartbeatInterval = null;\n this.videoEventFilter && this.videoEventFilter.teardown();\n this.videoEventFilter = null;\n }\n\n public destroy() {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.destroy();\n this.heartbeatInterval = null;\n this.videoEventFilter && this.videoEventFilter.teardown();\n this.stopInterval();\n }\n}\n"],"names":[],"version":3,"file":"module.js.map"}
|
package/dist/types.d.ts
CHANGED
|
@@ -16,7 +16,6 @@ export class PlayerAnalytics implements PlayerAnalyticsClientModule {
|
|
|
16
16
|
loading(data: TLoadingEvent): void;
|
|
17
17
|
loaded(data: TLoadedEvent): void;
|
|
18
18
|
playing(data: TPlayingEvent): void;
|
|
19
|
-
paused(data: TPausedEvent): void;
|
|
20
19
|
pause(data: TPausedEvent): void;
|
|
21
20
|
buffering(data: TBufferingEvent): void;
|
|
22
21
|
buffered(data: TBufferedEvent): void;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";AEqBA;IACE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,4BAA6B,YAAW,2BAA2B;gBAIrD,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;IAKpC,yBAAyB,CAAC,EACrC,SAAS,EACT,iBAAsC,GACvC,EAAE,2BAA2B;;;;;IAcvB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAI5B,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAIpC,SAAS,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAItC,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAIlC,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAIhC,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAIlC,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAIhC,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAI/B,SAAS,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAItC,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAIpC,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAIlC,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAIhC,cAAc,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI;IAIhD,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAI9B,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAIlC,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAIlC,OAAO;CAGf;AC5GD;IACE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;gBAcc,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;IAKpC,IAAI,CAAC,OAAO,EAAE,oCAAoC;IAYxD,IAAI,CAAC,MAAM,EAAE,gBAAgB;IAsF7B,mBAAmB,CAAC,OAAO,EAAE,2BAA2B;IAYxD,UAAU;IAaV,WAAW,CAAC,KAAK,EAAE,kBAAkB;IAkBrC,cAAc,CAAC,OAAO,EAAE,qBAAqB;IAY7C,aAAa,CAAC,OAAO,EAAE,kBAAkB;IA6BzC,MAAM;IAYN,OAAO;CAWf","sources":["src/utils/constants.ts","src/utils/Reporter.ts","src/PlayerAnalytics.ts","src/PlayerAnalyticsConnector.ts","index.ts"],"sourcesContent":["export enum EPASEvents {\n loading = \"loading\",\n loaded = \"loaded\",\n play = \"playing\",\n resume = \"playing\",\n pause = \"paused\",\n seeking = \"seeking\",\n seeked = \"seeked\",\n buffering = \"buffering\",\n buffered = \"buffered\",\n ended = \"stopped\",\n error = \"error\",\n warning = \"warning\",\n bitratechanged = \"bitrate_changed\",\n heartbeat = \"heartbeat\",\n metadata = \"metadata\",\n}\n\nexport const HEARTBEAT_INTERVAL = 30000;\n\nimport packageJson from \"@eyevinn/player-analytics-specification/package.json\";\nexport const EPAS_VERSION = packageJson.version;\n","import {\n TInitEvent,\n TPlayerAnalyticsEvent,\n} from \"@eyevinn/player-analytics-specification\";\nimport { EPAS_VERSION, HEARTBEAT_INTERVAL } from \"./constants\";\n\nexport interface IReporterOptions {\n eventsinkUrl: string;\n heartbeatInterval?: number;\n sessionId?: string;\n debug?: boolean;\n}\n\nexport interface IReporterPostOptions {\n event: string;\n timestamp: number;\n playhead: number;\n duration: number;\n}\n\nexport class Reporter {\n private debug: boolean;\n private eventsinkUrl: string;\n private sessionId?: string;\n private heartbeatInterval?: number;\n private isInitiated = false;\n\n constructor(options: IReporterOptions) {\n this.debug = options.debug;\n this.eventsinkUrl = options.eventsinkUrl;\n this.sessionId = options.sessionId;\n this.heartbeatInterval = options.heartbeatInterval || HEARTBEAT_INTERVAL;\n\n if (this.debug) {\n console.log(\"[AnalyticsReporter] Initiated AnalyticsReporter\", options);\n }\n }\n\n public async init(sessionId?: string): Promise<Record<string, any>> {\n this.sessionId = sessionId || this.sessionId;\n const data: TInitEvent = {\n event: \"init\",\n sessionId: this.sessionId,\n timestamp: Date.now(),\n playhead: -1,\n duration: -1,\n };\n if (this.debug) {\n console.log(\"[AnalyticsReporter] Init session:\", data);\n this.isInitiated = true;\n return {\n sessionId: this.sessionId,\n heartbeatInterval: this.heartbeatInterval,\n isInitiated: this.isInitiated,\n };\n } else {\n const initResponse = await fetch(`${this.eventsinkUrl}`, {\n method: \"POST\",\n mode: \"cors\",\n cache: \"no-cache\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n \"X-EPAS-Event\": data.event,\n \"X-EPAS-Version\": EPAS_VERSION,\n },\n body: JSON.stringify(data),\n });\n if (!initResponse.ok) {\n throw new Error(\n `[AnalyticsReporter] init failed: ${initResponse.statusText}`\n );\n }\n const initResponseJson = await initResponse.json();\n\n if (!this.sessionId && !initResponseJson.sessionId) {\n throw new Error(`[AnalyticsReporter] init failed: no sessionId`);\n }\n if (initResponseJson.sessionId) {\n this.sessionId = initResponseJson.sessionId;\n }\n this.isInitiated = true;\n return {\n heartbeatInterval: this.heartbeatInterval,\n sessionId: this.sessionId,\n isInitiated: this.isInitiated,\n };\n }\n }\n\n public send(data: TPlayerAnalyticsEvent): void {\n if (!this.isInitiated)\n return console.warn(\n \"[AnalyticsReporter] Cannot report before initiation:\",\n data\n );\n const payload = {\n sessionId: this.sessionId,\n ...data,\n };\n if (this.debug) {\n console.log(\"[AnalyticsReporter] Send payload:\", payload);\n } else {\n fetch(`${this.eventsinkUrl}`, {\n method: \"POST\",\n mode: \"cors\",\n cache: \"no-cache\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n \"X-EPAS-Event\": data.event,\n \"X-EPAS-Version\": EPAS_VERSION,\n },\n body: JSON.stringify(payload),\n });\n }\n }\n}\n","import {\n PlayerAnalyticsClientModule,\n TBitrateChangedEvent,\n TBufferedEvent,\n TBufferingEvent,\n TErrorEvent,\n THeartbeatEvent,\n TInitEvent,\n TLoadedEvent,\n TLoadingEvent,\n TMetadataEvent,\n TPausedEvent,\n TPlayingEvent,\n TSeekedEvent,\n TSeekingEvent,\n TStoppedEvent,\n TWarningEvent,\n} from \"@eyevinn/player-analytics-specification\";\nimport { HEARTBEAT_INTERVAL } from \"./utils/constants\";\nimport { Reporter } from \"./utils/Reporter\";\n\nexport interface IPlayerAnalyticsInitOptions {\n sessionId?: string;\n heartbeatInterval?: number;\n}\n\nexport class PlayerAnalytics implements PlayerAnalyticsClientModule {\n private debug = false;\n private eventsinkUrl: string;\n private analyticsReporter: Reporter;\n constructor(eventsinkUrl: string, debug?: boolean) {\n this.debug = debug;\n this.eventsinkUrl = eventsinkUrl;\n }\n\n public async initiateAnalyticsReporter({\n sessionId,\n heartbeatInterval = HEARTBEAT_INTERVAL,\n }: IPlayerAnalyticsInitOptions) {\n this.analyticsReporter = new Reporter({\n sessionId,\n eventsinkUrl: this.eventsinkUrl,\n debug: this.debug,\n heartbeatInterval,\n });\n\n const { sessionId: generatedSessionId, isInitiated } =\n await this.analyticsReporter.init(sessionId);\n\n return { sessionId: generatedSessionId, heartbeatInterval, isInitiated };\n }\n\n public init(data: TInitEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public metadata(data: TMetadataEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public heartbeat(data: THeartbeatEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public loading(data: TLoadingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public loaded(data: TLoadedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public playing(data: TPlayingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public paused(data: TPausedEvent): void {\n this.pause(data);\n }\n\n public pause(data: TPausedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public buffering(data: TBufferingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public buffered(data: TBufferedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public seeking(data: TSeekingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public seeked(data: TSeekedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public bitrateChanged(data: TBitrateChangedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public error(data: TErrorEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public warning(data: TWarningEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public stopped(data: TStoppedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public destroy() {\n this.analyticsReporter = null;\n }\n}\n","import { VideoEventFilter, PlayerEvents } from \"@eyevinn/video-event-filter\";\nimport { EPASEvents } from \"./utils/constants\";\nimport { PlayerAnalytics } from \"./PlayerAnalytics\";\nimport {\n TBaseEvent,\n TBitrateChangedEventPayload,\n TErrorEventPayload,\n TMetadataEventPayload,\n UUID,\n} from \"@eyevinn/player-analytics-specification\";\n\nexport interface IPlayerAnalyticsConnectorInitOptions {\n sessionId?: string;\n heartbeatInterval?: number;\n}\n\nexport class PlayerAnalyticsConnector {\n private eventsinkUrl: string;\n private sessionId: UUID;\n private player: HTMLVideoElement;\n\n private playerAnalytics: PlayerAnalytics;\n private analyticsInitiated = false;\n\n private videoEventFilter: VideoEventFilter;\n private videoEventListener: any;\n\n private heartbeatInterval: number;\n private heartbeatIntervalTimer: ReturnType<typeof setInterval>;\n\n constructor(eventsinkUrl: string, debug?: boolean) {\n this.eventsinkUrl = eventsinkUrl;\n this.playerAnalytics = new PlayerAnalytics(this.eventsinkUrl, debug);\n }\n\n public async init(options: IPlayerAnalyticsConnectorInitOptions) {\n this.sessionId = options.sessionId;\n const { heartbeatInterval, isInitiated } =\n await this.playerAnalytics.initiateAnalyticsReporter({\n sessionId: this.sessionId,\n ...options,\n });\n\n this.analyticsInitiated = isInitiated;\n this.heartbeatInterval = heartbeatInterval;\n }\n\n public load(player: HTMLVideoElement) {\n this.player = player;\n this.playerAnalytics.loading({\n event: EPASEvents.loading,\n ...this.playbackState(),\n });\n this.initiateVideoEventFilter();\n }\n\n private initiateVideoEventFilter() {\n if (!this.player) return;\n this.videoEventFilter = new VideoEventFilter(this.player);\n this.videoEventFilter.addEventListener(\n \"*\",\n (this.videoEventListener = (event: PlayerEvents) => {\n if (!Object.keys(EPASEvents).includes(event)) return;\n let eventType;\n const extraData = {};\n if (!event) return;\n switch (event) {\n case PlayerEvents.Loaded:\n eventType = EPASEvents.loaded;\n break;\n case PlayerEvents.Loading:\n eventType = EPASEvents.loading;\n break;\n case PlayerEvents.Play:\n case PlayerEvents.Resume:\n eventType = EPASEvents.play;\n this.startInterval();\n break;\n case PlayerEvents.Pause:\n eventType = EPASEvents.pause;\n break;\n case PlayerEvents.Seeking:\n eventType = EPASEvents.seeking;\n break;\n case PlayerEvents.Seeked:\n eventType = EPASEvents.seeked;\n break;\n case PlayerEvents.Buffering:\n eventType = EPASEvents.buffering;\n break;\n case PlayerEvents.Buffered:\n eventType = EPASEvents.buffered;\n break;\n case PlayerEvents.Ended:\n eventType = EPASEvents.ended;\n (extraData as any).reason = \"ended\";\n this.stopInterval();\n break;\n case PlayerEvents.Error:\n eventType = EPASEvents.error;\n (extraData as any).reason = \"error\";\n this.stopInterval();\n break;\n default:\n break;\n }\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics[eventType]({\n event: eventType,\n ...this.playbackState(),\n ...(Object.keys(extraData).length > 0 && { payload: extraData }),\n });\n })\n );\n }\n\n private startInterval() {\n if (this.heartbeatIntervalTimer) return;\n this.heartbeatIntervalTimer = setInterval(() => {\n this.playerAnalytics.heartbeat({\n event: EPASEvents.heartbeat,\n ...this.playbackState(),\n });\n }, this.heartbeatInterval);\n }\n\n private stopInterval() {\n clearInterval(this.heartbeatIntervalTimer);\n }\n\n public reportBitrateChange(payload: TBitrateChangedEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.bitrateChanged({\n event: EPASEvents.bitratechanged,\n ...this.playbackState(),\n payload,\n });\n }\n\n public reportStop() {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.stopped({\n event: EPASEvents.ended,\n ...this.playbackState(),\n payload: { reason: \"aborted\" },\n });\n this.stopInterval();\n }\n\n public reportError(error: TErrorEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.error({\n event: EPASEvents.error,\n ...this.playbackState(),\n payload: error,\n });\n this.playerAnalytics.stopped({\n event: EPASEvents.ended,\n ...this.playbackState(),\n payload: { reason: \"error\" },\n });\n this.stopInterval();\n }\n\n public reportMetadata(payload: TMetadataEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.metadata({\n event: EPASEvents.metadata,\n ...this.playbackState(),\n payload,\n });\n }\n\n public reportWarning(payload: TErrorEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.warning({\n event: EPASEvents.warning,\n ...this.playbackState(),\n payload,\n });\n }\n\n private playbackState(): TBaseEvent {\n const playhead =\n !this.player?.currentTime && this.player?.currentTime !== 0\n ? -1\n : this.player.currentTime || 0;\n const duration =\n !this.player?.duration && this.player?.duration !== 0\n ? -1\n : this.player.duration || 0;\n return {\n sessionId: this.sessionId,\n timestamp: Date.now(),\n playhead,\n duration,\n };\n }\n\n public deinit() {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.stopInterval();\n this.heartbeatInterval = null;\n this.videoEventFilter &&\n this.videoEventFilter.removeEventListener(\"*\", this.videoEventListener);\n this.videoEventFilter = null;\n }\n\n public destroy() {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.destroy();\n this.heartbeatInterval = null;\n this.videoEventFilter &&\n this.videoEventFilter.removeEventListener(\"*\", this.videoEventListener);\n this.stopInterval();\n }\n}\n","export {\n PlayerAnalytics,\n IPlayerAnalyticsInitOptions,\n} from \"./src/PlayerAnalytics\";\n\nexport {\n PlayerAnalyticsConnector,\n IPlayerAnalyticsConnectorInitOptions,\n} from \"./src/PlayerAnalyticsConnector\";\n"],"names":[],"version":3,"file":"types.d.ts.map"}
|
|
1
|
+
{"mappings":";AEqBA;IACE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,4BAA6B,YAAW,2BAA2B;gBAIrD,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;IAKpC,yBAAyB,CAAC,EACrC,SAAS,EACT,iBAAsC,GACvC,EAAE,2BAA2B;;;;;IAcvB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAI5B,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAIpC,SAAS,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAItC,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAIlC,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAIhC,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAIlC,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAI/B,SAAS,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAItC,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAIpC,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAIlC,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAIhC,cAAc,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI;IAIhD,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAI9B,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAIlC,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAIlC,OAAO;CAGf;ACpGD;IACE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;gBAcc,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;IAKpC,IAAI,CAAC,OAAO,EAAE,oCAAoC;IAYxD,IAAI,CAAC,MAAM,EAAE,gBAAgB;IAiF7B,mBAAmB,CAAC,OAAO,EAAE,2BAA2B;IAYxD,UAAU;IAaV,WAAW,CAAC,KAAK,EAAE,kBAAkB;IAkBrC,cAAc,CAAC,OAAO,EAAE,qBAAqB;IAY7C,aAAa,CAAC,OAAO,EAAE,kBAAkB;IA+BzC,MAAM;IAWN,OAAO;CAUf","sources":["src/utils/constants.ts","src/utils/Reporter.ts","src/PlayerAnalytics.ts","src/PlayerAnalyticsConnector.ts","index.ts"],"sourcesContent":["export const HEARTBEAT_INTERVAL = 30000;\n\nimport packageJson from \"@eyevinn/player-analytics-specification/package.json\";\nexport const EPAS_VERSION = packageJson.version;\n","import {\n TInitEvent,\n TPlayerAnalyticsEvent,\n} from \"@eyevinn/player-analytics-specification\";\nimport { EPAS_VERSION, HEARTBEAT_INTERVAL } from \"./constants\";\n\nexport interface IReporterOptions {\n eventsinkUrl: string;\n heartbeatInterval?: number;\n sessionId?: string;\n debug?: boolean;\n}\n\nexport interface IReporterPostOptions {\n event: string;\n timestamp: number;\n playhead: number;\n duration: number;\n}\n\nexport class Reporter {\n private debug: boolean;\n private eventsinkUrl: string;\n private sessionId?: string;\n private heartbeatInterval?: number;\n private isInitiated = false;\n\n constructor(options: IReporterOptions) {\n this.debug = options.debug;\n this.eventsinkUrl = options.eventsinkUrl;\n this.sessionId = options.sessionId;\n this.heartbeatInterval = options.heartbeatInterval || HEARTBEAT_INTERVAL;\n\n if (this.debug) {\n console.log(\"[AnalyticsReporter] Initiated AnalyticsReporter\", options);\n }\n }\n\n public async init(sessionId?: string): Promise<Record<string, any>> {\n this.sessionId = sessionId || this.sessionId;\n const data: TInitEvent = {\n event: \"init\",\n sessionId: this.sessionId,\n timestamp: Date.now(),\n playhead: -1,\n duration: -1,\n };\n if (this.debug) {\n console.log(\"[AnalyticsReporter] Init session:\", data);\n this.isInitiated = true;\n return {\n sessionId: this.sessionId,\n heartbeatInterval: this.heartbeatInterval,\n isInitiated: this.isInitiated,\n };\n } else {\n const initResponse = await fetch(`${this.eventsinkUrl}`, {\n method: \"POST\",\n mode: \"cors\",\n cache: \"no-cache\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n \"X-EPAS-Event\": data.event,\n \"X-EPAS-Version\": EPAS_VERSION,\n },\n body: JSON.stringify(data),\n });\n if (!initResponse.ok) {\n throw new Error(\n `[AnalyticsReporter] init failed: ${initResponse.statusText}`\n );\n }\n const initResponseJson = await initResponse.json();\n\n if (!this.sessionId && !initResponseJson.sessionId) {\n throw new Error(`[AnalyticsReporter] init failed: no sessionId`);\n }\n if (initResponseJson.sessionId) {\n this.sessionId = initResponseJson.sessionId;\n }\n this.isInitiated = true;\n return {\n heartbeatInterval: this.heartbeatInterval,\n sessionId: this.sessionId,\n isInitiated: this.isInitiated,\n };\n }\n }\n\n public send(data: TPlayerAnalyticsEvent): void {\n if (!this.isInitiated)\n return console.warn(\n \"[AnalyticsReporter] Cannot report before initiation:\",\n data\n );\n const payload = {\n sessionId: this.sessionId,\n ...data,\n };\n if (this.debug) {\n console.log(\"[AnalyticsReporter] Send payload:\", payload);\n } else {\n fetch(`${this.eventsinkUrl}`, {\n method: \"POST\",\n mode: \"cors\",\n cache: \"no-cache\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n \"X-EPAS-Event\": data.event,\n \"X-EPAS-Version\": EPAS_VERSION,\n },\n body: JSON.stringify(payload),\n });\n }\n }\n}\n","import {\n PlayerAnalyticsClientModule,\n TBitrateChangedEvent,\n TBufferedEvent,\n TBufferingEvent,\n TErrorEvent,\n THeartbeatEvent,\n TInitEvent,\n TLoadedEvent,\n TLoadingEvent,\n TMetadataEvent,\n TPausedEvent,\n TPlayingEvent,\n TSeekedEvent,\n TSeekingEvent,\n TStoppedEvent,\n TWarningEvent,\n} from \"@eyevinn/player-analytics-specification\";\nimport { HEARTBEAT_INTERVAL } from \"./utils/constants\";\nimport { Reporter } from \"./utils/Reporter\";\n\nexport interface IPlayerAnalyticsInitOptions {\n sessionId?: string;\n heartbeatInterval?: number;\n}\n\nexport class PlayerAnalytics implements PlayerAnalyticsClientModule {\n private debug = false;\n private eventsinkUrl: string;\n private analyticsReporter: Reporter;\n constructor(eventsinkUrl: string, debug?: boolean) {\n this.debug = debug;\n this.eventsinkUrl = eventsinkUrl;\n }\n\n public async initiateAnalyticsReporter({\n sessionId,\n heartbeatInterval = HEARTBEAT_INTERVAL,\n }: IPlayerAnalyticsInitOptions) {\n this.analyticsReporter = new Reporter({\n sessionId,\n eventsinkUrl: this.eventsinkUrl,\n debug: this.debug,\n heartbeatInterval,\n });\n\n const { sessionId: generatedSessionId, isInitiated } =\n await this.analyticsReporter.init(sessionId);\n\n return { sessionId: generatedSessionId, heartbeatInterval, isInitiated };\n }\n\n public init(data: TInitEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public metadata(data: TMetadataEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public heartbeat(data: THeartbeatEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public loading(data: TLoadingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public loaded(data: TLoadedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public playing(data: TPlayingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public pause(data: TPausedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public buffering(data: TBufferingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public buffered(data: TBufferedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public seeking(data: TSeekingEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public seeked(data: TSeekedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public bitrateChanged(data: TBitrateChangedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public error(data: TErrorEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public warning(data: TWarningEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public stopped(data: TStoppedEvent): void {\n this.analyticsReporter.send(data);\n }\n\n public destroy() {\n this.analyticsReporter = null;\n }\n}\n","import {\n getMediaEventFilter,\n FilteredMediaEvent,\n TMediaEventFilter,\n} from \"@eyevinn/media-event-filter\";\nimport { PlayerAnalytics } from \"./PlayerAnalytics\";\nimport {\n TBaseEvent,\n TBitrateChangedEventPayload,\n TErrorEventPayload,\n TEventType,\n TMetadataEventPayload,\n UUID,\n} from \"@eyevinn/player-analytics-specification\";\n\nexport interface IPlayerAnalyticsConnectorInitOptions {\n sessionId?: string;\n heartbeatInterval?: number;\n}\n\nexport class PlayerAnalyticsConnector {\n private eventsinkUrl: string;\n private sessionId: UUID;\n private player: HTMLVideoElement;\n\n private playerAnalytics: PlayerAnalytics;\n private analyticsInitiated = false;\n\n private videoEventFilter: TMediaEventFilter;\n private videoEventListener: any;\n\n private heartbeatInterval: number;\n private heartbeatIntervalTimer: ReturnType<typeof setInterval>;\n\n constructor(eventsinkUrl: string, debug?: boolean) {\n this.eventsinkUrl = eventsinkUrl;\n this.playerAnalytics = new PlayerAnalytics(this.eventsinkUrl, debug);\n }\n\n public async init(options: IPlayerAnalyticsConnectorInitOptions) {\n this.sessionId = options.sessionId;\n const { heartbeatInterval, isInitiated } =\n await this.playerAnalytics.initiateAnalyticsReporter({\n sessionId: this.sessionId,\n ...options,\n });\n\n this.analyticsInitiated = isInitiated;\n this.heartbeatInterval = heartbeatInterval;\n }\n\n public load(player: HTMLVideoElement) {\n this.player = player;\n this.playerAnalytics.loading({\n event: \"loading\",\n ...this.playbackState(),\n });\n this.initiateVideoEventFilter();\n }\n\n private initiateVideoEventFilter() {\n if (!this.player) return;\n this.videoEventFilter = getMediaEventFilter({\n mediaElement: this.player,\n mp4Mode: false,\n callback: (event: FilteredMediaEvent) => {\n let eventType: TEventType;\n const extraData = {};\n switch (event) {\n case FilteredMediaEvent.LOADED:\n eventType = \"loaded\";\n break;\n case FilteredMediaEvent.PLAYING:\n eventType = \"playing\";\n this.startInterval();\n break;\n case FilteredMediaEvent.PAUSE:\n eventType = \"paused\";\n break;\n case FilteredMediaEvent.SEEKING:\n eventType = \"seeking\";\n break;\n case FilteredMediaEvent.SEEKED:\n eventType = \"seeked\";\n break;\n case FilteredMediaEvent.BUFFERING:\n eventType = \"buffering\";\n break;\n case FilteredMediaEvent.BUFFERED:\n eventType = \"buffered\";\n break;\n case FilteredMediaEvent.ENDED:\n eventType = \"stopped\";\n extraData[\"reason\"] = \"ended\";\n this.stopInterval();\n break;\n default:\n break;\n }\n try {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n if (eventType) {\n this.playerAnalytics[eventType == \"paused\" ? \"pause\" : eventType]({\n event: eventType,\n ...this.playbackState(),\n ...(Object.keys(extraData).length > 0 && { payload: extraData }),\n });\n }\n } catch (err) {\n console.error(err);\n }\n },\n });\n }\n\n private startInterval() {\n if (this.heartbeatIntervalTimer) return;\n this.heartbeatIntervalTimer = setInterval(() => {\n this.playerAnalytics.heartbeat({\n event: \"heartbeat\",\n ...this.playbackState(),\n });\n }, this.heartbeatInterval);\n }\n\n private stopInterval() {\n clearInterval(this.heartbeatIntervalTimer);\n }\n\n public reportBitrateChange(payload: TBitrateChangedEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.bitrateChanged({\n event: \"bitrate_changed\",\n ...this.playbackState(),\n payload,\n });\n }\n\n public reportStop() {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.stopped({\n event: \"stopped\",\n ...this.playbackState(),\n payload: { reason: \"aborted\" },\n });\n this.stopInterval();\n }\n\n public reportError(error: TErrorEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.error({\n event: \"error\",\n ...this.playbackState(),\n payload: error,\n });\n this.playerAnalytics.stopped({\n event: \"stopped\",\n ...this.playbackState(),\n payload: { reason: \"error\" },\n });\n this.stopInterval();\n }\n\n public reportMetadata(payload: TMetadataEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.metadata({\n event: \"metadata\",\n ...this.playbackState(),\n payload,\n });\n }\n\n public reportWarning(payload: TErrorEventPayload) {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.warning({\n event: \"warning\",\n ...this.playbackState(),\n payload,\n });\n }\n\n private playbackState(): TBaseEvent {\n const duration =\n this.player?.duration &&\n this.player?.duration !== Infinity &&\n this.player?.duration > 0\n ? this.player.duration\n : -1;\n const playhead =\n this.player?.currentTime && duration !== -1\n ? this.player?.currentTime\n : -1;\n return {\n sessionId: this.sessionId,\n timestamp: Date.now(),\n playhead,\n duration,\n };\n }\n\n public deinit() {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.stopInterval();\n this.heartbeatInterval = null;\n this.videoEventFilter && this.videoEventFilter.teardown();\n this.videoEventFilter = null;\n }\n\n public destroy() {\n if (!this.analyticsInitiated) {\n console.warn(\"[PlayerAnalyticsConnector] Analytics not initiated\");\n return;\n }\n this.playerAnalytics.destroy();\n this.heartbeatInterval = null;\n this.videoEventFilter && this.videoEventFilter.teardown();\n this.stopInterval();\n }\n}\n","export {\n PlayerAnalytics,\n IPlayerAnalyticsInitOptions,\n} from \"./src/PlayerAnalytics\";\n\nexport {\n PlayerAnalyticsConnector,\n IPlayerAnalyticsConnectorInitOptions,\n} from \"./src/PlayerAnalyticsConnector\";\n"],"names":[],"version":3,"file":"types.d.ts.map"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eyevinn/player-analytics-client-sdk-web",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "EPAS Client SDK for Web",
|
|
5
5
|
"source": "index.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
},
|
|
26
26
|
"homepage": "https://github.com/Eyevinn/player-analytics-client-sdk-web#readme",
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@parcel/packager-ts": "^2.
|
|
29
|
-
"@parcel/transformer-typescript-tsc": "^2.
|
|
30
|
-
"@parcel/transformer-typescript-types": "^2.
|
|
28
|
+
"@parcel/packager-ts": "^2.13.3",
|
|
29
|
+
"@parcel/transformer-typescript-tsc": "^2.13.3",
|
|
30
|
+
"@parcel/transformer-typescript-types": "^2.13.3",
|
|
31
31
|
"@typescript-eslint/eslint-plugin": "^5.10.2",
|
|
32
32
|
"@typescript-eslint/parser": "^5.10.2",
|
|
33
33
|
"eslint": "^8.5.0",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"typescript": "^4.5.4"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@eyevinn/
|
|
42
|
-
"@eyevinn/
|
|
41
|
+
"@eyevinn/media-event-filter": "^3.4.1",
|
|
42
|
+
"@eyevinn/player-analytics-specification": "0.3.1"
|
|
43
43
|
}
|
|
44
44
|
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { PlayerAnalyticsClientModule, TBitrateChangedEvent, TBufferedEvent, TBufferingEvent, TErrorEvent, THeartbeatEvent, TInitEvent, TLoadedEvent, TLoadingEvent, TMetadataEvent, TPausedEvent, TPlayingEvent, TSeekedEvent, TSeekingEvent, TStoppedEvent, TWarningEvent } from "@eyevinn/player-analytics-specification";
|
|
2
|
-
export interface IPlayerAnalyticsInitOptions {
|
|
3
|
-
sessionId?: string;
|
|
4
|
-
heartbeatInterval?: number;
|
|
5
|
-
}
|
|
6
|
-
export declare class PlayerAnalytics implements PlayerAnalyticsClientModule {
|
|
7
|
-
private debug;
|
|
8
|
-
private eventsinkUrl;
|
|
9
|
-
private analyticsReporter;
|
|
10
|
-
constructor(eventsinkUrl: string, debug?: boolean);
|
|
11
|
-
initiateAnalyticsReporter({ sessionId, heartbeatInterval, }: IPlayerAnalyticsInitOptions): Promise<{
|
|
12
|
-
sessionId: any;
|
|
13
|
-
heartbeatInterval: number;
|
|
14
|
-
isInitiated: any;
|
|
15
|
-
}>;
|
|
16
|
-
init(data: TInitEvent): void;
|
|
17
|
-
metadata(data: TMetadataEvent): void;
|
|
18
|
-
heartbeat(data: THeartbeatEvent): void;
|
|
19
|
-
loading(data: TLoadingEvent): void;
|
|
20
|
-
loaded(data: TLoadedEvent): void;
|
|
21
|
-
playing(data: TPlayingEvent): void;
|
|
22
|
-
paused(data: TPausedEvent): void;
|
|
23
|
-
pause(data: TPausedEvent): void;
|
|
24
|
-
buffering(data: TBufferingEvent): void;
|
|
25
|
-
buffered(data: TBufferedEvent): void;
|
|
26
|
-
seeking(data: TSeekingEvent): void;
|
|
27
|
-
seeked(data: TSeekedEvent): void;
|
|
28
|
-
bitrateChanged(data: TBitrateChangedEvent): void;
|
|
29
|
-
error(data: TErrorEvent): void;
|
|
30
|
-
warning(data: TWarningEvent): void;
|
|
31
|
-
stopped(data: TStoppedEvent): void;
|
|
32
|
-
destroy(): void;
|
|
33
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { TBitrateChangedEventPayload, TErrorEventPayload, TMetadataEventPayload } from "@eyevinn/player-analytics-specification";
|
|
2
|
-
export interface IPlayerAnalyticsConnectorInitOptions {
|
|
3
|
-
sessionId?: string;
|
|
4
|
-
heartbeatInterval?: number;
|
|
5
|
-
}
|
|
6
|
-
export declare class PlayerAnalyticsConnector {
|
|
7
|
-
private eventsinkUrl;
|
|
8
|
-
private sessionId;
|
|
9
|
-
private player;
|
|
10
|
-
private playerAnalytics;
|
|
11
|
-
private analyticsInitiated;
|
|
12
|
-
private videoEventFilter;
|
|
13
|
-
private videoEventListener;
|
|
14
|
-
private heartbeatInterval;
|
|
15
|
-
private heartbeatIntervalTimer;
|
|
16
|
-
constructor(eventsinkUrl: string, debug?: boolean);
|
|
17
|
-
init(options: IPlayerAnalyticsConnectorInitOptions): Promise<void>;
|
|
18
|
-
load(player: HTMLVideoElement): void;
|
|
19
|
-
private initiateVideoEventFilter;
|
|
20
|
-
private startInterval;
|
|
21
|
-
private stopInterval;
|
|
22
|
-
reportBitrateChange(payload: TBitrateChangedEventPayload): void;
|
|
23
|
-
reportStop(): void;
|
|
24
|
-
reportError(error: TErrorEventPayload): void;
|
|
25
|
-
reportMetadata(payload: TMetadataEventPayload): void;
|
|
26
|
-
reportWarning(payload: TErrorEventPayload): void;
|
|
27
|
-
private playbackState;
|
|
28
|
-
deinit(): void;
|
|
29
|
-
destroy(): void;
|
|
30
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { TPlayerAnalyticsEvent } from "@eyevinn/player-analytics-specification";
|
|
2
|
-
export interface IReporterOptions {
|
|
3
|
-
eventsinkUrl: string;
|
|
4
|
-
heartbeatInterval?: number;
|
|
5
|
-
sessionId?: string;
|
|
6
|
-
debug?: boolean;
|
|
7
|
-
}
|
|
8
|
-
export interface IReporterPostOptions {
|
|
9
|
-
event: string;
|
|
10
|
-
timestamp: number;
|
|
11
|
-
playhead: number;
|
|
12
|
-
duration: number;
|
|
13
|
-
}
|
|
14
|
-
export declare class Reporter {
|
|
15
|
-
private debug;
|
|
16
|
-
private eventsinkUrl;
|
|
17
|
-
private sessionId?;
|
|
18
|
-
private heartbeatInterval?;
|
|
19
|
-
private isInitiated;
|
|
20
|
-
constructor(options: IReporterOptions);
|
|
21
|
-
init(sessionId?: string): Promise<Record<string, any>>;
|
|
22
|
-
send(data: TPlayerAnalyticsEvent): void;
|
|
23
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export declare enum EPASEvents {
|
|
2
|
-
loading = "loading",
|
|
3
|
-
loaded = "loaded",
|
|
4
|
-
play = "playing",
|
|
5
|
-
resume = "playing",
|
|
6
|
-
pause = "paused",
|
|
7
|
-
seeking = "seeking",
|
|
8
|
-
seeked = "seeked",
|
|
9
|
-
buffering = "buffering",
|
|
10
|
-
buffered = "buffered",
|
|
11
|
-
ended = "stopped",
|
|
12
|
-
error = "error",
|
|
13
|
-
warning = "warning",
|
|
14
|
-
bitratechanged = "bitrate_changed",
|
|
15
|
-
heartbeat = "heartbeat",
|
|
16
|
-
metadata = "metadata"
|
|
17
|
-
}
|
|
18
|
-
export declare const HEARTBEAT_INTERVAL = 30000;
|
|
19
|
-
export declare const EPAS_VERSION: string;
|