@webex/plugin-meetings 2.60.0-next.7 → 2.60.0-next.8

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.
@@ -1 +1 @@
1
- {"version":3,"names":["_lodash","require","_constants","getAudioReceiverMqa","exports","_ref","_lastMqaDataSent$medi","_lastMqaDataSent$medi2","_lastMqaDataSent$medi3","_lastMqaDataSent$medi4","_lastMqaDataSent$medi5","_lastMqaDataSent$medi6","_lastMqaDataSent$medi7","_lastMqaDataSent$medi8","audioReceiver","statsResults","lastMqaDataSent","mediaType","sendrecvType","STATS","RECEIVE_DIRECTION","lastPacketsReceived","totalPacketsReceived","lastPacketsLost","totalPacketsLost","lastPacketsDecoded","totalSamplesDecoded","lastSamplesReceived","totalSamplesReceived","lastConcealedSamples","concealedSamples","lastBytesReceived","totalBytesReceived","lastFecPacketsReceived","fecPacketsReceived","lastFecPacketsDiscarded","fecPacketsDiscarded","csi","streams","common","includes","push","direction","transportType","connectionType","local","transport","rtpPackets","mediaHopByHopLost","rtpHopByHopLost","maxRtpJitter","max","meanRtpJitter","mean","rtpJitter","fecRecovered","rtpEndToEndLost","framesDropped","renderedFrameRate","framesReceived","concealedFrames","receivedBitrate","rtpBitrate","getAudioSenderMqa","_ref2","_lastMqaDataSent$medi9","_lastMqaDataSent$medi10","_lastMqaDataSent$medi11","_lastMqaDataSent$medi12","_lastMqaDataSent$medi13","audioSender","SEND_DIRECTION","lastPacketsSent","totalPacketsSent","totalPacketsLostOnReceiver","lastBytesSent","totalBytesSent","lastFramesEncoded","totalKeyFramesEncoded","lastFirCount","totalFirCount","maxRemoteJitter","meanRemoteJitter","availableBitrate","availableOutgoingBitrate","totalpacketsLostForaMin","remoteLossRate","maxRoundTripTime","meanRoundTripTime","roundTripTime","totalBytesSentInaMin","transmittedBitrate","transmittedKeyFrames","requestedKeyFrames","getVideoReceiverMqa","_ref3","_lastMqaDataSent$medi14","_lastMqaDataSent$medi15","_lastMqaDataSent$medi16","_lastMqaDataSent$reso","_lastMqaDataSent$reso2","_lastMqaDataSent$reso3","_lastMqaDataSent$medi17","_lastMqaDataSent$medi18","videoReceiver","lastFramesReceived","resolutions","lastFramesDecoded","framesDecoded","lastFramesDropped","lastKeyFramesDecoded","keyFramesDecoded","lastPliCount","totalPliCount","totalPacketLoss","totalBytesReceivedInaMin","totalFrameReceivedInaMin","totalFrameDecodedInaMin","receivedFrameRate","Math","round","receivedHeight","height","receivedWidth","width","receivedFrameSize","receivedKeyFrames","getVideoSenderMqa","_ref4","_lastMqaDataSent$medi19","_lastMqaDataSent$medi20","_lastMqaDataSent$medi21","_lastMqaDataSent$reso4","_lastMqaDataSent$medi22","_lastMqaDataSent$reso5","videoSender","lastKeyFramesEncoded","lastFramesSent","framesSent","totalFrameSentInaMin","transmittedFrameRate","transmittedHeight","transmittedWidth","transmittedFrameSize"],"sources":["mqaUtil.ts"],"sourcesContent":["/* eslint-disable no-param-reassign, prefer-destructuring */\n\nimport {mean, max} from 'lodash';\n\nimport {STATS} from '../constants';\n\nexport const getAudioReceiverMqa = ({audioReceiver, statsResults, lastMqaDataSent, mediaType}) => {\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n const lastPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsReceived || 0;\n const lastPacketsLost = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLost || 0;\n const lastPacketsDecoded = lastMqaDataSent[mediaType]?.[sendrecvType].totalSamplesDecoded || 0;\n const lastSamplesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalSamplesReceived || 0;\n const lastConcealedSamples = lastMqaDataSent[mediaType]?.[sendrecvType].concealedSamples || 0;\n const lastBytesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesReceived || 0;\n const lastFecPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].fecPacketsReceived || 0;\n const lastFecPacketsDiscarded =\n lastMqaDataSent[mediaType]?.[sendrecvType].fecPacketsDiscarded || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !audioReceiver.streams[0].common.csi.includes(csi)) {\n audioReceiver.streams[0].common.csi.push(csi);\n }\n\n audioReceiver.common.common.direction = statsResults[mediaType].direction;\n audioReceiver.common.transportType = statsResults.connectionType.local.transport;\n\n // add rtpPacket info inside common as also for call analyzer\n audioReceiver.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;\n // Hop by hop are numbers and not percentage so we compare on what we sent the last min\n // collect the packets received for the last min\n audioReceiver.streams[0].common.rtpPackets = audioReceiver.common.rtpPackets;\n audioReceiver.common.mediaHopByHopLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;\n audioReceiver.common.rtpHopByHopLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;\n\n audioReceiver.streams[0].common.maxRtpJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;\n audioReceiver.streams[0].common.meanRtpJitter =\n mean(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;\n audioReceiver.streams[0].common.rtpJitter = audioReceiver.streams[0].common.maxRtpJitter;\n\n // Fec packets do come in as part of the FEC only for audio\n const fecRecovered =\n statsResults[mediaType][sendrecvType].fecPacketsReceived -\n lastFecPacketsReceived -\n (statsResults[mediaType][sendrecvType].fecPacketsDiscarded - lastFecPacketsDiscarded);\n\n audioReceiver.streams[0].common.rtpEndToEndLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost - fecRecovered || 0;\n\n audioReceiver.streams[0].common.framesDropped =\n statsResults[mediaType][sendrecvType].totalSamplesDecoded - lastPacketsDecoded || 0;\n audioReceiver.streams[0].common.renderedFrameRate =\n (audioReceiver.streams[0].common.framesDropped * 100) / 60 || 0;\n\n audioReceiver.streams[0].common.framesReceived =\n statsResults[mediaType][sendrecvType].totalSamplesReceived - lastSamplesReceived || 0;\n audioReceiver.streams[0].common.concealedFrames =\n statsResults[mediaType][sendrecvType].concealedSamples - lastConcealedSamples || 0;\n audioReceiver.streams[0].common.receivedBitrate =\n ((statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived) * 8) / 60 || 0;\n\n audioReceiver.common.rtpBitrate = audioReceiver.streams[0].common.receivedBitrate;\n};\n\nexport const getAudioSenderMqa = ({audioSender, statsResults, lastMqaDataSent, mediaType}) => {\n const sendrecvType = STATS.SEND_DIRECTION;\n\n const lastPacketsSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsSent || 0;\n const lastPacketsLost =\n lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLostOnReceiver || 0;\n const lastBytesSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesSent || 0;\n const lastFramesEncoded = lastMqaDataSent[mediaType]?.[sendrecvType].totalKeyFramesEncoded || 0;\n const lastFirCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalFirCount || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !audioSender.streams[0].common.csi.includes(csi)) {\n audioSender.streams[0].common.csi.push(csi);\n }\n\n audioSender.common.common.direction = statsResults[mediaType].direction;\n audioSender.common.transportType = statsResults.connectionType.local.transport;\n\n audioSender.common.maxRemoteJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n audioSender.common.meanRemoteJitter =\n mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n\n audioSender.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;\n audioSender.streams[0].common.rtpPackets = audioSender.common.rtpPackets;\n // From candidate-pair\n audioSender.common.availableBitrate =\n statsResults[mediaType][sendrecvType].availableOutgoingBitrate || 0;\n // Calculate based on how much packets lost of received compated to how to the client sent\n\n const totalpacketsLostForaMin =\n statsResults[mediaType][sendrecvType].totalPacketsLostOnReceiver - lastPacketsLost;\n\n audioSender.common.remoteLossRate =\n totalpacketsLostForaMin > 0\n ? (totalpacketsLostForaMin * 100) / audioSender.common.rtpPackets\n : 0; // This is the packets sent with in last min || 0;\n\n audioSender.common.maxRoundTripTime =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;\n audioSender.common.meanRoundTripTime =\n mean(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;\n audioSender.common.roundTripTime = audioSender.common.maxRoundTripTime;\n\n // Calculate the outgoing bitrate\n const totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastBytesSent;\n\n audioSender.streams[0].common.transmittedBitrate = totalBytesSentInaMin\n ? (totalBytesSentInaMin * 8) / 60\n : 0;\n audioSender.common.rtpBitrate = audioSender.streams[0].common.transmittedBitrate;\n\n audioSender.streams[0].transmittedKeyFrames =\n statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastFramesEncoded || 0;\n audioSender.streams[0].requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalFirCount - lastFirCount || 0;\n};\n\nexport const getVideoReceiverMqa = ({videoReceiver, statsResults, lastMqaDataSent, mediaType}) => {\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n const lastPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsReceived || 0;\n const lastPacketsLost = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLost || 0;\n const lastBytesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesReceived || 0;\n const lastFramesReceived =\n lastMqaDataSent.resolutions[mediaType]?.[sendrecvType].framesReceived || 0;\n const lastFramesDecoded =\n lastMqaDataSent.resolutions[mediaType]?.[sendrecvType].framesDecoded || 0;\n const lastFramesDropped =\n lastMqaDataSent.resolutions[mediaType]?.[sendrecvType].framesDropped || 0;\n const lastKeyFramesDecoded = lastMqaDataSent[mediaType]?.[sendrecvType].keyFramesDecoded || 0;\n const lastPliCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalPliCount || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !videoReceiver.streams[0].common.csi.includes(csi)) {\n videoReceiver.streams[0].common.csi.push(csi);\n }\n\n videoReceiver.common.common.direction = statsResults[mediaType].direction;\n videoReceiver.common.transportType = statsResults.connectionType.local.transport;\n\n // collect the packets received for the last min\n videoReceiver.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;\n videoReceiver.streams[0].common.rtpPackets = videoReceiver.common.rtpPackets;\n\n const totalPacketLoss =\n statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;\n\n // Hope by hop are numbers and not percentage so we compare on what we sent the last min\n // this is including packet lost\n videoReceiver.common.mediaHopByHopLost = totalPacketLoss;\n videoReceiver.common.rtpHopByHopLost = totalPacketLoss;\n\n // End to end packetloss is after recovery\n videoReceiver.streams[0].common.rtpEndToEndLost = totalPacketLoss;\n\n // calculate this values\n\n videoReceiver.common.maxRemoteJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n videoReceiver.common.meanRemoteJitter =\n mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n\n videoReceiver.streams[0].common.rtpJitter = videoReceiver.common.maxRemoteJitter;\n // videoReceiver.streams[0].common.rtpJitter = (statsResults.resolutions[mediaType][sendrecvType].jitterBufferDelay - lastMqaDataSent.resolutions[mediaType]?.[sendrecvType].jitterBufferDelay) / (statsResults.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount - lastMqaDataSent.resolutions[mediaType]?.[sendrecvType].jitterBufferEmittedCount) * 1000 || 0;\n\n // Calculate the outgoing bitrate\n const totalBytesReceivedInaMin =\n statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived;\n\n videoReceiver.streams[0].common.receivedBitrate = totalBytesReceivedInaMin\n ? (totalBytesReceivedInaMin * 8) / 60\n : 0;\n videoReceiver.common.rtpBitrate = videoReceiver.streams[0].common.receivedBitrate;\n\n // From tracks //TODO: calculate a proper one\n const totalFrameReceivedInaMin =\n statsResults.resolutions[mediaType][sendrecvType].framesReceived - lastFramesReceived;\n const totalFrameDecodedInaMin =\n statsResults.resolutions[mediaType][sendrecvType].framesDecoded - lastFramesDecoded;\n\n videoReceiver.streams[0].common.receivedFrameRate = Math.round(\n totalFrameReceivedInaMin ? totalFrameReceivedInaMin / 60 : 0\n );\n videoReceiver.streams[0].common.renderedFrameRate = Math.round(\n totalFrameDecodedInaMin ? totalFrameDecodedInaMin / 60 : 0\n );\n\n videoReceiver.streams[0].common.framesDropped =\n statsResults.resolutions[mediaType][sendrecvType].framesDropped - lastFramesDropped;\n videoReceiver.streams[0].receivedHeight =\n statsResults.resolutions[mediaType][sendrecvType].height || 0;\n videoReceiver.streams[0].receivedWidth =\n statsResults.resolutions[mediaType][sendrecvType].width || 0;\n videoReceiver.streams[0].receivedFrameSize =\n (videoReceiver.streams[0].receivedHeight * videoReceiver.streams[0].receivedWidth) / 256;\n\n videoReceiver.streams[0].receivedKeyFrames =\n statsResults[mediaType][sendrecvType].keyFramesDecoded - lastKeyFramesDecoded || 0;\n videoReceiver.streams[0].requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalPliCount - lastPliCount || 0;\n};\n\nexport const getVideoSenderMqa = ({videoSender, statsResults, lastMqaDataSent, mediaType}) => {\n const sendrecvType = STATS.SEND_DIRECTION;\n\n const lastPacketsSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsSent || 0;\n const lastPacketsLost =\n lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLostOnReceiver || 0;\n const lastBytesSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesSent || 0;\n const lastKeyFramesEncoded =\n lastMqaDataSent.resolutions[mediaType]?.[sendrecvType].totalKeyFramesEncoded || 0;\n const lastFirCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalFirCount || 0;\n const lastFramesSent = lastMqaDataSent.resolutions[mediaType]?.[sendrecvType].framesSent || 0;\n const {csi} = statsResults[mediaType];\n if (csi && !videoSender.streams[0].common.csi.includes(csi)) {\n videoSender.streams[0].common.csi.push(csi);\n }\n\n videoSender.common.common.direction = statsResults[mediaType].direction;\n videoSender.common.transportType = statsResults.connectionType.local.transport;\n\n // @ts-ignore\n videoSender.common.maxRemoteJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n videoSender.common.meanRemoteJitter =\n mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n\n videoSender.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;\n videoSender.common.availableBitrate =\n statsResults[mediaType][sendrecvType].availableOutgoingBitrate || 0;\n // Calculate based on how much packets lost of received compated to how to the client sent\n\n const totalpacketsLostForaMin =\n statsResults[mediaType][sendrecvType].totalPacketsLostOnReceiver - lastPacketsLost;\n\n videoSender.common.remoteLossRate =\n totalpacketsLostForaMin > 0\n ? (totalpacketsLostForaMin * 100) / (videoSender.common.rtpPackets + totalpacketsLostForaMin)\n : 0; // This is the packets sent with in last min || 0;\n\n videoSender.common.maxRoundTripTime =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;\n videoSender.common.meanRoundTripTime =\n mean(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;\n videoSender.common.roundTripTime = videoSender.common.maxRoundTripTime;\n\n videoSender.streams[0].common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;\n\n // Calculate the outgoing bitrate\n const totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastBytesSent;\n\n videoSender.streams[0].common.transmittedBitrate = totalBytesSentInaMin\n ? (totalBytesSentInaMin * 8) / 60\n : 0;\n\n videoSender.common.rtpBitrate = videoSender.streams[0].common.transmittedBitrate;\n\n videoSender.streams[0].transmittedKeyFrames =\n statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastKeyFramesEncoded || 0;\n videoSender.streams[0].requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalFirCount - lastFirCount || 0;\n\n // From tracks //TODO: calculate a proper one\n const totalFrameSentInaMin =\n statsResults.resolutions[mediaType][sendrecvType].framesSent - (lastFramesSent || 0);\n\n videoSender.streams[0].common.transmittedFrameRate = Math.round(\n totalFrameSentInaMin ? totalFrameSentInaMin / 60 : 0\n );\n videoSender.streams[0].transmittedHeight =\n statsResults.resolutions[mediaType][sendrecvType].height || 0;\n videoSender.streams[0].transmittedWidth =\n statsResults.resolutions[mediaType][sendrecvType].width || 0;\n videoSender.streams[0].transmittedFrameSize =\n (videoSender.streams[0].transmittedHeight * videoSender.streams[0].transmittedWidth) / 256;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_lodash","require","_constants","getAudioReceiverMqa","exports","_ref","_lastMqaDataSent$medi","_lastMqaDataSent$medi2","_lastMqaDataSent$medi3","_lastMqaDataSent$medi4","_lastMqaDataSent$medi5","_lastMqaDataSent$medi6","_lastMqaDataSent$medi7","_lastMqaDataSent$medi8","audioReceiver","statsResults","lastMqaDataSent","mediaType","sendrecvType","STATS","RECEIVE_DIRECTION","lastPacketsReceived","totalPacketsReceived","lastPacketsLost","totalPacketsLost","lastPacketsDecoded","totalSamplesDecoded","lastSamplesReceived","totalSamplesReceived","lastConcealedSamples","concealedSamples","lastBytesReceived","totalBytesReceived","lastFecPacketsReceived","fecPacketsReceived","lastFecPacketsDiscarded","fecPacketsDiscarded","csi","streams","common","includes","push","direction","transportType","connectionType","local","transport","rtpPackets","mediaHopByHopLost","rtpHopByHopLost","maxRtpJitter","max","meanRtpJitter","mean","rtpJitter","fecRecovered","rtpEndToEndLost","framesDropped","renderedFrameRate","framesReceived","concealedFrames","receivedBitrate","rtpBitrate","getAudioSenderMqa","_ref2","_lastMqaDataSent$medi9","_lastMqaDataSent$medi10","_lastMqaDataSent$medi11","_lastMqaDataSent$medi12","_lastMqaDataSent$medi13","audioSender","SEND_DIRECTION","lastPacketsSent","totalPacketsSent","totalPacketsLostOnReceiver","lastBytesSent","totalBytesSent","lastFramesEncoded","totalKeyFramesEncoded","lastFirCount","totalFirCount","maxRemoteJitter","meanRemoteJitter","availableBitrate","availableOutgoingBitrate","totalpacketsLostForaMin","remoteLossRate","maxRoundTripTime","meanRoundTripTime","roundTripTime","totalBytesSentInaMin","transmittedBitrate","transmittedKeyFrames","requestedKeyFrames","getVideoReceiverMqa","_ref3","_lastMqaDataSent$medi14","_lastMqaDataSent$medi15","_lastMqaDataSent$medi16","_lastMqaDataSent$medi17","_lastMqaDataSent$medi18","_lastMqaDataSent$medi19","_lastMqaDataSent$medi20","_lastMqaDataSent$medi21","videoReceiver","lastFramesReceived","lastFramesDecoded","framesDecoded","lastFramesDropped","lastKeyFramesDecoded","keyFramesDecoded","lastPliCount","totalPliCount","totalPacketLoss","totalBytesReceivedInaMin","totalFrameReceivedInaMin","totalFrameDecodedInaMin","receivedFrameRate","Math","round","receivedHeight","height","receivedWidth","width","receivedFrameSize","receivedKeyFrames","getVideoSenderMqa","_ref4","_lastMqaDataSent$medi22","_lastMqaDataSent$medi23","_lastMqaDataSent$medi24","_lastMqaDataSent$medi25","_lastMqaDataSent$medi26","_lastMqaDataSent$medi27","videoSender","lastKeyFramesEncoded","lastFramesSent","framesSent","totalFrameSentInaMin","transmittedFrameRate","transmittedHeight","transmittedWidth","transmittedFrameSize"],"sources":["mqaUtil.ts"],"sourcesContent":["/* eslint-disable no-param-reassign, prefer-destructuring */\n\nimport {mean, max} from 'lodash';\n\nimport {STATS} from '../constants';\n\nexport const getAudioReceiverMqa = ({audioReceiver, statsResults, lastMqaDataSent, mediaType}) => {\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n const lastPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsReceived || 0;\n const lastPacketsLost = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLost || 0;\n const lastPacketsDecoded = lastMqaDataSent[mediaType]?.[sendrecvType].totalSamplesDecoded || 0;\n const lastSamplesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalSamplesReceived || 0;\n const lastConcealedSamples = lastMqaDataSent[mediaType]?.[sendrecvType].concealedSamples || 0;\n const lastBytesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesReceived || 0;\n const lastFecPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].fecPacketsReceived || 0;\n const lastFecPacketsDiscarded =\n lastMqaDataSent[mediaType]?.[sendrecvType].fecPacketsDiscarded || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !audioReceiver.streams[0].common.csi.includes(csi)) {\n audioReceiver.streams[0].common.csi.push(csi);\n }\n\n audioReceiver.common.common.direction = statsResults[mediaType].direction;\n audioReceiver.common.transportType = statsResults.connectionType.local.transport;\n\n // add rtpPacket info inside common as also for call analyzer\n audioReceiver.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;\n // Hop by hop are numbers and not percentage so we compare on what we sent the last min\n // collect the packets received for the last min\n audioReceiver.streams[0].common.rtpPackets = audioReceiver.common.rtpPackets;\n audioReceiver.common.mediaHopByHopLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;\n audioReceiver.common.rtpHopByHopLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;\n\n audioReceiver.streams[0].common.maxRtpJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;\n audioReceiver.streams[0].common.meanRtpJitter =\n mean(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;\n audioReceiver.streams[0].common.rtpJitter = audioReceiver.streams[0].common.maxRtpJitter;\n\n // Fec packets do come in as part of the FEC only for audio\n const fecRecovered =\n statsResults[mediaType][sendrecvType].fecPacketsReceived -\n lastFecPacketsReceived -\n (statsResults[mediaType][sendrecvType].fecPacketsDiscarded - lastFecPacketsDiscarded);\n\n audioReceiver.streams[0].common.rtpEndToEndLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost - fecRecovered || 0;\n\n audioReceiver.streams[0].common.framesDropped =\n statsResults[mediaType][sendrecvType].totalSamplesDecoded - lastPacketsDecoded || 0;\n audioReceiver.streams[0].common.renderedFrameRate =\n (audioReceiver.streams[0].common.framesDropped * 100) / 60 || 0;\n\n audioReceiver.streams[0].common.framesReceived =\n statsResults[mediaType][sendrecvType].totalSamplesReceived - lastSamplesReceived || 0;\n audioReceiver.streams[0].common.concealedFrames =\n statsResults[mediaType][sendrecvType].concealedSamples - lastConcealedSamples || 0;\n audioReceiver.streams[0].common.receivedBitrate =\n ((statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived) * 8) / 60 || 0;\n\n audioReceiver.common.rtpBitrate = audioReceiver.streams[0].common.receivedBitrate;\n};\n\nexport const getAudioSenderMqa = ({audioSender, statsResults, lastMqaDataSent, mediaType}) => {\n const sendrecvType = STATS.SEND_DIRECTION;\n\n const lastPacketsSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsSent || 0;\n const lastPacketsLost =\n lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLostOnReceiver || 0;\n const lastBytesSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesSent || 0;\n const lastFramesEncoded = lastMqaDataSent[mediaType]?.[sendrecvType].totalKeyFramesEncoded || 0;\n const lastFirCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalFirCount || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !audioSender.streams[0].common.csi.includes(csi)) {\n audioSender.streams[0].common.csi.push(csi);\n }\n\n audioSender.common.common.direction = statsResults[mediaType].direction;\n audioSender.common.transportType = statsResults.connectionType.local.transport;\n\n audioSender.common.maxRemoteJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n audioSender.common.meanRemoteJitter =\n mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n\n audioSender.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;\n audioSender.streams[0].common.rtpPackets = audioSender.common.rtpPackets;\n // From candidate-pair\n audioSender.common.availableBitrate =\n statsResults[mediaType][sendrecvType].availableOutgoingBitrate || 0;\n // Calculate based on how much packets lost of received compated to how to the client sent\n\n const totalpacketsLostForaMin =\n statsResults[mediaType][sendrecvType].totalPacketsLostOnReceiver - lastPacketsLost;\n\n audioSender.common.remoteLossRate =\n totalpacketsLostForaMin > 0\n ? (totalpacketsLostForaMin * 100) / audioSender.common.rtpPackets\n : 0; // This is the packets sent with in last min || 0;\n\n audioSender.common.maxRoundTripTime =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;\n audioSender.common.meanRoundTripTime =\n mean(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;\n audioSender.common.roundTripTime = audioSender.common.maxRoundTripTime;\n\n // Calculate the outgoing bitrate\n const totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastBytesSent;\n\n audioSender.streams[0].common.transmittedBitrate = totalBytesSentInaMin\n ? (totalBytesSentInaMin * 8) / 60\n : 0;\n audioSender.common.rtpBitrate = audioSender.streams[0].common.transmittedBitrate;\n\n audioSender.streams[0].transmittedKeyFrames =\n statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastFramesEncoded || 0;\n audioSender.streams[0].requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalFirCount - lastFirCount || 0;\n};\n\nexport const getVideoReceiverMqa = ({videoReceiver, statsResults, lastMqaDataSent, mediaType}) => {\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n const lastPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsReceived || 0;\n const lastPacketsLost = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLost || 0;\n const lastBytesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesReceived || 0;\n const lastFramesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].framesReceived || 0;\n const lastFramesDecoded = lastMqaDataSent[mediaType]?.[sendrecvType].framesDecoded || 0;\n const lastFramesDropped = lastMqaDataSent[mediaType]?.[sendrecvType].framesDropped || 0;\n const lastKeyFramesDecoded = lastMqaDataSent[mediaType]?.[sendrecvType].keyFramesDecoded || 0;\n const lastPliCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalPliCount || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !videoReceiver.streams[0].common.csi.includes(csi)) {\n videoReceiver.streams[0].common.csi.push(csi);\n }\n\n videoReceiver.common.common.direction = statsResults[mediaType].direction;\n videoReceiver.common.transportType = statsResults.connectionType.local.transport;\n\n // collect the packets received for the last min\n videoReceiver.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;\n videoReceiver.streams[0].common.rtpPackets = videoReceiver.common.rtpPackets;\n\n const totalPacketLoss =\n statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;\n\n // Hope by hop are numbers and not percentage so we compare on what we sent the last min\n // this is including packet lost\n videoReceiver.common.mediaHopByHopLost = totalPacketLoss;\n videoReceiver.common.rtpHopByHopLost = totalPacketLoss;\n\n // End to end packetloss is after recovery\n videoReceiver.streams[0].common.rtpEndToEndLost = totalPacketLoss;\n\n // calculate this values\n\n videoReceiver.common.maxRemoteJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n videoReceiver.common.meanRemoteJitter =\n mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n\n videoReceiver.streams[0].common.rtpJitter = videoReceiver.common.maxRemoteJitter;\n\n // Calculate the outgoing bitrate\n const totalBytesReceivedInaMin =\n statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived;\n\n videoReceiver.streams[0].common.receivedBitrate = totalBytesReceivedInaMin\n ? (totalBytesReceivedInaMin * 8) / 60\n : 0;\n videoReceiver.common.rtpBitrate = videoReceiver.streams[0].common.receivedBitrate;\n\n // From tracks //TODO: calculate a proper one\n const totalFrameReceivedInaMin =\n statsResults[mediaType][sendrecvType].framesReceived - lastFramesReceived;\n const totalFrameDecodedInaMin =\n statsResults[mediaType][sendrecvType].framesDecoded - lastFramesDecoded;\n\n videoReceiver.streams[0].common.receivedFrameRate = Math.round(\n totalFrameReceivedInaMin ? totalFrameReceivedInaMin / 60 : 0\n );\n videoReceiver.streams[0].common.renderedFrameRate = Math.round(\n totalFrameDecodedInaMin ? totalFrameDecodedInaMin / 60 : 0\n );\n\n videoReceiver.streams[0].common.framesDropped =\n statsResults[mediaType][sendrecvType].framesDropped - lastFramesDropped;\n videoReceiver.streams[0].receivedHeight = statsResults[mediaType][sendrecvType].height || 0;\n videoReceiver.streams[0].receivedWidth = statsResults[mediaType][sendrecvType].width || 0;\n videoReceiver.streams[0].receivedFrameSize =\n (videoReceiver.streams[0].receivedHeight * videoReceiver.streams[0].receivedWidth) / 256;\n\n videoReceiver.streams[0].receivedKeyFrames =\n statsResults[mediaType][sendrecvType].keyFramesDecoded - lastKeyFramesDecoded || 0;\n videoReceiver.streams[0].requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalPliCount - lastPliCount || 0;\n};\n\nexport const getVideoSenderMqa = ({videoSender, statsResults, lastMqaDataSent, mediaType}) => {\n const sendrecvType = STATS.SEND_DIRECTION;\n\n const lastPacketsSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsSent || 0;\n const lastPacketsLost =\n lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLostOnReceiver || 0;\n const lastBytesSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesSent || 0;\n const lastKeyFramesEncoded =\n lastMqaDataSent[mediaType]?.[sendrecvType].totalKeyFramesEncoded || 0;\n const lastFirCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalFirCount || 0;\n const lastFramesSent = lastMqaDataSent[mediaType]?.[sendrecvType].framesSent || 0;\n const {csi} = statsResults[mediaType];\n if (csi && !videoSender.streams[0].common.csi.includes(csi)) {\n videoSender.streams[0].common.csi.push(csi);\n }\n\n videoSender.common.common.direction = statsResults[mediaType].direction;\n videoSender.common.transportType = statsResults.connectionType.local.transport;\n\n // @ts-ignore\n videoSender.common.maxRemoteJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n videoSender.common.meanRemoteJitter =\n mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n\n videoSender.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;\n videoSender.common.availableBitrate =\n statsResults[mediaType][sendrecvType].availableOutgoingBitrate || 0;\n // Calculate based on how much packets lost of received compated to how to the client sent\n\n const totalpacketsLostForaMin =\n statsResults[mediaType][sendrecvType].totalPacketsLostOnReceiver - lastPacketsLost;\n\n videoSender.common.remoteLossRate =\n totalpacketsLostForaMin > 0\n ? (totalpacketsLostForaMin * 100) / (videoSender.common.rtpPackets + totalpacketsLostForaMin)\n : 0; // This is the packets sent with in last min || 0;\n\n videoSender.common.maxRoundTripTime =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;\n videoSender.common.meanRoundTripTime =\n mean(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;\n videoSender.common.roundTripTime = videoSender.common.maxRoundTripTime;\n\n videoSender.streams[0].common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;\n\n // Calculate the outgoing bitrate\n const totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastBytesSent;\n\n videoSender.streams[0].common.transmittedBitrate = totalBytesSentInaMin\n ? (totalBytesSentInaMin * 8) / 60\n : 0;\n\n videoSender.common.rtpBitrate = videoSender.streams[0].common.transmittedBitrate;\n\n videoSender.streams[0].transmittedKeyFrames =\n statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastKeyFramesEncoded || 0;\n videoSender.streams[0].requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalFirCount - lastFirCount || 0;\n\n // From tracks //TODO: calculate a proper one\n const totalFrameSentInaMin =\n statsResults[mediaType][sendrecvType].framesSent - (lastFramesSent || 0);\n\n videoSender.streams[0].common.transmittedFrameRate = Math.round(\n totalFrameSentInaMin ? totalFrameSentInaMin / 60 : 0\n );\n videoSender.streams[0].transmittedHeight = statsResults[mediaType][sendrecvType].height || 0;\n videoSender.streams[0].transmittedWidth = statsResults[mediaType][sendrecvType].width || 0;\n videoSender.streams[0].transmittedFrameSize =\n (videoSender.streams[0].transmittedHeight * videoSender.streams[0].transmittedWidth) / 256;\n};\n"],"mappings":"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"}
@@ -62,7 +62,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
62
62
  updateCanManageWebcast: function updateCanManageWebcast(canManageWebcast) {
63
63
  this.set('canManageWebcast', canManageWebcast);
64
64
  },
