@npo/player 1.26.0 → 1.27.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.
Files changed (175) hide show
  1. package/README.md +1 -1
  2. package/lib/js/playeractions/handlers/mediasessionactions.js +2 -2
  3. package/lib/js/playeractions/playeractions.d.ts +0 -1
  4. package/lib/js/playeractions/playeractions.js +0 -1
  5. package/lib/js/utilities/utilities.prid.d.ts +6 -0
  6. package/lib/js/utilities/utilities.prid.js +8 -0
  7. package/lib/js/utilities/utilities.prid.test.js +46 -0
  8. package/lib/npoplayer.d.ts +1 -1
  9. package/lib/npoplayer.js +50 -59
  10. package/lib/npoplayer.test.js +2 -2
  11. package/lib/package.json +1 -1
  12. package/lib/services/a11y/setup.test.js +0 -1
  13. package/lib/services/advertHandlers/discardAdBreak.js +2 -0
  14. package/lib/services/advertHandlers/discardAdBreak.test.js +6 -1
  15. package/lib/services/advertHandlers/handlePreRolls.js +2 -4
  16. package/lib/services/advertHandlers/handlePrerolls.test.js +62 -1
  17. package/lib/services/drmHandlers/decideprofile.js +7 -1
  18. package/lib/services/drmHandlers/decideprofile.test.js +4 -0
  19. package/lib/services/drmHandlers/verifydrm.js +5 -6
  20. package/lib/services/drmHandlers/verifydrm.test.js +28 -5
  21. package/lib/services/errors/errorBackground.test.js +48 -0
  22. package/lib/services/errors/errorHandler.d.ts +3 -0
  23. package/lib/services/errors/errorHandler.js +45 -0
  24. package/lib/services/errors/errorText.d.ts +2 -0
  25. package/lib/services/errors/errorText.js +59 -0
  26. package/lib/services/errors/errorText.test.js +66 -0
  27. package/lib/services/keyboardHandlers/resolvekeypress.js +21 -17
  28. package/lib/services/localStorageHandlers/localStorageHandlers.js +5 -2
  29. package/lib/services/localStorageHandlers/localStorageHandlers.test.js +0 -1
  30. package/lib/services/nicamHandlers/nicamhandler.js +0 -4
  31. package/lib/services/nicamHandlers/nicamhandler.test.js +0 -5
  32. package/lib/services/npoPlayerAPI/contants.d.ts +20 -0
  33. package/lib/services/npoPlayerAPI/contants.js +6 -0
  34. package/lib/services/npoPlayerAPI/npoPlayerAPI.d.ts +4 -1
  35. package/lib/services/npoPlayerAPI/npoPlayerAPI.js +29 -5
  36. package/lib/services/npoPlayerAPI/npoPlayerAPI.test.js +11 -0
  37. package/lib/services/services.d.ts +8 -2
  38. package/lib/services/services.js +28 -2
  39. package/lib/services/streamFetchHandler/fetchStream.d.ts +2 -0
  40. package/lib/services/streamFetchHandler/fetchStream.js +48 -0
  41. package/lib/services/streamFetchHandler/fetchstream.test.js +70 -0
  42. package/lib/services/trackingHandlers/eventBinding.d.ts +2 -0
  43. package/lib/{js/tracking/handlers/eventbinding.js → services/trackingHandlers/eventBinding.js} +16 -14
  44. package/lib/services/trackingHandlers/eventBinding.test.js +89 -0
  45. package/lib/services/trackingHandlers/eventLogging.d.ts +2 -0
  46. package/lib/{js/tracking/handlers/eventlogging.js → services/trackingHandlers/eventLogging.js} +18 -7
  47. package/lib/services/trackingHandlers/eventLogging.test.js +63 -0
  48. package/lib/services/trackingHandlers/index.d.ts +3 -0
  49. package/lib/services/trackingHandlers/index.js +3 -0
  50. package/lib/services/trackingHandlers/playerTrackerInit.d.ts +2 -0
  51. package/lib/{js/tracking/handlers/playertrackerinit.js → services/trackingHandlers/playerTrackerInit.js} +6 -3
  52. package/lib/services/trackingHandlers/playerTrackerInit.test.js +75 -0
  53. package/lib/services/trackingHandlers/playerTrackerStart.d.ts +2 -0
  54. package/lib/services/trackingHandlers/playerTrackerStart.js +25 -0
  55. package/lib/services/trackingHandlers/playerTrackerStart.test.js +59 -0
  56. package/lib/services/trackingHandlers/streamTrackerInit.d.ts +3 -0
  57. package/lib/services/trackingHandlers/streamTrackerInit.js +27 -0
  58. package/lib/services/trackingHandlers/streamTrackerInit.test.js +84 -0
  59. package/lib/services/verticalVideoHandlers/handleVerticalVideoControls.d.ts +2 -2
  60. package/lib/services/verticalVideoHandlers/handleVerticalVideoControls.js +4 -6
  61. package/lib/services/verticalVideoHandlers/handleVerticalVideoControls.test.js +4 -17
  62. package/lib/services/verticalVideoHandlers/handleVerticalVideoSettings.d.ts +2 -0
  63. package/lib/services/verticalVideoHandlers/handleVerticalVideoSettings.js +26 -0
  64. package/lib/services/verticalVideoHandlers/handleVerticalVideoSettings.test.js +82 -0
  65. package/lib/src/js/playeractions/playeractions.d.ts +0 -1
  66. package/lib/src/js/utilities/utilities.prid.d.ts +6 -0
  67. package/lib/src/js/utilities/utilities.prid.test.d.ts +1 -0
  68. package/lib/src/npoplayer.d.ts +1 -1
  69. package/lib/src/services/errors/errorBackground.test.d.ts +1 -0
  70. package/lib/src/services/errors/errorHandler.d.ts +3 -0
  71. package/lib/src/services/errors/errorText.d.ts +2 -0
  72. package/lib/src/services/errors/errorText.test.d.ts +1 -0
  73. package/lib/src/services/npoPlayerAPI/contants.d.ts +20 -0
  74. package/lib/src/services/npoPlayerAPI/npoPlayerAPI.d.ts +4 -1
  75. package/lib/src/services/services.d.ts +8 -2
  76. package/lib/src/services/streamFetchHandler/fetchStream.d.ts +2 -0
  77. package/lib/src/services/streamFetchHandler/fetchstream.test.d.ts +1 -0
  78. package/lib/src/services/trackingHandlers/eventBinding.d.ts +2 -0
  79. package/lib/src/services/trackingHandlers/eventBinding.test.d.ts +1 -0
  80. package/lib/src/services/trackingHandlers/eventLogging.d.ts +2 -0
  81. package/lib/src/services/trackingHandlers/eventLogging.test.d.ts +1 -0
  82. package/lib/src/services/trackingHandlers/index.d.ts +3 -0
  83. package/lib/src/services/trackingHandlers/playerTrackerInit.d.ts +2 -0
  84. package/lib/src/services/trackingHandlers/playerTrackerInit.test.d.ts +1 -0
  85. package/lib/src/services/trackingHandlers/playerTrackerStart.d.ts +2 -0
  86. package/lib/src/services/trackingHandlers/playerTrackerStart.test.d.ts +1 -0
  87. package/lib/src/services/trackingHandlers/streamTrackerInit.d.ts +3 -0
  88. package/lib/src/services/trackingHandlers/streamTrackerInit.test.d.ts +1 -0
  89. package/lib/src/services/verticalVideoHandlers/handleVerticalVideoControls.d.ts +2 -2
  90. package/lib/src/services/verticalVideoHandlers/handleVerticalVideoSettings.d.ts +2 -0
  91. package/lib/src/services/verticalVideoHandlers/handleVerticalVideoSettings.test.d.ts +1 -0
  92. package/lib/src/types/interfaces.d.ts +15 -1
  93. package/lib/src/ui/components/seekbar.d.ts +2 -1
  94. package/lib/src/ui/components/verticalvideo/controlbar.d.ts +3 -3
  95. package/lib/src/ui/components/verticalvideo/settingspanel.d.ts +2 -0
  96. package/lib/tests/mocks/mockNpoplayer.js +1 -1
  97. package/lib/tests/mocks/mockStreamObject.d.ts +2 -0
  98. package/lib/tests/mocks/mockStreamObject.js +21 -0
  99. package/lib/tests/mocks/playerContextMock.d.ts +1 -0
  100. package/lib/tests/mocks/playerContextMock.js +5 -1
  101. package/lib/types/interfaces.d.ts +15 -1
  102. package/lib/ui/components/audio/controlbar.js +2 -1
  103. package/lib/ui/components/controlbar.js +1 -1
  104. package/lib/ui/components/seekbar.d.ts +2 -1
  105. package/lib/ui/components/seekbar.js +2 -2
  106. package/lib/ui/components/settingspanel.js +1 -3
  107. package/lib/ui/components/verticalvideo/controlbar.d.ts +3 -3
  108. package/lib/ui/components/verticalvideo/controlbar.js +14 -11
  109. package/lib/ui/components/verticalvideo/settingspanel.d.ts +2 -0
  110. package/lib/ui/components/verticalvideo/settingspanel.js +21 -0
  111. package/lib/ui/handlers/domhandlers.test.js +6 -26
  112. package/lib/ui/nativemobileuifactory.js +1 -1
  113. package/lib/ui/uicontainer.js +4 -1
  114. package/lib/ui/uicontainer.test.js +4 -1
  115. package/package.json +1 -1
  116. package/src/style/components/_advert.scss +3 -3
  117. package/src/style/components/_buffering.scss +14 -8
  118. package/src/style/components/_error.scss +44 -1
  119. package/src/style/components/_hugeplaybacktogglebutton.scss +1 -0
  120. package/src/style/components/_metadata.scss +13 -12
  121. package/src/style/components/_nicam.scss +11 -6
  122. package/src/style/components/_playnext.scss +1 -1
  123. package/src/style/components/_replay.scss +1 -6
  124. package/src/style/components/_settingspanel.scss +74 -79
  125. package/src/style/components/audio/_errors.scss +1 -1
  126. package/src/style/components/audio/_metadata.scss +14 -8
  127. package/src/style/components/audio/_playbutton.scss +1 -0
  128. package/src/style/components/audio/_topbar.scss +10 -2
  129. package/src/style/components/audio/_volumeslider.scss +3 -3
  130. package/src/style/components/vertical-video/_bottombar.scss +42 -1
  131. package/src/style/components/vertical-video/_hugeplaybacktogglebutton.scss +24 -4
  132. package/src/style/components/vertical-video/_settingspanel.scss +20 -3
  133. package/src/style/components/vertical-video/_topbar.scss +47 -6
  134. package/src/style/npoplayer.css +86 -53
  135. package/src/style/npoplayer.scss +4 -7
  136. package/src/style/variants/_player-base.scss +10 -2
  137. package/src/style/variants/_player-small.scss +15 -1
  138. package/src/style/vars/_fonts.scss +13 -7
  139. package/src/style/vars/_z-index.scss +1 -0
  140. package/lib/js/api/getstreamobject.d.ts +0 -3
  141. package/lib/js/api/getstreamobject.js +0 -38
  142. package/lib/js/api/getstreamobject.test.js +0 -48
  143. package/lib/js/playeractions/customerrors.test.js +0 -51
  144. package/lib/js/playeractions/handlers/customerrors.d.ts +0 -50
  145. package/lib/js/playeractions/handlers/customerrors.js +0 -56
  146. package/lib/js/playeractions/handlers/error.d.ts +0 -3
  147. package/lib/js/playeractions/handlers/error.js +0 -14
  148. package/lib/js/playeractions/handlers/error.test.js +0 -44
  149. package/lib/js/tracking/handlers/eventbinding.d.ts +0 -3
  150. package/lib/js/tracking/handlers/eventlogging.d.ts +0 -2
  151. package/lib/js/tracking/handlers/eventlogging.test.js +0 -46
  152. package/lib/js/tracking/handlers/playertrackerinit.d.ts +0 -4
  153. package/lib/js/tracking/handlers/playertrackerinit.test.js +0 -74
  154. package/lib/js/tracking/handlers/playertrackerstart.d.ts +0 -1
  155. package/lib/js/tracking/handlers/playertrackerstart.js +0 -25
  156. package/lib/js/tracking/playertracker.d.ts +0 -4
  157. package/lib/js/tracking/playertracker.js +0 -4
  158. package/lib/src/js/api/getstreamobject.d.ts +0 -3
  159. package/lib/src/js/playeractions/handlers/customerrors.d.ts +0 -50
  160. package/lib/src/js/playeractions/handlers/error.d.ts +0 -3
  161. package/lib/src/js/tracking/handlers/eventbinding.d.ts +0 -3
  162. package/lib/src/js/tracking/handlers/eventlogging.d.ts +0 -2
  163. package/lib/src/js/tracking/handlers/playertrackerinit.d.ts +0 -4
  164. package/lib/src/js/tracking/handlers/playertrackerstart.d.ts +0 -1
  165. package/lib/src/js/tracking/playertracker.d.ts +0 -4
  166. /package/lib/js/{api/getstreamobject.test.d.ts → utilities/utilities.prid.test.d.ts} +0 -0
  167. /package/lib/{js/playeractions/customerrors.test.d.ts → services/errors/errorBackground.test.d.ts} +0 -0
  168. /package/lib/{js/playeractions/handlers/error.test.d.ts → services/errors/errorText.test.d.ts} +0 -0
  169. /package/lib/{js/tracking/handlers/eventlogging.test.d.ts → services/streamFetchHandler/fetchstream.test.d.ts} +0 -0
  170. /package/lib/{js/tracking/handlers/playertrackerinit.test.d.ts → services/trackingHandlers/eventBinding.test.d.ts} +0 -0
  171. /package/lib/{src/js/api/getstreamobject.test.d.ts → services/trackingHandlers/eventLogging.test.d.ts} +0 -0
  172. /package/lib/{src/js/playeractions/customerrors.test.d.ts → services/trackingHandlers/playerTrackerInit.test.d.ts} +0 -0
  173. /package/lib/{src/js/playeractions/handlers/error.test.d.ts → services/trackingHandlers/playerTrackerStart.test.d.ts} +0 -0
  174. /package/lib/{src/js/tracking/handlers/eventlogging.test.d.ts → services/trackingHandlers/streamTrackerInit.test.d.ts} +0 -0
  175. /package/lib/{src/js/tracking/handlers/playertrackerinit.test.d.ts → services/verticalVideoHandlers/handleVerticalVideoSettings.test.d.ts} +0 -0
