@stormstreaming/stormstreamer 0.9.0-beta.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 (81) hide show
  1. package/README.md +31 -0
  2. package/dist/amd/index.js +3448 -0
  3. package/dist/cjs/index.js +14 -0
  4. package/dist/esm/index.js +14 -0
  5. package/dist/iife/index.js +14 -0
  6. package/dist/types/StormStreamer.d.ts +75 -0
  7. package/dist/types/config/AudioData.d.ts +16 -0
  8. package/dist/types/config/ConfigManager.d.ts +18 -0
  9. package/dist/types/config/DebugData.d.ts +33 -0
  10. package/dist/types/config/IConfig.d.ts +4 -0
  11. package/dist/types/config/SettingsData.d.ts +37 -0
  12. package/dist/types/config/StorageData.d.ts +16 -0
  13. package/dist/types/config/StreamData.d.ts +25 -0
  14. package/dist/types/config/VideoData.d.ts +40 -0
  15. package/dist/types/config/enum/LogType.d.ts +7 -0
  16. package/dist/types/config/enum/ProtocolType.d.ts +7 -0
  17. package/dist/types/config/enum/ScalingType.d.ts +6 -0
  18. package/dist/types/config/enum/SecurityType.d.ts +4 -0
  19. package/dist/types/config/enum/SizeCalculationType.d.ts +5 -0
  20. package/dist/types/events/EventDispatcher.d.ts +15 -0
  21. package/dist/types/events/StormStreamerEvent.d.ts +128 -0
  22. package/dist/types/events/StormStreamerListener.d.ts +2 -0
  23. package/dist/types/index.amd.d.ts +10 -0
  24. package/dist/types/index.cjs.d.ts +10 -0
  25. package/dist/types/index.esm.d.ts +10 -0
  26. package/dist/types/index.iife.d.ts +3 -0
  27. package/dist/types/index.umd.d.ts +10 -0
  28. package/dist/types/logger/Logger.d.ts +25 -0
  29. package/dist/types/model/AbstractSourceItem.d.ts +9 -0
  30. package/dist/types/model/ClientUser.d.ts +6 -0
  31. package/dist/types/model/GatewayServerItem.d.ts +17 -0
  32. package/dist/types/model/IServerItem.d.ts +9 -0
  33. package/dist/types/model/ISourceItem.d.ts +8 -0
  34. package/dist/types/model/IStreamItem.d.ts +8 -0
  35. package/dist/types/model/QualityItem.d.ts +17 -0
  36. package/dist/types/model/RTMPSourceItem.d.ts +17 -0
  37. package/dist/types/model/RTSPSourceItem.d.ts +17 -0
  38. package/dist/types/model/StormMetaDataItem.d.ts +44 -0
  39. package/dist/types/model/StormServerItem.d.ts +17 -0
  40. package/dist/types/model/StormSourceItem.d.ts +11 -0
  41. package/dist/types/model/StreamInfo.d.ts +17 -0
  42. package/dist/types/network/AbstractSocket.d.ts +26 -0
  43. package/dist/types/network/NetworkController.d.ts +20 -0
  44. package/dist/types/network/StormPacket.d.ts +93 -0
  45. package/dist/types/network/WowzaConnection.d.ts +22 -0
  46. package/dist/types/playback/CooldownMonitor.d.ts +9 -0
  47. package/dist/types/playback/PlaybackController.d.ts +54 -0
  48. package/dist/types/playback/SoundMeter.d.ts +17 -0
  49. package/dist/types/playback/enum/ConnectionState.d.ts +8 -0
  50. package/dist/types/playback/enum/InputType.d.ts +4 -0
  51. package/dist/types/playback/enum/PublishState.d.ts +10 -0
  52. package/dist/types/playback/enum/TaskType.d.ts +7 -0
  53. package/dist/types/playback/model/InputDevice.d.ts +14 -0
  54. package/dist/types/playback/model/InputDeviceList.d.ts +9 -0
  55. package/dist/types/playback/player/AbstractPlayer.d.ts +11 -0
  56. package/dist/types/playback/player/IPlayer.d.ts +3 -0
  57. package/dist/types/playback/task/IPlaybackTask.d.ts +4 -0
  58. package/dist/types/playback/task/PauseTask.d.ts +8 -0
  59. package/dist/types/playback/task/PlayTask.d.ts +8 -0
  60. package/dist/types/playback/task/SubscribeTask.d.ts +8 -0
  61. package/dist/types/playback/task/UnsubscribeTask.d.ts +6 -0
  62. package/dist/types/stage/ScreenElement.d.ts +19 -0
  63. package/dist/types/stage/StageController.d.ts +46 -0
  64. package/dist/types/storage/StorageManager.d.ts +10 -0
  65. package/dist/types/types/AudioConfig.d.ts +4 -0
  66. package/dist/types/types/DebugConfig.d.ts +15 -0
  67. package/dist/types/types/ServerListConfig.d.ts +6 -0
  68. package/dist/types/types/SettingsConfig.d.ts +15 -0
  69. package/dist/types/types/SourceListConfig.d.ts +9 -0
  70. package/dist/types/types/StorageConfig.d.ts +4 -0
  71. package/dist/types/types/StreamConfig.d.ts +5 -0
  72. package/dist/types/types/StreamInfoConfig.d.ts +6 -0
  73. package/dist/types/types/StreamerConfig.d.ts +7 -0
  74. package/dist/types/types/VideoConfig.d.ts +9 -0
  75. package/dist/types/utilities/DomUtilities.d.ts +6 -0
  76. package/dist/types/utilities/MungeData.d.ts +18 -0
  77. package/dist/types/utilities/MungeSDP.d.ts +16 -0
  78. package/dist/types/utilities/NumberUtilities.d.ts +9 -0
  79. package/dist/types/utilities/UserCapabilities.d.ts +19 -0
  80. package/dist/umd/index.js +14 -0
  81. package/package.json +102 -0
