@webex/plugin-meetings 1.159.5 → 1.161.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.
- package/dist/analyzer/analyzer.js.map +1 -1
- package/dist/analyzer/calculator.js.map +1 -1
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js.map +1 -1
- package/dist/common/constants.js.map +1 -1
- package/dist/common/errors/captcha-error.js +3 -1
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +3 -1
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +3 -1
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +3 -1
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +3 -1
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +3 -1
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +3 -1
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js +3 -1
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +3 -1
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +3 -1
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +9 -7
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +2 -2
- package/dist/constants.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +4 -3
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +2 -2
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2 -2
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +3 -1
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +2 -2
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +2 -2
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +6 -6
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +219 -219
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +1 -1
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js.map +1 -1
- package/dist/metrics/mqa-processor.js +2 -2
- package/dist/metrics/mqa-processor.js.map +1 -1
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/peer-connection-manager/index.js.map +1 -1
- package/dist/peer-connection-manager/util.js.map +1 -1
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +4 -3
- package/dist/reachability/request.js.map +1 -1
- package/dist/reconnection-manager/index.js +2 -2
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/roap/collection.js.map +1 -1
- package/dist/roap/handler.js.map +1 -1
- package/dist/roap/index.js +7 -7
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +2 -2
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/state.js.map +1 -1
- package/dist/roap/util.js.map +1 -1
- package/dist/stats/data.js.map +1 -1
- package/dist/stats/events.js.map +1 -1
- package/dist/stats/filter.js.map +1 -1
- package/dist/stats/history.js.map +1 -1
- package/dist/stats/index.js +126 -126
- package/dist/stats/index.js.map +1 -1
- package/dist/stats/metrics.js.map +1 -1
- package/dist/stats/stats.js.map +1 -1
- package/dist/stats/stream.js.map +1 -1
- package/dist/stats/transformer.js.map +1 -1
- package/dist/stats/util.js.map +1 -1
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +1 -1
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js.map +1 -1
- package/package.json +6 -6
- package/src/common/errors/webex-errors.js +1 -1
- package/src/locus-info/parser.js +2 -2
- package/src/meeting/index.js +1 -2
- package/src/meeting/util.js +2 -2
- package/src/meetings/index.js +554 -557
- package/src/roap/index.js +48 -48
- package/src/stats/index.js +142 -142
- package/src/statsAnalyzer/index.js +1 -1
package/dist/stats/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.js"],"names":["WebRTCStats","attrs","options","optionalCreateOptions","MEETINGS","senders","receivers","meetingRef","statsConfig","populate","config","setConfig","meeting","associateMeeting","addSenders","addReceivers","useConfig","forEach","TypeError","sender","addSender","StatsUtil","generateSingularOptions","STATS","SENDERS","type","SENDER","id","MeetingStats","newSender","newReceiver","receiver","addReceiver","RECEIVERS","RECEIVER","v","k","destroySender","destroyReceiver","getSender","stream","destroy","getReceiver","StatelessWebexPlugin"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEA;;AAIA;;AACA;;;;;;AAEA;AACA;AACA;IACqBA,W;;;;;AAGjB;AACJ;AACA;AACA;AACA;AACA;AACI,uBAAYC,KAAZ,EAAmBC,OAAnB,EAA4BC,qBAA5B,EAAmD;AAAA;;AAAA;AACjD,8BAAM,EAAN,EAAUD,OAAV;AACA;AACN;AACA;AACA;AACA;AACA;;AAPuD,4FARvCE,mBAQuC;AAQjD,UAAKH,KAAL,GAAaA,KAAb;AACA;AACN;AACA;AACA;AACA;AACA;;AACM,UAAKC,OAAL,GAAeA,OAAf;AACA;AACN;AACA;AACA;AACA;AACA;;AACM,UAAKG,OAAL,GAAe,EAAf;AACA;AACN;AACA;AACA;AACA;AACA;;AACM,UAAKC,SAAL,GAAiB,EAAjB;AACA;AACN;AACA;AACA;AACA;AACA;;AACM,UAAKC,UAAL,GAAkB,IAAlB;AACA;AACN;AACA;AACA;AACA;AACA;;AACM,UAAKC,WAAL,GAAmB,IAAnB;;AACA,UAAKC,QAAL,CAAcN,qBAAd;;AA5CiD;AA6ClD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;WACI,kBAASA,qBAAT,EAAgC;AAC9B,UAAIA,qBAAJ,EAA2B;AACzB,YAAIA,qBAAqB,CAACO,MAA1B,EAAkC;AAChC,eAAKC,SAAL,CAAeR,qBAAqB,CAACO,MAArC;AACD;;AACD,YAAIP,qBAAqB,CAACS,OAA1B,EAAmC;AACjC,eAAKC,gBAAL,CAAsBV,qBAAqB,CAACS,OAA5C;AACD;;AACD,YAAIT,qBAAqB,CAACE,OAA1B,EAAmC;AACjC,eAAKS,UAAL,CAAgBX,qBAAqB,CAACE,OAAtC;AACD;;AACD,YAAIF,qBAAqB,CAACG,SAA1B,EAAqC;AACnC,eAAKS,YAAL,CAAkBZ,qBAAqB,CAACG,SAAxC;AACD;AACF;;AAED,aAAO,IAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,mBAAUI,MAAV,EAAkB;AAChB,WAAKF,WAAL,GAAmBE,MAAnB;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,0BAAiBE,OAAjB,EAA0B;AACxB,WAAKL,UAAL,GAAkBK,OAAlB;AAEA,aAAO,IAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;;;;WACI,oBAAWP,OAAX,EAAuC;AAAA;;AAAA,UAAnBW,SAAmB,uEAAP,KAAO;;AACrC,UAAI,CAACX,OAAO,CAACY,OAAb,EAAsB;AACpB,cAAM,IAAIC,SAAJ,CAAc,4EAAd,CAAN;AACD;;AACDb,MAAAA,OAAO,CAACY,OAAR,CAAgB,UAACE,MAAD,EAAY;AAC1B,QAAA,MAAI,CAACC,SAAL,CAAeD,MAAf,EAAuBH,SAAvB;AACD,OAFD;AAIA,aAAO,IAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;;;;WACI,mBAAUG,MAAV,EAAqC;AAAA,UAAnBH,SAAmB,uEAAP,KAAO;;AACnC,UAAIG,MAAJ,EAAY;AACV,YAAIH,SAAJ,EAAe;AACbK,wBAAUC,uBAAV,CAAkCH,MAAlC,EAA0C,KAAKX,WAA/C,EAA4D,KAAKD,UAAjE,EAA6EgB,iBAAMC,OAAnF;AACD;;AACDL,QAAAA,MAAM,CAACM,IAAP,GAAcF,iBAAMG,MAApB;AACA,aAAKrB,OAAL,CAAac,MAAM,CAACQ,EAApB,IAA0B,IAAIC,cAAJ,CAAiB,KAAK3B,KAAtB,EAA6B,KAAKC,OAAlC,EAA2CiB,MAA3C,CAA1B;AACD;;AAED,aAAO,IAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;;;;WACI,wBAAeQ,EAAf,EAAmB;AACjB,UAAME,SAAS,GAAG,IAAID,cAAJ,CAAiB,KAAK3B,KAAtB,EAA6B,KAAKC,OAAlC,CAAlB;AAEA,WAAKG,OAAL,CAAasB,EAAb,IAAmBE,SAAnB;AAEA,aAAOA,SAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;;;;WACI,0BAAiBF,EAAjB,EAAqB;AACnB,UAAMG,WAAW,GAAG,IAAIF,cAAJ,CAAiB,KAAK3B,KAAtB,EAA6B,KAAKC,OAAlC,CAApB;AAEA,WAAKI,SAAL,CAAeqB,EAAf,IAAqBG,WAArB;AAEA,aAAOA,WAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;;;;WACI,sBAAaxB,SAAb,EAA2C;AAAA;;AAAA,UAAnBU,SAAmB,uEAAP,KAAO;;AACzC,UAAI,CAACV,SAAS,CAACW,OAAf,EAAwB;AACtB,cAAM,IAAIC,SAAJ,CAAc,gFAAd,CAAN;AACD;;AACDZ,MAAAA,SAAS,CAACW,OAAV,CAAkB,UAACc,QAAD,EAAc;AAC9B,QAAA,MAAI,CAACC,WAAL,CAAiBD,QAAjB,EAA2Bf,SAA3B;AACD,OAFD;AAIA,aAAO,IAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;;;;WACI,qBAAYe,QAAZ,EAAyC;AAAA,UAAnBf,SAAmB,uEAAP,KAAO;;AACvC,UAAIe,QAAJ,EAAc;AACZ,YAAIf,SAAJ,EAAe;AACbK,wBAAUC,uBAAV,CAAkCS,QAAlC,EAA4C,KAAKvB,WAAjD,EAA8D,KAAKD,UAAnE,EAA+EgB,iBAAMU,SAArF;AACD;;AACDF,QAAAA,QAAQ,CAACN,IAAT,GAAgBF,iBAAMW,QAAtB;AACA,aAAK5B,SAAL,CAAeyB,QAAQ,CAACJ,EAAxB,IAA8B,IAAIC,cAAJ,CAAiB,KAAK3B,KAAtB,EAA6B,KAAKC,OAAlC,EAA2C6B,QAA3C,CAA9B;AACD;;AAED,aAAO,IAAP;AACD;AAED;AACJ;AACA;AACA;AACA;;;;WACI,wBAAe;AACb,aAAO,KAAKzB,SAAZ;AACD;AAED;AACJ;AACA;AACA;AACA;;;;WACI,sBAAa;AACX,aAAO,KAAKD,OAAZ;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,mBAAUsB,EAAV,EAAc;AACZ,aAAO,KAAKtB,OAAL,CAAasB,EAAb,CAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,qBAAYA,EAAZ,EAAgB;AACd,aAAO,KAAKrB,SAAL,CAAeqB,EAAf,CAAP;AACD;AAED;AACJ;AACA;AACA;AACA;;;;WACI,0BAAiB;AAAA;;AACf,6BAAQ,KAAKtB,OAAb,EAAsB,UAAC8B,CAAD,EAAIC,CAAJ,EAAU;AAC9B,QAAA,MAAI,CAACC,aAAL,CAAmBD,CAAnB;AACD,OAFD;AAGD;AAED;AACJ;AACA;AACA;AACA;;;;WACI,4BAAmB;AAAA;;AACjB,6BAAQ,KAAK9B,SAAb,EAAwB,UAAC6B,CAAD,EAAIC,CAAJ,EAAU;AAChC,QAAA,MAAI,CAACE,eAAL,CAAqBF,CAArB;AACD,OAFD;AAGD;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,uBAAcT,EAAd,EAAkB;AAChB,UAAIR,MAAM,GAAG,KAAKoB,SAAL,CAAeZ,EAAf,CAAb;;AAEA,UAAIR,MAAJ,EAAY;AACV,YAAIA,MAAM,CAACqB,MAAX,EAAmB;AACjBrB,UAAAA,MAAM,CAACqB,MAAP,CAAcC,OAAd;AACD;AACF;;AACDtB,MAAAA,MAAM,GAAG,IAAT;AACA,aAAO,KAAKb,SAAL,CAAeqB,EAAf,CAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,yBAAgBA,EAAhB,EAAoB;AAClB,UAAII,QAAQ,GAAG,KAAKW,WAAL,CAAiBf,EAAjB,CAAf;;AAEA,UAAII,QAAJ,EAAc;AACZ,YAAIA,QAAQ,CAACS,MAAb,EAAqB;AACnBT,UAAAA,QAAQ,CAACS,MAAT,CAAgBC,OAAhB;AACD;AACF;;AACDV,MAAAA,QAAQ,GAAG,IAAX;AACA,aAAO,KAAKzB,SAAL,CAAeqB,EAAf,CAAP;AACD;;;EAjToCgB,+B","sourcesContent":["import {forEach} from 'lodash';\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n\nimport {\n MEETINGS,\n STATS\n} from '../constants';\nimport MeetingStats from '../stats/stats';\nimport StatsUtil from '../stats/util';\n\n/**\n * @class WebRTCStats\n */\nexport default class WebRTCStats extends StatelessWebexPlugin {\n namespace = MEETINGS;\n\n /**\n *\n * @param {Object} attrs\n * @param {Object} options\n * @param {Object} [optionalCreateOptions]\n */\n constructor(attrs, options, optionalCreateOptions) {\n super({}, options);\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof WebRTCStats\n */\n this.attrs = attrs;\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof WebRTCStats\n */\n this.options = options;\n /**\n * @instance\n * @type {Object}\n * @public\n * @memberof WebRTCStats\n */\n this.senders = {};\n /**\n * @instance\n * @type {Object}\n * @public\n * @memberof WebRTCStats\n */\n this.receivers = {};\n /**\n * @instance\n * @type {Meeting}\n * @private\n * @memberof WebRTCStats\n */\n this.meetingRef = null;\n /**\n * @instance\n * @type {Object}\n * @public\n * @memberof WebRTCStats\n */\n this.statsConfig = null;\n this.populate(optionalCreateOptions);\n }\n\n /**\n * @param {Object} [optionalCreateOptions]\n * @param {Object} optionalCreateOptions.config\n * @param {Meeting} optionalCreateOptions.meeting\n * @param {Object} optionalCreateOptions.senders\n * @param {Object} optionalCreateOptions.receivers\n * @returns {WebRTCStats}\n * @private\n * @memberof WebRTCStats\n */\n populate(optionalCreateOptions) {\n if (optionalCreateOptions) {\n if (optionalCreateOptions.config) {\n this.setConfig(optionalCreateOptions.config);\n }\n if (optionalCreateOptions.meeting) {\n this.associateMeeting(optionalCreateOptions.meeting);\n }\n if (optionalCreateOptions.senders) {\n this.addSenders(optionalCreateOptions.senders);\n }\n if (optionalCreateOptions.receivers) {\n this.addReceivers(optionalCreateOptions.receivers);\n }\n }\n\n return this;\n }\n\n /**\n * @param {Object} config\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n setConfig(config) {\n this.statsConfig = config;\n }\n\n /**\n * @param {Meeting} meeting\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n associateMeeting(meeting) {\n this.meetingRef = meeting;\n\n return this;\n }\n\n /**\n * @param {Object} senders\n * @param {Boolean} useConfig\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n addSenders(senders, useConfig = false) {\n if (!senders.forEach) {\n throw new TypeError('Stats senders must be created with an iterable array of senders to act on.');\n }\n senders.forEach((sender) => {\n this.addSender(sender, useConfig);\n });\n\n return this;\n }\n\n /**\n * @param {Object} sender\n * @param {Boolean} useConfig\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n addSender(sender, useConfig = false) {\n if (sender) {\n if (useConfig) {\n StatsUtil.generateSingularOptions(sender, this.statsConfig, this.meetingRef, STATS.SENDERS);\n }\n sender.type = STATS.SENDER;\n this.senders[sender.id] = new MeetingStats(this.attrs, this.options, sender);\n }\n\n return this;\n }\n\n /**\n *\n * @param {String} id\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n addSenderStats(id) {\n const newSender = new MeetingStats(this.attrs, this.options);\n\n this.senders[id] = newSender;\n\n return newSender;\n }\n\n /**\n *\n * @param {String} id\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n addReceiverStats(id) {\n const newReceiver = new MeetingStats(this.attrs, this.options);\n\n this.receivers[id] = newReceiver;\n\n return newReceiver;\n }\n\n /**\n * @param {Object} receivers\n * @param {boolean} useConfig\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n addReceivers(receivers, useConfig = false) {\n if (!receivers.forEach) {\n throw new TypeError('Stats receivers must be created with an iterable array of receivers to act on.');\n }\n receivers.forEach((receiver) => {\n this.addReceiver(receiver, useConfig);\n });\n\n return this;\n }\n\n /**\n * @param {Object} receiver\n * @param {boolean} useConfig\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n addReceiver(receiver, useConfig = false) {\n if (receiver) {\n if (useConfig) {\n StatsUtil.generateSingularOptions(receiver, this.statsConfig, this.meetingRef, STATS.RECEIVERS);\n }\n receiver.type = STATS.RECEIVER;\n this.receivers[receiver.id] = new MeetingStats(this.attrs, this.options, receiver);\n }\n\n return this;\n }\n\n /**\n * @returns {Object}\n * @public\n * @memberof WebRTCStats\n */\n getReceivers() {\n return this.receivers;\n }\n\n /**\n * @returns {Object}\n * @public\n * @memberof WebRTCStats\n */\n getSenders() {\n return this.senders;\n }\n\n /**\n * @param {String} id\n * @returns {Object}\n * @public\n * @memberof WebRTCStats\n */\n getSender(id) {\n return this.senders[id];\n }\n\n /**\n * @param {String} id\n * @returns {Object}\n * @public\n * @memberof WebRTCStats\n */\n getReceiver(id) {\n return this.receivers[id];\n }\n\n /**\n * @returns {Object}\n * @public\n * @memberof WebRTCStats\n */\n destroySenders() {\n forEach(this.senders, (v, k) => {\n this.destroySender(k);\n });\n }\n\n /**\n * @returns {undefined}\n * @public\n * @memberof WebRTCStats\n */\n destroyReceivers() {\n forEach(this.receivers, (v, k) => {\n this.destroyReceiver(k);\n });\n }\n\n /**\n * @param {String} id\n * @returns {undefined}\n * @public\n * @memberof WebRTCStats\n */\n destroySender(id) {\n let sender = this.getSender(id);\n\n if (sender) {\n if (sender.stream) {\n sender.stream.destroy();\n }\n }\n sender = null;\n delete this.receivers[id];\n }\n\n /**\n * @param {String} id\n * @returns {undefined}\n * @public\n * @memberof WebRTCStats\n */\n destroyReceiver(id) {\n let receiver = this.getReceiver(id);\n\n if (receiver) {\n if (receiver.stream) {\n receiver.stream.destroy();\n }\n }\n receiver = null;\n delete this.receivers[id];\n }\n}\n"]}
|
|
1
|
+
{"version":3,"names":["WebRTCStats","attrs","options","optionalCreateOptions","MEETINGS","senders","receivers","meetingRef","statsConfig","populate","config","setConfig","meeting","associateMeeting","addSenders","addReceivers","useConfig","forEach","TypeError","sender","addSender","StatsUtil","generateSingularOptions","STATS","SENDERS","type","SENDER","id","MeetingStats","newSender","newReceiver","receiver","addReceiver","RECEIVERS","RECEIVER","v","k","destroySender","destroyReceiver","getSender","stream","destroy","getReceiver","StatelessWebexPlugin"],"sources":["index.js"],"sourcesContent":["import {forEach} from 'lodash';\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n\nimport {\n MEETINGS,\n STATS\n} from '../constants';\nimport MeetingStats from '../stats/stats';\nimport StatsUtil from '../stats/util';\n\n/**\n * @class WebRTCStats\n */\nexport default class WebRTCStats extends StatelessWebexPlugin {\n namespace = MEETINGS;\n\n /**\n *\n * @param {Object} attrs\n * @param {Object} options\n * @param {Object} [optionalCreateOptions]\n */\n constructor(attrs, options, optionalCreateOptions) {\n super({}, options);\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof WebRTCStats\n */\n this.attrs = attrs;\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof WebRTCStats\n */\n this.options = options;\n /**\n * @instance\n * @type {Object}\n * @public\n * @memberof WebRTCStats\n */\n this.senders = {};\n /**\n * @instance\n * @type {Object}\n * @public\n * @memberof WebRTCStats\n */\n this.receivers = {};\n /**\n * @instance\n * @type {Meeting}\n * @private\n * @memberof WebRTCStats\n */\n this.meetingRef = null;\n /**\n * @instance\n * @type {Object}\n * @public\n * @memberof WebRTCStats\n */\n this.statsConfig = null;\n this.populate(optionalCreateOptions);\n }\n\n /**\n * @param {Object} [optionalCreateOptions]\n * @param {Object} optionalCreateOptions.config\n * @param {Meeting} optionalCreateOptions.meeting\n * @param {Object} optionalCreateOptions.senders\n * @param {Object} optionalCreateOptions.receivers\n * @returns {WebRTCStats}\n * @private\n * @memberof WebRTCStats\n */\n populate(optionalCreateOptions) {\n if (optionalCreateOptions) {\n if (optionalCreateOptions.config) {\n this.setConfig(optionalCreateOptions.config);\n }\n if (optionalCreateOptions.meeting) {\n this.associateMeeting(optionalCreateOptions.meeting);\n }\n if (optionalCreateOptions.senders) {\n this.addSenders(optionalCreateOptions.senders);\n }\n if (optionalCreateOptions.receivers) {\n this.addReceivers(optionalCreateOptions.receivers);\n }\n }\n\n return this;\n }\n\n /**\n * @param {Object} config\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n setConfig(config) {\n this.statsConfig = config;\n }\n\n /**\n * @param {Meeting} meeting\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n associateMeeting(meeting) {\n this.meetingRef = meeting;\n\n return this;\n }\n\n /**\n * @param {Object} senders\n * @param {Boolean} useConfig\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n addSenders(senders, useConfig = false) {\n if (!senders.forEach) {\n throw new TypeError('Stats senders must be created with an iterable array of senders to act on.');\n }\n senders.forEach((sender) => {\n this.addSender(sender, useConfig);\n });\n\n return this;\n }\n\n /**\n * @param {Object} sender\n * @param {Boolean} useConfig\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n addSender(sender, useConfig = false) {\n if (sender) {\n if (useConfig) {\n StatsUtil.generateSingularOptions(sender, this.statsConfig, this.meetingRef, STATS.SENDERS);\n }\n sender.type = STATS.SENDER;\n this.senders[sender.id] = new MeetingStats(this.attrs, this.options, sender);\n }\n\n return this;\n }\n\n /**\n *\n * @param {String} id\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n addSenderStats(id) {\n const newSender = new MeetingStats(this.attrs, this.options);\n\n this.senders[id] = newSender;\n\n return newSender;\n }\n\n /**\n *\n * @param {String} id\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n addReceiverStats(id) {\n const newReceiver = new MeetingStats(this.attrs, this.options);\n\n this.receivers[id] = newReceiver;\n\n return newReceiver;\n }\n\n /**\n * @param {Object} receivers\n * @param {boolean} useConfig\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n addReceivers(receivers, useConfig = false) {\n if (!receivers.forEach) {\n throw new TypeError('Stats receivers must be created with an iterable array of receivers to act on.');\n }\n receivers.forEach((receiver) => {\n this.addReceiver(receiver, useConfig);\n });\n\n return this;\n }\n\n /**\n * @param {Object} receiver\n * @param {boolean} useConfig\n * @returns {WebRTCStats}\n * @public\n * @memberof WebRTCStats\n */\n addReceiver(receiver, useConfig = false) {\n if (receiver) {\n if (useConfig) {\n StatsUtil.generateSingularOptions(receiver, this.statsConfig, this.meetingRef, STATS.RECEIVERS);\n }\n receiver.type = STATS.RECEIVER;\n this.receivers[receiver.id] = new MeetingStats(this.attrs, this.options, receiver);\n }\n\n return this;\n }\n\n /**\n * @returns {Object}\n * @public\n * @memberof WebRTCStats\n */\n getReceivers() {\n return this.receivers;\n }\n\n /**\n * @returns {Object}\n * @public\n * @memberof WebRTCStats\n */\n getSenders() {\n return this.senders;\n }\n\n /**\n * @param {String} id\n * @returns {Object}\n * @public\n * @memberof WebRTCStats\n */\n getSender(id) {\n return this.senders[id];\n }\n\n /**\n * @param {String} id\n * @returns {Object}\n * @public\n * @memberof WebRTCStats\n */\n getReceiver(id) {\n return this.receivers[id];\n }\n\n /**\n * @returns {Object}\n * @public\n * @memberof WebRTCStats\n */\n destroySenders() {\n forEach(this.senders, (v, k) => {\n this.destroySender(k);\n });\n }\n\n /**\n * @returns {undefined}\n * @public\n * @memberof WebRTCStats\n */\n destroyReceivers() {\n forEach(this.receivers, (v, k) => {\n this.destroyReceiver(k);\n });\n }\n\n /**\n * @param {String} id\n * @returns {undefined}\n * @public\n * @memberof WebRTCStats\n */\n destroySender(id) {\n let sender = this.getSender(id);\n\n if (sender) {\n if (sender.stream) {\n sender.stream.destroy();\n }\n }\n sender = null;\n delete this.receivers[id];\n }\n\n /**\n * @param {String} id\n * @returns {undefined}\n * @public\n * @memberof WebRTCStats\n */\n destroyReceiver(id) {\n let receiver = this.getReceiver(id);\n\n if (receiver) {\n if (receiver.stream) {\n receiver.stream.destroy();\n }\n }\n receiver = null;\n delete this.receivers[id];\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["MediaMetrics","options","MEETINGS","config","stats","mqa","metrics","autoSendMQA","useConfig","senders","id","STATS","AUDIO_SENDER_ID","correlate","AUDIO_CORRELATE","onData","VIDEO_SENDER_ID","VIDEO_CORRELATE","SHARE_SENDER_ID","SHARE_CORRELATE","receivers","AUDIO_RECEIVER_ID","VIDEO_RECEIVER_ID","SHARE_RECEIVER_ID"],"sources":["metrics.js"],"sourcesContent":["import {\n MEETINGS,\n STATS\n} from '../constants';\n\n/**\n * Metrics Payload Event\n * Emitted when a Metric Payload is available\n * @event metrics:payload\n * @instance\n * @type {Object}\n * @memberof MediaMetrics\n */\n\n/**\n * @class MediaMetrics\n * @private\n */\nexport default class MediaMetrics {\n namespace = MEETINGS;\n\n /**\n * @param {Object} options\n * @param {Object} options.config\n * @memberof MediaMetrics\n * @constructor\n */\n constructor(options = {}) {\n this.config = options.config;\n this.stats = null;\n }\n\n /**\n * @param {MeetingStats} stats\n * @returns {undefined}\n * @memberof MediaMetrics\n */\n setStats(stats) {\n this.stats = stats;\n }\n\n /**\n * sets up all the default senders and receivers getStats to collect data\n * @returns {Object}\n * @public\n * @memberof MediaMetrics\n */\n initialize() {\n const mqa = this.config.metrics.autoSendMQA;\n\n return {\n useConfig: true,\n senders: [\n {\n id: STATS.AUDIO_SENDER_ID,\n correlate: STATS.AUDIO_CORRELATE,\n mqa,\n onData: () => {}\n },\n {\n id: STATS.VIDEO_SENDER_ID,\n correlate: STATS.VIDEO_CORRELATE,\n mqa,\n onData: () => {}\n },\n {\n id: STATS.SHARE_SENDER_ID,\n correlate: STATS.SHARE_CORRELATE,\n mqa,\n onData: () => {}\n }\n ],\n receivers: [\n {\n id: STATS.AUDIO_RECEIVER_ID,\n correlate: STATS.AUDIO_CORRELATE,\n mqa,\n onData: () => {}\n },\n {\n id: STATS.VIDEO_RECEIVER_ID,\n correlate: STATS.VIDEO_CORRELATE,\n mqa,\n onData: () => {}\n },\n {\n id: STATS.SHARE_RECEIVER_ID,\n correlate: STATS.SHARE_CORRELATE,\n mqa,\n onData: () => {}\n }\n ]\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;IACqBA,Y;EAGnB;AACF;AACA;AACA;AACA;AACA;EACE,wBAA0B;IAAA,IAAdC,OAAc,uEAAJ,EAAI;IAAA;IAAA,iDARdC,mBAQc;IACxB,KAAKC,MAAL,GAAcF,OAAO,CAACE,MAAtB;IACA,KAAKC,KAAL,GAAa,IAAb;EACD;EAED;AACF;AACA;AACA;AACA;;;;;WACE,kBAASA,KAAT,EAAgB;MACd,KAAKA,KAAL,GAAaA,KAAb;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,sBAAa;MACX,IAAMC,GAAG,GAAG,KAAKF,MAAL,CAAYG,OAAZ,CAAoBC,WAAhC;MAEA,OAAO;QACLC,SAAS,EAAE,IADN;QAELC,OAAO,EAAE,CACP;UACEC,EAAE,EAAEC,iBAAMC,eADZ;UAEEC,SAAS,EAAEF,iBAAMG,eAFnB;UAGET,GAAG,EAAHA,GAHF;UAIEU,MAAM,EAAE,kBAAM,CAAE;QAJlB,CADO,EAOP;UACEL,EAAE,EAAEC,iBAAMK,eADZ;UAEEH,SAAS,EAAEF,iBAAMM,eAFnB;UAGEZ,GAAG,EAAHA,GAHF;UAIEU,MAAM,EAAE,kBAAM,CAAE;QAJlB,CAPO,EAaP;UACEL,EAAE,EAAEC,iBAAMO,eADZ;UAEEL,SAAS,EAAEF,iBAAMQ,eAFnB;UAGEd,GAAG,EAAHA,GAHF;UAIEU,MAAM,EAAE,kBAAM,CAAE;QAJlB,CAbO,CAFJ;QAsBLK,SAAS,EAAE,CACT;UACEV,EAAE,EAAEC,iBAAMU,iBADZ;UAEER,SAAS,EAAEF,iBAAMG,eAFnB;UAGET,GAAG,EAAHA,GAHF;UAIEU,MAAM,EAAE,kBAAM,CAAE;QAJlB,CADS,EAOT;UACEL,EAAE,EAAEC,iBAAMW,iBADZ;UAEET,SAAS,EAAEF,iBAAMM,eAFnB;UAGEZ,GAAG,EAAHA,GAHF;UAIEU,MAAM,EAAE,kBAAM,CAAE;QAJlB,CAPS,EAaT;UACEL,EAAE,EAAEC,iBAAMY,iBADZ;UAEEV,SAAS,EAAEF,iBAAMQ,eAFnB;UAGEd,GAAG,EAAHA,GAHF;UAIEU,MAAM,EAAE,kBAAM,CAAE;QAJlB,CAbS;MAtBN,CAAP;IA2CD"}
|
package/dist/stats/stats.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["stats.js"],"names":["MeetingStats","attrs","options","optionalCreateOptions","MEETINGS","peerConnection","RTCRtpDirection","history","mqa","stream","filter","events","id","populate","withHistory","withMQA","media","withFilter","withStream","withId","onClose","TypeError","onEvent","withEventsHistory","withEvents","onData","data","add","isEmpty","omit","event","cbFn","on","STATS","DATA","filtered","doHistory","doMQA","doEvents","END","err","StatsError","cb","StatsEvents","setEvents","StatsHistory","config","stats","historyMax","setHistory","MQA_STATS","MQA_SIZE","setMQA","transceiverDirection","StatsStream","rTCRtpDirection","interval","setStream","setFilter","StatsFilter","getStream","pipe","getFilter","setId","uuid","v4","StatelessWebexPlugin"],"mappings":"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;WACE,gBAAOlD,EAAP,EAAW;AACT,UAAIA,EAAJ,EAAQ;AACN,aAAKmD,KAAL,CAAWnD,EAAX;AACD,OAFD,MAGK;AACH,aAAKmD,KAAL,CAAWC,WAAKC,EAAL,EAAX;AACD;;AAED,aAAO,IAAP;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,iBAAQ;AACN,aAAO,IAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,eAAMrD,EAAN,EAAU;AACR,WAAKA,EAAL,GAAUA,EAAV;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,oBAAWL,OAAX,EAAoB;AAClB,WAAKA,OAAL,GAAeA,OAAf;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,gBAAOC,GAAP,EAAY;AACV,WAAKA,GAAL,GAAWA,GAAX;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,mBAAUG,MAAV,EAAkB;AAChB,WAAKA,MAAL,GAAcA,MAAd;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,mBAAUF,MAAV,EAAkB;AAChB,WAAKA,MAAL,GAAcA,MAAd;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,mBAAUC,MAAV,EAAkB;AAChB,WAAKA,MAAL,GAAcA,MAAd;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,iBAAQ;AACN,aAAO,KAAKE,EAAZ;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,sBAAa;AACX,aAAO,KAAKL,OAAZ;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,kBAAS;AACP,aAAO,KAAKC,GAAZ;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,qBAAY;AACV,aAAO,KAAKG,MAAZ;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,qBAAY;AACV,aAAO,KAAKF,MAAZ;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,qBAAY;AACV,aAAO,KAAKC,MAAZ;AACD;;;EAzcuCwD,+B","sourcesContent":["import {StatelessWebexPlugin} from '@webex/webex-core';\nimport {isFunction} from 'lodash';\nimport {uuid} from 'uuid';\n\nimport {\n MEETINGS,\n STATS,\n MQA_STATS\n} from '../constants';\nimport StatsHistory from '../stats/history';\nimport StatsStream from '../stats/stream';\nimport StatsFilter from '../stats/filter';\nimport StatsEvents from '../stats/events';\nimport StatsError from '../common/errors/stats';\n\n/**\n * @class MeetingStats\n */\nexport default class MeetingStats extends StatelessWebexPlugin {\n namespace = MEETINGS;\n\n /**\n * @param {Object} attrs\n * @param {Object} options\n * @param {Object} [optionalCreateOptions]\n * @param {Boolean} optionalCreateOptions.history\n * @param {Boolean} optionalCreateOptions.mqa\n * @param {RTCRtpSender|RTCRtpReceiver} optionalCreateOptions.stream\n * @param {RTCRtpSender|RTCRtpReceiver} optionalCreateOptions.filter\n * @param {RTCPeerConnection} optionalCreateOptions.media\n * @param {String} optionalCreateOptions.id\n * @param {Function} optionalCreateOptions.onClose\n * @param {Function} optionalCreateOptions.onEvent\n * @param {Function} optionalCreateOptions.onData\n * if using filter or stream, media must also exist\n */\n constructor(attrs, options, optionalCreateOptions) {\n super({}, options);\n this.attrs = attrs;\n this.options = options;\n // what this stats object is configured to work with\n /**\n * @instance\n * @type {RTCPeerConnection}\n * @private\n * @memberof MeetingStats\n */\n this.peerConnection = null;\n /**\n * @instance\n * @type {RTCRtpSender|RTCRtpReceiver}\n * @private\n * @memberof MeetingStats\n */\n this.RTCRtpDirection = null;\n // usable values\n /**\n * @instance\n * @type {StatsHistory}\n * @readonly\n * @private\n * @memberof MeetingStats\n */\n this.history = null;\n /**\n * @instance\n * @type {StatsHistory}\n * @readonly\n * @private\n * @memberof MeetingStats\n */\n this.mqa = null;\n /**\n * @instance\n * @type {ReadableStream}\n * @readonly\n * @private\n * @memberof MeetingStats\n */\n this.stream = null;\n /**\n * @instance\n * @type {TransformStream}\n * @readonly\n * @private\n * @memberof MeetingStats\n */\n this.filter = null;\n /**\n * @instance\n * @type {StatsEvents}\n * @readonly\n * @private\n * @memberof MeetingStats\n */\n this.events = null;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @private\n * @memberof MeetingStats\n */\n this.id = null;\n this.populate(optionalCreateOptions);\n }\n\n /**\n * @param {Object} [optionalCreateOptions]\n * @returns {undefined}\n * @private\n * @memberof MeetingStats\n */\n populate(optionalCreateOptions) {\n if (optionalCreateOptions) {\n if (optionalCreateOptions.history) {\n this.withHistory();\n }\n if (optionalCreateOptions.mqa) {\n this.withMQA();\n }\n if (optionalCreateOptions.filter && !optionalCreateOptions.stream && optionalCreateOptions.media) {\n this.withFilter(optionalCreateOptions.filter, optionalCreateOptions.media);\n }\n if (optionalCreateOptions.stream && !optionalCreateOptions.filter && optionalCreateOptions.media) {\n this.withStream(optionalCreateOptions.stream, optionalCreateOptions.media);\n }\n if (optionalCreateOptions.id) {\n this.withId(optionalCreateOptions.id);\n }\n if (optionalCreateOptions.onClose) {\n if (!isFunction(optionalCreateOptions.onClose)) {\n throw new TypeError('stats->populate#onClose must be a callback function for filtered data.');\n }\n this.onClose(optionalCreateOptions.onClose);\n }\n if (optionalCreateOptions.onEvent) {\n if (!isFunction(optionalCreateOptions.onEvent)) {\n throw new TypeError('stats->populate#onEvent must be a callback function for filtered data.');\n }\n if (this.history) {\n this.withEventsHistory(this.history, optionalCreateOptions.onEvent);\n }\n else {\n this.withEvents(optionalCreateOptions.onEvent);\n }\n }\n if (optionalCreateOptions.onData) {\n if (!isFunction(optionalCreateOptions.onData)) {\n throw new TypeError('stats->populate#onData must be a callback function for filtered data.');\n }\n this.onData(optionalCreateOptions.onData);\n }\n }\n\n return this;\n }\n\n /**\n * @param {WebRTCData} data\n * @returns {undefined}\n * @public\n * @memberof MeetingStats\n */\n doHistory(data) {\n if (this.history) {\n this.history.add(data);\n }\n }\n\n /**\n * @param {WebRTCData} data\n * @returns {undefined}\n * @public\n * @memberof MeetingStats\n */\n doMQA(data) {\n if (this.mqa && data.data) {\n if (!data.data.isEmpty()) {\n this.mqa.add(data.data.omit());\n }\n }\n }\n\n /**\n * @param {WebRTCData} data\n * @returns {undefined}\n * @public\n * @memberof MeetingStats\n */\n doEvents(data) {\n if (this.events) {\n this.events.event(data);\n }\n }\n\n /**\n * does all the work for the built properties\n * calls back a function with data from piped stream filter\n * @param {Function} cbFn\n * @returns {undefined}\n * @throws {Error} if the filter stream does not exist\n * @private\n * @memberof MeetingStats\n */\n onData(cbFn) {\n if (!this.filter) {\n throw new TypeError('The stats sender/receiver filter must be set up before data can be processed.');\n }\n this.filter.on(STATS.DATA, (filtered) => {\n this.doHistory(filtered);\n this.doMQA(filtered);\n this.doEvents(filtered);\n cbFn(filtered);\n });\n\n return this;\n }\n\n /**\n * triggered if the data stream closes\n * calls back a function with error\n * @param {Function} cbFn\n * @returns {undefined}\n * @private\n * @memberof MeetingStats\n */\n onClose(cbFn) {\n if (!this.filter) {\n throw new TypeError('the stats sender/receiver filter must be set up before data can be closed.');\n }\n this.stream.on(STATS.END, (err) => {\n if (!err) {\n err = new StatsError(`The stats stream for id: ${this.id} ended.`);\n }\n cbFn(err);\n });\n\n return this;\n }\n\n /**\n * constructs an event object on this instance\n * @param {StatsHistory} history\n * @param {Function} cb\n * @returns {MeetingStats}\n * @public\n * @memberof MeetingStats\n */\n withEventsHistory(history, cb) {\n const events = new StatsEvents(history, cb);\n\n this.setEvents(events);\n\n return this;\n }\n\n /**\n * constructs an event object on this instance\n * @param {Function} cb\n * @returns {MeetingStats}\n * @public\n * @memberof MeetingStats\n */\n withEvents(cb) {\n const events = new StatsEvents(null, cb);\n\n this.setEvents(events);\n\n return this;\n }\n\n /**\n * constructs a history object on this instance\n * @returns {MeetingStats}\n * @public\n * @memberof MeetingStats\n */\n withHistory() {\n const history = new StatsHistory(this.config.stats.historyMax);\n\n this.setHistory(history);\n\n return this;\n }\n\n /**\n * constructs a history object on this instance\n * @returns {MeetingStats}\n * @public\n * @memberof MeetingStats\n */\n withMQA() {\n const mqa = new StatsHistory(MQA_STATS.MQA_SIZE);\n\n this.setMQA(mqa);\n\n return this;\n }\n\n /**\n * constructs a readable stream object on this instance\n * @param {RTCRtpReceiver|RTCRtpSender} transceiverDirection\n * @param {RTCPeerConnection} peerConnection\n * @returns {MeetingStats}\n * @public\n * @memberof MeetingStats\n */\n withStream(transceiverDirection, peerConnection) {\n const stream = new StatsStream({\n rTCRtpDirection: transceiverDirection,\n peerConnection,\n interval: this.config.stats.interval\n });\n\n this.setStream(stream);\n\n return this;\n }\n\n /**\n * @param {RTCRtpReceiver|RTCRtpSender} transceiverDirection\n * @param {RTCPeerConnection} peerConnection\n * @returns {MeetingStats}\n * @public\n * @memberof MeetingStats\n */\n withFilter(transceiverDirection, peerConnection) {\n this.withStream(transceiverDirection, peerConnection);\n this.setFilter(new StatsFilter());\n this.getStream().pipe(this.getFilter());\n\n return this;\n }\n\n /**\n * constructs an id to match this stats object\n * takes params as precedence\n * @param {String} id\n * @returns {MeetingStats}\n * @public\n * @memberof MeetingStats\n */\n withId(id) {\n if (id) {\n this.setId(id);\n }\n else {\n this.setId(uuid.v4());\n }\n\n return this;\n }\n\n /**\n * @returns {MeetingStats}\n * @public\n * @memberof MeetingStats\n */\n build() {\n return this;\n }\n\n /**\n * @param {String} id\n * @returns {undefined}\n * @public\n * @memberof MeetingStats\n */\n setId(id) {\n this.id = id;\n }\n\n /**\n * @param {StatsHistory} history\n * @returns {undefined}\n * @public\n * @memberof MeetingStats\n */\n setHistory(history) {\n this.history = history;\n }\n\n /**\n * @param {StatsHistory} mqa\n * @returns {undefined}\n * @public\n * @memberof MeetingStats\n */\n setMQA(mqa) {\n this.mqa = mqa;\n }\n\n /**\n * @param {StatsEvent} events\n * @returns {undefined}\n * @public\n * @memberof MeetingStats\n */\n setEvents(events) {\n this.events = events;\n }\n\n /**\n * @param {Readable} stream\n * @returns {undefined}\n * @public\n * @memberof MeetingStats\n */\n setStream(stream) {\n this.stream = stream;\n }\n\n /**\n * @param {Transform} filter\n * @returns {undefined}\n * @public\n * @memberof MeetingStats\n */\n setFilter(filter) {\n this.filter = filter;\n }\n\n /**\n * @returns {String}\n * @public\n * @memberof MeetingStats\n */\n getId() {\n return this.id;\n }\n\n /**\n * @returns {StatsHistory}\n * @public\n * @memberof MeetingStats\n */\n getHistory() {\n return this.history;\n }\n\n /**\n * @returns {StatsHistory}\n * @public\n * @memberof MeetingStats\n */\n getMQA() {\n return this.mqa;\n }\n\n /**\n * @returns {StatsEvents}\n * @public\n * @memberof MeetingStats\n */\n getEvents() {\n return this.events;\n }\n\n /**\n * @returns {Readable}\n * @public\n * @memberof MeetingStats\n */\n getStream() {\n return this.stream;\n }\n\n /**\n * @returns {Transform}\n * @public\n * @memberof MeetingStats\n */\n getFilter() {\n return this.filter;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"names":["MeetingStats","attrs","options","optionalCreateOptions","MEETINGS","peerConnection","RTCRtpDirection","history","mqa","stream","filter","events","id","populate","withHistory","withMQA","media","withFilter","withStream","withId","onClose","TypeError","onEvent","withEventsHistory","withEvents","onData","data","add","isEmpty","omit","event","cbFn","on","STATS","DATA","filtered","doHistory","doMQA","doEvents","END","err","StatsError","cb","StatsEvents","setEvents","StatsHistory","config","stats","historyMax","setHistory","MQA_STATS","MQA_SIZE","setMQA","transceiverDirection","StatsStream","rTCRtpDirection","interval","setStream","setFilter","StatsFilter","getStream","pipe","getFilter","setId","uuid","v4","StatelessWebexPlugin"],"sources":["stats.js"],"sourcesContent":["import {StatelessWebexPlugin} from '@webex/webex-core';\nimport {isFunction} from 'lodash';\nimport {uuid} from 'uuid';\n\nimport {\n MEETINGS,\n STATS,\n MQA_STATS\n} from '../constants';\nimport StatsHistory from '../stats/history';\nimport StatsStream from '../stats/stream';\nimport StatsFilter from '../stats/filter';\nimport StatsEvents from '../stats/events';\nimport StatsError from '../common/errors/stats';\n\n/**\n * @class MeetingStats\n */\nexport default class MeetingStats extends StatelessWebexPlugin {\n namespace = MEETINGS;\n\n /**\n * @param {Object} attrs\n * @param {Object} options\n * @param {Object} [optionalCreateOptions]\n * @param {Boolean} optionalCreateOptions.history\n * @param {Boolean} optionalCreateOptions.mqa\n * @param {RTCRtpSender|RTCRtpReceiver} optionalCreateOptions.stream\n * @param {RTCRtpSender|RTCRtpReceiver} optionalCreateOptions.filter\n * @param {RTCPeerConnection} optionalCreateOptions.media\n * @param {String} optionalCreateOptions.id\n * @param {Function} optionalCreateOptions.onClose\n * @param {Function} optionalCreateOptions.onEvent\n * @param {Function} optionalCreateOptions.onData\n * if using filter or stream, media must also exist\n */\n constructor(attrs, options, optionalCreateOptions) {\n super({}, options);\n this.attrs = attrs;\n this.options = options;\n // what this stats object is configured to work with\n /**\n * @instance\n * @type {RTCPeerConnection}\n * @private\n * @memberof MeetingStats\n */\n this.peerConnection = null;\n /**\n * @instance\n * @type {RTCRtpSender|RTCRtpReceiver}\n * @private\n * @memberof MeetingStats\n */\n this.RTCRtpDirection = null;\n // usable values\n /**\n * @instance\n * @type {StatsHistory}\n * @readonly\n * @private\n * @memberof MeetingStats\n */\n this.history = null;\n /**\n * @instance\n * @type {StatsHistory}\n * @readonly\n * @private\n * @memberof MeetingStats\n */\n this.mqa = null;\n /**\n * @instance\n * @type {ReadableStream}\n * @readonly\n * @private\n * @memberof MeetingStats\n */\n this.stream = null;\n /**\n * @instance\n * @type {TransformStream}\n * @readonly\n * @private\n * @memberof MeetingStats\n */\n this.filter = null;\n /**\n * @instance\n * @type {StatsEvents}\n * @readonly\n * @private\n * @memberof MeetingStats\n */\n this.events = null;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @private\n * @memberof MeetingStats\n */\n this.id = null;\n this.populate(optionalCreateOptions);\n }\n\n /**\n * @param {Object} [optionalCreateOptions]\n * @returns {undefined}\n * @private\n * @memberof MeetingStats\n */\n populate(optionalCreateOptions) {\n if (optionalCreateOptions) {\n if (optionalCreateOptions.history) {\n this.withHistory();\n }\n if (optionalCreateOptions.mqa) {\n this.withMQA();\n }\n if (optionalCreateOptions.filter && !optionalCreateOptions.stream && optionalCreateOptions.media) {\n this.withFilter(optionalCreateOptions.filter, optionalCreateOptions.media);\n }\n if (optionalCreateOptions.stream && !optionalCreateOptions.filter && optionalCreateOptions.media) {\n this.withStream(optionalCreateOptions.stream, optionalCreateOptions.media);\n }\n if (optionalCreateOptions.id) {\n this.withId(optionalCreateOptions.id);\n }\n if (optionalCreateOptions.onClose) {\n if (!isFunction(optionalCreateOptions.onClose)) {\n throw new TypeError('stats->populate#onClose must be a callback function for filtered data.');\n }\n this.onClose(optionalCreateOptions.onClose);\n }\n if (optionalCreateOptions.onEvent) {\n if (!isFunction(optionalCreateOptions.onEvent)) {\n throw new TypeError('stats->populate#onEvent must be a callback function for filtered data.');\n }\n if (this.history) {\n this.withEventsHistory(this.history, optionalCreateOptions.onEvent);\n }\n else {\n this.withEvents(optionalCreateOptions.onEvent);\n }\n }\n if (optionalCreateOptions.onData) {\n if (!isFunction(optionalCreateOptions.onData)) {\n throw new TypeError('stats->populate#onData must be a callback function for filtered data.');\n }\n this.onData(optionalCreateOptions.onData);\n }\n }\n\n return this;\n }\n\n /**\n * @param {WebRTCData} data\n * @returns {undefined}\n * @public\n * @memberof MeetingStats\n */\n doHistory(data) {\n if (this.history) {\n this.history.add(data);\n }\n }\n\n /**\n * @param {WebRTCData} data\n * @returns {undefined}\n * @public\n * @memberof MeetingStats\n */\n doMQA(data) {\n if (this.mqa && data.data) {\n if (!data.data.isEmpty()) {\n this.mqa.add(data.data.omit());\n }\n }\n }\n\n /**\n * @param {WebRTCData} data\n * @returns {undefined}\n * @public\n * @memberof MeetingStats\n */\n doEvents(data) {\n if (this.events) {\n this.events.event(data);\n }\n }\n\n /**\n * does all the work for the built properties\n * calls back a function with data from piped stream filter\n * @param {Function} cbFn\n * @returns {undefined}\n * @throws {Error} if the filter stream does not exist\n * @private\n * @memberof MeetingStats\n */\n onData(cbFn) {\n if (!this.filter) {\n throw new TypeError('The stats sender/receiver filter must be set up before data can be processed.');\n }\n this.filter.on(STATS.DATA, (filtered) => {\n this.doHistory(filtered);\n this.doMQA(filtered);\n this.doEvents(filtered);\n cbFn(filtered);\n });\n\n return this;\n }\n\n /**\n * triggered if the data stream closes\n * calls back a function with error\n * @param {Function} cbFn\n * @returns {undefined}\n * @private\n * @memberof MeetingStats\n */\n onClose(cbFn) {\n if (!this.filter) {\n throw new TypeError('the stats sender/receiver filter must be set up before data can be closed.');\n }\n this.stream.on(STATS.END, (err) => {\n if (!err) {\n err = new StatsError(`The stats stream for id: ${this.id} ended.`);\n }\n cbFn(err);\n });\n\n return this;\n }\n\n /**\n * constructs an event object on this instance\n * @param {StatsHistory} history\n * @param {Function} cb\n * @returns {MeetingStats}\n * @public\n * @memberof MeetingStats\n */\n withEventsHistory(history, cb) {\n const events = new StatsEvents(history, cb);\n\n this.setEvents(events);\n\n return this;\n }\n\n /**\n * constructs an event object on this instance\n * @param {Function} cb\n * @returns {MeetingStats}\n * @public\n * @memberof MeetingStats\n */\n withEvents(cb) {\n const events = new StatsEvents(null, cb);\n\n this.setEvents(events);\n\n return this;\n }\n\n /**\n * constructs a history object on this instance\n * @returns {MeetingStats}\n * @public\n * @memberof MeetingStats\n */\n withHistory() {\n const history = new StatsHistory(this.config.stats.historyMax);\n\n this.setHistory(history);\n\n return this;\n }\n\n /**\n * constructs a history object on this instance\n * @returns {MeetingStats}\n * @public\n * @memberof MeetingStats\n */\n withMQA() {\n const mqa = new StatsHistory(MQA_STATS.MQA_SIZE);\n\n this.setMQA(mqa);\n\n return this;\n }\n\n /**\n * constructs a readable stream object on this instance\n * @param {RTCRtpReceiver|RTCRtpSender} transceiverDirection\n * @param {RTCPeerConnection} peerConnection\n * @returns {MeetingStats}\n * @public\n * @memberof MeetingStats\n */\n withStream(transceiverDirection, peerConnection) {\n const stream = new StatsStream({\n rTCRtpDirection: transceiverDirection,\n peerConnection,\n interval: this.config.stats.interval\n });\n\n this.setStream(stream);\n\n return this;\n }\n\n /**\n * @param {RTCRtpReceiver|RTCRtpSender} transceiverDirection\n * @param {RTCPeerConnection} peerConnection\n * @returns {MeetingStats}\n * @public\n * @memberof MeetingStats\n */\n withFilter(transceiverDirection, peerConnection) {\n this.withStream(transceiverDirection, peerConnection);\n this.setFilter(new StatsFilter());\n this.getStream().pipe(this.getFilter());\n\n return this;\n }\n\n /**\n * constructs an id to match this stats object\n * takes params as precedence\n * @param {String} id\n * @returns {MeetingStats}\n * @public\n * @memberof MeetingStats\n */\n withId(id) {\n if (id) {\n this.setId(id);\n }\n else {\n this.setId(uuid.v4());\n }\n\n return this;\n }\n\n /**\n * @returns {MeetingStats}\n * @public\n * @memberof MeetingStats\n */\n build() {\n return this;\n }\n\n /**\n * @param {String} id\n * @returns {undefined}\n * @public\n * @memberof MeetingStats\n */\n setId(id) {\n this.id = id;\n }\n\n /**\n * @param {StatsHistory} history\n * @returns {undefined}\n * @public\n * @memberof MeetingStats\n */\n setHistory(history) {\n this.history = history;\n }\n\n /**\n * @param {StatsHistory} mqa\n * @returns {undefined}\n * @public\n * @memberof MeetingStats\n */\n setMQA(mqa) {\n this.mqa = mqa;\n }\n\n /**\n * @param {StatsEvent} events\n * @returns {undefined}\n * @public\n * @memberof MeetingStats\n */\n setEvents(events) {\n this.events = events;\n }\n\n /**\n * @param {Readable} stream\n * @returns {undefined}\n * @public\n * @memberof MeetingStats\n */\n setStream(stream) {\n this.stream = stream;\n }\n\n /**\n * @param {Transform} filter\n * @returns {undefined}\n * @public\n * @memberof MeetingStats\n */\n setFilter(filter) {\n this.filter = filter;\n }\n\n /**\n * @returns {String}\n * @public\n * @memberof MeetingStats\n */\n getId() {\n return this.id;\n }\n\n /**\n * @returns {StatsHistory}\n * @public\n * @memberof MeetingStats\n */\n getHistory() {\n return this.history;\n }\n\n /**\n * @returns {StatsHistory}\n * @public\n * @memberof MeetingStats\n */\n getMQA() {\n return this.mqa;\n }\n\n /**\n * @returns {StatsEvents}\n * @public\n * @memberof MeetingStats\n */\n getEvents() {\n return this.events;\n }\n\n /**\n * @returns {Readable}\n * @public\n * @memberof MeetingStats\n */\n getStream() {\n return this.stream;\n }\n\n /**\n * @returns {Transform}\n * @public\n * @memberof MeetingStats\n */\n getFilter() {\n return this.filter;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AAEA;;AAKA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA;AACA;AACA;IACqBA,Y;;;;;EAGnB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,sBAAYC,KAAZ,EAAmBC,OAAnB,EAA4BC,qBAA5B,EAAmD;IAAA;;IAAA;IACjD,0BAAM,EAAN,EAAUD,OAAV;IADiD,wFAjBvCE,mBAiBuC;IAEjD,MAAKH,KAAL,GAAaA,KAAb;IACA,MAAKC,OAAL,GAAeA,OAAf,CAHiD,CAIjD;;IACA;AACJ;AACA;AACA;AACA;AACA;;IACI,MAAKG,cAAL,GAAsB,IAAtB;IACA;AACJ;AACA;AACA;AACA;AACA;;IACI,MAAKC,eAAL,GAAuB,IAAvB,CAlBiD,CAmBjD;;IACA;AACJ;AACA;AACA;AACA;AACA;AACA;;IACI,MAAKC,OAAL,GAAe,IAAf;IACA;AACJ;AACA;AACA;AACA;AACA;AACA;;IACI,MAAKC,GAAL,GAAW,IAAX;IACA;AACJ;AACA;AACA;AACA;AACA;AACA;;IACI,MAAKC,MAAL,GAAc,IAAd;IACA;AACJ;AACA;AACA;AACA;AACA;AACA;;IACI,MAAKC,MAAL,GAAc,IAAd;IACA;AACJ;AACA;AACA;AACA;AACA;AACA;;IACI,MAAKC,MAAL,GAAc,IAAd;IACA;AACJ;AACA;AACA;AACA;AACA;AACA;;IACI,MAAKC,EAAL,GAAU,IAAV;;IACA,MAAKC,QAAL,CAAcV,qBAAd;;IApEiD;EAqElD;EAED;AACF;AACA;AACA;AACA;AACA;;;;;WACE,kBAASA,qBAAT,EAAgC;MAC9B,IAAIA,qBAAJ,EAA2B;QACzB,IAAIA,qBAAqB,CAACI,OAA1B,EAAmC;UACjC,KAAKO,WAAL;QACD;;QACD,IAAIX,qBAAqB,CAACK,GAA1B,EAA+B;UAC7B,KAAKO,OAAL;QACD;;QACD,IAAIZ,qBAAqB,CAACO,MAAtB,IAAgC,CAACP,qBAAqB,CAACM,MAAvD,IAAiEN,qBAAqB,CAACa,KAA3F,EAAkG;UAChG,KAAKC,UAAL,CAAgBd,qBAAqB,CAACO,MAAtC,EAA8CP,qBAAqB,CAACa,KAApE;QACD;;QACD,IAAIb,qBAAqB,CAACM,MAAtB,IAAgC,CAACN,qBAAqB,CAACO,MAAvD,IAAiEP,qBAAqB,CAACa,KAA3F,EAAkG;UAChG,KAAKE,UAAL,CAAgBf,qBAAqB,CAACM,MAAtC,EAA8CN,qBAAqB,CAACa,KAApE;QACD;;QACD,IAAIb,qBAAqB,CAACS,EAA1B,EAA8B;UAC5B,KAAKO,MAAL,CAAYhB,qBAAqB,CAACS,EAAlC;QACD;;QACD,IAAIT,qBAAqB,CAACiB,OAA1B,EAAmC;UACjC,IAAI,CAAC,0BAAWjB,qBAAqB,CAACiB,OAAjC,CAAL,EAAgD;YAC9C,MAAM,IAAIC,SAAJ,CAAc,wEAAd,CAAN;UACD;;UACD,KAAKD,OAAL,CAAajB,qBAAqB,CAACiB,OAAnC;QACD;;QACD,IAAIjB,qBAAqB,CAACmB,OAA1B,EAAmC;UACjC,IAAI,CAAC,0BAAWnB,qBAAqB,CAACmB,OAAjC,CAAL,EAAgD;YAC9C,MAAM,IAAID,SAAJ,CAAc,wEAAd,CAAN;UACD;;UACD,IAAI,KAAKd,OAAT,EAAkB;YAChB,KAAKgB,iBAAL,CAAuB,KAAKhB,OAA5B,EAAqCJ,qBAAqB,CAACmB,OAA3D;UACD,CAFD,MAGK;YACH,KAAKE,UAAL,CAAgBrB,qBAAqB,CAACmB,OAAtC;UACD;QACF;;QACD,IAAInB,qBAAqB,CAACsB,MAA1B,EAAkC;UAChC,IAAI,CAAC,0BAAWtB,qBAAqB,CAACsB,MAAjC,CAAL,EAA+C;YAC7C,MAAM,IAAIJ,SAAJ,CAAc,uEAAd,CAAN;UACD;;UACD,KAAKI,MAAL,CAAYtB,qBAAqB,CAACsB,MAAlC;QACD;MACF;;MAED,OAAO,IAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,mBAAUC,IAAV,EAAgB;MACd,IAAI,KAAKnB,OAAT,EAAkB;QAChB,KAAKA,OAAL,CAAaoB,GAAb,CAAiBD,IAAjB;MACD;IACF;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,eAAMA,IAAN,EAAY;MACV,IAAI,KAAKlB,GAAL,IAAYkB,IAAI,CAACA,IAArB,EAA2B;QACzB,IAAI,CAACA,IAAI,CAACA,IAAL,CAAUE,OAAV,EAAL,EAA0B;UACxB,KAAKpB,GAAL,CAASmB,GAAT,CAAaD,IAAI,CAACA,IAAL,CAAUG,IAAV,EAAb;QACD;MACF;IACF;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,kBAASH,IAAT,EAAe;MACb,IAAI,KAAKf,MAAT,EAAiB;QACf,KAAKA,MAAL,CAAYmB,KAAZ,CAAkBJ,IAAlB;MACD;IACF;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,gBAAOK,IAAP,EAAa;MAAA;;MACX,IAAI,CAAC,KAAKrB,MAAV,EAAkB;QAChB,MAAM,IAAIW,SAAJ,CAAc,+EAAd,CAAN;MACD;;MACD,KAAKX,MAAL,CAAYsB,EAAZ,CAAeC,iBAAMC,IAArB,EAA2B,UAACC,QAAD,EAAc;QACvC,MAAI,CAACC,SAAL,CAAeD,QAAf;;QACA,MAAI,CAACE,KAAL,CAAWF,QAAX;;QACA,MAAI,CAACG,QAAL,CAAcH,QAAd;;QACAJ,IAAI,CAACI,QAAD,CAAJ;MACD,CALD;MAOA,OAAO,IAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,iBAAQJ,IAAR,EAAc;MAAA;;MACZ,IAAI,CAAC,KAAKrB,MAAV,EAAkB;QAChB,MAAM,IAAIW,SAAJ,CAAc,4EAAd,CAAN;MACD;;MACD,KAAKZ,MAAL,CAAYuB,EAAZ,CAAeC,iBAAMM,GAArB,EAA0B,UAACC,GAAD,EAAS;QACjC,IAAI,CAACA,GAAL,EAAU;UACRA,GAAG,GAAG,IAAIC,cAAJ,oCAA2C,MAAI,CAAC7B,EAAhD,aAAN;QACD;;QACDmB,IAAI,CAACS,GAAD,CAAJ;MACD,CALD;MAOA,OAAO,IAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,2BAAkBjC,OAAlB,EAA2BmC,EAA3B,EAA+B;MAC7B,IAAM/B,MAAM,GAAG,IAAIgC,eAAJ,CAAgBpC,OAAhB,EAAyBmC,EAAzB,CAAf;MAEA,KAAKE,SAAL,CAAejC,MAAf;MAEA,OAAO,IAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,oBAAW+B,EAAX,EAAe;MACb,IAAM/B,MAAM,GAAG,IAAIgC,eAAJ,CAAgB,IAAhB,EAAsBD,EAAtB,CAAf;MAEA,KAAKE,SAAL,CAAejC,MAAf;MAEA,OAAO,IAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,uBAAc;MACZ,IAAMJ,OAAO,GAAG,IAAIsC,gBAAJ,CAAiB,KAAKC,MAAL,CAAYC,KAAZ,CAAkBC,UAAnC,CAAhB;MAEA,KAAKC,UAAL,CAAgB1C,OAAhB;MAEA,OAAO,IAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,mBAAU;MACR,IAAMC,GAAG,GAAG,IAAIqC,gBAAJ,CAAiBK,qBAAUC,QAA3B,CAAZ;MAEA,KAAKC,MAAL,CAAY5C,GAAZ;MAEA,OAAO,IAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,oBAAW6C,oBAAX,EAAiChD,cAAjC,EAAiD;MAC/C,IAAMI,MAAM,GAAG,IAAI6C,eAAJ,CAAgB;QAC7BC,eAAe,EAAEF,oBADY;QAE7BhD,cAAc,EAAdA,cAF6B;QAG7BmD,QAAQ,EAAE,KAAKV,MAAL,CAAYC,KAAZ,CAAkBS;MAHC,CAAhB,CAAf;MAMA,KAAKC,SAAL,CAAehD,MAAf;MAEA,OAAO,IAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,oBAAW4C,oBAAX,EAAiChD,cAAjC,EAAiD;MAC/C,KAAKa,UAAL,CAAgBmC,oBAAhB,EAAsChD,cAAtC;MACA,KAAKqD,SAAL,CAAe,IAAIC,eAAJ,EAAf;MACA,KAAKC,SAAL,GAAiBC,IAAjB,CAAsB,KAAKC,SAAL,EAAtB;MAEA,OAAO,IAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,gBAAOlD,EAAP,EAAW;MACT,IAAIA,EAAJ,EAAQ;QACN,KAAKmD,KAAL,CAAWnD,EAAX;MACD,CAFD,MAGK;QACH,KAAKmD,KAAL,CAAWC,WAAKC,EAAL,EAAX;MACD;;MAED,OAAO,IAAP;IACD;IAED;AACF;AACA;AACA;AACA;;;;WACE,iBAAQ;MACN,OAAO,IAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,eAAMrD,EAAN,EAAU;MACR,KAAKA,EAAL,GAAUA,EAAV;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,oBAAWL,OAAX,EAAoB;MAClB,KAAKA,OAAL,GAAeA,OAAf;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,gBAAOC,GAAP,EAAY;MACV,KAAKA,GAAL,GAAWA,GAAX;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,mBAAUG,MAAV,EAAkB;MAChB,KAAKA,MAAL,GAAcA,MAAd;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,mBAAUF,MAAV,EAAkB;MAChB,KAAKA,MAAL,GAAcA,MAAd;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,mBAAUC,MAAV,EAAkB;MAChB,KAAKA,MAAL,GAAcA,MAAd;IACD;IAED;AACF;AACA;AACA;AACA;;;;WACE,iBAAQ;MACN,OAAO,KAAKE,EAAZ;IACD;IAED;AACF;AACA;AACA;AACA;;;;WACE,sBAAa;MACX,OAAO,KAAKL,OAAZ;IACD;IAED;AACF;AACA;AACA;AACA;;;;WACE,kBAAS;MACP,OAAO,KAAKC,GAAZ;IACD;IAED;AACF;AACA;AACA;AACA;;;;WACE,qBAAY;MACV,OAAO,KAAKG,MAAZ;IACD;IAED;AACF;AACA;AACA;AACA;;;;WACE,qBAAY;MACV,OAAO,KAAKF,MAAZ;IACD;IAED;AACF;AACA;AACA;AACA;;;;WACE,qBAAY;MACV,OAAO,KAAKC,MAAZ;IACD;;;EAzcuCwD,+B"}
|
package/dist/stats/stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["pcsByRTCRtpDirection","emittersByRTCRtpDirection","RTCRtpDirectionByEmitter","emittersByStream","timersByEmitter","schedule","emitter","interval","timer","direction","get","pc","getStats","then","stats","emit","STATS","DATA","signalingState","CLOSED","connectionState","catch","err","ERROR","set","StatsStream","config","objectMode","has","rTCRtpDirection","EventEmitter","peerConnection","once","data","isPaused","push","Readable"],"sources":["stream.js"],"sourcesContent":["import {EventEmitter} from 'events';\n\nimport {Readable} from 'readable-stream';\nimport {safeSetTimeout} from '@webex/common-timers';\n\nimport {\n ERROR,\n STATS\n} from '../constants';\n\nconst pcsByRTCRtpDirection = new WeakMap();\nconst emittersByRTCRtpDirection = new WeakMap();\nconst RTCRtpDirectionByEmitter = new WeakMap();\nconst emittersByStream = new WeakMap();\nconst timersByEmitter = new WeakMap();\n\n/**\n * Helper function that ensures no matter how many stats streams we create, we\n * don't poll the PeerConnection more than once per interval.\n * @param {EventEmitter} emitter\n * @param {Number} interval\n * @private\n * @returns {undefined}\n */\nconst schedule = (emitter, interval) => {\n const timer = safeSetTimeout(() => {\n const direction = RTCRtpDirectionByEmitter.get(emitter);\n const pc = pcsByRTCRtpDirection.get(direction);\n\n if (direction) {\n direction.getStats()\n .then((stats) => {\n emitter.emit(STATS.DATA, stats);\n // TODO: Remove on 1.0 spec adoption\n // \"closed\" is supposed to be part of the {@link RTCPeerConnectionState}\n // enum according to spec, but at time of writing, was still implemented\n // in the {@link RTCSignalingState} enum.\n if (!(pc.signalingState === STATS.CLOSED || pc.connectionState === STATS.CLOSED)) {\n schedule(emitter, interval);\n }\n })\n .catch((err) => {\n emitter.emit(ERROR, err);\n });\n }\n }, interval);\n\n timersByEmitter.set(emitter, timer);\n};\n\n/**\n * Polls an {@link RTCPeerConnection} once per second and emits its {@link RTCStatsReport}\n * {@link RTCStatsReport}\n */\nexport default class StatsStream extends Readable {\n /**\n * @private\n * @param {Object} config\n * @param {RTCRtpSender|RTCRtpReceiver} config.rTCRtpDirection\n * @param {RTCPeerConnection} config.peerConnection\n * @param {Number} config.interval\n */\n constructor(config = {}) {\n super({objectMode: true});\n\n this.interval = config.interval;\n\n if (!emittersByRTCRtpDirection.has(config.rTCRtpDirection)) {\n emittersByRTCRtpDirection.set(config.rTCRtpDirection, new EventEmitter());\n }\n const emitter = emittersByRTCRtpDirection.get(config.rTCRtpDirection);\n\n if (!emittersByStream.has(this)) {\n emittersByStream.set(this, emitter);\n }\n if (!RTCRtpDirectionByEmitter.has(emitter)) {\n RTCRtpDirectionByEmitter.set(emitter, config.rTCRtpDirection);\n }\n\n if (!pcsByRTCRtpDirection.has(config.rTCRtpDirection)) {\n pcsByRTCRtpDirection.set(config.rTCRtpDirection, config.peerConnection);\n }\n\n emitter.once(ERROR, (err) => {\n this.emit(ERROR, err);\n });\n }\n\n /**\n * See NodeJS Docs\n * @private\n * @returns {undefined}\n */\n _read() {\n const emitter = emittersByStream.get(this);\n\n emitter.once(STATS.DATA, (data) => {\n if (!this.isPaused()) {\n this.push(data);\n }\n });\n\n if (!timersByEmitter.has(emitter)) {\n schedule(emitter, this.interval);\n }\n }\n}\n\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["isBrowser","StatsTransformer","isFF","simplify","stat","DEFAULT_FF_TRANSFORM_REGEX","DEFAULT_TRANSFORM_REGEX","key","value","regex","test","type","kind","id","decider","selector","profiler","mapStatToReadableType","includes","toLowerCase","parse","report","target","forEach","size","DEFAULT_GET_STATS_FILTER","types","convert","parsed","options","simplifyFn","transform","undefined","data"],"sources":["transformer.js"],"sourcesContent":["import {keys, find, forEach} from 'lodash';\n\nimport {\n DEFAULT_TRANSFORM_REGEX, DEFAULT_FF_TRANSFORM_REGEX, DEFAULT_GET_STATS_FILTER\n} from '../constants';\nimport BrowserDetection from '../common/browser-detection';\n\nconst {isBrowser} = BrowserDetection();\n\nconst StatsTransformer = {\n isFF: isBrowser('firefox')\n};\n\n// convert the ids from the parsed stats objects into understandable keys\nStatsTransformer.simplify = (stat) => find(keys(StatsTransformer.isFF ? DEFAULT_FF_TRANSFORM_REGEX : DEFAULT_TRANSFORM_REGEX), (key) => {\n let value;\n\n if (StatsTransformer.isFF) {\n // FF stats are formatted poorly so we have to take what we can get\n value = (DEFAULT_FF_TRANSFORM_REGEX[key].regex.test(`${stat.type}${stat.kind ? `_${stat.kind}` : ''}_${stat.id}`) ? key : false);\n }\n else {\n // no other parameters necessary besides id\n value = (DEFAULT_TRANSFORM_REGEX[key].regex.test(stat.id) ? key : false);\n }\n\n if (value) {\n // others were included but have a value that exclude them from the list because of duplicates that weren't chosen\n if (DEFAULT_TRANSFORM_REGEX[value].decider) {\n if (stat[DEFAULT_TRANSFORM_REGEX[value].decider] !== DEFAULT_TRANSFORM_REGEX[value].selector) {\n value = false;\n }\n\n return value;\n }\n // // some types need to check against a type field as well\n if (DEFAULT_TRANSFORM_REGEX[value].profiler) {\n const mapStatToReadableType = stat[DEFAULT_TRANSFORM_REGEX[value].profiler.type];\n\n if (!((mapStatToReadableType && mapStatToReadableType.includes(DEFAULT_TRANSFORM_REGEX[value].profiler.value)) &&\n (value.toLowerCase().includes(DEFAULT_TRANSFORM_REGEX[value].profiler.value)))) {\n value = false;\n\n return value;\n }\n }\n }\n\n return value;\n});\n\n// parse the RTCStatsReport, extracting only the data we care about\nStatsTransformer.parse = (report) => {\n const target = {};\n\n // from the stats object\n // get the rtc stats report\n if (report && report.forEach && report.size > 0) {\n report.forEach((stat) => {\n // each report has internal data\n if (stat && stat.type) {\n // pull only certain types\n if (DEFAULT_GET_STATS_FILTER.types.includes(stat.type)) {\n // insert into the target the statistic mapped to it's statical id\n target[stat.id] = stat;\n }\n }\n });\n }\n\n return target;\n};\n\nStatsTransformer.convert = (parsed, options) => {\n // supply your own simplification function (rather than id as the key)\n if (options.simplifyFn) {\n return options.simplifyFn(parsed);\n }\n // else use ours that stores things like rtcOutAudio, rtpInVideo, etc\n const target = {};\n\n forEach(parsed, (stat) => {\n const key = StatsTransformer.simplify(stat);\n\n if (key) {\n target[key] = stat;\n }\n });\n\n return target;\n};\n\n// transform the RTCStatsReport into a much more readable, processable format\nStatsTransformer.transform = (report, options = {simplifyFn: undefined}) => {\n let data;\n // first parse it and cut out not necessary data\n const parsed = StatsTransformer.parse(report);\n\n // either convert the data or store each stat with it's id mapped as the key to the stat object itself\n if (DEFAULT_TRANSFORM_REGEX) {\n data = StatsTransformer.convert(parsed, options);\n }\n else {\n data = parsed;\n }\n\n return data;\n};\nexport default StatsTransformer;\n"],"mappings":"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"}
|
package/dist/stats/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["StatsUtil","generateSingularOptions","senderReceiver","config","meeting","name","options","correlate","generateOptions","ParameterError","configOptions","STATS","SENDERS","RECEIVERS","type","typeConfig","media","parent","peerConnection","filter","transceiver","child"],"sources":["util.js"],"sourcesContent":["import {forEach} from 'lodash';\n\nimport {\n STATS\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\nconst StatsUtil = {};\n\nStatsUtil.generateSingularOptions = (senderReceiver, config, meeting, name) => {\n const options = {};\n\n options[name] = {};\n options[name][senderReceiver.correlate] = senderReceiver;\n StatsUtil.generateOptions(options, config, meeting);\n};\n\nStatsUtil.generateOptions = (options, config, meeting) => {\n if (!options || !config || !meeting) {\n throw new ParameterError('stats/util->validateInitialization#options, config, and meeting must be provided to execute getStats');\n }\n StatsUtil.configOptions(meeting, config, options, STATS.SENDERS);\n StatsUtil.configOptions(meeting, config, options, STATS.RECEIVERS);\n};\n\nStatsUtil.configOptions = (meeting, config, options, name) => {\n if (options[name]) {\n forEach(options[name], (type) => {\n if (!type.correlate) {\n throw new ParameterError(`stats/util->validateInitialization#each ${type} must be provided with a correlate as audio OR video OR share.`);\n }\n if (!config[name][type.correlate]) {\n return;\n }\n const typeConfig = config[name][type.correlate];\n const media = meeting[typeConfig.parent][typeConfig.peerConnection];\n const filter = media[typeConfig.transceiver][typeConfig.child];\n\n Object.assign(type, {media, filter, name: typeConfig.name});\n });\n }\n};\n\nexport default StatsUtil;\n"],"mappings":";;;;;;;;;;;;;;;;AAEA;;AAGA;;AAEA,IAAMA,SAAS,GAAG,EAAlB;;AAEAA,SAAS,CAACC,uBAAV,GAAoC,UAACC,cAAD,EAAiBC,MAAjB,EAAyBC,OAAzB,EAAkCC,IAAlC,EAA2C;EAC7E,IAAMC,OAAO,GAAG,EAAhB;EAEAA,OAAO,CAACD,IAAD,CAAP,GAAgB,EAAhB;EACAC,OAAO,CAACD,IAAD,CAAP,CAAcH,cAAc,CAACK,SAA7B,IAA0CL,cAA1C;EACAF,SAAS,CAACQ,eAAV,CAA0BF,OAA1B,EAAmCH,MAAnC,EAA2CC,OAA3C;AACD,CAND;;AAQAJ,SAAS,CAACQ,eAAV,GAA4B,UAACF,OAAD,EAAUH,MAAV,EAAkBC,OAAlB,EAA8B;EACxD,IAAI,CAACE,OAAD,IAAY,CAACH,MAAb,IAAuB,CAACC,OAA5B,EAAqC;IACnC,MAAM,IAAIK,kBAAJ,CAAmB,sGAAnB,CAAN;EACD;;EACDT,SAAS,CAACU,aAAV,CAAwBN,OAAxB,EAAiCD,MAAjC,EAAyCG,OAAzC,EAAkDK,iBAAMC,OAAxD;EACAZ,SAAS,CAACU,aAAV,CAAwBN,OAAxB,EAAiCD,MAAjC,EAAyCG,OAAzC,EAAkDK,iBAAME,SAAxD;AACD,CAND;;AAQAb,SAAS,CAACU,aAAV,GAA0B,UAACN,OAAD,EAAUD,MAAV,EAAkBG,OAAlB,EAA2BD,IAA3B,EAAoC;EAC5D,IAAIC,OAAO,CAACD,IAAD,CAAX,EAAmB;IACjB,uBAAQC,OAAO,CAACD,IAAD,CAAf,EAAuB,UAACS,IAAD,EAAU;MAC/B,IAAI,CAACA,IAAI,CAACP,SAAV,EAAqB;QACnB,MAAM,IAAIE,kBAAJ,mDAA8DK,IAA9D,oEAAN;MACD;;MACD,IAAI,CAACX,MAAM,CAACE,IAAD,CAAN,CAAaS,IAAI,CAACP,SAAlB,CAAL,EAAmC;QACjC;MACD;;MACD,IAAMQ,UAAU,GAAGZ,MAAM,CAACE,IAAD,CAAN,CAAaS,IAAI,CAACP,SAAlB,CAAnB;MACA,IAAMS,KAAK,GAAGZ,OAAO,CAACW,UAAU,CAACE,MAAZ,CAAP,CAA2BF,UAAU,CAACG,cAAtC,CAAd;MACA,IAAMC,MAAM,GAAGH,KAAK,CAACD,UAAU,CAACK,WAAZ,CAAL,CAA8BL,UAAU,CAACM,KAAzC,CAAf;MAEA,qBAAcP,IAAd,EAAoB;QAACE,KAAK,EAALA,KAAD;QAAQG,MAAM,EAANA,MAAR;QAAgBd,IAAI,EAAEU,UAAU,CAACV;MAAjC,CAApB;IACD,CAZD;EAaD;AACF,CAhBD;;eAkBeL,S"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["STATS_DEFAULT","encryption","audio","send","maxPacketLossRatio","availableBandwidth","bytesSent","meanRemoteJitter","meanRoundTripTime","recv","bytesReceived","meanRtpJitter","video","totalPacketsLost","latency","packetsLost","share","bandwidth","systemBandwidth","sentPerSecond","encodedPerSecond","helper","audioBytesSent","videoBytestSent","speed","results","connectionType","systemNetworkType","systemIpAddress","local","candidateType","transport","ipAddress","networkType","remote","resolutions","width","height","internal","candidates"],"sources":["global.js"],"sourcesContent":["const STATS_DEFAULT = {\n encryption: 'sha-256',\n audio: {\n send: {\n maxPacketLossRatio: 0,\n availableBandwidth: 0,\n bytesSent: 0,\n meanRemoteJitter: [],\n meanRoundTripTime: []\n },\n recv: {\n availableBandwidth: 0,\n bytesReceived: 0,\n meanRtpJitter: [],\n meanRoundTripTime: []\n }\n },\n video: {\n send: {\n maxPacketLossRatio: 0,\n availableBandwidth: 0,\n meanRemoteJitter: [],\n meanRoundTripTime: []\n },\n recv: {\n availableBandwidth: 0,\n totalPacketsLost: 0,\n meanRtpJitter: [],\n meanRoundTripTime: []\n\n },\n latency: 0,\n packetsLost: 0\n },\n share: {\n send: {\n maxPacketLossRatio: 0,\n availableBandwidth: 0,\n totalPacketsLost: 0,\n meanRemoteJitter: [],\n meanRoundTripTime: []\n },\n recv: {\n availableBandwidth: 0,\n meanRtpJitter: [],\n meanRoundTripTime: []\n },\n\n latency: 0,\n packetsLost: 0\n },\n bandwidth: {\n systemBandwidth: 0,\n sentPerSecond: 0,\n encodedPerSecond: 0,\n helper: {\n audioBytesSent: 0,\n videoBytestSent: 0\n },\n speed: 0\n },\n results: {},\n connectionType: {\n systemNetworkType: 'unknown',\n systemIpAddress: '0.0.0.0',\n local: {\n candidateType: [],\n transport: [],\n ipAddress: [],\n networkType: []\n },\n remote: {\n candidateType: [],\n transport: [],\n ipAddress: [],\n networkType: []\n }\n },\n resolutions: {\n audio: {\n send: {\n width: 0,\n height: 0\n },\n recv: {\n width: 0,\n height: 0\n }\n },\n video: {\n send: {\n width: 0,\n height: 0\n },\n recv: {\n width: 0,\n height: 0\n }\n },\n share: {\n send: {\n width: 0,\n height: 0\n },\n recv: {\n width: 0,\n height: 0\n }\n }\n },\n internal: {\n audio: {\n send: {},\n recv: {}\n },\n video: {\n send: {},\n recv: {}\n },\n share: {\n send: {},\n recv: {}\n },\n remote: {\n\n },\n candidates: {}\n }\n};\n\nexport default STATS_DEFAULT;\n"],"mappings":"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"}
|
|
@@ -356,7 +356,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
356
356
|
});
|
|
357
357
|
|
|
358
358
|
_config.default.networkType = this.statsResults.connectionType.local.networkType;
|
|
359
|
-
this.mqaSentCount
|
|
359
|
+
this.mqaSentCount += 1;
|
|
360
360
|
_config.default.intervals[0].intervalNumber = this.mqaSentCount; // DO Deep copy, for some reason it takes the reference all the time rather then old value set
|
|
361
361
|
|
|
362
362
|
this.lastMqaDataSent = (0, _cloneDeep2.default)(this.statsResults);
|