@@ -3,18 +3,15 @@
3
3
  $cdn: 'https://cdn.npoplayer.nl/assets/';
4
4
 
5
5
  // mixins
6
+ @import './mixins/z-index';
7
+ @import './mixins/max-lines';
6
8
  @import './mixins/focus';
7
9
 
8
- // Colors
10
+ // vars
9
11
  @import './vars/colors';
10
-
11
- // Fonts
12
12
  @import './vars/fonts';
13
-
14
- // Icons
15
13
  @import './vars/icons';
16
-
17
- // Audio ui
14
+ @import './vars/z-index';
18
15
  @import './vars/audio';
19
16
 
20
17
  // show poster on audio only
@@ -8,8 +8,15 @@
8
8
  }
9
9
 
10
10
  .bmpui-ui-titlebar {
11
- background: var(--npo-player-topcolor);
12
- height: 161px;
11
+ &::before {
12
+ content: '';
13
+ position: absolute;
14
+ top: 0;
15
+ left: 0;
16
+ width: 100%;
17
+ height: 161px;
18
+ background: var(--npo-player-topcolor);
19
+ }
13
20
  }
14
21
 
15
22
  .bmpui-ui-controlbar.bmpui-hidden,
@@ -25,6 +32,7 @@
25
32
 
26
33
  .bmpui-ui-controlbar-bottom {
27
34
  background: var(--npo-player-bottomcolor);
35
+ z-index: z-index(bottom-bar);
28
36
  }
