@npo/player 1.9.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 (233) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/LICENSE +15 -0
  3. package/README.md +281 -0
  4. package/lib/js/ads/ster.d.ts +4 -0
  5. package/lib/js/ads/ster.js +159 -0
  6. package/lib/js/ads/ster.js.map +1 -0
  7. package/lib/js/ads/ster.test.d.ts +1 -0
  8. package/lib/js/ads/ster.test.js +91 -0
  9. package/lib/js/ads/ster.test.js.map +1 -0
  10. package/lib/js/api/getstreamobject.d.ts +3 -0
  11. package/lib/js/api/getstreamobject.js +19 -0
  12. package/lib/js/api/getstreamobject.js.map +1 -0
  13. package/lib/js/cdnproviders.d.ts +1 -0
  14. package/lib/js/cdnproviders.js +13 -0
  15. package/lib/js/cdnproviders.js.map +1 -0
  16. package/lib/js/checks/safari.d.ts +1 -0
  17. package/lib/js/checks/safari.js +10 -0
  18. package/lib/js/checks/safari.js.map +1 -0
  19. package/lib/js/checks/safari.test.d.ts +1 -0
  20. package/lib/js/checks/safari.test.js +21 -0
  21. package/lib/js/checks/safari.test.js.map +1 -0
  22. package/lib/js/drm/verifydrm.d.ts +4 -0
  23. package/lib/js/drm/verifydrm.js +38 -0
  24. package/lib/js/drm/verifydrm.js.map +1 -0
  25. package/lib/js/drm/verifydrm.test.d.ts +1 -0
  26. package/lib/js/drm/verifydrm.test.js +18 -0
  27. package/lib/js/drm/verifydrm.test.js.map +1 -0
  28. package/lib/js/fragments/setfragments.d.ts +3 -0
  29. package/lib/js/fragments/setfragments.js +68 -0
  30. package/lib/js/fragments/setfragments.js.map +1 -0
  31. package/lib/js/playeractions/customerrors.test.d.ts +1 -0
  32. package/lib/js/playeractions/customerrors.test.js +52 -0
  33. package/lib/js/playeractions/customerrors.test.js.map +1 -0
  34. package/lib/js/playeractions/handlers/customerrors.d.ts +50 -0
  35. package/lib/js/playeractions/handlers/customerrors.js +154 -0
  36. package/lib/js/playeractions/handlers/customerrors.js.map +1 -0
  37. package/lib/js/playeractions/handlers/error.d.ts +3 -0
  38. package/lib/js/playeractions/handlers/error.js +23 -0
  39. package/lib/js/playeractions/handlers/error.js.map +1 -0
  40. package/lib/js/playeractions/handlers/error.test.d.ts +1 -0
  41. package/lib/js/playeractions/handlers/error.test.js +45 -0
  42. package/lib/js/playeractions/handlers/error.test.js.map +1 -0
  43. package/lib/js/playeractions/handlers/handleoffsets.d.ts +6 -0
  44. package/lib/js/playeractions/handlers/handleoffsets.js +71 -0
  45. package/lib/js/playeractions/handlers/handleoffsets.js.map +1 -0
  46. package/lib/js/playeractions/handlers/handleoffsets.test.d.ts +1 -0
  47. package/lib/js/playeractions/handlers/handleoffsets.test.js +50 -0
  48. package/lib/js/playeractions/handlers/handleoffsets.test.js.map +1 -0
  49. package/lib/js/playeractions/handlers/resolvekeypress.d.ts +3 -0
  50. package/lib/js/playeractions/handlers/resolvekeypress.js +55 -0
  51. package/lib/js/playeractions/handlers/resolvekeypress.js.map +1 -0
  52. package/lib/js/playeractions/playeractions.d.ts +3 -0
  53. package/lib/js/playeractions/playeractions.js +4 -0
  54. package/lib/js/playeractions/playeractions.js.map +1 -0
  55. package/lib/js/tracking/handlers/eventbinding.d.ts +10 -0
  56. package/lib/js/tracking/handlers/eventbinding.js +86 -0
  57. package/lib/js/tracking/handlers/eventbinding.js.map +1 -0
  58. package/lib/js/tracking/handlers/eventlogging.d.ts +11 -0
  59. package/lib/js/tracking/handlers/eventlogging.js +42 -0
  60. package/lib/js/tracking/handlers/eventlogging.js.map +1 -0
  61. package/lib/js/tracking/handlers/playertrackerinit.d.ts +13 -0
  62. package/lib/js/tracking/handlers/playertrackerinit.js +29 -0
  63. package/lib/js/tracking/handlers/playertrackerinit.js.map +1 -0
  64. package/lib/js/tracking/handlers/playertrackerstart.d.ts +8 -0
  65. package/lib/js/tracking/handlers/playertrackerstart.js +29 -0
  66. package/lib/js/tracking/handlers/playertrackerstart.js.map +1 -0
  67. package/lib/js/tracking/playertracker.d.ts +4 -0
  68. package/lib/js/tracking/playertracker.js +10 -0
  69. package/lib/js/tracking/playertracker.js.map +1 -0
  70. package/lib/js/ui/components/adbutton.d.ts +7 -0
  71. package/lib/js/ui/components/adbutton.js +21 -0
  72. package/lib/js/ui/components/adbutton.js.map +1 -0
  73. package/lib/js/ui/components/adlabel.d.ts +7 -0
  74. package/lib/js/ui/components/adlabel.js +17 -0
  75. package/lib/js/ui/components/adlabel.js.map +1 -0
  76. package/lib/js/ui/components/buttons.d.ts +30 -0
  77. package/lib/js/ui/components/buttons.js +89 -0
  78. package/lib/js/ui/components/buttons.js.map +1 -0
  79. package/lib/js/ui/components/controlbar.d.ts +3 -0
  80. package/lib/js/ui/components/controlbar.js +47 -0
  81. package/lib/js/ui/components/controlbar.js.map +1 -0
  82. package/lib/js/ui/components/ctabar.d.ts +9 -0
  83. package/lib/js/ui/components/ctabar.js +41 -0
  84. package/lib/js/ui/components/ctabar.js.map +1 -0
  85. package/lib/js/ui/components/nativemobile/buttons.d.ts +13 -0
  86. package/lib/js/ui/components/nativemobile/buttons.js +43 -0
  87. package/lib/js/ui/components/nativemobile/buttons.js.map +1 -0
  88. package/lib/js/ui/components/nativemobile/controlbar.d.ts +2 -0
  89. package/lib/js/ui/components/nativemobile/controlbar.js +23 -0
  90. package/lib/js/ui/components/nativemobile/controlbar.js.map +1 -0
  91. package/lib/js/ui/components/nativemobile/ctabar.d.ts +10 -0
  92. package/lib/js/ui/components/nativemobile/ctabar.js +12 -0
  93. package/lib/js/ui/components/nativemobile/ctabar.js.map +1 -0
  94. package/lib/js/ui/components/nativemobile/playnext.d.ts +10 -0
  95. package/lib/js/ui/components/nativemobile/playnext.js +16 -0
  96. package/lib/js/ui/components/nativemobile/playnext.js.map +1 -0
  97. package/lib/js/ui/components/nativemobile/topbar.d.ts +3 -0
  98. package/lib/js/ui/components/nativemobile/topbar.js +21 -0
  99. package/lib/js/ui/components/nativemobile/topbar.js.map +1 -0
  100. package/lib/js/ui/components/playnext.d.ts +11 -0
  101. package/lib/js/ui/components/playnext.js +11 -0
  102. package/lib/js/ui/components/playnext.js.map +1 -0
  103. package/lib/js/ui/components/settingspanel.d.ts +4 -0
  104. package/lib/js/ui/components/settingspanel.js +130 -0
  105. package/lib/js/ui/components/settingspanel.js.map +1 -0
  106. package/lib/js/ui/components/shared/playnextscreen.d.ts +2 -0
  107. package/lib/js/ui/components/shared/playnextscreen.js +18 -0
  108. package/lib/js/ui/components/shared/playnextscreen.js.map +1 -0
  109. package/lib/js/ui/components/titlebar.d.ts +3 -0
  110. package/lib/js/ui/components/titlebar.js +9 -0
  111. package/lib/js/ui/components/titlebar.js.map +1 -0
  112. package/lib/js/ui/components/topbar.d.ts +2 -0
  113. package/lib/js/ui/components/topbar.js +19 -0
  114. package/lib/js/ui/components/topbar.js.map +1 -0
  115. package/lib/js/ui/handlers/listboxhandlers.d.ts +5 -0
  116. package/lib/js/ui/handlers/listboxhandlers.js +41 -0
  117. package/lib/js/ui/handlers/listboxhandlers.js.map +1 -0
  118. package/lib/js/ui/handlers/nicamhandler.d.ts +2 -0
  119. package/lib/js/ui/handlers/nicamhandler.js +32 -0
  120. package/lib/js/ui/handlers/nicamhandler.js.map +1 -0
  121. package/lib/js/ui/handlers/nicamhandler.test.d.ts +1 -0
  122. package/lib/js/ui/handlers/nicamhandler.test.js +34 -0
  123. package/lib/js/ui/handlers/nicamhandler.test.js.map +1 -0
  124. package/lib/js/ui/handlers/playnexthandlers.d.ts +0 -0
  125. package/lib/js/ui/handlers/playnexthandlers.js +2 -0
  126. package/lib/js/ui/handlers/playnexthandlers.js.map +1 -0
  127. package/lib/js/ui/handlers/timecontrolhandlers.d.ts +3 -0
  128. package/lib/js/ui/handlers/timecontrolhandlers.js +23 -0
  129. package/lib/js/ui/handlers/timecontrolhandlers.js.map +1 -0
  130. package/lib/js/ui/nativemobileui.d.ts +6 -0
  131. package/lib/js/ui/nativemobileui.js +49 -0
  132. package/lib/js/ui/nativemobileui.js.map +1 -0
  133. package/lib/js/ui/uicontainer.d.ts +3 -0
  134. package/lib/js/ui/uicontainer.js +61 -0
  135. package/lib/js/ui/uicontainer.js.map +1 -0
  136. package/lib/js/utilities/localizationconfig.d.ts +6 -0
  137. package/lib/js/utilities/localizationconfig.js +8 -0
  138. package/lib/js/utilities/localizationconfig.js.map +1 -0
  139. package/lib/js/utilities/printversion.d.ts +1 -0
  140. package/lib/js/utilities/printversion.js +28 -0
  141. package/lib/js/utilities/printversion.js.map +1 -0
  142. package/lib/js/utilities/utilities.d.ts +60 -0
  143. package/lib/js/utilities/utilities.js +110 -0
  144. package/lib/js/utilities/utilities.js.map +1 -0
  145. package/lib/lang/nl.json +72 -0
  146. package/lib/npoplayer.d.ts +45 -0
  147. package/lib/npoplayer.js +518 -0
  148. package/lib/npoplayer.js.map +1 -0
  149. package/lib/npoplayer.test.d.ts +1 -0
  150. package/lib/npoplayer.test.js +12 -0
  151. package/lib/npoplayer.test.js.map +1 -0
  152. package/lib/package.json +88 -0
  153. package/lib/src/js/ads/ster.d.ts +4 -0
  154. package/lib/src/js/ads/ster.test.d.ts +1 -0
  155. package/lib/src/js/api/getstreamobject.d.ts +3 -0
  156. package/lib/src/js/cdnproviders.d.ts +1 -0
  157. package/lib/src/js/checks/safari.d.ts +1 -0
  158. package/lib/src/js/checks/safari.test.d.ts +1 -0
  159. package/lib/src/js/drm/verifydrm.d.ts +4 -0
  160. package/lib/src/js/drm/verifydrm.test.d.ts +1 -0
  161. package/lib/src/js/fragments/setfragments.d.ts +3 -0
  162. package/lib/src/js/playeractions/customerrors.test.d.ts +1 -0
  163. package/lib/src/js/playeractions/handlers/customerrors.d.ts +50 -0
  164. package/lib/src/js/playeractions/handlers/error.d.ts +3 -0
  165. package/lib/src/js/playeractions/handlers/error.test.d.ts +1 -0
  166. package/lib/src/js/playeractions/handlers/handleoffsets.d.ts +6 -0
  167. package/lib/src/js/playeractions/handlers/handleoffsets.test.d.ts +1 -0
  168. package/lib/src/js/playeractions/handlers/resolvekeypress.d.ts +3 -0
  169. package/lib/src/js/playeractions/playeractions.d.ts +3 -0
  170. package/lib/src/js/tracking/handlers/eventbinding.d.ts +10 -0
  171. package/lib/src/js/tracking/handlers/eventlogging.d.ts +11 -0
  172. package/lib/src/js/tracking/handlers/playertrackerinit.d.ts +13 -0
  173. package/lib/src/js/tracking/handlers/playertrackerstart.d.ts +8 -0
  174. package/lib/src/js/tracking/playertracker.d.ts +4 -0
  175. package/lib/src/js/ui/components/adbutton.d.ts +7 -0
  176. package/lib/src/js/ui/components/adlabel.d.ts +7 -0
  177. package/lib/src/js/ui/components/buttons.d.ts +30 -0
  178. package/lib/src/js/ui/components/controlbar.d.ts +3 -0
  179. package/lib/src/js/ui/components/ctabar.d.ts +9 -0
  180. package/lib/src/js/ui/components/nativemobile/buttons.d.ts +13 -0
  181. package/lib/src/js/ui/components/nativemobile/controlbar.d.ts +2 -0
  182. package/lib/src/js/ui/components/nativemobile/ctabar.d.ts +10 -0
  183. package/lib/src/js/ui/components/nativemobile/playnext.d.ts +10 -0
  184. package/lib/src/js/ui/components/nativemobile/topbar.d.ts +3 -0
  185. package/lib/src/js/ui/components/playnext.d.ts +11 -0
  186. package/lib/src/js/ui/components/settingspanel.d.ts +4 -0
  187. package/lib/src/js/ui/components/shared/playnextscreen.d.ts +2 -0
  188. package/lib/src/js/ui/components/titlebar.d.ts +3 -0
  189. package/lib/src/js/ui/components/topbar.d.ts +2 -0
  190. package/lib/src/js/ui/handlers/listboxhandlers.d.ts +5 -0
  191. package/lib/src/js/ui/handlers/nicamhandler.d.ts +2 -0
  192. package/lib/src/js/ui/handlers/nicamhandler.test.d.ts +1 -0
  193. package/lib/src/js/ui/handlers/playnexthandlers.d.ts +0 -0
  194. package/lib/src/js/ui/handlers/timecontrolhandlers.d.ts +3 -0
  195. package/lib/src/js/ui/nativemobileui.d.ts +6 -0
  196. package/lib/src/js/ui/uicontainer.d.ts +3 -0
  197. package/lib/src/js/utilities/localizationconfig.d.ts +6 -0
  198. package/lib/src/js/utilities/printversion.d.ts +1 -0
  199. package/lib/src/js/utilities/utilities.d.ts +60 -0
  200. package/lib/src/npoplayer.d.ts +45 -0
  201. package/lib/src/npoplayer.test.d.ts +1 -0
  202. package/lib/src/types/classes.d.ts +4 -0
  203. package/lib/src/types/interfaces.d.ts +105 -0
  204. package/lib/types/classes.d.ts +4 -0
  205. package/lib/types/classes.js +4 -0
  206. package/lib/types/classes.js.map +1 -0
  207. package/lib/types/interfaces.d.ts +105 -0
  208. package/lib/types/interfaces.js +6 -0
  209. package/lib/types/interfaces.js.map +1 -0
  210. package/package.json +88 -0
  211. package/src/scss/components/_advert.scss +74 -0
  212. package/src/scss/components/_buffering.scss +6 -0
  213. package/src/scss/components/_container.scss +8 -0
  214. package/src/scss/components/_controlbars.scss +36 -0
  215. package/src/scss/components/_error.scss +26 -0
  216. package/src/scss/components/_fonts.scss +19 -0
  217. package/src/scss/components/_icons.scss +241 -0
  218. package/src/scss/components/_nicam.scss +61 -0
  219. package/src/scss/components/_playnext.scss +52 -0
  220. package/src/scss/components/_seekbar.scss +116 -0
  221. package/src/scss/components/_settingspanel.scss +196 -0
  222. package/src/scss/components/_subtitles.scss +32 -0
  223. package/src/scss/components/_textbuttons.scss +42 -0
  224. package/src/scss/components/_volumeslider.scss +23 -0
  225. package/src/scss/npoplayer.css +1238 -0
  226. package/src/scss/npoplayer.scss +37 -0
  227. package/src/scss/variants/_player-base.scss +64 -0
  228. package/src/scss/variants/_player-large.scss +56 -0
  229. package/src/scss/variants/_player-medium.scss +57 -0
  230. package/src/scss/variants/_player-small.scss +234 -0
  231. package/src/scss/vars/_colors.scss +24 -0
  232. package/src/scss/vars/_fonts.scss +20 -0
  233. package/src/scss/vars/_icons.scss +37 -0