@@ -0,0 +1,14 @@
1
+ /*
2
+ * StormStreaming JavaScript Streamer
3
+ * Copyright © 2021-2024 Web-Anatomy s.c. All rights reserved.
4
+ * contact@stormstreaming.com
5
+ * https://stormstreaming.com
6
+ *
7
+ * Version: 0.9.0-beta.0
8
+ * Version: 11/28/2024, 9:22:54 AM
9
+ *
10
+ * LEGAL NOTICE:
11
+ * This software is subject to the terms and conditions defined in
12
+ * separate license conditions ('LICENSE.txt')
13
+ *
14
+ */var stormStreamer=function(){"use strict";class o{constructor(e,t,i=443,n=!0){this.host=e,this.application=t,this.port=i,this.isSSL=n,this.hasFaild=!1}getHost(){return this.host}getApplication(){return this.application}getPort(){return this.port}getIfSSL(){return this.isSSL}getIfFaild(){return this.hasFaild}setAsFaild(e){this.hasFaild=e}getData(){return{serverURL:this.getHost(),application:this.getHost(),serverPort:this.getPort(),isSSL:this.getIfSSL()}}toString(){return"host: "+this.host+" | application: "+this.application+" | port: "+this.port+" | isSSL: "+this.isSSL}}class r{constructor(e){this._serverList=new Array,this._sourceList=new Array,this._streamKey=null,this.parse(e)}parse(e){if(this._streamConfig=e,!this._streamConfig)throw new Error("Stream configuration is missing. Please check stream config!");if(void 0===this._streamConfig.serverList||null===this._streamConfig.serverList)throw new Error("StormLibrary: Server list configuration is missing. Please check the config!");if(0===this._streamConfig.serverList.length)throw new Error("StormLibrary: Server list configuration is empty. Please check the config!");for(let i=0;i<this._streamConfig.serverList.length;i++){let e,t;if(null==this._streamConfig.serverList[i].host)throw new Error('Error while parsing server object ("host" field is missing). Please check player config!');if(e=this._streamConfig.serverList[i].host,null==this._streamConfig.serverList[i].application)throw new Error('Error while parsing server object ("application" field is missing). Please check player config!');t=this._streamConfig.serverList[i].application;var n=null!=(n=this._streamConfig.serverList[i].port)?n:r.DEFAULT_CONNECTION_PORT,s=null!=(s=this._streamConfig.serverList[i].ssl)?s:r.IS_SSL_BY_DEFAULT;this._serverList.push(new o(e,t,n,s))}this._streamKey=null!=(e=this._streamConfig.streamKey)?e:this._streamKey}getServerList(){return this._serverList}getSourceList(){return this._sourceList}get streamKey(){return this._streamKey}set streamKey(e){this._streamKey=e}set serverList(e){this._serverList=e}set sourceList(e){this._sourceList=e}clearSourceList(){this._sourceList=new Array}clearServerList(){this._serverList=new Array}print(t,e=!1){if(r.PRINT_ON_STARTUP||e){t.info(this,"Server List:");for(let e=0;e<this._serverList.length;e++)t.info(this,"=> ["+e+"] "+this._serverList[e].toString());t.info(this,"StreamKey: "+this._streamKey)}}}var s,i,n;r.PRINT_ON_STARTUP=!0,r.DEFAULT_CONNECTION_PORT=443,r.IS_SSL_BY_DEFAULT=!0,(C=s=s||{}).FILL="fill",C.LETTER_BOX="letterbox",C.CROP="crop",C.ORIGINAL="original",(C=i=i||{}).CLIENT_DIMENSIONS="clientDimensions",C.BOUNDING_BOX="boundingBox",C.FULL_BOX="fullBox";class t{constructor(e){this._scalingMode=s.LETTER_BOX,this._aspectRatio="none",this._videoWidthValue=100,this._isVideoWidthInPixels=!1,this._wasVideoWidthProvided=!1,this._videoHeightValue=100,this._isVideoHeightInPixels=!1,this._wasVideoHeightProvided=!1,this._resizeDebounce=250,this._parentSizeCalculationMethod=i.CLIENT_DIMENSIONS,this.parse(e)}parse(e){if(this.videoConfig=e,null==this.videoConfig)throw new Error("Missing video configuration. Please check player config!");if(null!=this.videoConfig.aspectRatio){var e=new RegExp("^[0-9]*\\.?[0-9]+:[0-9]*\\.?[0-9]+$"),t=this.videoConfig.aspectRatio;if(!e.test(t))throw new Error('Parameter "aspectRatio" - must match "number:number" pattern ');this._aspectRatio=t,this._aspectRatio=this.videoConfig.aspectRatio}if(null!=this.videoConfig.scalingMode)switch(this.videoConfig.scalingMode.toLowerCase()){case"fill":this._scalingMode=s.FILL;break;case"letterbox":this._scalingMode=s.LETTER_BOX;break;case"crop":this._scalingMode=s.CROP;break;case"original":this._scalingMode=s.ORIGINAL;break;default:throw new Error("Unknown video scaling mode. Please check player config!")}if(void 0!==this.videoConfig.width){if(null===this.videoConfig.width)throw new Error('Parameter "width" cannot be empty');if("number"==typeof this.videoConfig.width)this._videoWidthValue=this.videoConfig.width,this._isVideoWidthInPixels=!0;else{if("string"!=typeof this.videoConfig.width)throw new Error('Unknown type for parameter "width" - it must be a number or a string! ');this.videoConfig.width.toLowerCase().endsWith("px")?(this._videoWidthValue=parseInt(this.videoConfig.width),this._isVideoWidthInPixels=!0):this.videoConfig.width.toLowerCase().endsWith("%")&&(this._videoWidthValue=parseInt(this.videoConfig.width),this._isVideoWidthInPixels=!1)}this._wasVideoWidthProvided=!0}if(void 0!==this.videoConfig.height){if(null===this.videoConfig.height)throw new Error('Parameter "height" cannot be empty');if("number"==typeof this.videoConfig.height)this._videoHeightValue=this.videoConfig.height,this._isVideoHeightInPixels=!0;else{if("string"!=typeof this.videoConfig.height)throw new Error('Unknown type for parameter "height" - it must be a number or a string!');this.videoConfig.height.toLowerCase().endsWith("px")?(this._videoHeightValue=parseInt(this.videoConfig.height),this._isVideoHeightInPixels=!0):this.videoConfig.height.toLowerCase().endsWith("%")&&(this._videoHeightValue=parseInt(this.videoConfig.height),this._isVideoHeightInPixels=!1)}this._wasVideoHeightProvided=!0}if(void 0!==this.videoConfig.sizeCalculationMethod&&null!==this.videoConfig.sizeCalculationMethod)switch(this.videoConfig.sizeCalculationMethod){case"clientDimensions":this._parentSizeCalculationMethod=i.CLIENT_DIMENSIONS;break;case"boundingBox":this._parentSizeCalculationMethod=i.BOUNDING_BOX;break;case"fullBox":this._parentSizeCalculationMethod=i.FULL_BOX}this._containerID=null!=(e=this.videoConfig.containerID)?e:null,this._resizeDebounce=null!=(t=this.videoConfig.resizeDebounce)?t:this._resizeDebounce}get scalingMode(){return this._scalingMode}get containerID(){return this._containerID}get videoWidthValue(){return this._videoWidthValue}get videoWidthInPixels(){return this._isVideoWidthInPixels}get videoWidthProvided(){return this._wasVideoWidthProvided}get videoHeightValue(){return this._videoHeightValue}get videoHeightInPixels(){return this._isVideoHeightInPixels}get videoHeightProvided(){return this._wasVideoHeightProvided}get aspectRatio(){return this._aspectRatio}get resizeDebounce(){return this._resizeDebounce}set resizeDebounce(e){this._resizeDebounce=e}set videoWidthValue(e){this._videoWidthValue=e}set videoWidthInPixels(e){this._isVideoWidthInPixels=e}set videoHeightValue(e){this._videoHeightValue=e}set videoHeightInPixels(e){this._isVideoHeightInPixels=e}set containerID(e){this._containerID=e}set scalingMode(e){switch(e.toLowerCase()){case"fill":this._scalingMode=s.FILL;break;case"letterbox":this._scalingMode=s.LETTER_BOX;break;case"crop":this._scalingMode=s.CROP;break;case"original":this._scalingMode=s.ORIGINAL;break;default:throw new Error("Unknown video scaling mode. Please check player config!")}}get parentSizeCalculationMethod(){return this._parentSizeCalculationMethod}print(e){let t="";switch(this._scalingMode){case s.FILL:t="fill";break;case s.LETTER_BOX:t="letterbox";break;case s.CROP:t="crop";break;case s.ORIGINAL:t="original"}e.info(this,"VideoConfig :: containerID: "+this._containerID),e.info(this,"VideoConfig :: scalingMode: "+t),e.info(this,"VideoConfig :: width: "+this._videoWidthValue+(this._isVideoWidthInPixels?"px":"%")+(this._wasVideoWidthProvided?" (provided)":" (default)")),e.info(this,"VideoConfig :: height: "+this._videoHeightValue+(this._isVideoHeightInPixels?"px":"%")+(this._wasVideoHeightProvided?" (provided)":" (default)")),e.info(this,"VideoConfig :: aspectRatio: "+this._aspectRatio)}}(C=n=n||{})[C.TRACE=0]="TRACE",C[C.INFO=1]="INFO",C[C.SUCCESS=2]="SUCCESS",C[C.WARNING=3]="WARNING",C[C.ERROR=4]="ERROR";class a{constructor(e){this._consoleLogEnabled=!1,this._enabledConsoleTypes=[n.INFO,n.ERROR,n.SUCCESS,n.TRACE,n.WARNING],this._consoleMonoColor=!1,this._containerLogEnabled=!1,this._enabledContainerTypes=[n.INFO,n.ERROR,n.SUCCESS,n.TRACE,n.WARNING],this._containerLogMonoColor=!1,this.parse(e)}parse(e){this._debugConfig=e,this._debugConfig&&(this._consoleLogEnabled=null!=(e=null==(e=null==(e=this._debugConfig)?void 0:e.console)?void 0:e.enabled)?e:this._consoleLogEnabled,this._consoleMonoColor=null!=(e=null==(e=null==(e=this._debugConfig)?void 0:e.console)?void 0:e.monoColor)?e:this._consoleMonoColor,this._enabledConsoleTypes=null!=(e=this.parseLogTypes(null==(e=null==(e=this._debugConfig)?void 0:e.console)?void 0:e.logTypes))?e:this._enabledConsoleTypes,this._containerLogEnabled=null!=(e=null==(e=null==(e=this._debugConfig)?void 0:e.container)?void 0:e.enabled)?e:this._containerLogEnabled,this._containerLogMonoColor=null!=(e=null==(e=null==(e=this._debugConfig)?void 0:e.container)?void 0:e.monoColor)?e:this._containerLogMonoColor,this._enabledContainerTypes=null!=(e=this.parseLogTypes(null==(e=null==(e=this._debugConfig)?void 0:e.container)?void 0:e.logTypes))?e:this._enabledContainerTypes,this._containerID=null!=(e=null==(e=null==(e=this._debugConfig)?void 0:e.container)?void 0:e.containerID)?e:this._containerID)}parseLogTypes(e){return null==e?void 0:e.map(e=>{switch(e.toLowerCase()){case"info":return n.INFO;case"error":return n.ERROR;case"warning":return n.WARNING;case"success":return n.SUCCESS;case"trace":return n.TRACE;default:throw new Error("Unsupported log type: "+e)}})}get consoleLogEnabled(){return this._consoleLogEnabled}set consoleLogEnabled(e){this._consoleLogEnabled=e}get enabledConsoleTypes(){return this._enabledConsoleTypes}set enabledConsoleTypes(t){this._enabledConsoleTypes=new Array;for(let e=0;e<t.length;e++)switch(t[e].toLowerCase()){case"info":this._enabledConsoleTypes.push(n.INFO);break;case"error":this._enabledConsoleTypes.push(n.ERROR);break;case"warning":this._enabledConsoleTypes.push(n.WARNING);break;case"success":this._enabledConsoleTypes.push(n.SUCCESS);break;case"trace":this._enabledConsoleTypes.push(n.TRACE)}}get containerLogEnabled(){return this._containerLogEnabled}set containerLogEnabled(e){this._consoleLogEnabled=e}get consoleLogMonoColor(){return this._consoleMonoColor}set consoleLogMonoColor(e){this._consoleMonoColor=e}get enabledContainerTypes(){return this._enabledContainerTypes}set enabledContainerTypes(t){this._enabledContainerTypes=new Array;for(let e=0;e<t.length;e++)switch(t[e].toLowerCase()){case"info":this._enabledContainerTypes.push(n.INFO);break;case"error":this._enabledContainerTypes.push(n.ERROR);break;case"warning":this._enabledContainerTypes.push(n.WARNING);break;case"success":this._enabledContainerTypes.push(n.SUCCESS);break;case"trace":this._enabledContainerTypes.push(n.TRACE)}}get containerID(){return this._containerID}set containerID(e){this._containerID=e}get containerLogMonoColor(){return this._containerLogMonoColor}set containerLogMonoColor(e){this._containerLogMonoColor=e}print(e,t=!1){if(a.PRINT_ON_STARTUP||t){let t="";for(let e=0;e<this._enabledConsoleTypes.length;e++)switch(this._enabledConsoleTypes[e]){case n.TRACE:t+="TRACE, ";break;case n.SUCCESS:t+="SUCCESS, ";break;case n.WARNING:t+="WARNING, ";break;case n.INFO:t+="INFO, ";break;case n.ERROR:t+="ERROR, "}e.info(this,"Console:: enabled: "+this._consoleLogEnabled),e.info(this,"Console:: logTypes: "+t),e.info(this,"Console:: monoColor: "+this._consoleMonoColor);let i="";for(let e=0;e<this._enabledContainerTypes.length;e++)switch(this._enabledContainerTypes[e]){case n.TRACE:i+="TRACE, ";break;case n.SUCCESS:i+="SUCCESS, ";break;case n.WARNING:i+="WARNING, ";break;case n.INFO:i+="INFO, ";break;case n.ERROR:i+="ERROR, "}e.info(this,"Container:: enabled: "+this._containerLogEnabled),e.info(this,"Container:: logTypes: "+i),e.info(this,"Container:: containerID: "+this._containerID),e.info(this,"Container:: monoColor: "+this._consoleMonoColor)}}}a.PRINT_ON_STARTUP=!0;class h{constructor(e){this._startVolume=100,this._isMuted=!1,this.parse(e)}parse(e){this._audioConfig=e,this._audioConfig&&(this._startVolume=null!=(e=null==(e=this._audioConfig)?void 0:e.startVolume)?e:this._startVolume,this._isMuted=null!=(e=null==(e=this._audioConfig)?void 0:e.muted)?e:this._isMuted)}get startVolume(){return this._startVolume}set startVolume(e){this._startVolume=e}get muted(){return this._isMuted}set muted(e){this._isMuted=e}print(e,t=!1){(h.PRINT_ON_STARTUP||t)&&e.info(this,"Audio :: startVolume: "+this._startVolume+" | isMuted: "+this._isMuted)}}h.PRINT_ON_STARTUP=!0;class l{constructor(e){this._enabled=!0,this._prefix="storm",this.parse(e)}parse(e){this._storageConfig=e,this._enabled=null!=(e=null==(e=this._storageConfig)?void 0:e.enabled)?e:this._enabled,this._prefix=null!=(e=null==(e=this._storageConfig)?void 0:e.prefix)?e:this._prefix}get enabled(){return this._enabled}set enabled(e){this._enabled=e}get prefix(){return this._prefix}set prefix(e){this._prefix=e}print(e,t=!1){(l.PRINT_ON_STARTUP||t)&&e.info(this,"Storage :: startVolume: "+this._enabled+" | prefix: "+this._prefix)}}l.PRINT_ON_STARTUP=!0;class c{constructor(e){this._restartOnError=!0,this._reconnectTime=1,this._autoStart=!1,this._autoConnect=!0,this.startOnDOMReady=!1,this.iOSOnDomReadyFix=!0,this._restartOnFocus=!0,this.parse(e)}parse(e){this._settingsConfig=e,this._autoConnect=null!=(e=this._settingsConfig.autoConnect)?e:this._autoConnect,this._autoStart=null!=(e=this._settingsConfig.autoStart)?e:this._autoStart,this._restartOnFocus=null!=(e=this._settingsConfig.restartOnFocus)?e:this._restartOnFocus,this._restartOnError=null!=(e=this._settingsConfig.restartOnError)?e:this._restartOnError,this._reconnectTime=null!=(e=this._settingsConfig.reconnectTime)?e:this._reconnectTime,this._videoData=new t(null!=(e=this._settingsConfig.video)?e:null),this._audioData=new h(null!=(e=this._settingsConfig.audio)?e:null),this._storageData=new l(null!=(e=this._settingsConfig.storage)?e:null),this._debugData=new a(null!=(e=this._settingsConfig.debug)?e:null)}getAudioData(){return this._audioData}getVideoData(){return this._videoData}getStorageData(){return this._storageData}getIfRestartOnError(){return this._restartOnError}getReconnectTime(){return this._reconnectTime}get autoStart(){return this._autoStart}set autoStart(e){this._autoStart=e}get autoConnect(){return this._autoConnect}get restartOnFocus(){return this._restartOnFocus}getDebugData(){return this._debugData}getIfStartOnDOMReadyEnabled(){return this.startOnDOMReady}getIfIOSOnDomStartFixEnabled(){return this.iOSOnDomReadyFix}print(e,t=!1){(c.PRINT_ON_STARTUP||t)&&(e.info(this,"SettingsConfig :: autoConnect: "+this._autoConnect),e.info(this,"SettingsConfig :: autoStart: "+this._autoStart),e.info(this,"SettingsConfig :: restartOnError: "+this._restartOnError),e.info(this,"SettingsConfig :: reconnectTime: "+this._reconnectTime),e.info(this,"SettingsConfig :: enabledProtocols: "),this._videoData.print(e),this._audioData.print(e),this._debugData.print(e),this._debugData.print(e))}}c.PRINT_ON_STARTUP=!0;class d{constructor(e){this.PRINT_ON_STARTUP=!0,this.demoMode=!1,this.parse(e)}parse(e){if(this.configTemplate=e,null==this.configTemplate.stream)throw new Error("No stream field was provided. Please check your player config!");this.streamData=new r(this.configTemplate.stream),this.settingsData=new c(null!=(e=this.configTemplate.settings)?e:null),this.demoMode=null!=(e=this.configTemplate.demoMode)&&e}getStreamData(){return this.streamData}getSettingsData(){return this.settingsData}getIfDemoMode(){return this.demoMode}print(e,t=!1){(this.PRINT_ON_STARTUP||t)&&(this.streamData.print(e),this.settingsData.print(e))}}class g{static addLeadingZero(e){return e<10?"0"+e:String(e)}static isNear(e,t,i){return Math.abs(e-t)<=i}static generateUniqueString(t){let i="";var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",s=n.length;for(let e=0;e<t;e++)i+=n.charAt(Math.floor(Math.random()*s));return i}}g.parseValue=e=>{var t;return"string"==typeof e?(t=e.toLowerCase().endsWith("px"),{value:parseInt(e,10),isPixels:t}):{value:e,isPixels:!0}};class u{constructor(e,t){this.colorOrder=["red","green","blue","orange","black","violet"],this._logMemory=[],this._streamerInstanceID=-1,this._debugConfig=e,this._stormStreamer=t,this._streamerInstanceID=this._stormStreamer.getStreamerID();e=this.colorOrder.length<t.getStreamerID()?this.colorOrder.length-1:t.getStreamerID();this._monoColor=this.colorOrder[e]}info(e,t){e=this.logData(e,t);this._debugConfig.consoleLogEnabled&&0<=this._debugConfig.enabledConsoleTypes.indexOf(n.INFO)&&(t=this._debugConfig.consoleLogMonoColor?this._monoColor:u.INFO_COLOR,console.log("%c "+e,"color: "+t)),this._debugConfig.containerLogEnabled&&0<=this._debugConfig.enabledContainerTypes.indexOf(n.INFO)&&(t=this._debugConfig.containerLogMonoColor?this._monoColor:u.INFO_COLOR,this.writeToContainer(e,t))}warning(e,t){e=this.logData(e,t);this._debugConfig.consoleLogEnabled&&0<=this._debugConfig.enabledConsoleTypes.indexOf(n.WARNING)&&(t=this._debugConfig.consoleLogMonoColor?this._monoColor:u.WARNING_COLOR,console.log("%c "+e,"color: "+t)),this._debugConfig.containerLogEnabled&&0<=this._debugConfig.enabledContainerTypes.indexOf(n.WARNING)&&(t=this._debugConfig.containerLogMonoColor?this._monoColor:u.WARNING_COLOR,this.writeToContainer(e,t))}error(e,t){e=this.logData(e,t);this._debugConfig.consoleLogEnabled&&0<=this._debugConfig.enabledConsoleTypes.indexOf(n.ERROR)&&(t=this._debugConfig.consoleLogMonoColor?this._monoColor:u.ERROR_COLOR,console.log("%c "+e,"color: "+t)),this._debugConfig.containerLogEnabled&&0<=this._debugConfig.enabledContainerTypes.indexOf(n.ERROR)&&(t=this._debugConfig.containerLogMonoColor?this._monoColor:u.ERROR_COLOR,this.writeToContainer(e,t))}success(e,t){e=this.logData(e,t);this._debugConfig.consoleLogEnabled&&0<=this._debugConfig.enabledConsoleTypes.indexOf(n.SUCCESS)&&(t=this._debugConfig.consoleLogMonoColor?this._monoColor:u.SUCCESS_COLOR,console.log("%c "+e,"color: "+t)),this._debugConfig.containerLogEnabled&&0<=this._debugConfig.enabledContainerTypes.indexOf(n.SUCCESS)&&(t=this._debugConfig.containerLogMonoColor?this._monoColor:u.SUCCESS_COLOR,this.writeToContainer(e,t))}trace(e,t){e=this.logData(e,t);this._debugConfig.consoleLogEnabled&&0<=this._debugConfig.enabledConsoleTypes.indexOf(n.TRACE)&&(t=this._debugConfig.consoleLogMonoColor?this._monoColor:u.TRACE_COLOR,console.log("%c "+e,"color: "+t)),this._debugConfig.containerLogEnabled&&0<=this._debugConfig.enabledContainerTypes.indexOf(n.TRACE)&&(t=this._debugConfig.containerLogMonoColor?this._monoColor:u.TRACE_COLOR,this.writeToContainer(e,t))}logData(e,t){var i=new Date,n=g.addLeadingZero(i.getHours()),s=g.addLeadingZero(i.getMinutes()),i=g.addLeadingZero(i.getSeconds());let o=String(this._streamerInstanceID);0<=this._streamerInstanceID&&(o+="|"+this._streamerInstanceID);n="[Storm-ID:"+o+"] ["+n+":"+s+":"+i+"] :: "+t;return this._logMemory.push(n),n}writeToContainer(e,t){var i,n=this._debugConfig.containerID;n&&(n=document.getElementById(n),(i=document.createElement("span")).innerText=e,i.style.color=t,n.appendChild(i))}setPlayerID(e){this._streamerInstanceID=e}getAllLogs(){return this._logMemory}}u.INFO_COLOR="blue",u.WARNING_COLOR="orange",u.ERROR_COLOR="red",u.SUCCESS_COLOR="green",u.TRACE_COLOR="black";class e{constructor(){this.bandwidthCapabilities=0}setBandwidthCapabilities(e){this.bandwidthCapabilities=e}getBandwidthCapabilities(){return this.bandwidthCapabilities}}class _{static hasWebSocketsSupport(){return null!=window.WebSocket}static isMobile(){return new RegExp("Mobile|mini|Fennec|Android|iP(ad|od|hone)").test(navigator.userAgent)}static isCookieEnabled(){let e=!!navigator.cookieEnabled;return"undefined"!=typeof navigator.cookieEnabled||e||(document.cookie="testcookie",e=-1!=document.cookie.indexOf("testcookie")),e}static getOSVersion(){let e="Unknown version",t=_.getOS();if(null!=t){var i;switch(new RegExp("Windows").test(t)&&(i=new RegExp("Windows (.*)"),e=null!=i.exec(t)[1]?i.exec(t)[1]:e,t="Windows"),t){case"Mac OS":case"Mac OS X":case"Android":var n=new RegExp("(?:Android|Mac OS|Mac OS X|MacPPC|MacIntel|Mac_PowerPC|Macintosh) ([\\.\\_\\d]+)");e=n.exec(navigator.userAgent)[1];break;case"iOS":n=new RegExp("OS (\\d+)_(\\d+)_?(\\d+)?");e=(e=n.exec(navigator.userAgent))[1]+"."+e[2]+"."+(0|e[3])}}return e}static getBrowserName(){return _.getFullBrowser().name}static getBrowserVersion(){return _.getFullBrowser().version}static getFullBrowser(){var e=navigator.userAgent;let t=navigator.appName,i=""+parseFloat(navigator.appVersion),n=parseInt(navigator.appVersion,10),s,o,r;return-1!=(o=e.indexOf("Opera"))?(t="Opera",i=e.substring(o+6),-1!=(o=e.indexOf("Version"))&&(i=e.substring(o+8))):-1!=(o=e.indexOf("MSIE"))?(t="Microsoft Internet Explorer",i=e.substring(o+5)):"Netscape"==t&&-1!=e.indexOf("Trident/")?(t="Microsoft Internet Explorer",i=e.substring(o+5),-1!=(o=e.indexOf("rv:"))&&(i=e.substring(o+3))):-1!=(o=e.indexOf("Chrome"))?(t="Chrome",(-1<e.indexOf("FBAV")||-1<e.indexOf("FBAN"))&&(t="Facebook"),-1<e.indexOf("OPR")&&(t="Opera"),-1<e.indexOf("SamsungBrowser")&&(t="Samsung"),i=e.substring(o+7)):-1!=(o=e.indexOf("Safari"))?(t="Safari",i=e.substring(o+7),-1!=(o=e.indexOf("Version"))&&(i=e.substring(o+8)),-1!=e.indexOf("CriOS")&&(t="Chrome"),-1!=e.indexOf("FxiOS")&&(t="Firefox")):-1!=(o=e.indexOf("Firefox"))?(t="Firefox",i=e.substring(o+8)):(s=e.lastIndexOf(" ")+1)<(o=e.lastIndexOf("/"))&&(t=e.substring(s,o),i=e.substring(o+1),t.toLowerCase()==t.toUpperCase())&&(t=navigator.appName),-1!=(r=(i=-1!=(r=(i=-1!=(r=i.indexOf(";"))?i.substring(0,r):i).indexOf(" "))?i.substring(0,r):i).indexOf(")"))&&(i=i.substring(0,r)),n=parseInt(""+i,10),isNaN(n)&&(i=""+parseFloat(navigator.appVersion),n=parseInt(navigator.appVersion,10)),{name:t,fullVersion:i,version:n}}static getOS(){let e="Unknown OS";var t,i=[{os:"Windows 10",code:"(Windows 10.0|Windows NT 10.0)"},{os:"Windows 8.1",code:"(Windows 8.1|Windows NT 6.3)"},{os:"Windows 8",code:"(Windows 8|Windows NT 6.2)"},{os:"Windows 7",code:"(Windows 7|Windows NT 6.1)"},{os:"Windows Vista",code:"Windows NT 6.0"},{os:"Windows Server 2003",code:"Windows NT 5.2"},{os:"Windows XP",code:"(Windows NT 5.1|Windows XP)"},{os:"Windows 2000",code:"(Windows NT 5.0|Windows 2000)"},{os:"Windows ME",code:"(Win 9x 4.90|Windows ME)"},{os:"Windows 98",code:"(Windows 98|Win98)"},{os:"Windows 95",code:"(Windows 95|Win95|Windows_95)"},{os:"Windows NT 4.0",code:"(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)"},{os:"Windows CE",code:"Windows CE"},{os:"Windows 3.11",code:"Win16"},{os:"Android",code:"Android"},{os:"Open BSD",code:"OpenBSD"},{os:"Sun OS",code:"SunOS"},{os:"Chrome OS",code:"CrOS"},{os:"Linux",code:"(Linux|X11(?!.*CrOS))"},{os:"iOS",code:"(iPhone|iPad|iPod)"},{os:"Mac OS X",code:"Mac OS X"},{os:"Mac OS",code:"(Mac OS|MacPPC|MacIntel|Mac_PowerPC|Macintosh)"},{os:"QNX",code:"QNX"},{os:"UNIX",code:"UNIX"},{os:"BeOS",code:"BeOS"},{os:"OS/2",code:"OS\\/2"},{os:"Search Bot",code:"(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\\/Teoma|ia_archiver)"}];for(t in i){var n=i[t];if(new RegExp(n.code).test(navigator.userAgent)){e=n.os;break}}return e}static hasWebRTCSupport(){let t=!1;try{navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia||window.RTCPeerConnection;t=!0}catch(e){t=!1}return t}static hasHLSSupport(e){return null!==e&&Boolean(e.canPlayType("application/vnd.apple.mpegURL")||e.canPlayType("audio/mpegurl"))}static hasMSESupport(){var e=window.MediaSource=window.MediaSource||window.WebKitMediaSource;return window.SourceBuffer=window.SourceBuffer||window.WebKitSourceBuffer,e&&"function"==typeof e.isTypeSupported}static hasMMSSupport(){return window.ManagedMediaSource}static isSSL(){return"https:"===location.protocol}}class m{constructor(e){var t;this.LOG_ACTIVITY=!1,this.isEnabled=!0,this.prefix="",this.logger=e.getLogger(),this.isEnabled=null!=(t=null==(t=null==(t=e.getConfigManager())?void 0:t.getSettingsData())?void 0:t.getStorageData().enabled)?t:this.isEnabled,this.prefix=null!=(t=null==(e=null==(t=e.getConfigManager())?void 0:t.getSettingsData())?void 0:e.getStorageData().prefix)?t:this.prefix,this.LOG_ACTIVITY&&this.logger.info(this,"Creating new StorageManager")}saveField(e,t){1==this.isEnabled&&(this.LOG_ACTIVITY&&this.logger.info(this,"Saving data: "+e+" | "+t),localStorage.setItem(this.prefix+e,t))}getField(e){var t;return 1==this.isEnabled?(t=localStorage.getItem(this.prefix+e),this.LOG_ACTIVITY&&this.logger.info(this,"Grabbing data: "+e+" | "+t),t):null}}var C="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function p(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function f(){return A.Date.now()}var v=NaN,S="[object Symbol]",b=/^\s+|\s+$/g,E=/^[-+]0x[0-9a-f]+$/i,w=/^0b[01]+$/i,P=/^0o[0-7]+$/i,V=parseInt,C="object"==typeof C&&C&&C.Object===Object&&C,I="object"==typeof self&&self&&self.Object===Object&&self,A=C||I||Function("return this")(),F=Object.prototype.toString,U=Math.max,B=Math.min;function L(e){var t=typeof e;return e&&("object"==t||"function"==t)}function M(e){if("number"==typeof e)return e;if("symbol"==typeof(i=e)||!!(t=i)&&"object"==typeof t&&F.call(i)==S)return v;var t;if("string"!=typeof(e=L(e)?L(t="function"==typeof e.valueOf?e.valueOf():e)?t+"":t:e))return 0===e?e:+e;e=e.replace(b,"");var i=w.test(e);return i||P.test(e)?V(e.slice(2),i?2:8):E.test(e)?v:+e}var T,O,D,H=p(function(n,i,e){var s,o,r,a,h,l,c=0,d=!1,g=!1,t=!0;if("function"!=typeof n)throw new TypeError("Expected a function");function u(e){var t=s,i=o;return s=o=void 0,c=e,a=n.apply(i,t)}function _(e){var t=e-l;return void 0===l||i<=t||t<0||g&&r<=e-c}function m(){var e,t=f();if(_(t))return C(t);h=setTimeout(m,(e=i-((t=t)-l),g?B(e,r-(t-c)):e))}function C(e){return h=void 0,t&&s?u(e):(s=o=void 0,a)}function p(){var e=f(),t=_(e);if(s=arguments,o=this,l=e,t){if(void 0===h)return c=e=l,h=setTimeout(m,i),d?u(e):a;if(g)return h=setTimeout(m,i),u(l)}return void 0===h&&(h=setTimeout(m,i)),a}return i=M(i)||0,L(e)&&(d=!!e.leading,g="maxWait"in e,r=g?U(M(e.maxWait)||0,i):r,t="trailing"in e?!!e.trailing:t),p.cancel=function(){void 0!==h&&clearTimeout(h),s=l=o=h=void(c=0)},p.flush=function(){return void 0===h?a:C(f())},p});class z{constructor(e){this.LOG_ACTIVITY=!0,this._volume=100,this._isMuted=!1,this._isMutedByBrowser=!1,this.onForceMute=()=>{this._isMuted=!0,this._isMutedByBrowser=!0,this.dispatchVolumeEvent()},this._main=e,this._logger=e.getLogger(),this._videoElement=document.createElement("video"),this._main.addEventListener("playbackForceMute",this.onForceMute,!1);let t=null!=(e=null==(e=this._main.getConfigManager())?void 0:e.getSettingsData().getAudioData().startVolume)?e:100,i=null!=(e=null==(e=this._main.getConfigManager())?void 0:e.getSettingsData().getAudioData().muted)&&e;null!=(null==(e=this._main.getStorageManager())?void 0:e.getField("volume"))&&(t=Number(this._main.getStorageManager().getField("volume"))),null!=(null==(e=this._main.getStorageManager())?void 0:e.getField("muted"))&&"true"==this._main.getStorageManager().getField("muted")&&(i=!0,this._isMutedByBrowser=!0),this._volume=t,this._isMuted=i,this.LOG_ACTIVITY&&this._logger.info(this,"VideoElement :: Start Volume: "+this._volume+" | Muted: "+this._isMuted),this._videoElement.volume=this._volume/100,this._videoElement.muted=this._isMuted,this._videoElement.setAttribute("playsinline","playsinline"),this._videoElement.setAttribute("webkit-playsinline","webkit-playsinline"),this._main.dispatchEvent("videoElementCreate",{ref:this._main,videoElement:this._videoElement}),this.initialize()}initialize(){this._videoElement.onload=function(e){},this._videoElement.onstalled=e=>{this._logger.info(this,"VideoElement :: onstalled")},this._videoElement.onerror=e=>{this._logger.info(this,"VideoElement :: onerror :: "+JSON.stringify(e))},this._videoElement.onvolumechange=()=>{this.dispatchVolumeEvent()},this._videoElement.onpause=()=>{},this._videoElement.ontimeupdate=function(e){},this._videoElement.onended=e=>{this._logger.info(this,"VideoElement :: onended")},this._videoElement.onplay=()=>{}}setVolume(e){this._isMuted&&0<e&&this.setMuted(!1),this._volume=e,this._videoElement.volume=e/100,this._main.getStorageManager().saveField("volume",String(e)),0==e&&this.setMuted(!0)}getVolume(){return this._volume}setMuted(e){this._isMuted=e,this._videoElement.muted=e,this._isMutedByBrowser=!1,this._main.getStorageManager().saveField("muted",String(e)),0!=this.getVolume()||e||this.setVolume(100)}getIfMuted(){return this._isMuted}dispatchVolumeEvent(){var e=this._isMutedByBrowser?"browser":"user",t={volume:this._volume,isMuted:this._isMuted,type:e};this.LOG_ACTIVITY&&this._logger.info(this,"ScreenElement :: Event: onVolumeChange: "+JSON.stringify(t)),this._main.dispatchEvent("volumeChange",{ref:this._main,volume:this._volume,muted:this._isMuted,invokedBy:e})}getVideoElement(){return this._videoElement}}class R{static calculateDimensionsWithMargins(e){var t=window.getComputedStyle(e),e=e.getBoundingClientRect(),i=parseFloat(t.paddingLeft),n=parseFloat(t.paddingRight),s=parseFloat(t.paddingTop),o=parseFloat(t.paddingBottom),r=parseFloat(t.borderLeftWidth),a=parseFloat(t.borderRightWidth),h=parseFloat(t.borderTopWidth),t=parseFloat(t.borderBottomWidth);return{width:e.width-i-n-r-a,height:e.height-s-o-h-t}}}class y{constructor(e){this._containerWidth=0,this._tempContainerWidth=0,this._containerHeight=0,this._tempContainerHeight=0,this._videoWidth=0,this._videoHeight=0,this._scalingMode=s.FILL,this.isInFullScreenMode=!1,this._autoResizeEnabled=!0,this.onFullScreenChange=()=>{null==document.fullscreenElement?(this.isInFullScreenMode=!1,this._logger.info(this,"The library has exited FullScreen mode!"),this._main.dispatchEvent("fullScreenExit",{ref:this._main})):(this.isInFullScreenMode=!0,this._logger.info(this,"The library has entered FullScreen mode!"),this._main.dispatchEvent("fullScreenEnter",{ref:this._main}))},this.onResize=()=>{if(null!=this._parentElement){var e=this._main.getConfigManager().getSettingsData().getVideoData().parentSizeCalculationMethod;switch(this._videoContainer.style.display="none",e){case i.CLIENT_DIMENSIONS:this._tempContainerWidth=this._parentElement.clientWidth,this._tempContainerHeight=this._parentElement.clientHeight;break;case i.BOUNDING_BOX:this._tempContainerWidth=this._parentElement.getBoundingClientRect().width,this._tempContainerHeight=this._parentElement.getBoundingClientRect().height;break;case i.FULL_BOX:this._tempContainerWidth=R.calculateDimensionsWithMargins(this._parentElement).width,this._tempContainerHeight=R.calculateDimensionsWithMargins(this._parentElement).height}this._logger.info(this,"onResize called: "+this._tempContainerWidth+"x"+this._tempContainerHeight+" ("+e+")"),this.resizeVideoContainer(),this.scaleVideo(),this._videoContainer.style.display="block",this._main.dispatchEvent("resizeUpdate",{ref:this._main,width:this._tempContainerWidth,height:this._tempContainerHeight})}},this._main=e,this._logger=e.getLogger(),this._logger.info(this,"Creating new StageController"),this.initialize()}initialize(){var e=null!=(e=null==(e=null==(e=null==(e=this._main.getConfigManager())?void 0:e.getSettingsData())?void 0:e.getVideoData())?void 0:e.containerID)?e:null,t=(this._scalingMode=null!=(t=null==(t=this._main.getConfigManager())?void 0:t.getSettingsData().getVideoData().scalingMode)?t:s.FILL,this._videoContainer=document.createElement("div"),this._videoContainer.setAttribute("id","stormLibrary_"+this._main.getStreamerID()),this._videoContainer.style.overflow="hidden",this._videoContainer.style.position="relative",this._videoContainer.classList.add("stormLibrary"),this._screenElement=new z(this._main),this._videoContainer.appendChild(this._screenElement.getVideoElement()),this._main.getConfigManager().getSettingsData().getVideoData().resizeDebounce);this._resizeObserver=0<t?new ResizeObserver(H(()=>()=>{this._autoResizeEnabled&&this.onResize()},t,{leading:!1,trailing:!0})):new ResizeObserver(()=>{this._autoResizeEnabled&&this.onResize()}),document.addEventListener("fullscreenchange",this.onFullScreenChange,!1),document.addEventListener("webkitfullscreenchange",this.onFullScreenChange,!1),document.addEventListener("mozfullscreenchange",this.onFullScreenChange,!1),document.addEventListener("webkitendfullscreen",this.onFullScreenChange,!1),this._screenElement.getVideoElement().addEventListener("webkitendfullscreen",this.onFullScreenChange,!1),e?this.attachToParent(e):this._logger.warning(this,'Could not create HTMLObject for the library - "containerID" was not provided')}attachToParent(e){let t=!1,i=null;return"string"==typeof e?(this._logger.info(this,"Attaching container to ID: "+e),i=document.getElementById(e)):e instanceof HTMLElement&&(this._logger.info(this,"Attaching container to HTMLElement: "+e),i=e),i===this._parentElement?(this._logger.warning(this,"attachToParent :: container is the same"),!1):(i&&this._videoContainer?(this._parentElement=i,this._parentElement.appendChild(this._videoContainer),this._resizeObserver.observe(this._parentElement),this._parentElement.addEventListener("transitionend",()=>{this.onResize()}),this._main.dispatchEvent("containerChange",{ref:this._main,container:this._parentElement}),this.onResize(),t=!0):this._logger.warning(this,"attachToParent :: container was not found"),t)}detachFromParent(){let e=!1;return null!=this._parentElement&&null!=this._videoContainer?(this._logger.info(this,"Detaching from parent: "+this._videoContainer),this._parentElement.removeChild(this._videoContainer),this._resizeObserver&&(this._resizeObserver.unobserve(this._parentElement),this._resizeObserver.disconnect()),this._autoResizeEnabled&&this._parentElement.removeEventListener("transitionend",this.onResize),this._main.dispatchEvent("containerChange",{ref:this._main,container:null}),e=!0):this._logger.info(this,"Failed detaching from parent!"),this._parentElement=null,e}resizeVideoContainer(){var e=this._main.getConfigManager().getSettingsData().getVideoData().videoWidthInPixels,t=this._main.getConfigManager().getSettingsData().getVideoData().videoHeightInPixels,i=this._main.getConfigManager().getSettingsData().getVideoData().videoWidthValue,n=this._main.getConfigManager().getSettingsData().getVideoData().videoHeightValue,s=this._main.getConfigManager().getSettingsData().getVideoData().aspectRatio;let o=0,r=0;var a=Number(s.split(":")[0]),h=Number(s.split(":")[1]);"none"==s?(e?o=i:null!=this._parentElement&&(o=this._tempContainerWidth*i/100),t?r=n:null!=this._parentElement&&0==(r=this._tempContainerHeight*n/100)&&0!=this._videoHeight&&0!=this._videoWidth&&(r=this._videoHeight*o/this._videoWidth)):(e?o=i:null!=this._parentElement&&(o=this._tempContainerWidth*i/100),r=o*h/a),this._containerWidth=Math.ceil(o),this._containerHeight=Math.ceil(r),this._videoWidth=this._containerWidth,this._videoHeight=this._containerHeight,null!==this._videoContainer&&(this._videoContainer.style.width=this._containerWidth+"px",this._videoContainer.style.height=this._containerHeight+"px")}scaleVideo(){if(null!==this._screenElement){let e=0,t=0,i=0,n=0;switch(this._scalingMode){case s.FILL:i=this._containerWidth,n=this._containerHeight;break;case s.CROP:i=this._containerWidth,(n=this._videoHeight*this._containerWidth/this._videoWidth)>=this._containerHeight?(e=0,t=(n-this._containerHeight)/2*-1):(n=this._containerHeight,i=this._videoWidth*this._containerHeight/this._videoHeight,t=0,e=(i-this._containerWidth)/2*-1);break;case s.LETTER_BOX:i=this._containerWidth,(!((n=this._videoHeight*this._containerWidth/this._videoWidth)<=this._containerHeight)||(e=0,t=(n-this._containerHeight)/2*-1,n>this._containerHeight))&&(n=this._containerHeight,i=this._videoWidth*this._containerHeight/this._videoHeight,t=0,e=(i-this._containerWidth)/2*-1);break;case s.ORIGINAL:i=this._videoWidth,n=this._videoHeight,e=(this._videoWidth-this._containerWidth)/-2,t=(this._videoHeight-this._containerHeight)/-2}this._screenElement.getVideoElement().style.left=Math.floor(e)+"px",this._screenElement.getVideoElement().style.top=Math.floor(t)+"px",this._screenElement.getVideoElement().style.width=Math.ceil(i)+"px",this._screenElement.getVideoElement().style.height=Math.ceil(n)+"px",this._screenElement.getVideoElement().style.position="absolute",this._screenElement.getVideoElement().style.objectFit="fill"}}enterFullScreen(){var e;null!=(e=this._screenElement)&&e.getVideoElement().webkitEnterFullScreen?null!=(e=this._screenElement)&&e.getVideoElement().webkitEnterFullScreen():null!=(e=this._screenElement)&&e.getVideoElement().requestFullscreen()}exitFullScreen(){var e;null!=(e=this._screenElement)&&e.getVideoElement().webkitExitFullscreen?document.webkitExitFullscreen():document.exitFullscreen()}isFullScreenMode(){return this.isInFullScreenMode}setDimension(e,t){var i="width"===e?"videoWidth":"videoHeight";let n,s;if("number"==typeof t)s=t,n=!0;else{if("string"!=typeof t)throw new Error(`Unknown value for parameter "${e}" - it must be a number or a string!`);s=parseInt(t),n=t.toLowerCase().endsWith("px")}this._main.getConfigManager().getSettingsData().getVideoData()[i+"Value"]=s,this._main.getConfigManager().getSettingsData().getVideoData()[i+"InPixels"]=n,this.resizeVideoContainer(),this.scaleVideo()}setSize(e,t){this.setDimension("width",e),this.setDimension("height",t)}setWidth(e){this.setDimension("width",e)}setHeight(e){this.setDimension("height",e)}getParentElement(){return this._parentElement}setScalingMode(e){switch(e.toLowerCase()){case"fill":this._scalingMode=s.FILL;break;case"crop":this._scalingMode=s.CROP;break;case"letterbox":this._scalingMode=s.LETTER_BOX;break;case"original":this._scalingMode=s.ORIGINAL}this.scaleVideo()}getContainerWidth(){return this._containerWidth}getContainerHeight(){return this._containerHeight}getScalingModeAsString(){let e="";switch(this._scalingMode){case s.FILL:e="fill";break;case s.CROP:e="crop";break;case s.LETTER_BOX:e="letterbox";break;case s.ORIGINAL:e="original"}return e}getScalingMode(){return this._scalingMode}getScreenElement(){return this._screenElement}getContainer(){return this._videoContainer}destroy(){this.detachFromParent()}}y.LOG_ACTIVITY=!0;class N{constructor(){}addAudio(e,t){let i="",n="",s=!1;for(const o of e.split(/\r\n/))o.length<=0||(0===o.indexOf("m=audio")?i="audio":0===o.indexOf("m=video")&&(i="video"),n=n+o+"\r\n","audio"!==i)||0!=="a=rtcp-mux".localeCompare(o)||s||(n+=t,s=!0);return n}addVideo(e,t){e=e.split(/\r\n/);let i="",n=!1,s=!1;for(const r of e)r.length<=0||(r.includes("a=rtcp-rsize")&&(s=!0),r.includes("a=rtcp-mux"));let o=!1;for(const a of e)a.startsWith("m=video")&&(o=!0),i=i+a+"\r\n",o&&(0==="a=rtcp-rsize".localeCompare(a)&&!n&&s&&(i+=t,n=!0),0==="a=rtcp-mux".localeCompare(a)&&n&&!s&&(i+=t,n=!0),0!=="a=rtcp-mux".localeCompare(a)||n||s||(n=!0));return i}deliverCheckLine(e,t){for(const n in N.SDPOutput){var i=N.SDPOutput[n];if(i.includes(e)){if(e.includes("VP9")||e.includes("VP8")){let e="";for(const s of i.split(/\r\n/))e=e+s+"\r\n";return t.includes("audio")&&(N.audioIndex=parseInt(n)),t.includes("video")&&(N.videoIndex=parseInt(n)),e}return t.includes("audio")&&(N.audioIndex=parseInt(n)),t.includes("video")&&(N.videoIndex=parseInt(n)),i}}return""}checkLine(t){if(t.startsWith("a=rtpmap")||t.startsWith("a=rtcp-fb")||t.startsWith("a=fmtp")){var i=t.split(":");if(1<i.length){i=i[1].split(" ");if(!isNaN(parseInt(i[0]))&&!i[1].startsWith("http")&&!i[1].startsWith("ur")){let e=N.SDPOutput[i[0]];return e=e||"",e+=t+"\r\n",N.SDPOutput[i[0]]=e,!1}}}return!0}getrtpMapID(e){var t=new RegExp("a=rtpmap:(\\d+) (\\w+)/(\\d+)"),e=e.match(t);return e&&3<=e.length?e:null}mungeSDPPublish(e,t){N.SDPOutput={},N.videoChoice="42e01f",N.audioChoice="opus",N.videoIndex=-1,N.audioIndex=-1;e=e.split(/\r\n/);let i="header",n=!1,s="";null!=t.videoCodec&&""!==t.videoCodec&&(N.videoChoice=t.videoCodec),null!=t.audioCodec&&""!==t.audioCodec&&(N.audioChoice=t.audioCodec);for(const a of e)a.length<=0||this.checkLine(a)&&(s=s+a+"\r\n");s=this.addAudio(s,this.deliverCheckLine(N.audioChoice,"audio"));var o,r,e=(s=this.addVideo(s,this.deliverCheckLine(N.videoChoice,"video"))).split(/\r\n/);s="";for(const h of e)if(!(h.length<=0)){let e;if(0===h.indexOf("m=audio")&&-1!==N.audioIndex)e=h.split(" "),s+=e[0]+" "+e[1]+" "+e[2]+" "+N.audioIndex+"\r\n",i="audio",n=!1;else if(0===h.indexOf("m=video")&&-1!==N.videoIndex)e=h.split(" "),s+=e[0]+" "+e[1]+" "+e[2]+" "+N.videoIndex+"\r\n",i="video",n=!1;else{if(s+=h,0===h.indexOf("a=rtpmap")&&(i="bandwidth",n=!1),"chrome"!==_.getBrowserName().toLowerCase()&&"safari"!==_.getBrowserName().toLowerCase()||0!==h.indexOf("a=mid:")&&0!==h.indexOf("a=rtpmap")||n||(0==="audio".localeCompare(i)?(void 0!==t.audioBitrate&&""!==t.audioBitrate&&(s=(s+="\r\nb=CT:"+t.audioBitrate)+"\r\nb=AS:"+t.audioBitrate),n=!0):0==="video".localeCompare(i)?(void 0!==t.videoBitrate&&""!==t.videoBitrate&&(s=(s+="\r\nb=CT:"+t.videoBitrate)+"\r\nb=AS:"+t.videoBitrate,void 0!==t.videoFrameRate)&&(s+="\r\na=framerate:"+t.videoFrameRate),n=!0):"chrome"===_.getBrowserName().toLowerCase()&&0==="bandwidth".localeCompare(i)&&null!==(r=this.getrtpMapID(h))&&(o=r[2].toLowerCase(),0!=="vp9".localeCompare(o)&&0!=="vp8".localeCompare(o)&&0!=="h264".localeCompare(o)&&0!=="red".localeCompare(o)&&0!=="ulpfec".localeCompare(o)&&0!=="rtx".localeCompare(o)||void 0!==t.videoBitrate&&(s+="\r\na=fmtp:"+r[1]+" x-google-min-bitrate="+t.videoBitrate+";x-google-max-bitrate="+t.videoBitrate),0!=="opus".localeCompare(o)&&0!=="isac".localeCompare(o)&&0!=="g722".localeCompare(o)&&0!=="pcmu".localeCompare(o)&&0!=="pcma".localeCompare(o)&&0!=="cn".localeCompare(o)||void 0!==t.audioBitrate&&(s+="\r\na=fmtp:"+r[1]+" x-google-min-bitrate="+t.audioBitrate+";x-google-max-bitrate="+t.audioBitrate))),"firefox"===_.getBrowserName().toLowerCase()&&0===h.indexOf("c=IN")){if(0==="audio".localeCompare(i)){""!==t.audioBitrate&&"string"==typeof t.audioBitrate&&(o=parseInt(t.audioBitrate),s=(s+="\r\nb=TIAS:"+(1e3*o*.95-16e3)+"\r\n")+"b=AS:"+o+"\r\nb=CT:"+o+"\r\n");continue}if(0==="video".localeCompare(i)){""!==t.videoBitrate&&"string"==typeof t.videoBitrate&&(r=parseInt(t.videoBitrate),s=(s+="\r\nb=TIAS:"+1e3*(1e3*r*.95-16e3)+"\r\n")+"b=AS:"+r+"\r\nb=CT:"+r+"\r\n");continue}}s+="\r\n"}}return s}mungeSDPPlay(e){let n="";for(const r of e.split(/\r\n/))if(0!==r.length){if(r.includes("profile-level-id")){var s=r.substr(r.indexOf("profile-level-id")+17,6);let e=Number("0x"+s.substr(0,2)),t=Number("0x"+s.substr(2,2)),i=Number("0x"+s.substr(4,2));66<e&&(e=66,t=224,i=31),0===t&&(t=224);var o=("00"+e.toString(16)).slice(-2).toLowerCase()+("00"+t.toString(16)).slice(-2).toLowerCase()+("00"+i.toString(16)).slice(-2).toLowerCase();n+=r.replace(s,o)}else n+=r;n+="\r\n"}return n}}N.SDPOutput={},(C=T=T||{})[C.VIDEO_INPUT=0]="VIDEO_INPUT",C[C.AUDIO_INPUT=1]="AUDIO_INPUT";class k{constructor(e,t){if(this._groupID="",this._isSelected=!1,null==e)throw new Error("no input device");if(void 0===e.deviceId||null===e.deviceId)throw new Error("no deviceID");if(this._id=e.deviceId,void 0===e.kind||null===e.kind)throw new Error("no device kind");switch(e.kind){case"videoinput":this._inputType=T.VIDEO_INPUT;break;case"audioinput":this._inputType=T.AUDIO_INPUT;break;default:throw new Error("incorrect kind")}null!==e.label&&""!==e.label?this._label=this.cleanLabel(e.label):this._label=this._inputType==T.VIDEO_INPUT?"Camera "+t:"Microphone "+t,void 0!==e.groupId&&null!==e.groupId&&(this._groupID=e.groupId)}cleanLabel(e){return e}getLabel(){return this._label}getID(){return this._id}getGroupID(){return this._groupID}getIfSelected(){return this._isSelected}setSelected(e){this._isSelected=e}}class W{constructor(){this._internalList=new Array}push(t){let i=!1;if(0<this._internalList.length){for(let e=0;e<this._internalList.length;e++)""!==this._internalList[e].getGroupID()&&this._internalList[e].getGroupID()==t.getGroupID()&&(i=!0,this._internalList[e]=t);return 0==i?this._internalList.push(t):this._internalList.length}return this._internalList.push(t)}get(e){return this._internalList[e]}getSize(){return this._internalList.length}getArray(){return this._internalList}}(I=O=O||{}).NOT_INITIALIZED="NOT_INITIALIZED",I.INITIALIZED="INITIALIZED",I.CONNECTING="CONNECTING",I.PUBLISHED="PUBLISHED",I.UNPUBLISHED="UNPUBLISHED",I.STOPPED="STOPPED",I.UNKNOWN="UNKNOWN",I.ERROR="ERROR";class G{constructor(e){this._instant=0,this._slow=0,this.clip=0,this._main=e}attach(e){this._stream=e,this.audioContext=new AudioContext,this.microphone=this.audioContext.createMediaStreamSource(e),this.processor=this.audioContext.createScriptProcessor(2048,1,1),this.microphone.connect(this.processor),this.processor.connect(this.audioContext.destination),this.processor.onaudioprocess=e=>{this.onAudioProcess(e)}}detach(){null!==this.microphone&&this.microphone.disconnect(),null!==this.processor&&this.processor.disconnect()}clear(){this._instant=0,this._slow=0,this.clip=0}onAudioProcess(e){var t=e.inputBuffer.getChannelData(0);let i,n=0,s=0;for(i=0;i<t.length;++i)n+=t[i]*t[i],.99<Math.abs(t[i])&&(s+=1);this._instant=Math.sqrt(n/t.length),this._slow=.05*this._instant+.95*this._slow,this.clip=s/t.length,console.log("sound",this._instant,this._slow),this._main.dispatchEvent("soundMeter",{ref:this._main,high:this._instant,low:this._slow})}}class X{constructor(e){this._isWindowActive=!0,this._peerConnectionConfig={iceServers:[]},this._isMicrophoneMuted=!1,this._constraints={video:{width:{min:"640",ideal:"1024",max:"1024"},height:{min:"360",ideal:"576",max:"576"},frameRate:{min:24,ideal:30,max:30}},audio:!0},this._publishState=O.NOT_INITIALIZED,this.onServerDisconnect=()=>{},this.onServerConnect=()=>{this._peerConnection=new RTCPeerConnection(this._peerConnectionConfig),this._peerConnection.onicecandidate=e=>{this.onIceCandidate(e)},this._peerConnection.onconnectionstatechange=e=>{this.onConnectionStateChange(e)},this._peerConnection.onnegotiationneeded=e=>{this._peerConnection.createOffer(e=>{this.onDescriptionSuccess(e)},e=>{this.onDescriptionError(e)}).catch(e=>{console.log(e)})};var e,t=this._stream.getTracks();for(e in t)this._peerConnection.addTrack(t[e],this._stream)},this.onDescriptionSuccess=t=>{var e;const i={applicationName:null==(e=null==(e=this._main.getNetworkController())?void 0:e.getConnection().getCurrentServer())?void 0:e.getApplication(),streamName:null==(e=this._main.getConfigManager())?void 0:e.getStreamData().streamKey,sessionId:"[empty]"};t.sdp=this._mungeSDP.mungeSDPPublish(t.sdp,{audioBitrate:"64",videoBitrate:"1500",videoFrameRate:30,videoCodec:"42e01f",audioCodec:"opus"}),this._peerConnection.setLocalDescription(t).then(()=>{var e;null!=(e=this._main.getNetworkController())&&e.sendMessage('{"direction":"publish", "command":"sendOffer", "streamInfo":'+JSON.stringify(i)+', "sdp":'+JSON.stringify(t)+"}")}).catch(e=>{console.log(e)})},this.visibilityChange=()=>{"hidden"===document.visibilityState?this.onWindowBlur():"visible"===document.visibilityState&&this.onWindowFocus()},this.onWindowBlur=()=>{this._isWindowActive&&this._logger.warning(this,"Player window is no longer in focus!"),this._isWindowActive=!1},this.onWindowFocus=()=>{this._isWindowActive||this._logger.info(this,"Player window is focused again!"),this._isWindowActive=!0},this._main=e,this._logger=e.getLogger(),this._logger.info(this,"Creating new PlaybackController"),this._mungeSDP=new N,this._soundMeter=new G(this._main),this.initialize()}initialize(){var e;this._main.addEventListener("serverConnect",this.onServerConnect,!1),this._main.addEventListener("serverDisconnect",this.onServerDisconnect,!1),document.addEventListener("visibilitychange",this.visibilityChange),window.addEventListener("blur",this.onWindowBlur),window.addEventListener("focus",this.onWindowFocus),null!=(e=this._main.getConfigManager())&&e.getSettingsData().autoConnect?(this._logger.info(this,"Initializing NetworkController (autoConnect is true)"),null!=(e=this._main.getNetworkController())&&e.initialize()):this._logger.warning(this,"Warning - autoConnect is set to false, switching to standby mode!"),null!=(null==(e=this._main.getConfigManager())?void 0:e.getStreamData().streamKey)&&this.startWebRTC()}startWebRTC(){try{navigator.mediaDevices.getUserMedia?navigator.mediaDevices.getUserMedia(this._constraints).then(e=>{this.onUserMediaSuccess(e)}).catch(e=>{this.onUserMediaError(e)}):(this._logger.error(this,"WebRTCStreamer :: Browser does not support WebRTC"),this._main.dispatchEvent("compatibilityError",{ref:this._main,message:"WebRTC is not supported"}))}catch(e){this.onUserMediaError(e)}}publish(e){this._publishState==O.PUBLISHED&&this.closeStream(),this._main.getConfigManager().getStreamData().streamKey=e,this.startWebRTC()}unpublish(){this.closeStream()}onUserMediaSuccess(e){this._logger.success(this,"WebRTCStreamer :: WebRTC UserMedia successfully retrieved"),this._stream=e,this._soundMeter.attach(this._stream),this.setPublishState(O.INITIALIZED),null!=this._cameraList&&null!=this._microphoneList||this.grabDevices();var t=this._main.getStageController().getScreenElement().getVideoElement();t.srcObject=e,t.autoplay=!0,t.playsInline=!0,null!=(e=this._main.getNetworkController())&&e.start()}onUserMediaError(e){switch(e.message){case"Permission denied":case"The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.":case"The request is not allowed by the user agent or the platform in the current context.":this._logger.warning(this,"WebRTCStreamer :: No permission to access camera & microphone"),this._main.dispatchEvent("inputDeviceDenied",{ref:this._main});break;case"The object can not be found here.":case"Requested device not found":this._logger.warning(this,"WebRTCStreamer :: Could not access camera or microphone"),this._main.dispatchEvent("inputDeviceError",{ref:this._main});break;default:this._logger.warning(this,"WebRTCStreamer :: Unsupported onUserMediaError: "+e.message)}}onSocketMessage(e){var t=JSON.parse(e);switch(Number(t.status)){case 200:var i=t.sdp,n=(void 0!==i&&this._peerConnection.setRemoteDescription(new RTCSessionDescription(i),()=>{},()=>{}),t.iceCandidates);if(void 0!==n)for(var s in n)this._peerConnection.addIceCandidate(new RTCIceCandidate(n[s]));break;case 503:this._main.dispatchEvent("streamKeyInUse",{ref:this._main,streamKey:this._main.getConfigManager().getStreamData().streamKey}),this.setPublishState(O.ERROR)}}onConnectionStateChange(e){if(null!==e)switch(e.currentTarget.connectionState){case"connecting":this._logger.info(this,"WebRTCStreamer :: Event: onStreamerConnecting"),this.setPublishState(O.CONNECTING);break;case"connected":this._logger.info(this,"WebRTCStreamer :: Event: onStreamerConnected"),this.setPublishState(O.PUBLISHED),1==this._isMicrophoneMuted&&this.muteMicrophone(!1);break;case"disconnected":this._logger.info(this,"WebRTCStreamer :: Event: onStreamerDisconnected"),this.setPublishState(O.UNPUBLISHED);break;case"failed":this._logger.info(this,"WebRTCStreamer :: Event: onPlayerFailed"),this.setPublishState(O.ERROR);break;default:this._logger.info(this,"WebRTCStreamer :: Unsupported onConnectionStateChange: "+e.currentTarget.connectionState)}}grabDevices(){navigator.mediaDevices.enumerateDevices().then(t=>{this._cameraList=new W,this._microphoneList=new W;for(let e=0;e<t.length;e++)try{var i,n;"videoinput"===t[e].kind?(i=new k(t[e],e),this._cameraList.push(i)):"audioinput"===t[e].kind&&(n=new k(t[e],e),this._microphoneList.push(n))}catch(e){this._logger.error(this,"WebRTCStreamer :: Input Device Error: "+e)}if(0==this._cameraList.getSize())this._main.dispatchEvent("noCameraFound",{ref:this._main});else if(0==this._microphoneList.getSize())this._main.dispatchEvent("noCameraFound",{ref:this._main});else{this._logger.info(this,"Camera list:");for(let e=0;e<this._cameraList.getSize();e++)this._logger.info(this,"=> ["+e+"] InputDevice: "+this._cameraList.get(e).getLabel());this._logger.info(this,"Microphone list:");for(let e=0;e<this._microphoneList.getSize();e++)this._logger.info(this,"=> ["+e+"] InputDevice: "+this._microphoneList.get(e).getLabel());this._selectedCamera=this.pickCamera(),this._selectedMicrophone=this.pickMicrophone()}}).catch(()=>{this._main.dispatchEvent("inputDeviceError",{ref:this._main})})}selectCamera(t){var i;for(let e=0;e<this._cameraList.getSize();e++)if(this._cameraList.get(e).getID()==t){this._selectedCamera=this._cameraList.get(e),null!=(i=this._main.getStorageManager())&&i.saveField("cameraID",this._selectedCamera.getID());break}this.closeStream(),this._constraints.video.deviceId=this._selectedCamera.getID(),this.startWebRTC()}selectMicrophone(t){var i;for(let e=0;e<this._microphoneList.getSize();e++)if(this._microphoneList.get(e).getID()==t){this._selectedMicrophone=this._microphoneList.get(e),null!=(i=this._main.getStorageManager())&&i.saveField("microphoneID",this._selectedMicrophone.getID());break}this.closeStream(),this._constraints.audio={deviceId:this._selectedMicrophone.getID()},this.startWebRTC()}pickCamera(){for(let e=0;e<this._cameraList.getSize();e++)this._cameraList.get(e).setSelected(!1);var e=null!=(e=null==(e=this._main.getStorageManager())?void 0:e.getField("cameraID"))?e:null;return null==this._selectedCamera||null==e?this._selectedCamera=this._cameraList.get(0):this.selectCamera(e),this._selectedCamera.setSelected(!0),this._main.dispatchEvent("deviceListUpdate",{ref:this._main,cameraList:this._cameraList.getArray(),microphoneList:this._microphoneList.getArray()}),this._selectedCamera}pickMicrophone(){for(let e=0;e<this._microphoneList.getSize();e++)this._microphoneList.get(e).setSelected(!1);var e=null!=(e=null==(e=this._main.getStorageManager())?void 0:e.getField("microphoneID"))?e:null;return null==this._selectedMicrophone||null==e?this._selectedMicrophone=this._microphoneList.get(0):this.selectMicrophone(e),this._selectedMicrophone.setSelected(!0),this._main.dispatchEvent("deviceListUpdate",{ref:this._main,cameraList:this._cameraList.getArray(),microphoneList:this._microphoneList.getArray()}),this._selectedMicrophone}muteMicrophone(t){if(this._publishState==O.PUBLISHED)if(null!==this._stream){t?this._logger.success(this,"WebRTCStreamer :: Unmuting microphone"):this._logger.success(this,"WebRTCStreamer :: Muting microphone");for(let e=0;e<this._stream.getAudioTracks().length;e++)this._stream.getAudioTracks()[e].enabled=t;this._isMicrophoneMuted=!t}else this._logger.warning(this,"WebRTCStreamer :: Stream object not present!");else this._logger.warning(this,"WebRTCStreamer :: Not ready to change microphone")}onDescriptionError(e){this._logger.info(this,"WebRTCStreamer :: onDescriptionError: "+JSON.stringify(e))}onIceCandidate(e){e.candidate}closeStream(){this._stream&&this._stream.getTracks().forEach(function(e){e.stop()}),this._soundMeter.detach(),void 0!==this._peerConnection&&null!==this._peerConnection&&this._peerConnection.close(),this.setPublishState(O.UNPUBLISHED)}getCurrentCamera(){return this._selectedCamera}getCurrentMicrophone(){return this._selectedMicrophone}setPublishState(e){this._publishState=e,this._main.dispatchEvent("publishStateChange",{ref:this._main,state:this._publishState})}getCameraList(){return this._cameraList.getArray()}getMicrophoneList(){return this._microphoneList.getArray()}getPlayer(){return this._selectedPlayer}destroy(){var e;this.closeStream(),null!=(e=this._selectedPlayer)&&e.clear(),this._selectedPlayer=null,this._main.removeEventListener("serverConnect",this.onServerConnect),document.removeEventListener("visibilitychange",this.visibilityChange),window.removeEventListener("blur",this.onWindowBlur),window.removeEventListener("focus",this.onWindowFocus)}}(C=D=D||{})[C.NOT_INITIALIZED=0]="NOT_INITIALIZED",C[C.STARTED=1]="STARTED",C[C.CONNECTING=2]="CONNECTING",C[C.CONNECTED=3]="CONNECTED",C[C.CLOSED=4]="CLOSED",C[C.FAILED=5]="FAILED";class K extends class{constructor(){this.CONNECTION_TIMEOUT=5,this.isBinary=!0,this._connectionState=D.NOT_INITIALIZED,this._messageCount=0,this._disconnectedByUser=!1,this._isConnected=!1,this._sequenceNumber=-1}startConnection(){this._disconnectedByUser=!1,this._messageCount=0,this._isConnected=!1,this._disconnectedByUser=!1,this._connectionState=D.CONNECTING,this.socket=new WebSocket(this.socketURL),this.isBinary&&(this.socket.binaryType="arraybuffer"),this.socket.onopen=e=>{clearTimeout(this._connectionTimeout),this._sequenceNumber++,this._connectionState=D.CONNECTED,this.onSocketOpen(e)},this.socket.onmessage=e=>{this._messageCount++,this.onSocketMessage(e)},this.socket.onclose=e=>{clearTimeout(this._connectionTimeout),this._connectionState==D.CONNECTED?(this._connectionState=D.CLOSED,this.onSocketClose(e)):this._connectionState=D.FAILED},this.socket.onerror=e=>{if(clearTimeout(this._connectionTimeout),this._connectionState==D.CONNECTING&&this.onSocketError(e),this._connectionState==D.CONNECTED)try{this.socket.close()}catch(e){}},this._connectionTimeout=setTimeout(()=>{try{this.socket.close()}catch(e){}this._connectionState==D.CONNECTING&&(this._connectionState=D.FAILED,this.onSocketError(new ErrorEvent("connectionTimeout")))},1e3*this.CONNECTION_TIMEOUT)}onSocketOpen(e){}onSocketClose(e){}onSocketMessage(e){}onSocketError(e){}onError(e){}sendData(e){if(this._connectionState==D.CONNECTED&&null!==this.socket){if(null!=e)return void this.socket.send(e);this.onError("no data to send")}this.onError("socket not connected")}getConnectionState(){return this._connectionState}disconnect(e=!0){this._isConnected=!1,this._connectionState=D.CLOSED,e&&(this._logger.warning(this,"Disconnected by user"),this._disconnectedByUser=e),null!=this.socket&&(this.socket.onopen=null,this.socket.onmessage=null,this.socket.onclose=null,this.socket.onerror=null,this.socket.close())}destroy(){void 0!==this.socket&&null!==this.socket&&(this.socket.onopen=null,this.socket.onmessage=null,this.socket.onclose=null,this.socket.onerror=null,this.socket.close()),this._connectionState=D.CLOSED}getSocketURL(){return this.socketURL}}{constructor(e,t){super(),this._logger=e.getLogger(),this._main=e,this._networkController=t,this.initialize()}initialize(){this._logger.info(this,"Starting new connection with a storm server"),this.pickServerFromList(this._main.getConfigManager().getStreamData().getServerList()),null!=this._currServer?(this.socketURL=this.createURL(this._currServer),this._logger.info(this,"Starting WebSocket connection with: "+this.socketURL),this._main.dispatchEvent("serverConnectionInitiate",{ref:this._main,serverURL:this.socketURL}),this._main.getConfigManager().getIfDemoMode()?(this._logger.warning(this,"Player is in demo mode, and will not connect with a server!"),this._main.dispatchEvent("authorizationComplete",{ref:this._main})):this.startConnection()):this._logger.error(this,"Connection with the server could not be initialized!")}onSocketOpen(e){this._logger.success(this,"Connection with the server has been established!"),this._main.dispatchEvent("serverConnect",{ref:this._main,serverURL:this.socketURL,sequenceNum:this._sequenceNumber}),this._isConnected=!0}onSocketError(e){this._isConnected=!1,this._disconnectedByUser||(this._logger.error(this,"Connection with the server failed"),this._main.dispatchEvent("serverConnectionError",{ref:this._main,serverURL:this.socketURL,restart:this._main.getConfigManager().getSettingsData().getIfRestartOnError(),sequenceNum:this._sequenceNumber}),0==this._isConnected&&(this._currServer.setAsFaild(!0),this.initiateReconnect()))}onSocketClose(e){this._isConnected=!1,this._disconnectedByUser?this._logger.warning(this,"Force disconnect from server!"):(this._logger.error(this,"Connection with the server has been closed"),this._main.dispatchEvent("serverDisconnect",{ref:this._main,serverURL:this.socketURL,restart:this._main.getConfigManager().getSettingsData().getIfRestartOnError(),sequenceNum:this._sequenceNumber}),this.initiateReconnect())}onSocketMessage(e){this._networkController.onMessage(e)}createURL(e){var t="";return(t+=e.getIfSSL()?"wss://":"ws://")+e.getHost()+(":"+e.getPort())+"/webrtc-session.json"}initiateReconnect(){var e=this._main.getConfigManager().getSettingsData().getIfRestartOnError();const t=this._main.getConfigManager().getSettingsData().getReconnectTime();this._disconnectedByUser||e&&(null!=this._reconnectTimer&&clearTimeout(this._reconnectTimer),this._reconnectTimer=setTimeout(()=>{this.pickServerFromList(this._main.getConfigManager().getStreamData().getServerList()),null!=this._currServer&&(this._logger.info(this,`Will reconnect to the server in ${t} seconds...`),this.socketURL=this.createURL(this._currServer),this._logger.info(this,"Starting WebSocket connection with: "+this.socketURL),this._main.dispatchEvent("serverConnectionInitiate",{ref:this._main,serverURL:this.socketURL}),this.startConnection())},1e3*t))}pickServerFromList(t){let i=null;for(let e=0;e<t.length;e++)if(!t[e].getIfFaild()){i=t[e];break}null==i?(this._logger.error(this,"All connections failed!"),this._main.dispatchEvent("allConnectionsFailed",{ref:this._main,mode:"none"}),this._currServer=null):this._currServer=i}isConnectionActive(){return this._isConnected}getCurrentServer(){return this._currServer}destroy(){super.destroy(),null!=this._reconnectTimer&&clearTimeout(this._reconnectTimer)}}class j{constructor(e){this._currentStreamKey="none",this._lastState="",this.onServerConnect=()=>{},this.onServerDisconnect=()=>{this._lastState="none"},this.onMessage=e=>{var t;null!=(t=this._main.getPlaybackController())&&t.onSocketMessage(e.data)},this._main=e,this._logger=e.getLogger(),this._main.addEventListener("serverConnect",this.onServerConnect,!1),this._main.addEventListener("serverDisconnect",this.onServerDisconnect,!1)}initialize(){null!=this._connection&&(this._connection.getConnectionState()==D.CONNECTING||this._connection.getConnectionState()==D.CONNECTED?this._logger.info(this,"Connection is alive, not doing anything!"):(this._logger.info(this,"Connection is dead, restarting!"),this._connection.startConnection()))}start(){this._connection=new K(this._main,this)}stop(){this._connection.disconnect(!0),this._lastState=""}sendMessage(e){this._connection.isConnectionActive()&&this._connection.sendData(e)}getConnection(){return this._connection}getCurrentStreamKey(){return this._currentStreamKey}}class x extends class{constructor(){this._isRemoved=!1,this._listeners={}}addEventListener(t,i,e=!0){this._listeners[t]||(this._listeners[t]=[]);let n=!1;if(null!=this._listeners[t]&&0<this._listeners[t].length)for(let e=0;e<this._listeners[t].length;e++)if(this._listeners[t][e][1]==i){n=!0;break}return this._logger.success(this,"Registering a new event: "+t),!n&&(this._listeners[t].push([t,i,e]),!0)}removeEventListener(t,i){let n=!1;if(null!=this._listeners[t]&&0<this._listeners[t].length)for(let e=0;e<this._listeners[t].length;e++){var s=this._listeners[t][e];if(i){if(s[1]==i){if(1!=s[2])break;n=!0,this._listeners[t].splice(e,1);break}}else n=!0,1==s[2]&&this._listeners[t].splice(e,1)}return this._logger.success(this,"Removing listener: "+t),n}removeAllEventListeners(){this._logger.success(this,"Removing all listeners!");for(const i in this._listeners){var e=i,t=this._listeners[e];if(t&&0<t.length)for(let e=t.length-1;0<=e;e--)!0===t[e][2]&&t.splice(e,1)}}dispatchEvent(t,i){if(!this._isRemoved&&null!=this._listeners[t]&&0<this._listeners[t].length)for(let e=0;e<this._listeners[t].length;e++)this._listeners[t][e][1].call(this,i)}}{constructor(e,t=!1){super(),this.DEV_MODE=!0,this.STREAMER_VERSION="0.9.0-beta.0",this.COMPILE_DATE="11/28/2024, 9:22:53 AM",this.STREAMER_BRANCH="Experimental",this.STREAMER_PROTOCOL_VERSION=1,this._initialized=!1,"undefined"!=typeof window&&window.document&&window.document.createElement?(!this.DEV_MODE||"StormStreamerArray"in window||(window.StormStreamerArray=[]),window.StormStreamerArray.push(this),this._streamerID=x.NEXT_STREAMER_ID++,null!=e&&(this.setStreamConfig(e),t)&&this.initialize()):console.error('StormLibrary Creation Error - No "window" element in the provided context!')}initialize(){if(!this._isRemoved){if(null==this._configManager)throw Error("Stream Config was not provided for this library! A properly configured object must be provided through the constructor or via the setConfig method before using the initialize() method.");this._storageManager=new m(this),this._stageController=new y(this),this._networkController=new j(this),this._playbackController=new X(this),this._clientUser=new e,this._initialized=!0,this.dispatchEvent("streamerReady",{ref:this})}}setStreamConfig(e){this._isRemoved||(e=JSON.parse(JSON.stringify(e)),null==this._configManager?(this._configManager=new d(e),this._logger=new u(this._configManager.getSettingsData().getDebugData(),this),this._logger.info(this,"StreamerID: "+this._streamerID),this._logger.info(this,"Version: "+this.STREAMER_VERSION+" | Compile Date: "+this.COMPILE_DATE+" | Branch: "+this.STREAMER_BRANCH),this._logger.info(this,"UserCapabilities :: Browser: "+_.getBrowserName()+" "+_.getBrowserVersion()),this._logger.info(this,"UserCapabilities :: Operating System: "+_.getOS()+" "+_.getOSVersion()),this._logger.info(this,"UserCapabilities :: isMobile: "+_.isMobile()),this._logger.info(this,"UserCapabilities :: hasMSESupport: "+_.hasMSESupport()),this._logger.info(this,"UserCapabilities :: hasWebSocketSupport: "+_.hasWebSocketsSupport()),this._logger.info(this,"UserCapabilities :: hasWebRTCSupport: "+_.hasWebRTCSupport()),this._configManager.print(this._logger)):(this._logger.info(this,"StreamConfig has been overwritten, dispatching streamConfigChanged!"),this._configManager=new d(e),this._configManager.print(this._logger),this.dispatchEvent("streamConfigChange",{ref:this,newConfig:this._configManager})))}stop(){}isConnected(){var e;return null!=(e=null==(e=this._networkController)?void 0:e.getConnection().isConnectionActive())&&e}attachToContainer(e){var t;return!!this._initialized&&null!=(t=null==(t=this._stageController)?void 0:t.attachToParent(e))&&t}detachFromContainer(){var e;return!!this._initialized&&null!=(e=null==(e=this._stageController)?void 0:e.detachFromParent())&&e}getContainer(){var e;return null!=(e=null==(e=this._stageController)?void 0:e.getParentElement())?e:null}mute(){null!=this._stageController&&null!=this._stageController.getScreenElement()?this._stageController.getScreenElement().setMuted(!0):this._configManager.getSettingsData().getAudioData().muted=!0}unmute(){null!=this._stageController&&null!=this._stageController.getScreenElement()?this._stageController.getScreenElement().setMuted(!1):this._configManager.getSettingsData().getAudioData().muted=!1}isMute(){var e;return null!=(e=null!=(e=null==(e=null==(e=this._stageController)?void 0:e.getScreenElement())?void 0:e.getIfMuted())?e:this._configManager.getSettingsData().getAudioData().muted)&&e}toggleMute(){var e=this.isMute();return e?this.unmute():this.mute(),!e}setVolume(e){var t;void 0===(null==(t=null==(t=this._stageController)?void 0:t.getScreenElement())?void 0:t.setVolume(e))&&(this._configManager.getSettingsData().getAudioData().startVolume=e)}getVolume(){var e;return null!=(e=null==(e=null==(e=this._stageController)?void 0:e.getScreenElement())?void 0:e.getVolume())?e:this._configManager.getSettingsData().getAudioData().startVolume}getCameraList(){var e;return null!=(e=null==(e=this._playbackController)?void 0:e.getCameraList())?e:null}getMicrophoneList(){var e;return null!=(e=null==(e=this._playbackController)?void 0:e.getMicrophoneList())?e:null}setCamera(e){var t;null!=(t=this._playbackController)&&t.selectCamera(e)}setMicrophone(e){var t;null!=(t=this._playbackController)&&t.selectMicrophone(e)}getCurrentCamera(){return this._playbackController.getCurrentCamera()}getCurrentMicrophone(){return this._playbackController.getCurrentMicrophone()}muteMicrophone(e){var t;null!=(t=this._playbackController)&&t.muteMicrophone(e)}publish(e){var t;null!=(t=this._playbackController)&&t.publish(e)}unpublish(){var e;null!=(e=this._playbackController)&&e.unpublish()}setSize(e,t){this._initialized?this._stageController.setSize(e,t):(e=g.parseValue(e),t=g.parseValue(t),this._configManager.getSettingsData().getVideoData().videoWidthValue=e.value,this._configManager.getSettingsData().getVideoData().videoWidthInPixels=e.isPixels,this._configManager.getSettingsData().getVideoData().videoHeightValue=t.value,this._configManager.getSettingsData().getVideoData().videoHeightInPixels=t.isPixels)}setWidth(e){this._initialized?this._stageController.setWidth(e):(e=g.parseValue(e),this._configManager.getSettingsData().getVideoData().videoWidthValue=e.value,this._configManager.getSettingsData().getVideoData().videoWidthInPixels=e.isPixels)}setHeight(e){this._initialized?this._stageController.setHeight(e):(e=g.parseValue(e),this._configManager.getSettingsData().getVideoData().videoHeightValue=e.value,this._configManager.getSettingsData().getVideoData().videoHeightInPixels=e.isPixels)}getWidth(){return this._initialized?this._stageController.getContainerWidth():this._configManager.getSettingsData().getVideoData().videoWidthInPixels?this._configManager.getSettingsData().getVideoData().videoWidthValue:0}getHeight(){return this._initialized?this._stageController.getContainerHeight():this._configManager.getSettingsData().getVideoData().videoHeightInPixels?this._configManager.getSettingsData().getVideoData().videoHeightValue:0}setScalingMode(e){this._stageController?this._stageController.setScalingMode(e):this._configManager.getSettingsData().getVideoData().scalingMode=e}getScalingMode(){return this._stageController?this._stageController.getScalingMode():this._configManager.getSettingsData().getVideoData().scalingMode}updateToSize(){this._initialized&&this._stageController.onResize()}makeScreenshot(){let i=document.createElement("canvas"),n=i.getContext("2d");return new Promise(t=>{var e;null!=this._stageController&&(i.width=this._stageController.getScreenElement().getVideoElement().videoWidth,i.height=this._stageController.getScreenElement().getVideoElement().videoHeight,e=this._stageController.getScreenElement().getVideoElement(),n)?(n.drawImage(e,0,0,i.width,i.height),i.toBlob(e=>{t(e)},"image/png")):t(null)})}enterFullScreen(){this._initialized&&this._stageController&&this._stageController.enterFullScreen()}exitFullScreen(){this._initialized&&this._stageController&&this._stageController.exitFullScreen()}isFullScreenMode(){return!(!this._initialized||!this._stageController)&&this._stageController.isFullScreenMode()}getStreamerID(){return this._streamerID}getLogger(){return this._logger}getConfigManager(){return this._configManager}getNetworkController(){return this._networkController}getPlaybackController(){return this._playbackController}getStageController(){return this._stageController}getVideoElement(){var e;return null!=(e=null==(e=null==(e=this._stageController)?void 0:e.getScreenElement())?void 0:e.getVideoElement())?e:null}isInitialized(){return this._initialized}getVersion(){return this.STREAMER_VERSION}getBranch(){return this.STREAMER_BRANCH}getStorageManager(){return this._storageManager}dispatchEvent(e,t){super.dispatchEvent(e,t)}destroy(){var e;this._logger.warning(this,"Destroying library instance, bye, bye!"),this._initialized=!1,this._isRemoved=!0,null!=(e=this._networkController)&&e.getConnection().destroy(),null!=(e=this._stageController)&&e.destroy(),null!=(e=this._playbackController)&&e.destroy(),this.removeAllEventListeners()}}return x.NEXT_STREAMER_ID=0,function(e){return new x(e)}}();
@@ -0,0 +1,75 @@
1
+ import { ConfigManager } from "./config/ConfigManager";
2
+ import { EventDispatcher } from "./events/EventDispatcher";
3
+ import { Logger } from "./logger/Logger";
4
+ import { StreamerConfig } from "./types/StreamerConfig";
5
+ import { StormStreamerEvent } from "./events/StormStreamerEvent";
6
+ import { StorageManager } from "./storage/StorageManager";
7
+ import { StageController } from "./stage/StageController";
8
+ import { PlaybackController } from "./playback/PlaybackController";
9
+ import { NetworkController } from "./network/NetworkController";
10
+ import { ScalingType } from "./config/enum/ScalingType";
11
+ import { InputDevice } from "./playback/model/InputDevice";
12
+ export declare class StormStreamer extends EventDispatcher {
13
+ private static NEXT_STREAMER_ID;
14
+ private readonly DEV_MODE;
15
+ private readonly STREAMER_VERSION;
16
+ private readonly COMPILE_DATE;
17
+ private readonly STREAMER_BRANCH;
18
+ readonly STREAMER_PROTOCOL_VERSION: number;
19
+ private readonly _streamerID;
20
+ private _configManager;
21
+ private _initialized;
22
+ private _storageManager;
23
+ private _stageController;
24
+ private _playbackController;
25
+ private _networkController;
26
+ private _clientUser;
27
+ constructor(streamConfig?: StreamerConfig, autoInitialize?: boolean);
28
+ initialize(): void;
29
+ setStreamConfig(streamConfig: StreamerConfig): void;
30
+ stop(): void;
31
+ isConnected(): boolean;
32
+ attachToContainer(container: string | HTMLElement): boolean;
33
+ detachFromContainer(): boolean;
34
+ getContainer(): HTMLElement | null;
35
+ mute(): void;
36
+ unmute(): void;
37
+ isMute(): boolean;
38
+ toggleMute(): boolean;
39
+ setVolume(newVolume: number): void;
40
+ getVolume(): number;
41
+ getCameraList(): InputDevice[] | null;
42
+ getMicrophoneList(): InputDevice[] | null;
43
+ setCamera(cameraID: string): void;
44
+ setMicrophone(microphoneID: string): void;
45
+ getCurrentCamera(): InputDevice | null;
46
+ getCurrentMicrophone(): InputDevice | null;
47
+ muteMicrophone(microphoneState: boolean): void;
48
+ publish(streamKey: string): void;
49
+ unpublish(): void;
50
+ setSize(width: number | string, height: number | string): void;
51
+ setWidth(width: number | string): void;
52
+ setHeight(height: number | string): void;
53
+ getWidth(): number;
54
+ getHeight(): number;
55
+ setScalingMode(newMode: string): void;
56
+ getScalingMode(): ScalingType;
57
+ updateToSize(): void;
58
+ makeScreenshot(): Promise<Blob | null>;
59
+ enterFullScreen(): void;
60
+ exitFullScreen(): void;
61
+ isFullScreenMode(): boolean;
62
+ getStreamerID(): number;
63
+ getLogger(): Logger;
64
+ getConfigManager(): ConfigManager | null;
65
+ getNetworkController(): NetworkController | null;
66
+ getPlaybackController(): PlaybackController | null;
67
+ getStageController(): StageController | null;
68
+ getVideoElement(): HTMLVideoElement | null;
69
+ isInitialized(): boolean;
70
+ getVersion(): string;
71
+ getBranch(): string;
72
+ getStorageManager(): StorageManager | null;
73
+ dispatchEvent<K extends keyof StormStreamerEvent>(eventName: K, event: StormStreamerEvent[K]): void;
74
+ destroy(): void;
75
+ }
@@ -0,0 +1,16 @@
1
+ import { Logger } from "../logger/Logger";
2
+ import { IConfig } from "./IConfig";
3
+ import { AudioConfig } from "../types/AudioConfig";
4
+ export declare class AudioData implements IConfig {
5
+ private static readonly PRINT_ON_STARTUP;
6
+ private _audioConfig;
7
+ private _startVolume;
8
+ private _isMuted;
9
+ constructor(volumeConfig: AudioConfig | null);
10
+ parse(config: AudioConfig | null): void;
11
+ get startVolume(): number;
12
+ set startVolume(newValue: number);
13
+ get muted(): boolean;
14
+ set muted(newValue: boolean);
15
+ print(logger: Logger, force?: boolean): void;
16
+ }
@@ -0,0 +1,18 @@
1
+ import { IConfig } from "./IConfig";
2
+ import { StreamData } from "./StreamData";
3
+ import { SettingsData } from "./SettingsData";
4
+ import { Logger } from "../logger/Logger";
5
+ import { StreamerConfig } from "../types/StreamerConfig";
6
+ export declare class ConfigManager implements IConfig {
7
+ private readonly PRINT_ON_STARTUP;
8
+ private configTemplate;
9
+ private streamData;
10
+ private settingsData;
11
+ private demoMode;
12
+ constructor(config: StreamerConfig);
13
+ parse(config: StreamerConfig): void;
14
+ getStreamData(): StreamData;
15
+ getSettingsData(): SettingsData;
16
+ getIfDemoMode(): boolean;
17
+ print(logger: Logger, force?: boolean): void;
18
+ }
@@ -0,0 +1,33 @@
1
+ import { IConfig } from "./IConfig";
2
+ import { LogType } from "./enum/LogType";
3
+ import { Logger } from "../logger/Logger";
4
+ import { DebugConfig } from "../types/DebugConfig";
5
+ export declare class DebugData implements IConfig {
6
+ private static readonly PRINT_ON_STARTUP;
7
+ private _debugConfig;
8
+ private _consoleLogEnabled;
9
+ private _enabledConsoleTypes;
10
+ private _consoleMonoColor;
11
+ private _containerLogEnabled;
12
+ private _enabledContainerTypes;
13
+ private _containerID;
14
+ private _containerLogMonoColor;
15
+ constructor(debugConfig: DebugConfig | null);
16
+ parse(debugConfig: DebugConfig | null): void;
17
+ private parseLogTypes;
18
+ get consoleLogEnabled(): boolean;
19
+ set consoleLogEnabled(newValue: boolean);
20
+ get enabledConsoleTypes(): Array<LogType>;
21
+ set enabledConsoleTypes(newValue: Array<string>);
22
+ get containerLogEnabled(): boolean;
23
+ set containerLogEnabled(newValue: boolean);
24
+ get consoleLogMonoColor(): boolean;
25
+ set consoleLogMonoColor(newValue: boolean);
26
+ get enabledContainerTypes(): Array<LogType>;
27
+ set enabledContainerTypes(newValue: Array<string>);
28
+ get containerID(): string | null;
29
+ set containerID(object: string);
30
+ get containerLogMonoColor(): boolean;
31
+ set containerLogMonoColor(newValue: boolean);
32
+ print(logger: Logger, force?: boolean): void;
33
+ }
@@ -0,0 +1,4 @@
1
+ import { Logger } from "../logger/Logger";
2
+ export interface IConfig {
3
+ print(logger: Logger, force: boolean): void;
4
+ }
@@ -0,0 +1,37 @@
1
+ import { IConfig } from "./IConfig";
2
+ import { VideoData } from "./VideoData";
3
+ import { DebugData } from "./DebugData";
4
+ import { AudioData } from "./AudioData";
5
+ import { Logger } from "../logger/Logger";
6
+ import { SettingsConfig } from "../types/SettingsConfig";
7
+ import { StorageData } from "./StorageData";
8
+ export declare class SettingsData implements IConfig {
9
+ private static readonly PRINT_ON_STARTUP;
10
+ private _settingsConfig;
11
+ private _restartOnError;
12
+ private _reconnectTime;
13
+ private _autoStart;
14
+ private _autoConnect;
15
+ private startOnDOMReady;
16
+ private iOSOnDomReadyFix;
17
+ private _videoData;
18
+ private _debugData;
19
+ private _storageData;
20
+ private _audioData;
21
+ private _restartOnFocus;
22
+ constructor(config: SettingsConfig);
23
+ parse(config: SettingsConfig): void;
24
+ getAudioData(): AudioData;
25
+ getVideoData(): VideoData;
26
+ getStorageData(): StorageData;
27
+ getIfRestartOnError(): boolean;
28
+ getReconnectTime(): number;
29
+ get autoStart(): boolean;
30
+ set autoStart(newValue: boolean);
31
+ get autoConnect(): boolean;
32
+ get restartOnFocus(): boolean;
33
+ getDebugData(): DebugData;
34
+ getIfStartOnDOMReadyEnabled(): boolean;
35
+ getIfIOSOnDomStartFixEnabled(): boolean;
36
+ print(logger: Logger, force?: boolean): void;
37
+ }
@@ -0,0 +1,16 @@
1
+ import { Logger } from "../logger/Logger";
2
+ import { IConfig } from "./IConfig";
3
+ import { StorageConfig } from "../types/StorageConfig";
4
+ export declare class StorageData implements IConfig {
5
+ private static readonly PRINT_ON_STARTUP;
6
+ private _storageConfig;
7
+ private _enabled;
8
+ private _prefix;
9
+ constructor(storageConfig: StorageConfig | null);
10
+ parse(config: StorageConfig | null): void;
11
+ get enabled(): boolean;
12
+ set enabled(newValue: boolean);
13
+ get prefix(): string;
14
+ set prefix(newValue: string);
15
+ print(logger: Logger, force?: boolean): void;
16
+ }
@@ -0,0 +1,25 @@
1
+ import { StormServerItem } from "../model/StormServerItem";
2
+ import { ISourceItem } from "../model/ISourceItem";
3
+ import { Logger } from "../logger/Logger";
4
+ import { StreamConfig } from "../types/StreamConfig";
5
+ export declare class StreamData {
6
+ private static readonly PRINT_ON_STARTUP;
7
+ private static readonly DEFAULT_CONNECTION_PORT;
8
+ private static readonly IS_SSL_BY_DEFAULT;
9
+ private _streamConfig;
10
+ private _serverList;
11
+ private _sourceList;
12
+ private publishData;
13
+ private _streamKey;
14
+ constructor(streamConfig: StreamConfig);
15
+ parse(streamConfig: StreamConfig): void;
16
+ getServerList(): Array<StormServerItem>;
17
+ getSourceList(): Array<ISourceItem>;
18
+ get streamKey(): string | null;
19
+ set streamKey(newValue: string | null);
20
+ set serverList(serverList: Array<StormServerItem>);
21
+ set sourceList(sourceList: Array<ISourceItem>);
22
+ clearSourceList(): void;
23
+ clearServerList(): void;
24
+ print(logger: Logger, force?: boolean): void;
25
+ }
@@ -0,0 +1,40 @@
1
+ import { IConfig } from "./IConfig";
2
+ import { ScalingType } from "./enum/ScalingType";
3
+ import { Logger } from "../logger/Logger";
4
+ import { VideoConfig } from "../types/VideoConfig";
5
+ import { SizeCalculationType } from "./enum/SizeCalculationType";
6
+ export declare class VideoData implements IConfig {
7
+ private videoConfig;
8
+ private _scalingMode;
9
+ private _containerID;
10
+ private _aspectRatio;
11
+ private _videoWidthValue;
12
+ private _isVideoWidthInPixels;
13
+ private _wasVideoWidthProvided;
14
+ private _videoHeightValue;
15
+ private _isVideoHeightInPixels;
16
+ private _wasVideoHeightProvided;
17
+ private _resizeDebounce;
18
+ private _parentSizeCalculationMethod;
19
+ constructor(videoConfig: VideoConfig | null);
20
+ parse(config: VideoConfig | null): void;
21
+ get scalingMode(): ScalingType;
22
+ get containerID(): string | null;
23
+ get videoWidthValue(): number;
24
+ get videoWidthInPixels(): boolean;
25
+ get videoWidthProvided(): boolean;
26
+ get videoHeightValue(): number;
27
+ get videoHeightInPixels(): boolean;
28
+ get videoHeightProvided(): boolean;
29
+ get aspectRatio(): string;
30
+ get resizeDebounce(): number;
31
+ set resizeDebounce(newValue: number);
32
+ set videoWidthValue(newWidth: number);
33
+ set videoWidthInPixels(value: boolean);
34
+ set videoHeightValue(newHeight: number);
35
+ set videoHeightInPixels(value: boolean);
36
+ set containerID(newContainerID: string);
37
+ set scalingMode(newScalingMode: string);
38
+ get parentSizeCalculationMethod(): SizeCalculationType;
39
+ print(logger: Logger): void;
40
+ }
@@ -0,0 +1,7 @@
1
+ export declare enum LogType {
2
+ TRACE = 0,
3
+ INFO = 1,
4
+ SUCCESS = 2,
5
+ WARNING = 3,
6
+ ERROR = 4
7
+ }
@@ -0,0 +1,7 @@
1
+ export declare enum ProtocolType {
2
+ RTMP = "RTMP",
3
+ RTSP = "RTSP",
4
+ WEBRTC = "WebRTC",
5
+ HLS = "HLS",
6
+ STORM = "Storm"
7
+ }
@@ -0,0 +1,6 @@
1
+ export declare enum ScalingType {
2
+ FILL = "fill",
3
+ LETTER_BOX = "letterbox",
4
+ CROP = "crop",
5
+ ORIGINAL = "original"
6
+ }
@@ -0,0 +1,4 @@
1
+ export declare enum SecurityType {
2
+ NONE = 0,
3
+ TOKEN = 1
4
+ }
@@ -0,0 +1,5 @@
1
+ export declare enum SizeCalculationType {
2
+ CLIENT_DIMENSIONS = "clientDimensions",
3
+ BOUNDING_BOX = "boundingBox",
4
+ FULL_BOX = "fullBox"
5
+ }
@@ -0,0 +1,15 @@
1
+ import { StormStreamerEvent } from "./StormStreamerEvent";
2
+ import { StormStreamerListener } from "./StormStreamerListener";
3
+ import { Logger } from "../logger/Logger";
4
+ export declare class EventDispatcher {
5
+ protected _isRemoved: boolean;
6
+ protected _logger: Logger;
7
+ protected _listeners: {
8
+ [K in keyof StormStreamerEvent]?: Array<StormStreamerListener<K>>;
9
+ };
10
+ constructor();
11
+ addEventListener<K extends keyof StormStreamerEvent>(eventName: K, listener: (ev: StormStreamerEvent[K]) => void, removable?: boolean): boolean;
12
+ removeEventListener<K extends keyof StormStreamerEvent>(eventName: K, listener?: (ev: StormStreamerEvent[K]) => void): boolean;
13
+ removeAllEventListeners<K extends keyof StormStreamerEvent>(): void;
14
+ dispatchEvent<K extends keyof StormStreamerEvent>(eventName: K, event: StormStreamerEvent[K]): void;
15
+ }