29
37
 
30
38
  /* Time labels */
@@ -38,6 +38,14 @@
38
38
  height: 100%;
39
39
  background: none;
40
40
  padding: 0;
41
+
42
+ &::before {
43
+ display: none;
44
+ }
45
+ }
46
+
47
+ .bmpui-metadata .bmpui-container-wrapper {
48
+ padding: 12px;
41
49
  }
42
50
 
43
51
  .bmpui-ui-controlbar.bmpui-ui-controlbar-bottom {
@@ -152,4 +160,10 @@
152
160
  width: 32px;
153
161
  }
154
162
  }
155
- }
163
+ .bmpui-ui-errormessage-label {
164
+ font-size: 12px;
165
+ .error-code{
166
+ font-size: 12px;
167
+ }
168
+ }
169
+ }
@@ -4,17 +4,23 @@
4
4
  */
5
5
 
6
6
  @font-face {
7
- font-family: 'NPOSansBold';
8
- src: url($cdn + 'fonts/NPO-Sans-Bold-v1.0.otf') format('truetype');
7
+ font-display: swap;
8
+ font-family: 'NPOSansRegular';
9
+ font-weight: 400;
10
+ font-style: normal;
11
+ src: url($cdn + 'fonts/npo-sans-regular.woff2') format('woff2');
9
12
  }
