@npo/player 1.10.0 → 1.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/lib/js/playeractions/handlers/processplayerconfig.d.ts +0 -8
  2. package/lib/js/tracking/handlers/eventbinding.d.ts +0 -7
  3. package/lib/js/tracking/handlers/eventlogging.d.ts +0 -9
  4. package/lib/js/tracking/handlers/playertrackerinit.d.ts +0 -9
  5. package/lib/js/tracking/handlers/playertrackerstart.d.ts +0 -7
  6. package/lib/js/ui/components/ctabar.d.ts +1 -1
  7. package/lib/js/utilities/utilities.d.ts +0 -50
  8. package/lib/npoplayer.js +2 -501
  9. package/lib/npoplayer.js.map +1 -1
  10. package/lib/package.json +2 -2
  11. package/package.json +2 -2
  12. package/src/scss/npoplayer.css +2 -2
  13. package/src/scss/variants/_player-base.scss +17 -0
  14. package/src/scss/variants/_player-small.scss +20 -1
  15. package/lib/js/ads/ster.js +0 -157
  16. package/lib/js/ads/ster.js.map +0 -1
  17. package/lib/js/ads/ster.test.js +0 -91
  18. package/lib/js/ads/ster.test.js.map +0 -1
  19. package/lib/js/api/getstreamobject.js +0 -18
  20. package/lib/js/api/getstreamobject.js.map +0 -1
  21. package/lib/js/cdnproviders.js +0 -13
  22. package/lib/js/cdnproviders.js.map +0 -1
  23. package/lib/js/checks/safari.js +0 -10
  24. package/lib/js/checks/safari.js.map +0 -1
  25. package/lib/js/checks/safari.test.js +0 -21
  26. package/lib/js/checks/safari.test.js.map +0 -1
  27. package/lib/js/drm/verifydrm.js +0 -38
  28. package/lib/js/drm/verifydrm.js.map +0 -1
  29. package/lib/js/drm/verifydrm.test.js +0 -18
  30. package/lib/js/drm/verifydrm.test.js.map +0 -1
  31. package/lib/js/fragments/setfragments.js +0 -67
  32. package/lib/js/fragments/setfragments.js.map +0 -1
  33. package/lib/js/playeractions/customerrors.test.js +0 -52
  34. package/lib/js/playeractions/customerrors.test.js.map +0 -1
  35. package/lib/js/playeractions/handlers/customerrors.js +0 -154
  36. package/lib/js/playeractions/handlers/customerrors.js.map +0 -1
  37. package/lib/js/playeractions/handlers/error.js +0 -23
  38. package/lib/js/playeractions/handlers/error.js.map +0 -1
  39. package/lib/js/playeractions/handlers/error.test.js +0 -45
  40. package/lib/js/playeractions/handlers/error.test.js.map +0 -1
  41. package/lib/js/playeractions/handlers/handleoffsets.js +0 -71
  42. package/lib/js/playeractions/handlers/handleoffsets.js.map +0 -1
  43. package/lib/js/playeractions/handlers/handleoffsets.test.js +0 -50
  44. package/lib/js/playeractions/handlers/handleoffsets.test.js.map +0 -1
  45. package/lib/js/playeractions/handlers/processplayerconfig.js +0 -40
  46. package/lib/js/playeractions/handlers/processplayerconfig.js.map +0 -1
  47. package/lib/js/playeractions/handlers/resolvekeypress.js +0 -55
  48. package/lib/js/playeractions/handlers/resolvekeypress.js.map +0 -1
  49. package/lib/js/playeractions/playeractions.js +0 -5
  50. package/lib/js/playeractions/playeractions.js.map +0 -1
  51. package/lib/js/tracking/handlers/eventbinding.js +0 -86
  52. package/lib/js/tracking/handlers/eventbinding.js.map +0 -1
  53. package/lib/js/tracking/handlers/eventlogging.js +0 -42
  54. package/lib/js/tracking/handlers/eventlogging.js.map +0 -1
  55. package/lib/js/tracking/handlers/playertrackerinit.js +0 -29
  56. package/lib/js/tracking/handlers/playertrackerinit.js.map +0 -1
  57. package/lib/js/tracking/handlers/playertrackerstart.js +0 -29
  58. package/lib/js/tracking/handlers/playertrackerstart.js.map +0 -1
  59. package/lib/js/tracking/playertracker.js +0 -10
  60. package/lib/js/tracking/playertracker.js.map +0 -1
  61. package/lib/js/ui/components/adbutton.js +0 -21
  62. package/lib/js/ui/components/adbutton.js.map +0 -1
  63. package/lib/js/ui/components/adlabel.js +0 -17
  64. package/lib/js/ui/components/adlabel.js.map +0 -1
  65. package/lib/js/ui/components/buttons.js +0 -89
  66. package/lib/js/ui/components/buttons.js.map +0 -1
  67. package/lib/js/ui/components/controlbar.js +0 -58
  68. package/lib/js/ui/components/controlbar.js.map +0 -1
  69. package/lib/js/ui/components/ctabar.js +0 -41
  70. package/lib/js/ui/components/ctabar.js.map +0 -1
  71. package/lib/js/ui/components/nativemobile/addFragments.js +0 -8
  72. package/lib/js/ui/components/nativemobile/addFragments.js.map +0 -1
  73. package/lib/js/ui/components/nativemobile/buttons.js +0 -43
  74. package/lib/js/ui/components/nativemobile/buttons.js.map +0 -1
  75. package/lib/js/ui/components/nativemobile/controlbar.js +0 -52
  76. package/lib/js/ui/components/nativemobile/controlbar.js.map +0 -1
  77. package/lib/js/ui/components/nativemobile/ctabar.js +0 -12
  78. package/lib/js/ui/components/nativemobile/ctabar.js.map +0 -1
  79. package/lib/js/ui/components/nativemobile/playnext.js +0 -16
  80. package/lib/js/ui/components/nativemobile/playnext.js.map +0 -1
  81. package/lib/js/ui/components/nativemobile/titlebar.js +0 -8
  82. package/lib/js/ui/components/nativemobile/titlebar.js.map +0 -1
  83. package/lib/js/ui/components/nativemobile/topbar.js +0 -21
  84. package/lib/js/ui/components/nativemobile/topbar.js.map +0 -1
  85. package/lib/js/ui/components/playnext.js +0 -11
  86. package/lib/js/ui/components/playnext.js.map +0 -1
  87. package/lib/js/ui/components/settingspanel.js +0 -130
  88. package/lib/js/ui/components/settingspanel.js.map +0 -1
  89. package/lib/js/ui/components/shared/playnextscreen.js +0 -18
  90. package/lib/js/ui/components/shared/playnextscreen.js.map +0 -1
  91. package/lib/js/ui/components/titlebar.js +0 -9
  92. package/lib/js/ui/components/titlebar.js.map +0 -1
  93. package/lib/js/ui/components/topbar.js +0 -22
  94. package/lib/js/ui/components/topbar.js.map +0 -1
  95. package/lib/js/ui/handlers/listboxhandlers.js +0 -41
  96. package/lib/js/ui/handlers/listboxhandlers.js.map +0 -1
  97. package/lib/js/ui/handlers/nicamhandler.js +0 -32
  98. package/lib/js/ui/handlers/nicamhandler.js.map +0 -1
  99. package/lib/js/ui/handlers/nicamhandler.test.js +0 -34
  100. package/lib/js/ui/handlers/nicamhandler.test.js.map +0 -1
  101. package/lib/js/ui/handlers/playnexthandlers.js +0 -2
  102. package/lib/js/ui/handlers/playnexthandlers.js.map +0 -1
  103. package/lib/js/ui/handlers/timecontrolhandlers.js +0 -23
  104. package/lib/js/ui/handlers/timecontrolhandlers.js.map +0 -1
  105. package/lib/js/ui/nativemobileuicontainer.js +0 -48
  106. package/lib/js/ui/nativemobileuicontainer.js.map +0 -1
  107. package/lib/js/ui/nativemobileuifactory.js +0 -43
  108. package/lib/js/ui/nativemobileuifactory.js.map +0 -1
  109. package/lib/js/ui/uicontainer.js +0 -58
  110. package/lib/js/ui/uicontainer.js.map +0 -1
  111. package/lib/js/utilities/localizationconfig.js +0 -8
  112. package/lib/js/utilities/localizationconfig.js.map +0 -1
  113. package/lib/js/utilities/printversion.js +0 -28
  114. package/lib/js/utilities/printversion.js.map +0 -1
  115. package/lib/js/utilities/utilities.js +0 -105
  116. package/lib/js/utilities/utilities.js.map +0 -1
  117. package/lib/lang/nl.json +0 -72
  118. package/lib/npoplayer.test.js +0 -12
  119. package/lib/npoplayer.test.js.map +0 -1
  120. package/lib/src/js/ads/ster.d.ts +0 -4
  121. package/lib/src/js/ads/ster.test.d.ts +0 -1
  122. package/lib/src/js/api/getstreamobject.d.ts +0 -3
  123. package/lib/src/js/cdnproviders.d.ts +0 -1
  124. package/lib/src/js/checks/safari.d.ts +0 -1
  125. package/lib/src/js/checks/safari.test.d.ts +0 -1
  126. package/lib/src/js/drm/verifydrm.d.ts +0 -4
  127. package/lib/src/js/drm/verifydrm.test.d.ts +0 -1
  128. package/lib/src/js/fragments/setfragments.d.ts +0 -4
  129. package/lib/src/js/playeractions/customerrors.test.d.ts +0 -1
  130. package/lib/src/js/playeractions/handlers/customerrors.d.ts +0 -50
  131. package/lib/src/js/playeractions/handlers/error.d.ts +0 -3
  132. package/lib/src/js/playeractions/handlers/error.test.d.ts +0 -1
  133. package/lib/src/js/playeractions/handlers/handleoffsets.d.ts +0 -6
  134. package/lib/src/js/playeractions/handlers/handleoffsets.test.d.ts +0 -1
  135. package/lib/src/js/playeractions/handlers/processplayerconfig.d.ts +0 -11
  136. package/lib/src/js/playeractions/handlers/resolvekeypress.d.ts +0 -3
  137. package/lib/src/js/playeractions/playeractions.d.ts +0 -4
  138. package/lib/src/js/tracking/handlers/eventbinding.d.ts +0 -10
  139. package/lib/src/js/tracking/handlers/eventlogging.d.ts +0 -11
  140. package/lib/src/js/tracking/handlers/playertrackerinit.d.ts +0 -13
  141. package/lib/src/js/tracking/handlers/playertrackerstart.d.ts +0 -8
  142. package/lib/src/js/tracking/playertracker.d.ts +0 -4
  143. package/lib/src/js/ui/components/adbutton.d.ts +0 -7
  144. package/lib/src/js/ui/components/adlabel.d.ts +0 -7
  145. package/lib/src/js/ui/components/buttons.d.ts +0 -30
  146. package/lib/src/js/ui/components/controlbar.d.ts +0 -3
  147. package/lib/src/js/ui/components/ctabar.d.ts +0 -9
  148. package/lib/src/js/ui/components/nativemobile/addFragments.d.ts +0 -1
  149. package/lib/src/js/ui/components/nativemobile/buttons.d.ts +0 -13
  150. package/lib/src/js/ui/components/nativemobile/controlbar.d.ts +0 -3
  151. package/lib/src/js/ui/components/nativemobile/ctabar.d.ts +0 -10
  152. package/lib/src/js/ui/components/nativemobile/playnext.d.ts +0 -10
  153. package/lib/src/js/ui/components/nativemobile/titlebar.d.ts +0 -2
  154. package/lib/src/js/ui/components/nativemobile/topbar.d.ts +0 -3
  155. package/lib/src/js/ui/components/playnext.d.ts +0 -11
  156. package/lib/src/js/ui/components/settingspanel.d.ts +0 -4
  157. package/lib/src/js/ui/components/shared/playnextscreen.d.ts +0 -2
  158. package/lib/src/js/ui/components/titlebar.d.ts +0 -3
  159. package/lib/src/js/ui/components/topbar.d.ts +0 -2
  160. package/lib/src/js/ui/handlers/listboxhandlers.d.ts +0 -5
  161. package/lib/src/js/ui/handlers/nicamhandler.d.ts +0 -2
  162. package/lib/src/js/ui/handlers/nicamhandler.test.d.ts +0 -1
  163. package/lib/src/js/ui/handlers/playnexthandlers.d.ts +0 -0
  164. package/lib/src/js/ui/handlers/timecontrolhandlers.d.ts +0 -3
  165. package/lib/src/js/ui/nativemobileuicontainer.d.ts +0 -6
  166. package/lib/src/js/ui/nativemobileuifactory.d.ts +0 -3
  167. package/lib/src/js/ui/uicontainer.d.ts +0 -3
  168. package/lib/src/js/utilities/localizationconfig.d.ts +0 -6
  169. package/lib/src/js/utilities/printversion.d.ts +0 -1
  170. package/lib/src/js/utilities/utilities.d.ts +0 -60
  171. package/lib/src/npoplayer.d.ts +0 -45
  172. package/lib/src/npoplayer.test.d.ts +0 -1
  173. package/lib/src/types/classes.d.ts +0 -4
  174. package/lib/src/types/interfaces.d.ts +0 -106
  175. package/lib/types/classes.js +0 -4
  176. package/lib/types/classes.js.map +0 -1
  177. package/lib/types/interfaces.js +0 -6
  178. package/lib/types/interfaces.js.map +0 -1