65
- version: "2.60.0-next.7"
65
+ version: "2.60.0-next.8"
66
66
  });
67
67
  var _default = exports.default = Webinar;
68
68
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -44,7 +44,7 @@
44
44
  "@webex/eslint-config-legacy": "^0.0.0",
45
45
  "@webex/jest-config-legacy": "^0.0.0",
46
46
  "@webex/legacy-tools": "^0.0.0",
47
- "@webex/plugin-meetings": "^2.60.0-next.7",
47
+ "@webex/plugin-meetings": "^2.60.0-next.8",
48
48
  "@webex/plugin-rooms": "^2.60.0-next.5",
49
49
  "@webex/test-helper-chai": "^2.60.0-next.5",
50
50
  "@webex/test-helper-mocha": "^2.60.0-next.5",
@@ -88,5 +88,5 @@
88
88
  "uuid": "^3.3.2",
89
89
  "webrtc-adapter": "^8.1.2"
90
90
  },
91
- "version": "2.60.0-next.7"
91
+ "version": "2.60.0-next.8"
92
92
  }
@@ -247,138 +247,3 @@ export const emptyVideoTransmit = {
247
247
  },
248
248
  ],
249
249
  };
250
-
251
- export const emptyVideoShareReceive = {
252
- common: {
253
- common: {
254
- direction: 'inactive',
255
- isMain: false, // Not avaliable
256
- mariFecEnabled: true, // Not avaliable
257
- mariQosEnabled: true, // Not avaliable
258
- multistreamEnabled: true, // Not avaliable
259
- },
260
- dtlsBitrate: 0, // Not avaliable
261
- dtlsPackets: 0, // Not avaliable
262
- fecBitrate: 0, // Not avaliable
263
- fecPackets: 0, // Not avaliable
264
- maxBitrate: 0,
265
- mediaHopByHopLost: 0,
266
- rtcpBitrate: 0, // Not avaliable
267
- rtcpPackets: 0, // Not avaliable
268
- rtpBitrate: 0,
269
- rtpHopByHopLost: 0,
270
- rtpPackets: 0,
271
- rtpRecovered: 0, // Not avaliable
272
- rtxBitrate: 0, // Not avaliable
273
- rtxPackets: 0, // Not avaliable
274
- srtcpUnprotectErrors: 0, // Not avaliable
275
- srtpUnprotectErrors: 0, // Not avaliable
276
- stunBitrate: 0, // Not avaliable
277
- stunPackets: 0, // Not avaliable
278
- transportType: 'UDP',
279
- },
280
- streams: [
281
- {
282
- common: {
283
- codec: 'H264',
284
- concealedFrames: 0, // Not avaliable
285
- csi: [],
286
- maxConcealRunLength: 0, // Not avaliable
287
- optimalBitrate: 0,
288
- optimalFrameRate: 0,
289
- receivedBitrate: 0,
290
- receivedFrameRate: 0,
291
- renderedFrameRate: 0, // Not avaliable
292
- requestedBitrate: 0,
293
- requestedFrameRate: 0,
294
- rtpEndToEndLost: 0,
295
- rtpJitter: 0,
296
- rtpPackets: 0,
297
- ssci: 0, // Not avaliable
298
- },
299
- h264CodecProfile: 'BP',
300
- isActiveSpeaker: true,
301
- optimalFrameSize: 0, // Not avaliable
302
- receivedFrameSize: 0,
303
- receivedHeight: 0,
304
- receivedKeyFrames: 0,
305
- receivedKeyFramesForRequest: 0,
306
- receivedKeyFramesSourceChange: 0,
307
- receivedKeyFramesUnknown: 0,
308
- receivedWidth: 0,
309
- requestedFrameSize: 0,
310
- requestedKeyFrames: 0,
311
- },
312
- ],
313
- };
314
-
315
- export const emptyVideoShareTransmit = {
316
- // sceen sharing
317
- common: {
318
- availableBitrate: 0, // Not avaliable currently hardcoded
319
- common: {
320
- direction: 'inactive',
321
- isMain: false,
322
- mariFecEnabled: false, // Not avaliable
323
- mariQosEnabled: false, // Not avaliable
324
- multistreamEnabled: false, // Not avaliable
325
- },
326
- dtlsBitrate: 0, // Not avaliable
327
- dtlsPackets: 0, // Not avaliable
328
- fecBitrate: 0, // Not avaliable
329
- fecPackets: 0, // TODO: check inbound-rtp// Not avaliable
330
- maxBitrate: 0, // Currently hardcoded
331
- queueDelay: 0, // outboundRtp.totalPacketSentDelay // TODO: check if totalInterFrameDelay/ packetSentDelay/ jitterBufferDalay
332
- remoteJitter: 0, // remoteInboundRtp.jitter
333
- remoteLossRate: 0, // comparedResults.lossRate
334
- remoteReceiveRate: 0, // compareResults.packetsLost
335
- roundTripTime: 0, // compareResults.roundTripTime
336
- rtcpBitrate: 0, // Dont have access to it
337
- rtcpPackets: 0, // Dont have access to rtcp
338
- rtpBitrate: 0, // Dont have access
339
- rtpPackets: 0, // outboundRtp.packetsSent
340
- rtxBitrate: 0, // Dont have access to it
341
- rtxPackets: 0, // Dont have access to it
342
- stunBitrate: 0, // Dont have access to it
343
- stunPackets: 0, // Dont have access to it
344
- transportType: 'UDP', // TODO: need to calculate
345
- },
346
- streams: [
347
- {
348
- common: {
349
- codec: 'H264',
350
- csi: [],
351
- duplicateSsci: 0, // Not Avaliable
352
- requestedBitrate: 0, // TODO: from remote SDP
353
- requestedFrames: 0, // TODO: from remote SDP
354
- rtpPackets: 0, // same as rtp packets
355
- ssci: 0,
356
- transmittedBitrate: 0, // TODO: get in the candidate pair
357
- transmittedFrameRate: 0, // TODO: from track info
358
- },
359
- h264CodecProfile: 'BP', // TODO: from localSDP
360
- isAvatar: false, // Not Avaliable
361
- isHardwareEncoded: false, // Not Avaliable
362
- localConfigurationChanges: 2, // Not Avaliable
363
- maxFrameQp: 0, // Not Avaliable
364
- maxNoiseLevel: 0, // Not Avaliable
365
- minRegionQp: 0, // Not Avaliable
366
- remoteConfigurationChanges: 0, // Not Avaliable
367
- requestedFrameSize: 0, // TODO: from remote SDP
368
- requestedKeyFrames: 0, // outbound Fir request
369
- transmittedFrameSize: 0, // Not Avaliable
370
- transmittedHeight: 0,
371
- transmittedKeyFrames: 0, // Key frames encoded
372
- transmittedKeyFramesClient: 0, // Not Avaliable
373
- transmittedKeyFramesConfigurationChange: 0, // Not Avaliable
374
- transmittedKeyFramesFeedback: 0, // Not Avaliable
375
- transmittedKeyFramesLocalDrop: 0, // Not Avaliable
376
- transmittedKeyFramesOtherLayer: 0, // Not Avaliable
377
- transmittedKeyFramesPeriodic: 0, // Not Avaliable
378
- transmittedKeyFramesSceneChange: 0, // Not Avaliable
379
- transmittedKeyFramesStartup: 0, // Not Avaliable
380
- transmittedKeyFramesUnknown: 0, // Not Avaliable
381
- transmittedWidth: 0,
382
- },
383
- ],
384
- };
@@ -567,6 +567,7 @@ export default class Meeting extends StatelessWebexPlugin {
567
567
  meetingState: any;
568
568
  permissionToken: string;
569
569
  permissionTokenPayload: any;
570
+ permissionTokenReceivedLocalTime: number;
570
571
  resourceId: any;
571
572
  resourceUrl: string;
572
573
  selfId: string;
@@ -3549,6 +3550,7 @@ export default class Meeting extends StatelessWebexPlugin {
3549
3550
  */
3550
3551
  public setPermissionTokenPayload(permissionToken: string) {
3551
3552
  this.permissionTokenPayload = decode(permissionToken);
3553
+ this.permissionTokenReceivedLocalTime = new Date().getTime();
3552
3554
  }
3553
3555
 
3554
3556
  /**
@@ -7981,24 +7983,31 @@ export default class Meeting extends StatelessWebexPlugin {
7981
7983
  * Gets permission token expiry information including timeLeft, expiryTime, currentTime
7982
7984
  * (from the time the function has been fired)
7983
7985
  *
7984
- * @returns {object} containing timeLeft, expiryTime, currentTime
7986
+ * @returns {object} permissionTokenExpiryInfo
7987
+ * @returns {number} permissionTokenExpiryInfo.timeLeft The time left for token to expire
7988
+ * @returns {number} permissionTokenExpiryInfo.expiryTime The expiry time of permission token from the server
7989
+ * @returns {number} permissionTokenExpiryInfo.currentTime The current time of the local machine
7985
7990
  */
7986
7991
  public getPermissionTokenExpiryInfo() {
7987
7992
  if (!this.permissionTokenPayload) {
7988
7993
  return undefined;
7989
7994
  }
7990
7995
 
7991
- const permissionTokenExpValue = Number(this.permissionTokenPayload.exp);
7996
+ const permissionTokenExpiryFromServer = Number(this.permissionTokenPayload.exp);
7997
+ const permissionTokenIssuedTimeFromServer = Number(this.permissionTokenPayload.iat);
7998
+
7999
+ const shiftInTime = this.permissionTokenReceivedLocalTime - permissionTokenIssuedTimeFromServer;
7992
8000
 
7993
8001
  // using new Date instead of Date.now() to allow for accurate unit testing
7994
8002
  // https://github.com/sinonjs/fake-timers/issues/321
7995
- const now = new Date().getTime();
8003
+ const currentTime = new Date().getTime();
8004
+
8005
+ // adjusted time is calculated in case your machine time is wrong
8006
+ const adjustedCurrentTime = currentTime - shiftInTime;
7996
8007
 
7997
- // substract current time from the permissionTokenExp
7998
- // (permissionTokenExp is a epoch timestamp, not a time to live duration)
7999
- const timeLeft = (permissionTokenExpValue - now) / 1000;
8008
+ const timeLeft = (permissionTokenExpiryFromServer - adjustedCurrentTime) / 1000;
8000
8009
 
8001
- return {timeLeft, expiryTime: permissionTokenExpValue, currentTime: now};
8010
+ return {timeLeft, expiryTime: permissionTokenExpiryFromServer, currentTime};
8002
8011
  }
8003
8012
 
8004
8013
  /**