10
13
 
11
14
  @font-face {
12
- font-family: 'NPOSansRegular';
13
- src: url($cdn + 'fonts/NPO-Sans-Regular-v1.0.otf') format('truetype');
15
+ font-display: swap;
16
+ font-family: 'NPOSansBold';
17
+ font-weight: 700;
18
+ font-style: normal;
19
+ src: url($cdn + 'fonts/npo-sans-bold.woff2') format('woff2');
14
20
  }
15
21
 
16
22
  .bmpui-npo-player {
17
- --fontRegular: 'NPOSansRegular', sans-serif;
18
- --fontBold: 'NPOSansBold', sans-serif;
19
- --subtitlesfont: 'NPOSansBold', sans-serif;
23
+ --fontRegular: 'NPOSansRegular', sans-serif;
24
+ --fontBold: 'NPOSansBold', sans-serif;
25
+ --subtitlesfont: 'NPOSansBold', sans-serif;
20
26
  }
@@ -0,0 +1 @@
1
+ $z-indices: hugeplayback-toggle-button, bottom-bar, title-bar, buffering-overlay, playnext-overlay, settings-panel, error-message-overlay;
@@ -1,3 +0,0 @@
1
- import { type ApiPayload } from '../../types/interfaces';
2
- import type NpoPlayer from '../../npoplayer';
3
- export declare function getStreamObject(npoPlayer: NpoPlayer, payload: ApiPayload): Promise<any>;
@@ -1,38 +0,0 @@
1
- import { removeTrailingSlash } from '../utilities/utilities.url';
2
- export async function getStreamObject(npoPlayer, payload) {
3
- try {
4
- const controller = new AbortController();
5
- const { signal } = controller;
6
- const timeout = setTimeout(() => {
7
- controller.abort();
8
- }, 5000);
9
- const response = await fetch(removeTrailingSlash(payload.baseURL) + '/stream-link', {
10
- method: 'post',
11
- headers: {
12
- 'Accept': '*/*',
13
- 'Authorization': payload.jwt,
14
- 'Content-Type': 'application/json'
15
- },
16
- body: JSON.stringify(payload.data),
17
- signal
18
- });
19
- clearTimeout(timeout);
20
- const streamApiResponse = await response.json();
21
- if (response.ok) {
22
- return streamApiResponse;
23
- }
24
- else {
25
- npoPlayer.doError('Het is niet gelukt de stream op te halen.', response.status);
26
- }
27
- }
28
- catch (error) {
29
- if (error instanceof Error) {
30
- if (error.message === 'AbortError') {
31
- npoPlayer.doError('Het ophalen van de stream duurde te lang.', 408);
32
- }
33
- else {
34
- npoPlayer.doError(`Het is niet gelukt de stream op te halen: \n ${error.message}`, 500);
35
- }
36
- }
37
- }
38
- }
@@ -1,48 +0,0 @@
1
- import { getStreamObject } from './getstreamobject';
2
- import NpoPlayer from '../../npoplayer';
3
- import fetchMock from 'jest-fetch-mock';
4
- fetchMock.enableMocks();
5
- jest.mock('../../services/streamoptionsHandlers/streamOptionsHandler', () => ({
6
- handleStreamOptions: jest.fn()
7
- }));
8
- describe('getStreamObject', () => {
9
- let npoPlayer;
10
- let apiPayload;
11
- const testPlayerConfig = {
12
- key: 'dummy key'
13
- };
14
- const div = document.createElement('div');
15
- beforeEach(() => {
16
- npoPlayer = new NpoPlayer(div, testPlayerConfig);
17
- apiPayload = {
18
- baseURL: 'http://example.com',
19
- jwt: 'someToken',
20
- data: {}
21
- };
22
- fetchMock.resetMocks();
23
- jest.clearAllMocks();
24
- });
25
- it('should handle successful fetch', async () => {
26
- fetchMock.mockResponseOnce(JSON.stringify({ foo: 'bar' }));
27
- const result = await getStreamObject(npoPlayer, apiPayload);
28
- expect(result).toEqual({ foo: 'bar' });
29
- });
30
- it('should handle fetch with bad response', async () => {
31
- fetchMock.mockResponseOnce(JSON.stringify({ body: 'Bad Request' }), { status: 400 });
32
- const doErrorSpy = jest.spyOn(npoPlayer, 'doError');
33
- await getStreamObject(npoPlayer, apiPayload);
34
- expect(doErrorSpy).toHaveBeenCalledWith(expect.stringMatching('Het is niet gelukt de stream op te halen.'), 400);
35
- });
36
- it('should handle fetch timeout', async () => {
37
- fetchMock.mockRejectOnce(new Error('AbortError'));
38
- const doErrorSpy = jest.spyOn(npoPlayer, 'doError');
39
- await getStreamObject(npoPlayer, apiPayload);
40
- expect(doErrorSpy).toHaveBeenCalledWith(expect.stringMatching('Het ophalen van de stream duurde te lang.'), 408);
41
- });
42
- it('should handle fetch with other errors', async () => {
43
- fetchMock.mockRejectOnce(new Error('SomeError'));
44
- const doErrorSpy = jest.spyOn(npoPlayer, 'doError');
45
- await getStreamObject(npoPlayer, apiPayload);
46
- expect(doErrorSpy).toHaveBeenCalledWith(expect.stringContaining('SomeError'), 500);
47
- });
48
- });
@@ -1,51 +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
- });
@@ -1,50 +0,0 @@
1
- export declare const customSpecificErrorMessageOverlayConfig: {
2
- 1000: string;
3
- 1001: string;
4
- 1101: string;
5
- 1102: string;
6
- 1103: string;
7
- 1104: string;
8
- 1105: string;
9
- 1106: string;
10
- 1107: string;
11
- 1108: string;
12
- 1113: string;
13
- 1201: string;
14
- 1202: (error: any) => string | import("bitmovin-player-ui/dist/js/framework/components/errormessageoverlay").ErrorMessageTranslator;
15
- 1203: string;
16
- 1204: string;
17
- 1205: string;
18
- 1206: string;
19
- 1207: string;
20
- 1208: (error: any) => string;
21
- 1209: string;
22
- 1210: string;
23
- 1211: string;
24
- 1301: string;
25
- 1304: string;
26
- 1400: string;
27
- 1401: string;
28
- 1402: string;
29
- 1403: string;
30
- 1404: string;
31
- 2001: string;
32
- 2002: string;
33
- 2003: string;
34
- 2005: string;
35
- 2006: string;
36
- 2007: string;
37
- 2008: string;
38
- 2009: string;
39
- 2010: string;
40
- 2011: string;
41
- 2012: string;
42
- 2013: string;
43
- 2015: string;
44
- 2101: string;
45
- 3001: string;
46
- 3002: string;
47
- 3003: string;
48
- 3004: string;
49
- 4000: string;
50
- };
@@ -1,56 +0,0 @@
1
- import { ErrorUtils } from 'bitmovin-player-ui';
2
- export const customSpecificErrorMessageOverlayConfig = {
3
- 1000: 'Oeps, er gaat iets mis',
4
- 1001: 'Oeps, er gaat iets mis',
5
- 1101: 'De player is niet aangemaakt',
6
- 1102: 'Er ging iets mis met de configuratie',
7
- 1103: 'Er is iets mis met de licentie (access key)',
8
- 1104: 'De video kan niet worden afgespeeld op dit domein',
9
- 1105: 'De video kan niet op dit web-adres worden afgespeeld',
10
- 1106: '',
11
- 1107: '',
12
- 1108: '',
13
- 1113: 'De video kan niet worden afgespeeld zonder web server',
14
- 1201: 'Er is iets mis met de source configuratie',
15
- 1202: (error) => {
16
- return ErrorUtils.defaultErrorMessages[error.code];
17
- },
18
- 1203: 'Helaas, deze video is niet beschikbaar.',
19
- 1204: '',
20
- 1205: '',
21
- 1206: '',
22
- 1207: '',
23
- 1208: (error) => {
24
- const statusCode = error.data.statusCode;
25
- return 'Manifest laden mislukt met HTTP fout ' + statusCode;
26
- },
27
- 1209: '',
28
- 1210: '',
29
- 1211: '',
30
- 1301: '',
31
- 1304: '',
32
- 1400: 'Er is iets mis met uw internet-verbinding',
33
- 1401: '',
34
- 1402: '',
35
- 1403: '',
36
- 1404: '',
37
- 2001: '',
38
- 2002: '',
39
- 2003: 'Oeps, er is iets mis met het opvragen van de DRM',
40
- 2005: '',
41
- 2006: 'Oeps, er is iets mis met de DRM',
42
- 2007: '',
43
- 2008: '',
44
- 2009: '',
45
- 2010: '',
46
- 2011: '',
47
- 2012: '',
48
- 2013: '',
49
- 2015: '',
50
- 2101: '',
51
- 3001: '',
52
- 3002: '',
53
- 3003: '',
54
- 3004: '',
55
- 4000: ''
56
- };
@@ -1,3 +0,0 @@
1
- import { PlayerAPI } from 'bitmovin-player';
2
- import { UIComponents } from '../../../types/interfaces';
3
- export declare function handlePlayerError(player: PlayerAPI, uiComponents: UIComponents, input: any): void;
@@ -1,14 +0,0 @@
1
- export function handlePlayerError(player, uiComponents, input) {
2
- let message = '';
3
- if (typeof input === 'string') {
4
- message = input;
5
- }
6
- console.error('Er is iets mis met het ophalen van de stream.', input);
7
- player.unload();
8
- if (uiComponents.controlBar)
9
- uiComponents.controlBar.hide();
10
- if (uiComponents.errorMessageOverlay == undefined)
11
- return;
12
- uiComponents.errorMessageOverlay.show();
13
- uiComponents.errorMessageOverlay.errorLabel.setText(message ?? 'De video kan niet worden geladen');
14
- }
@@ -1,44 +0,0 @@
1
- import { handlePlayerError } from './error';
2
- const hide = jest.fn();
3
- const unload = jest.fn();
4
- const setText = jest.fn();
5
- const show = jest.fn();
6
- const input = 'string';
7
- const player = { unload };
8
- const uiComponents = {
9
- controlBar: { hide },
10
- errorMessageOverlay: {
11
- errorLabel: { setText },
12
- show
13
- }
14
- };
15
- describe('Test DRM verification', () => {
16
- afterEach(() => {
17
- jest.resetAllMocks();
18
- });
19
- it('should call player.unload', () => {
20
- handlePlayerError(player, uiComponents, input);
21
- expect(unload).toHaveBeenCalled();
22
- });
23
- it('should hide the controlbar', () => {
24
- handlePlayerError(player, uiComponents, input);
25
- expect(hide).toHaveBeenCalled();
26
- });
27
- it('should not hide the controlbar', () => {
28
- const components = {
29
- ...uiComponents,
30
- controlBar: undefined
31
- };
32
- handlePlayerError(player, components, input);
33
- expect(hide).not.toHaveBeenCalled();
34
- });
35
- it('should show the message overlay', () => {
36
- handlePlayerError(player, uiComponents, input);
37
- expect(show).toHaveBeenCalled();
38
- expect(setText).toHaveBeenCalled();
39
- });
40
- it('should not show the message overlay', () => {
41
- handlePlayerError(player, { ...uiComponents, errorMessageOverlay: undefined }, input);
42
- expect(show).not.toHaveBeenCalled();
43
- });
44
- });
@@ -1,3 +0,0 @@
1
- import { type PlayerAPI } from 'bitmovin-player';
2
- import type NpoPlayer from '../../../npoplayer';
3
- export declare function bindPlayerEvents(npoPlayer: NpoPlayer, player: PlayerAPI): void;
@@ -1,2 +0,0 @@
1
- import NpoPlayer from '../../../npoplayer';
2
- export declare function logEvent(npoPlayer: NpoPlayer, event: string, data?: any): void;
@@ -1,46 +0,0 @@
1
- import { logEvent } from './eventlogging';
2
- import { mockNpoPlayer } from '../../../../tests/mocks/mockNpoplayer';
3
- describe('logEvent', () => {
4
- let npoPlayer;
5
- beforeEach(() => {
6
- npoPlayer = mockNpoPlayer;
7
- });
8
- it('should not log event if player is not available', () => {
9
- npoPlayer.player = undefined;
10
- if (npoPlayer.streamTracker && npoPlayer.player) {
11
- logEvent(npoPlayer, 'start');
12
- expect(npoPlayer.streamTracker.start).not.toHaveBeenCalled();
13
- expect(npoPlayer.logEmitter.emit).not.toHaveBeenCalled();
14
- }
15
- });
16
- it('should not log event if streamTracker is not available', () => {
17
- npoPlayer.streamTracker = undefined;
18
- if (npoPlayer.streamTracker) {
19
- logEvent(npoPlayer, 'start');
20
- expect(npoPlayer.logEmitter.emit).not.toHaveBeenCalled();
21
- }
22
- });
23
- it('should not log event if adBreakActive is true', () => {
24
- npoPlayer.adBreakActive = true;
25
- if (npoPlayer.streamTracker) {
26
- logEvent(npoPlayer, 'start');
27
- expect(npoPlayer.streamTracker.start).not.toHaveBeenCalled();
28
- expect(npoPlayer.logEmitter.emit).not.toHaveBeenCalled();
29
- }
30
- });
31
- it('should log event and call the corresponding streamTracker handler', () => {
32
- if (npoPlayer.streamTracker) {
33
- logEvent(npoPlayer, 'start');
34
- expect(npoPlayer.streamTracker.start).toHaveBeenCalledWith({ stream_position: 10 });
35
- expect(npoPlayer.logEmitter.emit).toHaveBeenCalledWith('logEvent', 'start');
36
- }
37
- });
38
- it('should log event and call the seek streamTracker handler with data', () => {
39
- const data = { position: 20 };
40
- if (npoPlayer.streamTracker) {
41
- logEvent(npoPlayer, 'seek', data);
42
- expect(npoPlayer.streamTracker.seek).toHaveBeenCalledWith(data);
43
- expect(npoPlayer.logEmitter.emit).toHaveBeenCalledWith('logEvent', 'seek');
44
- }
45
- });
46
- });
@@ -1,4 +0,0 @@
1
- import { type NPOTag, type PageTracker } from '@npotag/tag';
2
- import { type InitialisationProps } from '@npotag/tag/dist/types/src/npoTag';
3
- import type NpoPlayer from '../../../npoplayer';
4
- export declare function initPlayerTracker(npoPlayer: NpoPlayer, _npoTag?: InitialisationProps, _npoTagInstance?: NPOTag, _npoTagPageTracker?: PageTracker): void;
@@ -1,74 +0,0 @@
1
- import { newPageTracker, newTag } from '@npotag/tag';
2
- import { initPlayerTracker } from './playertrackerinit';
3
- jest.mock('@npotag/tag', () => ({
4
- newATInternetPlugin: jest.fn(),
5
- newGovoltePlugin: jest.fn(),
6
- newPageTracker: jest.fn(),
7
- newTag: jest.fn()
8
- }));
9
- describe('initPlayerTracker', () => {
10
- let mockNpoPlayer;
11
- beforeEach(() => {
12
- mockNpoPlayer = {
13
- npoTag: undefined
14
- };
15
- jest.clearAllMocks();
16
- });
17
- it('should initialize npoTag if it is undefined', () => {
18
- initPlayerTracker(mockNpoPlayer);
19
- expect(mockNpoPlayer.npoTag).toBeDefined();
20
- expect(mockNpoPlayer.npoTag?.npoTagInstance).toBeUndefined();
21
- expect(mockNpoPlayer.npoTag?.pageTracker).toBeUndefined();
22
- });
23
- it('should initialize npoTagInstance if _npoTagInstance is provided', () => {
24
- const mockNpoTagInstance = {};
25
- initPlayerTracker(mockNpoPlayer, undefined, mockNpoTagInstance);
26
- expect(mockNpoPlayer.npoTag?.npoTagInstance).toBe(mockNpoTagInstance);
27
- expect(mockNpoPlayer.npoTag?.pageTracker).toBeUndefined();
28
- });
29
- it('should create a new npoTagInstance if _npoTag is provided and _npoTagInstance is undefined', () => {
30
- const mockNpoTag = {};
31
- const mockNewTagInstance = {};
32
- newTag.mockReturnValue(mockNewTagInstance);
33
- initPlayerTracker(mockNpoPlayer, mockNpoTag);
34
- expect(newTag).toHaveBeenCalledWith(mockNpoTag, expect.any(Array));
35
- expect(mockNpoPlayer.npoTag?.npoTagInstance).toBe(mockNewTagInstance);
36
- expect(mockNpoPlayer.npoTag?.pageTracker).toBeUndefined();
37
- });
38
- it('should initialize pageTracker if _npoTagPageTracker is provided', () => {
39
- const mockPageTracker = {};
40
- const mockNpoTagInstance = {};
41
- mockNpoPlayer.npoTag = {
42
- npoTagInstance: mockNpoTagInstance,
43
- pageTracker: undefined,
44
- heartbeatInterval: undefined
45
- };
46
- initPlayerTracker(mockNpoPlayer, undefined, mockNpoTagInstance, mockPageTracker);
47
- expect(mockNpoPlayer.npoTag?.pageTracker).toBe(mockPageTracker);
48
- });
49
- it('should create a new pageTracker if _npoTagPageTracker is undefined', () => {
50
- const mockNpoTagInstance = {};
51
- const mockNewPageTracker = {};
52
- newPageTracker.mockReturnValue(mockNewPageTracker);
53
- mockNpoPlayer.npoTag = {
54
- npoTagInstance: mockNpoTagInstance,
55
- pageTracker: undefined,
56
- heartbeatInterval: undefined
57
- };
58
- initPlayerTracker(mockNpoPlayer);
59
- expect(newPageTracker).toHaveBeenCalledWith(mockNpoTagInstance);
60
- expect(mockNpoPlayer.npoTag?.pageTracker).toBe(mockNewPageTracker);
61
- });
62
- it('should not overwrite existing pageTracker', () => {
63
- const mockPageTracker = {};
64
- const mockNpoTagInstance = {};
65
- mockNpoPlayer.npoTag = {
66
- npoTagInstance: mockNpoTagInstance,
67
- pageTracker: mockPageTracker,
68
- heartbeatInterval: undefined
69
- };
70
- initPlayerTracker(mockNpoPlayer);
71
- expect(mockNpoPlayer.npoTag?.pageTracker).toBe(mockPageTracker);
72
- expect(newPageTracker).not.toHaveBeenCalled();
73
- });
74
- });
@@ -1 +0,0 @@
1
- export declare function startPlayerTracker(playerInstance: any, duration: number, version: string, source: string | undefined): void;
@@ -1,25 +0,0 @@
1
- import { newStreamTracker } from '@npotag/tag';
2
- import { bindPlayerEvents } from './eventbinding';
3
- import { validatePrid } from '../../utilities/utilities.stream';
4
- export function startPlayerTracker(playerInstance, duration, version, source) {
5
- playerInstance.streamTracker = undefined;
6
- let streamTrackerConfig = undefined;
7
- if (playerInstance.npoTag?.pageTracker == undefined) {
8
- console.error('No pageTracker available');
9
- }
10
- else {
11
- streamTrackerConfig = {
12
- stream_length: duration,
13
- stream_id: validatePrid(source),
14
- player_id: 'npoplayer-web',
15
- av_type: playerInstance.npoPlayerServices.getAVType(playerInstance.streamObject.stream.avType),
16
- player_version: version,
17
- sko_player_version: '1.0.0'
18
- };
19
- const isLiveStream = playerInstance.streamObject.stream.isLiveStream || false;
20
- playerInstance.streamTracker = newStreamTracker(playerInstance.npoTag.pageTracker, streamTrackerConfig, {
21
- isLive: isLiveStream
22
- });
23
- bindPlayerEvents(playerInstance, playerInstance.player);
24
- }
25
- }
@@ -1,4 +0,0 @@
1
- export { initPlayerTracker } from './handlers/playertrackerinit';
2
- export { startPlayerTracker } from './handlers/playertrackerstart';
3
- export { bindPlayerEvents } from './handlers/eventbinding';
4
- export { logEvent } from './handlers/eventlogging';
@@ -1,4 +0,0 @@
1
- export { initPlayerTracker } from './handlers/playertrackerinit';
2
- export { startPlayerTracker } from './handlers/playertrackerstart';
3
- export { bindPlayerEvents } from './handlers/eventbinding';
4
- export { logEvent } from './handlers/eventlogging';
@@ -1,3 +0,0 @@
1
- import { type ApiPayload } from '../../types/interfaces';
2
- import type NpoPlayer from '../../npoplayer';
3
- export declare function getStreamObject(npoPlayer: NpoPlayer, payload: ApiPayload): Promise<any>;
@@ -1,50 +0,0 @@
1
- export declare const customSpecificErrorMessageOverlayConfig: {
2
- 1000: string;
3
- 1001: string;
4
- 1101: string;
5
- 1102: string;
6
- 1103: string;
7
- 1104: string;
8
- 1105: string;
9
- 1106: string;
10
- 1107: string;
11
- 1108: string;
12
- 1113: string;
13
- 1201: string;
14
- 1202: (error: any) => string | import("bitmovin-player-ui/dist/js/framework/components/errormessageoverlay").ErrorMessageTranslator;
15
- 1203: string;
16
- 1204: string;
17
- 1205: string;
18
- 1206: string;
19
- 1207: string;
20
- 1208: (error: any) => string;
21
- 1209: string;
22
- 1210: string;
23
- 1211: string;
24
- 1301: string;
25
- 1304: string;
26
- 1400: string;
27
- 1401: string;
28
- 1402: string;
29
- 1403: string;
30
- 1404: string;
31
- 2001: string;
32
- 2002: string;
33
- 2003: string;
34
- 2005: string;
35
- 2006: string;
36
- 2007: string;
37
- 2008: string;
38
- 2009: string;
39
- 2010: string;
40
- 2011: string;
41
- 2012: string;
42
- 2013: string;
43
- 2015: string;
44
- 2101: string;
45
- 3001: string;
46
- 3002: string;
47
- 3003: string;
48
- 3004: string;
49
- 4000: string;
50
- };