@@ -28,7 +28,6 @@
28
28
  background: none;
29
29
  padding: 0 10px 10px;
30
30
  height: 100%;
31
- outline: 1px solid green;
32
31
  display: flex;
33
32
  align-items: flex-end;
34
33
  pointer-events: none;
@@ -70,4 +69,24 @@
70
69
  .bmpui-controlbar-textbuttons {
71
70
  padding-bottom: 40px;
72
71
  }
72
+
73
+ &.bmpui-player-state-prepared {
74
+ .bmpui-ui-playbacktoggle-overlay {
75
+ display: unset;
76
+ }
77
+
78
+ &.bmpui-controls-shown {
79
+ .bmpui-ui-controlbar.bmpui-ui-controlbar-bottom {
80
+ display: none;
81
+ }
82
+ }
83
+ }
84
+
85
+ &.bmpui-player-state-paused {
86
+ &.bmpui-controls-hidden {
87
+ .bmpui-ui-playbacktoggle-overlay {
88
+ display: unset;
89
+ }
90
+ }
91
+ }
73
92
  }
@@ -1,157 +0,0 @@
1
- import { AdTagType, PlayerEvent } from "bitmovin-player";
2
- /*
3
- * @function handlePreRolls
4
- * @description Handles ster preroll ads for the player
5
- * @param {PlayerAPI} playerapi - The player api
6
- * @param {StreamObject} streamObject - The stream object
7
- * @param {NpoPlayer} npoplayer - The npoplayer
8
- * @returns {void}
9
- */
10
- export async function handlePreRolls(playerapi, streamObject, npoplayer) {
11
- if (streamObject.metadata.hasPreroll == "false" || streamObject.assets.preroll == null)
12
- return;
13
- let prerollUrl = streamObject.assets.preroll;
14
- let adIndex = 0;
15
- let totalAds = 0;
16
- let currentClickListener = null;
17
- let adUiSet = false;
18
- /*
19
- * @function handleSourceLoaded
20
- * @description If we have a preroll, schedule it to play on source loaded
21
- * @returns {void}
22
- */
23
- async function handleSourceLoaded() {
24
- const advertConfig = {
25
- tag: {
26
- url: prerollUrl,
27
- type: AdTagType.VAST
28
- },
29
- id: 'Ad',
30
- position: 'pre',
31
- };
32
- await playerapi.ads.schedule(advertConfig);
33
- }
34
- playerapi.on(PlayerEvent.SourceLoaded, handleSourceLoaded);
35
- async function handlePlay() {
36
- attemptSetAdUi();
37
- }
38
- playerapi.on(PlayerEvent.Play, handlePlay);
39
- /*
40
- * @function setAdUi
41
- * @description Sets the ad ui and initializes the ad button and label.
42
- * @returns {boolean}
43
- * @returns {void}
44
- */
45
- function setAdUi() {
46
- let activeAdBreak = playerapi.ads.getActiveAdBreak();
47
- if (!activeAdBreak || !activeAdBreak.ads)
48
- return false;
49
- npoplayer.uiManager?.release();
50
- npoplayer.createUIManager(playerapi, 'ad');
51
- adUiSet = true;
52
- let currentAd = activeAdBreak.ads[0];
53
- adIndex = 1;
54
- totalAds = activeAdBreak.ads.length;
55
- currentClickListener = () => {
56
- window.open(currentAd.clickThroughUrl, '_blank');
57
- playerapi.pause();
58
- };
59
- npoplayer.uiComponents.adbutton?.show();
60
- npoplayer.uiComponents.adbutton?.onClick.subscribe(currentClickListener);
61
- npoplayer.uiComponents.adlabel?.setText(`Advertentie 1 van ${activeAdBreak.ads.length}`);
62
- return true;
63
- }
64
- /*
65
- * @function attemptSetAdUi
66
- * @description Attempts to set the ad ui. If it fails, it will try again 10 times.
67
- * This is because if we set the ad ui after the adBreakStarted event, the ui will not function properly.
68
- * We have to check if the UI is set because if the user has an adblocker, the scheduled ad will not resolve
69
- * causing the UI to be set on regular content otherwise.
70
- * @returns {void}
71
- */
72
- function attemptSetAdUi(attemptsLeft = 10) {
73
- if (attemptsLeft <= 0)
74
- return;
75
- const isUiSet = setAdUi();
76
- if (!isUiSet) {
77
- setTimeout(() => {
78
- attemptSetAdUi(attemptsLeft - 1);
79
- }, 200);
80
- }
81
- }
82
- /*
83
- * @function handleAdBreakStarted
84
- * @description sets adBreakActive to true, in the case that the ad UI was not set, set it.
85
- * @returns {void}
86
- */
87
- function handleAdBreakStarted() {
88
- let activeAdBreak = playerapi.ads.getActiveAdBreak();
89
- if (!activeAdBreak || !activeAdBreak.ads) {
90
- console.error('No active ad break data found');
91
- return;
92
- }
93
- if (!adUiSet)
94
- setAdUi();
95
- npoplayer.adBreakActive = true;
96
- }
97
- playerapi.on(PlayerEvent.AdBreakStarted, handleAdBreakStarted);
98
- /*
99
- * @function handleAdFinished
100
- * @description When the ad finishes, check if there are more ads in the adBreak.
101
- * If so, set the click listener for the ad button and set the label text.
102
- * If not, handle the adBreakFinished event.
103
- * @returns {void}
104
- */
105
- function handleAdFinished() {
106
- let activeAdBreak = playerapi.ads.getActiveAdBreak();
107
- if (!activeAdBreak || !activeAdBreak.ads) {
108
- console.error('No active ad break data found');
109
- return;
110
- }
111
- if (adIndex >= totalAds) {
112
- handleAdBreakFinished();
113
- return;
114
- }
115
- let nextAd = activeAdBreak.ads[adIndex];
116
- adIndex++;
117
- if (currentClickListener) {
118
- npoplayer.uiComponents.adbutton?.onClick.unsubscribe(currentClickListener);
119
- }
120
- currentClickListener = () => {
121
- window.open(nextAd.clickThroughUrl, '_blank');
122
- playerapi.pause();
123
- };
124
- npoplayer.uiComponents.adbutton?.onClick.subscribe(currentClickListener);
125
- npoplayer.uiComponents.adlabel?.setText(`Advertentie ${adIndex} van ${activeAdBreak.ads.length}`);
126
- }
127
- playerapi.on(PlayerEvent.AdFinished, handleAdFinished);
128
- /*
129
- * @function handleAdBreakFinished
130
- * @description When the adBreak finishes, hide the ad button and label.
131
- * Also release the ad uiManager, create a new default uiManager and remove the eventlisteners.
132
- * @returns {void}
133
- */
134
- function handleAdBreakFinished() {
135
- npoplayer.adBreakActive = false;
136
- npoplayer.uiComponents.adbutton?.hide();
137
- npoplayer.uiComponents.adlabel?.hide();
138
- npoplayer.uiManager?.release();
139
- npoplayer.createUIManager(playerapi, 'default');
140
- adUiSet = false;
141
- removeListeners();
142
- }
143
- playerapi.on(PlayerEvent.AdBreakFinished, handleAdBreakFinished);
144
- /*
145
- * @function removeListeners
146
- * @description Removes the eventlisteners set in this file.
147
- * @returns {void}
148
- */
149
- function removeListeners() {
150
- playerapi.off(PlayerEvent.SourceLoaded, handleSourceLoaded);
151
- playerapi.off(PlayerEvent.Play, handlePlay);
152
- playerapi.off(PlayerEvent.AdBreakStarted, handleAdBreakStarted);
153
- playerapi.off(PlayerEvent.AdFinished, handleAdFinished);
154
- playerapi.off(PlayerEvent.AdBreakFinished, handleAdBreakFinished);
155
- }
156
- }
157
- //# sourceMappingURL=ster.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ster.js","sourceRoot":"","sources":["../../../../src/js/ads/ster.ts"],"names":[],"mappings":"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"}
@@ -1,91 +0,0 @@
1
- import { handlePreRolls } from './ster';
2
- import { PlayerEvent } from "bitmovin-player";
3
- jest.mock("bitmovin-player");
4
- jest.mock("../../npoplayer");
5
- describe("handlePreRolls", () => {
6
- let mockPlayerAPI;
7
- let mockNpoPlayer;
8
- beforeEach(() => {
9
- mockPlayerAPI = {
10
- ads: {
11
- schedule: jest.fn().mockResolvedValue(undefined),
12
- getActiveAdBreak: jest.fn(),
13
- },
14
- on: jest.fn(),
15
- off: jest.fn(),
16
- };
17
- mockNpoPlayer = {
18
- uiManager: {
19
- release: jest.fn(),
20
- },
21
- createUIManager: jest.fn(),
22
- uiComponents: {
23
- adbutton: {
24
- show: jest.fn(),
25
- hide: jest.fn(),
26
- onClick: {
27
- subscribe: jest.fn(),
28
- unsubscribe: jest.fn(),
29
- },
30
- },
31
- adlabel: {
32
- setText: jest.fn(),
33
- hide: jest.fn(),
34
- },
35
- },
36
- adBreakActive: false,
37
- };
38
- });
39
- it("should not schedule ads when hasPreroll is false", async () => {
40
- const streamObject = {
41
- metadata: {
42
- hasPreroll: "false"
43
- },
44
- assets: {
45
- preroll: "sample_url"
46
- }
47
- };
48
- await handlePreRolls(mockPlayerAPI, streamObject, mockNpoPlayer);
49
- expect(mockPlayerAPI.ads.schedule).not.toHaveBeenCalled();
50
- });
51
- it("should schedule ads on SourceLoaded when hasPreroll is true", async () => {
52
- const streamObject = {
53
- metadata: {
54
- hasPreroll: "true"
55
- },
56
- assets: {
57
- preroll: "sample_url"
58
- }
59
- };
60
- await handlePreRolls(mockPlayerAPI, streamObject, mockNpoPlayer);
61
- mockPlayerAPI.on.mock.calls.forEach(call => {
62
- if (call[0] === PlayerEvent.SourceLoaded) {
63
- const sourceLoadedCallback = call[1];
64
- const mockEvent = {};
65
- sourceLoadedCallback(mockEvent);
66
- }
67
- });
68
- expect(mockPlayerAPI.ads.schedule).toHaveBeenCalledWith({
69
- tag: {
70
- url: "sample_url",
71
- type: "vast" // based on the AdTagType enum
72
- },
73
- id: 'Ad',
74
- position: 'pre',
75
- });
76
- });
77
- it("should not schedule ads if preroll URL is missing", async () => {
78
- const streamObject = {
79
- metadata: {
80
- hasPreroll: "true"
81
- },
82
- assets: {}
83
- };
84
- await handlePreRolls(mockPlayerAPI, streamObject, mockNpoPlayer);
85
- expect(mockPlayerAPI.ads.schedule).not.toHaveBeenCalled();
86
- });
87
- afterEach(() => {
88
- jest.clearAllMocks();
89
- });
90
- });
91
- //# sourceMappingURL=ster.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ster.test.js","sourceRoot":"","sources":["../../../../src/js/ads/ster.test.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import { noTrailingSlash } from '../utilities/utilities';
2
- export async function getStreamObject(npoplayer, payload) {
3
- const response = await fetch(noTrailingSlash(payload.baseURL) + '/stream-link', {
4
- method: 'post',
5
- headers: {
6
- Accept: '*/*',
7
- Authorization: payload.jwt,
8
- 'Content-Type': 'application/json'
9
- },
10
- body: JSON.stringify(payload.data)
11
- });
12
- const streamApiResponse = await response.json();
13
- if (!response.ok) {
14
- npoplayer.doError(`Het is niet gelukt de stream op te halen: \n ${streamApiResponse.body}`, streamApiResponse.status);
15
- }
16
- return streamApiResponse;
17
- }
18
- //# sourceMappingURL=getstreamobject.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getstreamobject.js","sourceRoot":"","sources":["../../../../src/js/api/getstreamobject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAIxD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAE,SAAoB,EAAE,OAAmB;IAC5E,MAAM,QAAQ,GAAG,MAAM,KAAK,CACxB,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,cAAc,EACjD;QACI,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACL,MAAM,EAAE,KAAK;YACb,aAAa,EAAE,OAAO,CAAC,GAAG;YAC1B,cAAc,EAAE,kBAAkB;SACrC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;KACrC,CACJ,CAAA;IAED,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAE/C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;QACd,SAAS,CAAC,OAAO,CAAC,gDAAgD,iBAAiB,CAAC,IAAI,EAAE,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAA;KACxH;IAED,OAAO,iBAAiB,CAAA;AAC5B,CAAC"}
@@ -1,13 +0,0 @@
1
- export const npoCdnProviders = new Map();
2
- npoCdnProviders.set('nep.global.ssl.fastly.net', 'NEP');
3
- npoCdnProviders.set('cdn.streamgate.nl', 'NEP');
4
- npoCdnProviders.set('npo-fsly.cdn.streamgate.io', 'FASTLY');
5
- npoCdnProviders.set('cdn.eurovisioncdn.net', 'EUROVISION');
6
- npoCdnProviders.set('npo.prd.cdn.bcms.kpn.com', 'KPN');
7
- npoCdnProviders.set('cdn.bcms.kpn.com', 'KPN');
8
- npoCdnProviders.set('Akamai', 'AKEMAI');
9
- npoCdnProviders.set('icecast.omroep.nl', 'NPO');
10
- npoCdnProviders.set('content.omroep.nl', 'NPO');
11
- npoCdnProviders.set('podcast.npo.nl', 'NPO');
12
- npoCdnProviders.set('video.omroep.nl', 'NPO');
13
- //# sourceMappingURL=cdnproviders.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cdnproviders.js","sourceRoot":"","sources":["../../../src/js/cdnproviders.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE,CAAA;AACxC,eAAe,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAA;AACvD,eAAe,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAA;AAC/C,eAAe,CAAC,GAAG,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAA;AAC3D,eAAe,CAAC,GAAG,CAAC,uBAAuB,EAAE,YAAY,CAAC,CAAA;AAC1D,eAAe,CAAC,GAAG,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAA;AACtD,eAAe,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAA;AAC9C,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AACvC,eAAe,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAA;AAC/C,eAAe,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAA;AAC/C,eAAe,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;AAC5C,eAAe,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAA"}
@@ -1,10 +0,0 @@
1
- export function isSafari(isFairPlayDrmSupported) {
2
- const isSafariUserAgent = navigator.userAgent.includes('Safari') &&
3
- !navigator.userAgent.includes('Chrome') &&
4
- !navigator.userAgent.includes('IEMobile') &&
5
- !navigator.userAgent.includes('Edge') &&
6
- !navigator.userAgent.includes('Chromium') &&
7
- !navigator.userAgent.includes('Android');
8
- return isSafariUserAgent || isFairPlayDrmSupported;
9
- }
10
- //# sourceMappingURL=safari.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"safari.js","sourceRoot":"","sources":["../../../../src/js/checks/safari.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ,CAAE,sBAA+B;IACrD,MAAM,iBAAiB,GACf,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACtC,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACvC,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;QACzC,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrC,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;QACzC,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IAEhD,OAAO,iBAAiB,IAAI,sBAAsB,CAAA;AACtD,CAAC"}
@@ -1,21 +0,0 @@
1
- import { isSafari } from "./safari";
2
- describe("Test Safari check", () => {
3
- it("should return true for Safari", () => {
4
- jest.spyOn(global.navigator, "userAgent", "get").mockReturnValue("Safari");
5
- const isFairPlayDrmSupported = false;
6
- expect(isSafari(isFairPlayDrmSupported)).toBeTruthy();
7
- });
8
- it("should return true for isFairPlayDrmSupported", () => {
9
- jest.spyOn(global.navigator, "userAgent", "get").mockReturnValue("Chrome");
10
- const isFairPlayDrmSupported = true;
11
- expect(isSafari(isFairPlayDrmSupported)).toBeTruthy();
12
- });
13
- it("should return false for any non-Safari userAgents", () => {
14
- jest
15
- .spyOn(global.navigator, "userAgent", "get")
16
- .mockReturnValue("Safari Chrome IEMobile Edge Chromium Android");
17
- const isFairPlayDrmSupported = false;
18
- expect(isSafari(isFairPlayDrmSupported)).toBeFalsy();
19
- });
20
- });
21
- //# sourceMappingURL=safari.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"safari.test.js","sourceRoot":"","sources":["../../../../src/js/checks/safari.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAE3E,MAAM,sBAAsB,GAAG,KAAK,CAAC;QAErC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAE3E,MAAM,sBAAsB,GAAG,IAAI,CAAC;QAEpC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QACzD,IAAI;aACC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC;aAC3C,eAAe,CAAC,8CAA8C,CAAC,CAAC;QAErE,MAAM,sBAAsB,GAAG,KAAK,CAAC;QAErC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,38 +0,0 @@
1
- /*
2
- * This file contains the DRM verification logic.
3
- * It checks if the DRM token is expired and if so, it will request a new token.
4
- * If there is no DRM token present, the function will skip the verification flow entirely.
5
- * If the token is still valid, it will load the stream as normal.
6
- * @function verifyDRM
7
- * @param {NpoPlayer} npoplayer - The NpoPlayer instance
8
- * @param {PlayerAPI} player - The Bitmovin player instance
9
- * @param {ApiPayload} payload - The payload object
10
- * @returns {void}
11
- */
12
- import { jwtToBase64, base64ToObject } from '../utilities/utilities';
13
- import { getStreamObject } from '../api/getstreamobject';
14
- export async function verifyDRM(npoplayer, player, payload) {
15
- if (npoplayer.streamObject.stream.drmToken != null) {
16
- const drmBase64 = jwtToBase64(npoplayer.streamObject.stream.drmToken);
17
- const drmJsonTimestamp = base64ToObject(drmBase64).iat;
18
- const currentTime = (Date.now() / 1000) | 0;
19
- if (drmJsonTimestamp >= currentTime) {
20
- void player?.load(npoplayer.sourceConfig);
21
- }
22
- else {
23
- // Token is expired, entering fallback flow
24
- console.error('Er ging iets mis. Item wordt herladen.');
25
- const backupStreamObject = await getStreamObject(npoplayer, payload);
26
- const newDrmToken = backupStreamObject.stream.drmToken;
27
- // Cloning the streamObject and parsing it so we can manipulate the JSON
28
- const clonedStreamObject = JSON.parse(JSON.stringify(npoplayer.streamObject));
29
- clonedStreamObject.stream.drmToken = newDrmToken;
30
- npoplayer.streamObject = clonedStreamObject;
31
- void player?.load(npoplayer.sourceConfig);
32
- }
33
- }
34
- else {
35
- void player?.load(npoplayer.sourceConfig);
36
- }
37
- }
38
- //# sourceMappingURL=verifydrm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verifydrm.js","sourceRoot":"","sources":["../../../../src/js/drm/verifydrm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;EAUE;AACF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAKxD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAE,SAAoB,EAAE,MAAiB,EAAE,OAAmB;IACzF,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE;QAChD,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACrE,MAAM,gBAAgB,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,GAAG,CAAA;QACtD,MAAM,WAAW,GAAW,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QAEnD,IAAI,gBAAgB,IAAI,WAAW,EAAE;YACjC,KAAK,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;SAC5C;aAAM;YACH,2CAA2C;YAC3C,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAA;YAEvD,MAAM,kBAAkB,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YACpE,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAA;YAEtD,wEAAwE;YACxE,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CACjC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,CACzC,CAAA;YACD,kBAAkB,CAAC,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAA;YAEhD,SAAS,CAAC,YAAY,GAAG,kBAAkB,CAAA;YAC3C,KAAK,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;SAC5C;KACJ;SAAM;QACH,KAAK,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;KAC5C;AACL,CAAC"}
@@ -1,18 +0,0 @@
1
- import { verifyDRM } from "./verifydrm";
2
- const load = jest.fn();
3
- const npoplayer = {
4
- streamObject: { stream: { drmToken: undefined } },
5
- };
6
- const player = { load };
7
- const payload = {
8
- baseURL: "url",
9
- jwt: "jwt",
10
- data: { data: "data" },
11
- };
12
- describe("Test DRM verification", () => {
13
- it("should call player.load when the drmToken is null", async () => {
14
- await verifyDRM(npoplayer, player, payload);
15
- expect(load).toBeCalled();
16
- });
17
- });
18
- //# sourceMappingURL=verifydrm.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verifydrm.test.js","sourceRoot":"","sources":["../../../../src/js/drm/verifydrm.test.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAEvB,MAAM,SAAS,GAAG;IACd,YAAY,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;CACvC,CAAC;AAEf,MAAM,MAAM,GAAG,EAAE,IAAI,EAA0B,CAAC;AAEhD,MAAM,OAAO,GAAe;IACxB,OAAO,EAAE,KAAK;IACd,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;CACzB,CAAC;AAEF,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,67 +0,0 @@
1
- import { PlayerEvent } from 'bitmovin-player';
2
- export async function setFragments(player, uiManager, fragments) {
3
- const fragment = fragments.sections[0];
4
- const playFragmentFromStart = () => {
5
- player?.seek(fragment.start);
6
- if (player?.isPaused())
7
- void player?.play();
8
- };
9
- const addMarkers = () => {
10
- const timelineMarkers = [
11
- {
12
- time: 0,
13
- duration: fragment.start,
14
- title: 'Niet beschikbaar',
15
- cssClasses: ['seekbar-marker-unplayable']
16
- },
17
- {
18
- time: fragment.start,
19
- duration: fragment.end - fragment.start,
20
- title: fragment.title,
21
- cssClasses: ['seekbar-marker-interval']
22
- },
23
- {
24
- time: fragment.end,
25
- duration: 10000000,
26
- title: 'Niet beschikbaar',
27
- cssClasses: ['seekbar-marker-unplayable']
28
- },
29
- ];
30
- timelineMarkers.forEach(function (marker) {
31
- uiManager?.addTimelineMarker(marker);
32
- });
33
- playFragmentFromStart();
34
- };
35
- const removeMarkers = () => {
36
- uiManager?.getTimelineMarkers().forEach(marker => {
37
- uiManager?.removeTimelineMarker(marker);
38
- });
39
- };
40
- const checkFunction = (e) => {
41
- if (fragment == null)
42
- return;
43
- if (e.time > fragment.end) {
44
- player?.seek(Math.max(fragment.start, fragment.end));
45
- player?.pause();
46
- }
47
- else if (e.time < fragment.start) {
48
- player?.seek(fragment.start);
49
- }
50
- };
51
- const seekFunction = (e) => {
52
- if (fragment == null)
53
- return;
54
- // web ui and js bridge have different types
55
- const seekTarget = e.seekTarget ? e.seekTarget : e.to.time;
56
- if (seekTarget > fragment.end || seekTarget < fragment.start) {
57
- player?.seek(Math.max(fragment.start, Math.min(fragment.end, seekTarget)));
58
- }
59
- };
60
- player?.off(PlayerEvent.TimeChanged, checkFunction);
61
- player?.off(PlayerEvent.Seek, seekFunction);
62
- player?.on(PlayerEvent.TimeChanged, checkFunction);
63
- player?.on(PlayerEvent.Seek, seekFunction);
64
- removeMarkers();
65
- addMarkers();
66
- }
67
- //# sourceMappingURL=setfragments.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setfragments.js","sourceRoot":"","sources":["../../../../src/js/fragments/setfragments.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- import { customSpecificErrorMessageOverlayConfig } from "./handlers/customerrors";
2
- describe("Test custom error messages", () => {
3
- it("should return a 1000 error message", () => {
4
- expect(customSpecificErrorMessageOverlayConfig[1000]).toBe("Oeps, er gaat iets mis");
5
- });
6
- it("should return a 1001 error message", () => {
7
- expect(customSpecificErrorMessageOverlayConfig[1001]).toBe("Oeps, er gaat iets mis");
8
- });
9
- it("should return a 1101 error message", () => {
10
- expect(customSpecificErrorMessageOverlayConfig[1101]).toBe("De player is niet aangemaakt");
11
- });
12
- it("should return a 1102 error message", () => {
13
- expect(customSpecificErrorMessageOverlayConfig[1102]).toBe("Er ging iets mis met de configuratie");
14
- });
15
- it("should return a 1103 error message", () => {
16
- expect(customSpecificErrorMessageOverlayConfig[1103]).toBe("Er is iets mis met de licentie (access key)");
17
- });
18
- it("should return a 1104 error message", () => {
19
- expect(customSpecificErrorMessageOverlayConfig[1104]).toBe("De video kan niet worden afgespeeld op dit domein");
20
- });
21
- it("should return a 1105 error message", () => {
22
- expect(customSpecificErrorMessageOverlayConfig[1105]).toBe("De video kan niet op dit web-adres worden afgespeeld");
23
- });
24
- it("should return a 1113 error message", () => {
25
- expect(customSpecificErrorMessageOverlayConfig[1113]).toBe("De video kan niet worden afgespeeld zonder web server");
26
- });
27
- it("should return a 1201 error message", () => {
28
- expect(customSpecificErrorMessageOverlayConfig[1201]).toBe("Er is iets mis met de source configuratie");
29
- });
30
- it("should return a 1202 error message", () => {
31
- expect(customSpecificErrorMessageOverlayConfig[1202]({ code: 1202 })).toBe("The downloaded manifest is invalid");
32
- });
33
- it("should return a 1203 error message", () => {
34
- expect(customSpecificErrorMessageOverlayConfig[1203]).toBe("Helaas, deze video is niet beschikbaar.");
35
- });
36
- it("should return a 1208 error message", () => {
37
- const errorMessage = customSpecificErrorMessageOverlayConfig[1208]({
38
- data: { statusCode: 1 },
39
- });
40
- expect(errorMessage).toBe("Manifest laden mislukt met HTTP fout 1");
41
- });
42
- it("should return a 1400 error message", () => {
43
- expect(customSpecificErrorMessageOverlayConfig[1400]).toBe("Er is iets mis met uw internet-verbinding");
44
- });
45
- it("should return a 2003 error message", () => {
46
- expect(customSpecificErrorMessageOverlayConfig[2003]).toBe("Oeps, er is iets mis met het opvragen van de DRM");
47
- });
48
- it("should return a 2006 error message", () => {
49
- expect(customSpecificErrorMessageOverlayConfig[2006]).toBe("Oeps, er is iets mis met de DRM");
50
- });
51
- });
52
- //# sourceMappingURL=customerrors.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"customerrors.test.js","sourceRoot":"","sources":["../../../../src/js/playeractions/customerrors.test.js"],"names":[],"mappings":"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"}