@@ -0,0 +1,518 @@
1
+ import { HttpResponseType, Player, PlayerEvent, } from 'bitmovin-player';
2
+ import AdsModuleBM from 'bitmovin-player/modules/bitmovinplayer-advertising-bitmovin';
3
+ import { logEvent, initPlayerTracker, startPlayerTracker } from './js/tracking/playertracker';
4
+ import { nativeMobileUIContainer } from './js/ui/nativemobileui';
5
+ import { hidePlayNextScreen, showPlayNextScreen } from './js/ui/components/shared/playnextscreen';
6
+ import { validateStreamLength, getModuleExport } from './js/utilities/utilities';
7
+ import { verifyDRM } from './js/drm/verifydrm';
8
+ import { setFragments } from './js/fragments/setfragments';
9
+ import * as playerAction from './js/playeractions/playeractions';
10
+ import { isSafari } from './js/checks/safari';
11
+ import { getStreamObject } from './js/api/getstreamobject';
12
+ import { printVersion } from './js/utilities/printversion';
13
+ import { UIManager } from 'bitmovin-player-ui';
14
+ import { customSpecificErrorMessageOverlayConfig } from './js/playeractions/handlers/customerrors';
15
+ import { createUIContainer } from './js/ui/uicontainer';
16
+ import { localizationConfig } from './js/utilities/localizationconfig';
17
+ import { processNicam } from './js/ui/handlers/nicamhandler';
18
+ import { npoCdnProviders } from './js/cdnproviders';
19
+ import { LogEmitter } from './types/classes';
20
+ import { handlePreRolls } from './js/ads/ster';
21
+ import pkg from '../package.json';
22
+ export default class NpoPlayer {
23
+ constructor(_container, _playerConfig, _npotag, _npotaginstance) {
24
+ this.playerConfig = _playerConfig;
25
+ this.sourceConfig = {};
26
+ this.streamObject = {
27
+ stream: { drmType: '', streamProfile: '', streamURL: '' },
28
+ metadata: { title: '', description: '' },
29
+ assets: { scrubbingThumbnail: '', subtitles: [] }
30
+ };
31
+ this.container = _container;
32
+ this.player = null;
33
+ this.uiManager = null;
34
+ this.fragment = null;
35
+ this.streamTracker = null;
36
+ this.streamOptions = {};
37
+ this.jwt = '';
38
+ this.apiPayload = { baseURL: '', jwt: '', data: {} };
39
+ this.adBreakActive = false;
40
+ this.version = pkg.version;
41
+ initPlayerTracker(this, _npotag, _npotaginstance);
42
+ this.logEmitter = new LogEmitter();
43
+ this.uiComponents = {};
44
+ this.initPlayer(this.container, _playerConfig);
45
+ }
46
+ initPlayer(_container, playerConfig) {
47
+ // Upon initiation print player version in console
48
+ printVersion(this.version);
49
+ if (isSafari(this.isFairPlayDrmSupported())) {
50
+ // Disable autoplay on safari
51
+ playerConfig.playback = {
52
+ autoplay: false
53
+ };
54
+ // Potential fix for DRM issues on safari
55
+ playerConfig.tweaks = {
56
+ fairplay_ignore_duplicate_init_data_key_errors: true
57
+ };
58
+ }
59
+ playerConfig.ui = false;
60
+ // Chromecast configuration
61
+ playerConfig.remotecontrol = {
62
+ type: 'googlecast',
63
+ receiverApplicationId: 'CC38EB17',
64
+ receiverVersion: 'v3',
65
+ messageNamespace: 'urn:x-cast:com.bitmovin.player.caf'
66
+ };
67
+ //creating this node enables the PlayerAdvertisingAPI
68
+ playerConfig.advertising = {};
69
+ //add the bitmovin ads module for more flexibility in ad handling
70
+ Player.addModule(getModuleExport(AdsModuleBM));
71
+ this.player = new Player(_container, playerConfig);
72
+ this.createUIManager(this.player, 'default');
73
+ this.container.addEventListener('keydown', e => {
74
+ this.keyPress(e);
75
+ }, true);
76
+ }
77
+ async loadStream(_jwt, options = {}) {
78
+ if (this.player == null) {
79
+ console.error('Er is nog geen player geladen.');
80
+ return;
81
+ }
82
+ if (this.adBreakActive) {
83
+ console.error('Je kunt geen nieuwe content laden tijdens een reclameblok.');
84
+ return;
85
+ }
86
+ // Set jwt on class to make it accesible for DRM fallback logic
87
+ this.jwt = _jwt;
88
+ //StreamAPI logic
89
+ const profile = await this.decideProfile(options?.preferredDRM ?? '');
90
+ const defaultEndpoint = 'https://prod.npoplayer.nl/';
91
+ const endpoint = options?.endpoint ?? defaultEndpoint;
92
+ const payload = {
93
+ baseURL: endpoint,
94
+ jwt: _jwt,
95
+ data: { profileName: profile.tech, drmType: profile.drm }
96
+ };
97
+ let _streamObject;
98
+ try {
99
+ _streamObject = await getStreamObject(this, payload);
100
+ this.streamObject = _streamObject;
101
+ }
102
+ catch (err) {
103
+ this.doError('Het is niet gelukt de stream op te halen. \n' + err);
104
+ this.player?.pause();
105
+ return;
106
+ }
107
+ //if the streamobject is undefined abort the function early
108
+ if (this.streamObject?.stream == undefined)
109
+ return;
110
+ // Use data from options and/or streamobject response to make a source config
111
+ const drmType = this.streamObject.stream.drmType ?? null;
112
+ this.sourceConfig = this.processSourceConfig(options.sourceConfig ?? {}, this.streamObject, drmType && drmType.length > 0 ? profile.drm : null);
113
+ // verify that DRM is not yet expired
114
+ await verifyDRM(this, this.player, payload);
115
+ // set nicam kijkwijzer icons
116
+ processNicam(this.streamObject, this.container.id);
117
+ const isAutoplayEnabled = this.player.getConfig()?.playback?.autoplay ?? false;
118
+ if (isAutoplayEnabled && this.streamObject.stream.streamProfile === 'progressive') {
119
+ this.player.on(PlayerEvent.SourceLoaded, () => {
120
+ this.player?.play();
121
+ });
122
+ }
123
+ // Settings buttons based on response
124
+ const checkSubtitles = () => {
125
+ this.player?.off(PlayerEvent.Ready, checkSubtitles);
126
+ const subtitles = this.player?.subtitles?.list();
127
+ if (subtitles != null && subtitles.length > 0 && this.uiComponents.subtitlesButton) {
128
+ this.uiComponents.subtitlesButton.show();
129
+ }
130
+ else if (this.uiComponents.subtitlesButton)
131
+ this.uiComponents.subtitlesButton.hide();
132
+ };
133
+ this.player.on(PlayerEvent.Ready, checkSubtitles);
134
+ if (this.player.getAvailableVideoQualities().length > 0 && this.uiComponents.qualityButton) {
135
+ this.uiComponents.qualityButton.show();
136
+ }
137
+ // Start NPO Tag PlayerTracker
138
+ startPlayerTracker(this, validateStreamLength(this.streamObject.metadata.duration), this.version);
139
+ logEvent(this, 'load');
140
+ const addFragments = (section) => {
141
+ void this.setFragments({ sections: [section] });
142
+ };
143
+ if (_streamObject.segment != null) {
144
+ const seg = _streamObject.segment;
145
+ const section = {
146
+ start: seg.inpoint,
147
+ end: seg.outpoint,
148
+ title: 'Test'
149
+ };
150
+ this.player.off(PlayerEvent.Ready, () => addFragments(section));
151
+ this.player.on(PlayerEvent.Ready, () => addFragments(section));
152
+ }
153
+ // Timeshift to offset if offset is present in streamoptions
154
+ if (options?.startOffset != null)
155
+ playerAction.handleStartOffset(this.player, options.startOffset);
156
+ // set listeners for live offset and timestamps
157
+ const setLiveOffsetListener = function () {
158
+ if (this.player !== null)
159
+ this.player.off(PlayerEvent.SourceLoaded, setLiveOffsetListener);
160
+ playerAction.handleLiveOffsetLogic(this, this.player, options);
161
+ }.bind(this);
162
+ this.player.on(PlayerEvent.SourceLoaded, setLiveOffsetListener);
163
+ // Load fragments through options
164
+ if (options?.fragments != null) {
165
+ const fragments = options.fragments;
166
+ this.player.off(PlayerEvent.Ready, () => {
167
+ void this.setFragments(fragments);
168
+ });
169
+ this.player.on(PlayerEvent.Ready, () => {
170
+ void this.setFragments(fragments);
171
+ });
172
+ }
173
+ // set title in seekbar thumbnail
174
+ if (this.sourceConfig.thumbnailTrack && _streamObject.segment === undefined && options?.fragments === undefined) {
175
+ const element = document.querySelector('.bmpui-seekbar-label-title');
176
+ if (element !== null) {
177
+ element.textContent = this.sourceConfig.title || '';
178
+ }
179
+ }
180
+ // If the stream options contain a PRID for the next episode show the playnext screen once playback is finished
181
+ // Test this behaviour by uncommenting the following line, mind that the api does not support this feature yet:
182
+ // options.prid = 'POW_04922615'
183
+ this.player.off(PlayerEvent.PlaybackFinished, () => {
184
+ this.showPlayNextScreen();
185
+ });
186
+ if (options?.prid != null) {
187
+ this.player.on(PlayerEvent.PlaybackFinished, () => {
188
+ this.showPlayNextScreen();
189
+ });
190
+ }
191
+ handlePreRolls(this.player, this.streamObject, this);
192
+ }
193
+ async createUIManager(player, variant) {
194
+ const uiConfig = {
195
+ errorMessages: customSpecificErrorMessageOverlayConfig,
196
+ disableAutoHideWhenHovered: true
197
+ };
198
+ this.uiManager = new UIManager(player, createUIContainer(this, variant), uiConfig);
199
+ UIManager.setLocalizationConfig(localizationConfig);
200
+ }
201
+ async setFragments(fragments) {
202
+ void setFragments(this, fragments);
203
+ }
204
+ async decideProfile(preferredDRM = '') {
205
+ let bestWithDRM = '';
206
+ let bestWithoutDRM = '';
207
+ let bestDRM = '';
208
+ let supportedTech;
209
+ let supportedDRM;
210
+ if (this.player == null) {
211
+ console.log('No player detected');
212
+ return { tech: '', drm: '' };
213
+ }
214
+ else {
215
+ supportedTech = this.player.getSupportedTech();
216
+ supportedDRM = await this.player.getSupportedDRM();
217
+ }
218
+ supportedTech.forEach(function (tech) {
219
+ if (bestWithoutDRM === '')
220
+ bestWithoutDRM = tech.streaming;
221
+ if (bestWithDRM !== '')
222
+ return;
223
+ // DASH
224
+ if (tech.streaming === 'dash') {
225
+ supportedDRM.forEach(function (drm) {
226
+ if (bestDRM !== '' &&
227
+ (preferredDRM === '' || preferredDRM.length > 0)) {
228
+ return;
229
+ }
230
+ if (['com.widevine.alpha'].includes(drm)) {
231
+ bestDRM = 'widevine';
232
+ }
233
+ if ([
234
+ 'com.microsoft.playready',
235
+ 'com.microsoft.playready.recommendation'
236
+ ].includes(drm)) {
237
+ bestDRM = 'playready';
238
+ }
239
+ });
240
+ if (bestDRM !== '')
241
+ bestWithDRM = 'dash';
242
+ }
243
+ // HLS
244
+ if (tech.streaming === 'hls') {
245
+ if (bestDRM !== '' &&
246
+ (preferredDRM === '' || bestDRM === preferredDRM)) {
247
+ return;
248
+ }
249
+ supportedDRM.forEach(function (drm) {
250
+ if (['com.apple.fps.1_0', 'com.apple.fps.2_0'].includes(drm)) {
251
+ bestDRM = 'fairplay';
252
+ }
253
+ });
254
+ if (bestDRM !== '')
255
+ bestWithDRM = 'hls';
256
+ }
257
+ });
258
+ if (bestWithDRM !== '')
259
+ return { tech: bestWithDRM, drm: bestDRM };
260
+ return { tech: bestWithoutDRM, drm: bestDRM };
261
+ }
262
+ processSourceConfig(_sourceConfig = {}, _streamObject, drm = null) {
263
+ const sourceConfig = {};
264
+ sourceConfig.title =
265
+ _sourceConfig.title ?? _streamObject.metadata.title ?? '';
266
+ sourceConfig.description =
267
+ _sourceConfig.description ??
268
+ _streamObject.metadata.description ??
269
+ '';
270
+ sourceConfig.poster =
271
+ _sourceConfig.poster ?? _streamObject.metadata.poster ?? '';
272
+ sourceConfig.metadata = {
273
+ title: sourceConfig.title,
274
+ description: sourceConfig.description,
275
+ poster: sourceConfig.poster
276
+ };
277
+ // strict-boolean-expressions is disabled here because I did not write this code and
278
+ // I do not know if _sourceConfig.subtitleTracks and _streamObject.assets.subtitles can both be null at once
279
+ sourceConfig.subtitleTracks =
280
+ _sourceConfig.subtitleTracks ??
281
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
282
+ (_streamObject.assets.subtitles
283
+ ? _streamObject.assets.subtitles.map((subtitle, i) => ({
284
+ url: subtitle.location,
285
+ lang: subtitle.iso,
286
+ label: subtitle.name,
287
+ kind: 'subtitle',
288
+ id: 'sub' + i
289
+ }))
290
+ : undefined);
291
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
292
+ sourceConfig.thumbnailTrack =
293
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
294
+ _sourceConfig.thumbnailTrack ??
295
+ _streamObject.assets.scrubbingThumbnail
296
+ ? { url: _streamObject.assets.scrubbingThumbnail }
297
+ : undefined;
298
+ sourceConfig.options = _sourceConfig.options; // Nog nodig?
299
+ // Stream type
300
+ const streamProfile = _streamObject.stream.streamProfile;
301
+ const streamURL = _streamObject.stream.streamURL;
302
+ const hlsConfig = _sourceConfig.hls === '' ? undefined : _sourceConfig.hls;
303
+ const dashConfig = _sourceConfig.dash === '' ? undefined : _sourceConfig.dash;
304
+ const progressiveConfig = _sourceConfig.progressive === '' ? undefined : _sourceConfig.progressive;
305
+ if (streamProfile === 'hls') {
306
+ sourceConfig.hls = hlsConfig ?? streamURL ?? '';
307
+ sourceConfig.dash = '';
308
+ sourceConfig.progressive = '';
309
+ }
310
+ else if (streamProfile === 'dash') {
311
+ sourceConfig.hls = '';
312
+ sourceConfig.dash = dashConfig ?? streamURL ?? '';
313
+ sourceConfig.progressive = '';
314
+ }
315
+ else if (streamProfile === 'progressive') {
316
+ sourceConfig.hls = '';
317
+ sourceConfig.dash = '';
318
+ sourceConfig.progressive = progressiveConfig ?? streamURL ?? '';
319
+ }
320
+ // DRM
321
+ const npoDrmGateway = 'https://npo-drm-gateway.samgcloud.nepworldwide.nl/authentication?custom_data=';
322
+ if (drm === 'fairplay') {
323
+ sourceConfig.drm = {
324
+ fairplay: {
325
+ certificateURL: 'https://fairplay.npo.nl/certificate/fairplay.cer',
326
+ LA_URL: npoDrmGateway + _streamObject.stream.drmToken,
327
+ prepareMessage: event => {
328
+ return new Uint8Array(event.message);
329
+ },
330
+ prepareContentId: url => {
331
+ const link = document.createElement('a');
332
+ const trimmedUrl = url
333
+ .split('')
334
+ .filter(char => !(char.codePointAt(0) == null))
335
+ .join('');
336
+ link.href = trimmedUrl.replace('T', '');
337
+ return link.hostname;
338
+ },
339
+ prepareLicense: license => {
340
+ let binary = '';
341
+ const bytes = new Uint8Array(license);
342
+ const len = bytes.byteLength;
343
+ for (let i = 0; i < len; i++) {
344
+ binary += String.fromCharCode(bytes[i]);
345
+ }
346
+ return window.btoa(binary);
347
+ },
348
+ licenseResponseType: HttpResponseType.ARRAYBUFFER,
349
+ useUint16InitData: true
350
+ }
351
+ };
352
+ }
353
+ if (drm === 'widevine') {
354
+ sourceConfig.drm = {
355
+ widevine: {
356
+ LA_URL: npoDrmGateway + _streamObject.stream.drmToken,
357
+ audioRobustness: 'SW_SECURE_CRYPTO',
358
+ videoRobustness: 'SW_SECURE_CRYPTO'
359
+ }
360
+ };
361
+ }
362
+ if (drm === 'playready') {
363
+ sourceConfig.drm = {
364
+ playready: {
365
+ LA_URL: npoDrmGateway + _streamObject.stream.drmToken
366
+ }
367
+ };
368
+ }
369
+ // CDN
370
+ const streamSource = _streamObject.stream.streamURL;
371
+ let cdnString = streamSource;
372
+ npoCdnProviders.forEach(function (value, key) {
373
+ if (streamSource.includes(key)) {
374
+ cdnString = value;
375
+ }
376
+ });
377
+ if (sourceConfig.analytics == null)
378
+ sourceConfig.analytics = {};
379
+ sourceConfig.analytics.cdnProvider = cdnString;
380
+ sourceConfig.analytics.videoId = _streamObject.metadata.prid;
381
+ sourceConfig.analytics.title = _streamObject.metadata.title;
382
+ sourceConfig.analytics = {
383
+ ...sourceConfig.analytics,
384
+ ..._sourceConfig.analytics
385
+ };
386
+ // Labeling
387
+ const getSubtitleLabels = function (data) {
388
+ if (data.label === 'nl') {
389
+ return 'Nederlands';
390
+ }
391
+ return data.label;
392
+ };
393
+ const getQualityLabels = function (data) {
394
+ return data.height + 'p';
395
+ };
396
+ if (sourceConfig.progressive !== '') {
397
+ sourceConfig.labeling = {
398
+ dash: {
399
+ qualities: getQualityLabels,
400
+ subtitles: getSubtitleLabels
401
+ },
402
+ hls: {
403
+ qualities: getQualityLabels,
404
+ subtitles: getSubtitleLabels
405
+ }
406
+ };
407
+ }
408
+ return sourceConfig;
409
+ }
410
+ doError(input) {
411
+ if (this.player == null)
412
+ return;
413
+ playerAction.handlePlayerError(this.player, this.uiComponents, input);
414
+ }
415
+ // Hotkeys
416
+ keyPress(e) {
417
+ if (['Space', 'ArrowUp', 'ArrowDown'].includes(e.code))
418
+ e.preventDefault();
419
+ if (!this.player)
420
+ return;
421
+ playerAction.resolveKeyPress(this.player, this, e);
422
+ }
423
+ setVolume(volume) {
424
+ this.player?.setVolume(volume);
425
+ }
426
+ increaseVolume() {
427
+ if (this.player == null)
428
+ return;
429
+ this.setVolume(this.player.getVolume() + 10);
430
+ }
431
+ decreaseVolume() {
432
+ if (this.player == null)
433
+ return;
434
+ this.setVolume(this.player.getVolume() - 10);
435
+ }
436
+ goForward(seconds) {
437
+ if (this.player?.isLive() ?? false) {
438
+ this.player?.timeShift(Math.min(0, this.player.getTimeShift() + seconds));
439
+ }
440
+ else {
441
+ this.player?.seek(this.player.getCurrentTime() + seconds);
442
+ }
443
+ }
444
+ goBackwards(seconds) {
445
+ if (this.player?.isLive() ?? false) {
446
+ this.player?.timeShift(this.player.getTimeShift() - seconds);
447
+ }
448
+ else {
449
+ this.player?.seek(this.player.getCurrentTime() - seconds);
450
+ }
451
+ }
452
+ watchFromStart() {
453
+ if (this.player == null)
454
+ return;
455
+ playerAction.shiftToProgramStart(this.player, this.streamOptions.liveProgramTime);
456
+ }
457
+ // Show the "next episode is playing soon..." screen if a PRID is supplied in player options
458
+ showPlayNextScreen() {
459
+ showPlayNextScreen(this.doPlayNext.bind(this));
460
+ }
461
+ hidePlayNextScreen() {
462
+ hidePlayNextScreen();
463
+ }
464
+ doPlayNext() {
465
+ this.hidePlayNextScreen();
466
+ void this.loadStream(this.jwt, this.streamOptions);
467
+ }
468
+ destroy() {
469
+ try {
470
+ if (this.npoTag != null) {
471
+ clearInterval(this.npoTag.heartbeatInterval);
472
+ }
473
+ this.uiManager?.release();
474
+ void this.player?.destroy();
475
+ return true;
476
+ }
477
+ catch (e) {
478
+ console.log('NPO Player is al destroyed', e);
479
+ return false;
480
+ }
481
+ }
482
+ unload() {
483
+ try {
484
+ if (this.npoTag != null) {
485
+ clearInterval(this.npoTag.heartbeatInterval);
486
+ }
487
+ void this.player?.unload();
488
+ return true;
489
+ }
490
+ catch (e) {
491
+ console.log('NPO Player is al unloaded', e);
492
+ return false;
493
+ }
494
+ }
495
+ isFairPlayDrmSupported(ks) {
496
+ let isSupported = false;
497
+ ['com.apple.fps.1_0', 'com.apple.fps.2_0'].forEach(ks => {
498
+ if (typeof window.WebKitMediaKeys === 'function' &&
499
+ Boolean(window.WebKitMediaKeys?.isTypeSupported(ks, 'video/mp4'))) {
500
+ isSupported = true;
501
+ }
502
+ });
503
+ return isSupported;
504
+ }
505
+ }
506
+ window.bitmovin.playerui = function () { };
507
+ window.bitmovin.playerui.UIFactory = {
508
+ buildDefaultSmallScreenUI: function (player, config = {}) {
509
+ const uiConfig = {
510
+ ...config,
511
+ errorMessages: customSpecificErrorMessageOverlayConfig,
512
+ disableAutoHideWhenHovered: true
513
+ };
514
+ UIManager.setLocalizationConfig(localizationConfig);
515
+ return new UIManager(player, nativeMobileUIContainer(player), uiConfig);
516
+ }
517
+ };
518
+ //# sourceMappingURL=npoplayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npoplayer.js","sourceRoot":"","sources":["../../src/npoplayer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
1
+ import NpoPlayer from "./npoplayer";
2
+ const div = document.createElement("div");
3
+ const testPlayerConfig = {
4
+ key: "D634EA2C-BFE7-4BB6-9EAA-CDCC7B1EDFFA",
5
+ };
6
+ let player;
7
+ test("player init", async () => {
8
+ player = new NpoPlayer(div, testPlayerConfig);
9
+ expect(player).toBeInstanceOf(NpoPlayer);
10
+ expect(player.playerConfig.key).toBe(testPlayerConfig.key);
11
+ });
12
+ //# sourceMappingURL=npoplayer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npoplayer.test.js","sourceRoot":"","sources":["../../src/npoplayer.test.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,MAAM,GAAG,GAAgB,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAEvD,MAAM,gBAAgB,GAAiB;IACnC,GAAG,EAAE,sCAAsC;CAC9C,CAAC;AAEF,IAAI,MAAiB,CAAC;AAEtB,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;IAC3B,MAAM,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAE9C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC"}
@@ -0,0 +1,88 @@
1
+ {
2
+ "name": "@npo/player",
3
+ "version": "1.9.0",
4
+ "description": "NPO Player",
5
+ "author": "Publieke Omroep <player@npo.nl>",
6
+ "contributors": [
7
+ "Tim Haerkens",
8
+ "Sven van der Leest",
9
+ "Arjan Kruithof"
10
+ ],
11
+ "engines": {
12
+ "node": "^18.16.0"
13
+ },
14
+ "license": "ISC",
15
+ "main": "npoplayer",
16
+ "types": "npoplayer.d.ts",
17
+ "scripts": {
18
+ "build": "webpack --hot",
19
+ "build:scss": "npm run build:web-styles && npm run build:web-styles && npm run build:mobile-styles-min && npm run build:mobile-styles && cp src/scss/*.css dist",
20
+ "build:web-styles": "sass --no-source-map src/scss/npoplayer.scss src/scss/npoplayer.css",
21
+ "build:web-styles-min": "sass --no-source-map --style=compressed src/scss/npoplayer.scss src/scss/npoplayer.min.css",
22
+ "build:mobile-styles": "node-sass --no-source-map src/scss/npoplayer-mobile.scss src/scss/npoplayer-mobile.css",
23
+ "build:mobile-styles-min": "sass --no-source-map --style=compressed src/scss/npoplayer-mobile.scss src/scss/npoplayer-mobile.min.css",
24
+ "lint": "eslint src --fix",
25
+ "bundle": "npm run lint && ts-node build.ts && webpack && npm run build:scss",
26
+ "build:ts": "ts-node build.ts",
27
+ "test": "jest",
28
+ "test:ci": "node_modules/.bin/jest",
29
+ "version:dev": "npm version prerelease --preid=dev --no-git-tag-version"
30
+ },
31
+ "files": [
32
+ "LICENSE",
33
+ "README.md",
34
+ "CHANGELOG.md",
35
+ "lib",
36
+ "src/scss/components",
37
+ "src/scss/variants",
38
+ "src/scss/vars",
39
+ "src/scss/npoplayer.scss",
40
+ "src/scss/npoplayer.css"
41
+ ],
42
+ "devDependencies": {
43
+ "@babel/core": "^7.20.12",
44
+ "@babel/preset-env": "^7.20.2",
45
+ "@babel/preset-typescript": "^7.18.6",
46
+ "@types/fs-extra": "^11.0.1",
47
+ "@types/jest": "^29.4.0",
48
+ "@typescript-eslint/eslint-plugin": "^5.58.0",
49
+ "@typescript-eslint/parser": "^5.58.0",
50
+ "babel-jest": "^28.1.3",
51
+ "babel-loader": "^8.3.0",
52
+ "css-loader": "^6.7.3",
53
+ "eslint": "^8.38.0",
54
+ "eslint-config-standard-with-typescript": "^34.0.1",
55
+ "eslint-plugin-import": "^2.27.5",
56
+ "eslint-plugin-n": "^15.7.0",
57
+ "eslint-plugin-promise": "^6.1.1",
58
+ "eslint-plugin-sonarjs": "^0.19.0",
59
+ "fs-extra": "^11.1.1",
60
+ "jest": "^28.1.3",
61
+ "jest-environment-jsdom": "^29.4.1",
62
+ "jest-sonar-reporter": "2.0.0",
63
+ "jest-transform-css": "^6.0.1",
64
+ "mini-css-extract-plugin": "^2.7.2",
65
+ "node-fetch": "^3.3.0",
66
+ "node-sass": "^7.0.3",
67
+ "sass": "^1.58.0",
68
+ "sass-loader": "^12.6.0",
69
+ "style-loader": "^3.3.1",
70
+ "ts-jest": "^28.0.8",
71
+ "ts-loader": "^9.4.2",
72
+ "ts-node": "^10.9.1",
73
+ "typescript": "^4.9.5",
74
+ "webpack": "^5.75.0",
75
+ "webpack-cli": "^4.10.0",
76
+ "webpack-dev-server": "^4.11.1"
77
+ },
78
+ "dependencies": {
79
+ "@npotag/tag": "^2.0.0",
80
+ "bitmovin-player": "^8.125.0",
81
+ "bitmovin-player-ui": "^3.48.0"
82
+ },
83
+ "keywords": [
84
+ "video",
85
+ "player",
86
+ "stream"
87
+ ]
88
+ }
@@ -0,0 +1,4 @@
1
+ import { PlayerAPI } from "bitmovin-player";
2
+ import NpoPlayer from "npoplayer";
3
+ import { StreamObject } from "types/interfaces";
4
+ export declare function handlePreRolls(playerapi: PlayerAPI, streamObject: StreamObject, npoplayer: NpoPlayer): Promise<void>;
@@ -0,0 +1 @@
1
+ export {};