@webex/plugin-meetings 1.159.4 → 1.160.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/dist/analyzer/analyzer.js.map +1 -1
  2. package/dist/analyzer/calculator.js.map +1 -1
  3. package/dist/common/browser-detection.js.map +1 -1
  4. package/dist/common/collection.js.map +1 -1
  5. package/dist/common/config.js.map +1 -1
  6. package/dist/common/constants.js.map +1 -1
  7. package/dist/common/errors/captcha-error.js +3 -1
  8. package/dist/common/errors/captcha-error.js.map +1 -1
  9. package/dist/common/errors/intent-to-join.js +3 -1
  10. package/dist/common/errors/intent-to-join.js.map +1 -1
  11. package/dist/common/errors/join-meeting.js +3 -1
  12. package/dist/common/errors/join-meeting.js.map +1 -1
  13. package/dist/common/errors/media.js +3 -1
  14. package/dist/common/errors/media.js.map +1 -1
  15. package/dist/common/errors/parameter.js +3 -1
  16. package/dist/common/errors/parameter.js.map +1 -1
  17. package/dist/common/errors/password-error.js +3 -1
  18. package/dist/common/errors/password-error.js.map +1 -1
  19. package/dist/common/errors/permission.js +3 -1
  20. package/dist/common/errors/permission.js.map +1 -1
  21. package/dist/common/errors/reconnection-in-progress.js +3 -1
  22. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  23. package/dist/common/errors/reconnection.js +3 -1
  24. package/dist/common/errors/reconnection.js.map +1 -1
  25. package/dist/common/errors/stats.js +3 -1
  26. package/dist/common/errors/stats.js.map +1 -1
  27. package/dist/common/errors/webex-errors.js +9 -7
  28. package/dist/common/errors/webex-errors.js.map +1 -1
  29. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  30. package/dist/common/events/events-scope.js.map +1 -1
  31. package/dist/common/events/events.js.map +1 -1
  32. package/dist/common/events/trigger-proxy.js.map +1 -1
  33. package/dist/common/events/util.js.map +1 -1
  34. package/dist/common/logs/logger-config.js.map +1 -1
  35. package/dist/common/logs/logger-proxy.js.map +1 -1
  36. package/dist/common/logs/request.js.map +1 -1
  37. package/dist/common/queue.js.map +1 -1
  38. package/dist/config.js.map +1 -1
  39. package/dist/constants.js +2 -2
  40. package/dist/constants.js.map +1 -1
  41. package/dist/index.js +1 -1
  42. package/dist/index.js.map +1 -1
  43. package/dist/locus-info/controlsUtils.js +4 -3
  44. package/dist/locus-info/controlsUtils.js.map +1 -1
  45. package/dist/locus-info/fullState.js.map +1 -1
  46. package/dist/locus-info/hostUtils.js.map +1 -1
  47. package/dist/locus-info/index.js.map +1 -1
  48. package/dist/locus-info/infoUtils.js.map +1 -1
  49. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  50. package/dist/locus-info/parser.js.map +1 -1
  51. package/dist/locus-info/selfUtils.js.map +1 -1
  52. package/dist/media/index.js +2 -2
  53. package/dist/media/index.js.map +1 -1
  54. package/dist/media/properties.js.map +1 -1
  55. package/dist/media/util.js.map +1 -1
  56. package/dist/mediaQualityMetrics/config.js.map +1 -1
  57. package/dist/meeting/in-meeting-actions.js.map +1 -1
  58. package/dist/meeting/index.js +2 -2
  59. package/dist/meeting/index.js.map +1 -1
  60. package/dist/meeting/muteState.js +3 -1
  61. package/dist/meeting/muteState.js.map +1 -1
  62. package/dist/meeting/request.js +2 -2
  63. package/dist/meeting/request.js.map +1 -1
  64. package/dist/meeting/state.js.map +1 -1
  65. package/dist/meeting/util.js +2 -2
  66. package/dist/meeting/util.js.map +1 -1
  67. package/dist/meeting-info/collection.js.map +1 -1
  68. package/dist/meeting-info/index.js.map +1 -1
  69. package/dist/meeting-info/meeting-info-v2.js +6 -6
  70. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  71. package/dist/meeting-info/request.js.map +1 -1
  72. package/dist/meeting-info/util.js.map +1 -1
  73. package/dist/meeting-info/utilv2.js.map +1 -1
  74. package/dist/meetings/collection.js.map +1 -1
  75. package/dist/meetings/index.js +222 -221
  76. package/dist/meetings/index.js.map +1 -1
  77. package/dist/meetings/request.js.map +1 -1
  78. package/dist/meetings/util.js.map +1 -1
  79. package/dist/member/index.js.map +1 -1
  80. package/dist/member/util.js.map +1 -1
  81. package/dist/members/collection.js.map +1 -1
  82. package/dist/members/index.js.map +1 -1
  83. package/dist/members/request.js.map +1 -1
  84. package/dist/members/util.js.map +1 -1
  85. package/dist/metrics/config.js +1 -1
  86. package/dist/metrics/config.js.map +1 -1
  87. package/dist/metrics/constants.js.map +1 -1
  88. package/dist/metrics/index.js.map +1 -1
  89. package/dist/metrics/mqa-processor.js +2 -2
  90. package/dist/metrics/mqa-processor.js.map +1 -1
  91. package/dist/networkQualityMonitor/index.js.map +1 -1
  92. package/dist/peer-connection-manager/index.js.map +1 -1
  93. package/dist/peer-connection-manager/util.js.map +1 -1
  94. package/dist/personal-meeting-room/index.js.map +1 -1
  95. package/dist/personal-meeting-room/request.js.map +1 -1
  96. package/dist/personal-meeting-room/util.js.map +1 -1
  97. package/dist/reachability/index.js.map +1 -1
  98. package/dist/reachability/request.js +4 -3
  99. package/dist/reachability/request.js.map +1 -1
  100. package/dist/reconnection-manager/index.js +2 -2
  101. package/dist/reconnection-manager/index.js.map +1 -1
  102. package/dist/roap/collection.js.map +1 -1
  103. package/dist/roap/handler.js.map +1 -1
  104. package/dist/roap/index.js +7 -7
  105. package/dist/roap/index.js.map +1 -1
  106. package/dist/roap/request.js +2 -2
  107. package/dist/roap/request.js.map +1 -1
  108. package/dist/roap/state.js.map +1 -1
  109. package/dist/roap/util.js.map +1 -1
  110. package/dist/stats/data.js.map +1 -1
  111. package/dist/stats/events.js.map +1 -1
  112. package/dist/stats/filter.js.map +1 -1
  113. package/dist/stats/history.js.map +1 -1
  114. package/dist/stats/index.js +126 -126
  115. package/dist/stats/index.js.map +1 -1
  116. package/dist/stats/metrics.js.map +1 -1
  117. package/dist/stats/stats.js.map +1 -1
  118. package/dist/stats/stream.js.map +1 -1
  119. package/dist/stats/transformer.js.map +1 -1
  120. package/dist/stats/util.js.map +1 -1
  121. package/dist/statsAnalyzer/global.js.map +1 -1
  122. package/dist/statsAnalyzer/index.js +1 -1
  123. package/dist/statsAnalyzer/index.js.map +1 -1
  124. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  125. package/dist/transcription/index.js.map +1 -1
  126. package/package.json +6 -6
  127. package/src/common/errors/webex-errors.js +1 -1
  128. package/src/locus-info/parser.js +2 -2
  129. package/src/meeting/index.js +1 -2
  130. package/src/meeting/util.js +2 -2
  131. package/src/meetings/index.js +555 -558
  132. package/src/roap/index.js +48 -48
  133. package/src/stats/index.js +142 -142
  134. package/src/statsAnalyzer/index.js +1 -1
  135. package/test/unit/spec/meetings/index.js +39 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["request.js"],"names":["RoapRequest","localSdp","reachabilityData","window","localStorage","getItem","REACHABILITY","reachabilityResult","JSON","parse","length","reachability","e","LoggerProxy","logger","error","options","info","roapMessage","resolve","then","deviceUrl","webex","internal","device","url","body","usingResource","resourceId","correlationId","localMedias","attachRechabilityData","audioMuted","videoMuted","clientMediaPreferences","preferTranscoding","locusUrl","PARTICIPANT","sipUrl","services","waitForCatalog","get","LOCI","CALL","invitee","address","sipTarget","ParameterError","request","method","HTTP_VERBS","POST","uri","res","locus","roapSeq","seq","id","split","pop","fullState","lastActive","catch","err","locusSelfUrl","mediaId","meetingId","mediaUrl","MEDIA","messageType","Metrics","postEvent","event","eventType","MEDIA_REQUEST","PUT","deviceType","config","meetings","MEDIA_RESPONSE","mediaConnections","statusCode","data","parseLocusError","StatelessWebexPlugin"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;AAEA;;AACA;;AAQA;;AACA;;AACA;;;;;;;;;;AACA;AACA;AACA;IACqBA,W;;;;;;;;;;;;;AACnB;AACF;AACA;AACA;AACA;AAGE,mCAAsBC,QAAtB,EAAgC;AAC9B,UAAMC,gBAAgB,GAAGC,MAAM,CAACC,YAAP,CAAoBC,OAApB,CAA4BC,wBAAaF,YAAzC,CAAzB;;AAEA,UAAIF,gBAAJ,EAAsB;AACpB,YAAI;AACF,cAAMK,kBAAkB,GAAGC,IAAI,CAACC,KAAL,CAAWP,gBAAX,CAA3B;AAEA;;AACA,cAAIK,kBAAkB,IAAI,mBAAYA,kBAAZ,EAAgCG,MAA1D,EAAkE;AAChET,YAAAA,QAAQ,CAACU,YAAT,GAAwBJ,kBAAxB;AACD;AACF,SAPD,CAQA,OAAOK,CAAP,EAAU;AACRC,+BAAYC,MAAZ,CAAmBC,KAAnB,uFAAwGH,CAAxG;AACD;AACF;;AAED,aAAOX,QAAP;AACD;;;WAED,6BAAoBe,OAApB,EAA6B;AAAA;;AAC3BH,2BAAYC,MAAZ,CAAmBG,IAAnB,CAAwB,2DAAxB;;AACAJ,2BAAYC,MAAZ,CAAmBG,IAAnB,2DAA2ED,OAAO,CAACE,WAAnF;;AAEA,aAAO,iBAAQC,OAAR,GAAkBC,IAAlB,uFAAuB;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AACtBC,gBAAAA,SADsB,GACV,KAAI,CAACC,KAAL,CAAWC,QAAX,CAAoBC,MAApB,CAA2BC,GADjB;AAExBA,gBAAAA,GAFwB,GAElB,EAFkB;AAItBC,gBAAAA,IAJsB,GAIf;AACXL,kBAAAA,SAAS,EAATA,SADW;AAEXM,kBAAAA,aAAa,EAAEX,OAAO,CAACY,UAAR,IAAsB,IAF1B;AAGXC,kBAAAA,aAAa,EAAEb,OAAO,CAACa,aAHZ;AAIXC,kBAAAA,WAAW,EAAE,CACX;AACE7B,oBAAAA,QAAQ,EAAE,wBAAe,KAAI,CAAC8B,qBAAL,CAA2B;AAClDb,sBAAAA,WAAW,EAAEF,OAAO,CAACE,WAD6B;AAElDc,sBAAAA,UAAU,EAAE,KAFsC;AAGlDC,sBAAAA,UAAU,EAAE;AAHsC,qBAA3B,CAAf;AADZ,mBADW,CAJF;AAaXC,kBAAAA,sBAAsB,EAAE;AACtBC,oBAAAA,iBAAiB,2BAAEnB,OAAO,CAACmB,iBAAV,yEAA+B;AAD1B;AAbb,iBAJe;;AAAA,qBAsBxBnB,OAAO,CAACoB,QAtBgB;AAAA;AAAA;AAAA;;AAuB1BX,gBAAAA,GAAG,aAAMT,OAAO,CAACoB,QAAd,cAA0BC,sBAA1B,CAAH;AAvB0B;AAAA;;AAAA;AAAA,qBAyBnBrB,OAAO,CAACsB,MAzBW;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,uBA2BlB,KAAI,CAAChB,KAAL,CAAWC,QAAX,CAAoBgB,QAApB,CAA6BC,cAA7B,CAA4C,UAA5C,CA3BkB;;AAAA;AA4BxBf,gBAAAA,GAAG,aAAM,KAAI,CAACH,KAAL,CAAWC,QAAX,CAAoBgB,QAApB,CAA6BE,GAA7B,CAAiC,OAAjC,CAAN,cAAmDC,eAAnD,cAA2DC,eAA3D,CAAH;AACAjB,gBAAAA,IAAI,CAACkB,OAAL,GAAe;AACbC,kBAAAA,OAAO,EAAE7B,OAAO,CAAC8B;AADJ,iBAAf;AA7BwB;AAAA;;AAAA;AAAA;AAAA;;AAkCxBjC,qCAAYC,MAAZ,CAAmBC,KAAnB;;AAlCwB;;AAAA;AAAA;AAAA;;AAAA;AAAA,sBAuCpB,IAAIgC,kBAAJ,CAAmB,sCAAnB,CAvCoB;;AAAA;AAAA,iDA0CrB,KAAI,CAACzB,KAAL,CACJ0B,OADI,CACI;AACPC,kBAAAA,MAAM,EAAEC,sBAAWC,IADZ;AAEPC,kBAAAA,GAAG,EAAE3B,GAFE;AAGPC,kBAAAA,IAAI,EAAJA;AAHO,iBADJ,EAMJN,IANI,CAMC,UAACiC,GAAD,EAAS;AACb,sBAAOC,KAAP,GAAgBD,GAAG,CAAC3B,IAApB,CAAO4B,KAAP;AAEAA,kBAAAA,KAAK,CAACC,OAAN,GAAgBvC,OAAO,CAACE,WAAR,CAAoBsC,GAApC;AACAF,kBAAAA,KAAK,CAACG,EAAN,GAAWH,KAAK,CAAC7B,GAAN,CAAUiC,KAAV,CAAgB,GAAhB,EAAqBC,GAArB,EAAX;;AACA9C,uCAAYC,MAAZ,CAAmBG,IAAnB,8DAA8EqC,KAAK,CAACG,EAApF,eAA2FH,KAAK,CAACM,SAAN,CAAgBC,UAA3G;;AAEA,yBAAOP,KAAP;AACD,iBAdI,EAeJQ,KAfI,CAeE,UAACC,GAAD,EAAS;AACdlD,uCAAYC,MAAZ,CAAmBC,KAAnB,mEAAoFgD,GAApF;;AACA,wBAAMA,GAAN;AACD,iBAlBI,CA1CqB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAvB,GAAP;AA8DD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,kBAAS/C,OAAT,EAAkB;AAAA;;AAChB,UACEE,WADF,GAEIF,OAFJ,CACEE,WADF;AAAA,UACe8C,YADf,GAEIhD,OAFJ,CACegD,YADf;AAAA,UAC6BC,OAD7B,GAEIjD,OAFJ,CAC6BiD,OAD7B;AAAA,UACsCpC,aADtC,GAEIb,OAFJ,CACsCa,aADtC;AAAA,UACqDqC,SADrD,GAEIlD,OAFJ,CACqDkD,SADrD;;AAIA,UAAI,CAACD,OAAL,EAAc;AACZpD,6BAAYC,MAAZ,CAAmBG,IAAnB,CAAwB,oEAAxB;AACD;;AAED,UAAMkD,QAAQ,aAAMH,YAAN,cAAsBI,gBAAtB,CAAd;AACA,UAAM/C,SAAS,GAAG,KAAKC,KAAL,CAAWC,QAAX,CAAoBC,MAApB,CAA2BC,GAA7C;;AAEAZ,2BAAYC,MAAZ,CAAmBG,IAAnB,qCAAqDkD,QAArD,iBAAoEjD,WAAW,CAACmD,WAAhF,qBAAsGnD,WAAW,CAACsC,GAAlH;;AAEAc,uBAAQC,SAAR,CAAkB;AAACC,QAAAA,KAAK,EAAEC,kBAAUC,aAAlB;AAAiCR,QAAAA,SAAS,EAATA;AAAjC,OAAlB;;AAEA,aAAO,KAAK5C,KAAL,CACJ0B,OADI,CACI;AACPI,QAAAA,GAAG,EAAEe,QADE;AAEPlB,QAAAA,MAAM,EAAEC,sBAAWyB,GAFZ;AAGPjD,QAAAA,IAAI,EAAE;AACJF,UAAAA,MAAM,EAAE;AACNC,YAAAA,GAAG,EAAEJ,SADC;AAENuD,YAAAA,UAAU,EAAE,KAAKC,MAAL,CAAYC,QAAZ,CAAqBF;AAF3B,WADJ;AAKJ/C,UAAAA,aAAa,EAAbA,aALI;AAMJC,UAAAA,WAAW,EAAE,CACX;AACE7B,YAAAA,QAAQ,EAAE,wBAAe,KAAK8B,qBAAL,CAA2B;AAClDb,cAAAA,WAAW,EAAXA,WADkD;AAElD;AACA;AACAc,cAAAA,UAAU,EAAE,CAAC,CAAChB,OAAO,CAACgB,UAJ4B;AAKlDC,cAAAA,UAAU,EAAE,CAAC,CAACjB,OAAO,CAACiB;AAL4B,aAA3B,CAAf,CADZ;AAQEgC,YAAAA,OAAO,EAAEjD,OAAO,CAACiD;AARnB,WADW,CANT;AAkBJ/B,UAAAA,sBAAsB,EAAE;AACtBC,YAAAA,iBAAiB,4BAAEnB,OAAO,CAACmB,iBAAV,2EAA+B;AAD1B;AAlBpB;AAHC,OADJ,EA2BJf,IA3BI,CA2BC,UAACiC,GAAD,EAAS;AACbiB,yBAAQC,SAAR,CAAkB;AAACC,UAAAA,KAAK,EAAEC,kBAAUM,cAAlB;AAAkCb,UAAAA,SAAS,EAATA;AAAlC,SAAlB,EADa,CAGb;;;AACA,YAAMc,gBAAgB,GAAG3B,GAAG,CAAC3B,IAAJ,CAASsD,gBAAT,IAA6B3B,GAAG,CAAC3B,IAAJ,CAASsD,gBAAT,CAA0BtE,MAA1B,GAAmC,CAAhE,IAAqE2C,GAAG,CAAC3B,IAAJ,CAASsD,gBAAT,CAA0B,CAA1B,CAA9F;;AAEAnE,6BAAYC,MAAZ,CAAmBG,IAAnB,8CACwC,wBAAe+D,gBAAf,EAAiC,IAAjC,EAAuC,CAAvC,CADxC,6BACoG3B,GAAG,CAAC4B,UADxG;;AAGA,YAAO3B,KAAP,GAAgBD,GAAG,CAAC3B,IAApB,CAAO4B,KAAP;AAEAA,QAAAA,KAAK,CAACC,OAAN,GAAgBvC,OAAO,CAACE,WAAR,CAAoBsC,GAApC;AAEA;AACEF,UAAAA,KAAK,EAALA;AADF,WAEM0B,gBAAgB,IAAI;AAACA,UAAAA,gBAAgB,EAAE3B,GAAG,CAAC3B,IAAJ,CAASsD;AAA5B,SAF1B;AAID,OA5CI,EA6CJlB,KA7CI,CA6CE,UAACC,GAAD,EAAS;AACdO,yBAAQC,SAAR,CAAkB;AAACC,UAAAA,KAAK,EAAEC,kBAAUM,cAAlB;AAAkCb,UAAAA,SAAS,EAATA,SAAlC;AAA6CgB,UAAAA,IAAI,EAAE;AAACnE,YAAAA,KAAK,EAAEuD,iBAAQa,eAAR,CAAwBpB,GAAxB,EAA6B,IAA7B;AAAR;AAAnD,SAAlB;;AACAlD,6BAAYC,MAAZ,CAAmBC,KAAnB,2CAA4D,wBAAegD,GAAf,EAAoB,IAApB,EAA0B,CAA1B,CAA5D;;AACAlD,6BAAYC,MAAZ,CAAmBC,KAAnB,sDACgD,wBAAeG,WAAf,EAA4B,IAA5B,EAAkC,CAAlC,CADhD,8BACwGF,OAAO,CAACiD,OADhH;;AAGA,cAAMF,GAAN;AACD,OApDI,CAAP;AAqDD;;;EA/KsCqB,+B","sourcesContent":["\n/* global window */\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n PARTICIPANT,\n LOCI,\n CALL,\n MEDIA,\n HTTP_VERBS,\n REACHABILITY\n} from '../constants';\nimport Metrics from '../metrics';\nimport {eventType} from '../metrics/config';\nimport ParameterError from '../common/errors/parameter';\n/**\n * @class RoapRequest\n */\nexport default class RoapRequest extends StatelessWebexPlugin {\n /**\n * Joins a meeting via ROAP\n * @param {Object} options\n * @returns {Promise} returns a promise that resolves/rejects whatever the request does\n */\n\n\n attachRechabilityData(localSdp) {\n const reachabilityData = window.localStorage.getItem(REACHABILITY.localStorage);\n\n if (reachabilityData) {\n try {\n const reachabilityResult = JSON.parse(reachabilityData);\n\n /* istanbul ignore else */\n if (reachabilityResult && Object.keys(reachabilityResult).length) {\n localSdp.reachability = reachabilityResult;\n }\n }\n catch (e) {\n LoggerProxy.logger.error(`Roap:request#attachReachabilityData --> Error in parsing reachability data: ${e}`);\n }\n }\n\n return localSdp;\n }\n\n joinMeetingWithRoap(options) {\n LoggerProxy.logger.info('Roap:request#joinMeetingWithRoap --> Join locus with roap');\n LoggerProxy.logger.info(`Roap:request#joinMeetingWithRoap --> Local SDP: ${options.roapMessage}`);\n\n return Promise.resolve().then(async () => {\n const deviceUrl = this.webex.internal.device.url;\n let url = '';\n\n const body = {\n deviceUrl,\n usingResource: options.resourceId || null,\n correlationId: options.correlationId,\n localMedias: [\n {\n localSdp: JSON.stringify(this.attachRechabilityData({\n roapMessage: options.roapMessage,\n audioMuted: false,\n videoMuted: false\n }))\n }\n ],\n clientMediaPreferences: {\n preferTranscoding: options.preferTranscoding ?? true\n }\n };\n\n if (options.locusUrl) {\n url = `${options.locusUrl}/${PARTICIPANT}`;\n }\n else if (options.sipUrl) {\n try {\n await this.webex.internal.services.waitForCatalog('postauth');\n url = `${this.webex.internal.services.get('locus')}/${LOCI}/${CALL}`;\n body.invitee = {\n address: options.sipTarget\n };\n }\n catch (e) {\n LoggerProxy.logger.error(`Roap:request#joinMeetingWithRoap --> ${e}`);\n throw (e);\n }\n }\n else {\n throw new ParameterError('Must provide a locusUrl or sipTarget');\n }\n\n return this.webex\n .request({\n method: HTTP_VERBS.POST,\n uri: url,\n body\n })\n .then((res) => {\n const {locus} = res.body;\n\n locus.roapSeq = options.roapMessage.seq;\n locus.id = locus.url.split('/').pop();\n LoggerProxy.logger.info(`Roap:request#joinMeetingWithRoap --> Joined locus [${locus.id}][${locus.fullState.lastActive}]`);\n\n return locus;\n })\n .catch((err) => {\n LoggerProxy.logger.error(`Roap:request#joinMeetingWithRoap --> failed with error: ${err}`);\n throw err;\n });\n });\n }\n\n /**\n * Sends a ROAP message\n * @param {Object} options\n * @param {String} options.roapMessage\n * @param {String} options.locusId\n * @param {String} options.locusSelfId\n * @param {String} options.mediaId\n * @param {String} options.correlationId\n * @returns {Promise} returns the response/failure of the request\n */\n sendRoap(options) {\n const {\n roapMessage, locusSelfUrl, mediaId, correlationId, meetingId\n } = options;\n\n if (!mediaId) {\n LoggerProxy.logger.info('Roap:request#sendRoap --> Race Condition /call mediaID not present');\n }\n\n const mediaUrl = `${locusSelfUrl}/${MEDIA}`;\n const deviceUrl = this.webex.internal.device.url;\n\n LoggerProxy.logger.info(`Roap:request#sendRoap --> ${mediaUrl} \\n ${roapMessage.messageType} \\n seq:${roapMessage.seq}`);\n\n Metrics.postEvent({event: eventType.MEDIA_REQUEST, meetingId});\n\n return this.webex\n .request({\n uri: mediaUrl,\n method: HTTP_VERBS.PUT,\n body: {\n device: {\n url: deviceUrl,\n deviceType: this.config.meetings.deviceType\n },\n correlationId,\n localMedias: [\n {\n localSdp: JSON.stringify(this.attachRechabilityData({\n roapMessage,\n // eslint-disable-next-line no-warning-comments\n // TODO: check whats the need for video and audiomute\n audioMuted: !!options.audioMuted,\n videoMuted: !!options.videoMuted\n })),\n mediaId: options.mediaId\n }\n ],\n clientMediaPreferences: {\n preferTranscoding: options.preferTranscoding ?? true\n }\n }\n })\n .then((res) => {\n Metrics.postEvent({event: eventType.MEDIA_RESPONSE, meetingId});\n\n // always it will be the first mediaConnection Object\n const mediaConnections = res.body.mediaConnections && res.body.mediaConnections.length > 0 && res.body.mediaConnections[0];\n\n LoggerProxy.logger.info(\n `Roap:request#sendRoap --> response:${JSON.stringify(mediaConnections, null, 2)}'\\n StatusCode:'${res.statusCode}`\n );\n const {locus} = res.body;\n\n locus.roapSeq = options.roapMessage.seq;\n\n return {\n locus,\n ...(mediaConnections && {mediaConnections: res.body.mediaConnections})\n };\n })\n .catch((err) => {\n Metrics.postEvent({event: eventType.MEDIA_RESPONSE, meetingId, data: {error: Metrics.parseLocusError(err, true)}});\n LoggerProxy.logger.error(`Roap:request#sendRoap --> Error:${JSON.stringify(err, null, 2)}`);\n LoggerProxy.logger.error(\n `Roap:request#sendRoapRequest --> errorBody:${JSON.stringify(roapMessage, null, 2)} + '\\\\n mediaId:'${options.mediaId}`\n );\n throw err;\n });\n }\n}\n"]}
1
+ {"version":3,"names":["RoapRequest","localSdp","reachabilityData","window","localStorage","getItem","REACHABILITY","reachabilityResult","JSON","parse","length","reachability","e","LoggerProxy","logger","error","options","info","roapMessage","resolve","then","deviceUrl","webex","internal","device","url","body","usingResource","resourceId","correlationId","localMedias","attachRechabilityData","audioMuted","videoMuted","clientMediaPreferences","preferTranscoding","locusUrl","PARTICIPANT","sipUrl","services","waitForCatalog","get","LOCI","CALL","invitee","address","sipTarget","ParameterError","request","method","HTTP_VERBS","POST","uri","res","locus","roapSeq","seq","id","split","pop","fullState","lastActive","catch","err","locusSelfUrl","mediaId","meetingId","mediaUrl","MEDIA","messageType","Metrics","postEvent","event","eventType","MEDIA_REQUEST","PUT","deviceType","config","meetings","MEDIA_RESPONSE","mediaConnections","statusCode","data","parseLocusError","StatelessWebexPlugin"],"sources":["request.js"],"sourcesContent":["\n/* global window */\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n PARTICIPANT,\n LOCI,\n CALL,\n MEDIA,\n HTTP_VERBS,\n REACHABILITY\n} from '../constants';\nimport Metrics from '../metrics';\nimport {eventType} from '../metrics/config';\nimport ParameterError from '../common/errors/parameter';\n/**\n * @class RoapRequest\n */\nexport default class RoapRequest extends StatelessWebexPlugin {\n /**\n * Joins a meeting via ROAP\n * @param {Object} options\n * @returns {Promise} returns a promise that resolves/rejects whatever the request does\n */\n\n\n attachRechabilityData(localSdp) {\n const reachabilityData = window.localStorage.getItem(REACHABILITY.localStorage);\n\n if (reachabilityData) {\n try {\n const reachabilityResult = JSON.parse(reachabilityData);\n\n /* istanbul ignore else */\n if (reachabilityResult && Object.keys(reachabilityResult).length) {\n localSdp.reachability = reachabilityResult;\n }\n }\n catch (e) {\n LoggerProxy.logger.error(`Roap:request#attachReachabilityData --> Error in parsing reachability data: ${e}`);\n }\n }\n\n return localSdp;\n }\n\n joinMeetingWithRoap(options) {\n LoggerProxy.logger.info('Roap:request#joinMeetingWithRoap --> Join locus with roap');\n LoggerProxy.logger.info(`Roap:request#joinMeetingWithRoap --> Local SDP: ${options.roapMessage}`);\n\n return Promise.resolve().then(async () => {\n const deviceUrl = this.webex.internal.device.url;\n let url = '';\n\n const body = {\n deviceUrl,\n usingResource: options.resourceId || null,\n correlationId: options.correlationId,\n localMedias: [\n {\n localSdp: JSON.stringify(this.attachRechabilityData({\n roapMessage: options.roapMessage,\n audioMuted: false,\n videoMuted: false\n }))\n }\n ],\n clientMediaPreferences: {\n preferTranscoding: options.preferTranscoding ?? true\n }\n };\n\n if (options.locusUrl) {\n url = `${options.locusUrl}/${PARTICIPANT}`;\n }\n else if (options.sipUrl) {\n try {\n await this.webex.internal.services.waitForCatalog('postauth');\n url = `${this.webex.internal.services.get('locus')}/${LOCI}/${CALL}`;\n body.invitee = {\n address: options.sipTarget\n };\n }\n catch (e) {\n LoggerProxy.logger.error(`Roap:request#joinMeetingWithRoap --> ${e}`);\n throw (e);\n }\n }\n else {\n throw new ParameterError('Must provide a locusUrl or sipTarget');\n }\n\n return this.webex\n .request({\n method: HTTP_VERBS.POST,\n uri: url,\n body\n })\n .then((res) => {\n const {locus} = res.body;\n\n locus.roapSeq = options.roapMessage.seq;\n locus.id = locus.url.split('/').pop();\n LoggerProxy.logger.info(`Roap:request#joinMeetingWithRoap --> Joined locus [${locus.id}][${locus.fullState.lastActive}]`);\n\n return locus;\n })\n .catch((err) => {\n LoggerProxy.logger.error(`Roap:request#joinMeetingWithRoap --> failed with error: ${err}`);\n throw err;\n });\n });\n }\n\n /**\n * Sends a ROAP message\n * @param {Object} options\n * @param {String} options.roapMessage\n * @param {String} options.locusId\n * @param {String} options.locusSelfId\n * @param {String} options.mediaId\n * @param {String} options.correlationId\n * @returns {Promise} returns the response/failure of the request\n */\n sendRoap(options) {\n const {\n roapMessage, locusSelfUrl, mediaId, correlationId, meetingId\n } = options;\n\n if (!mediaId) {\n LoggerProxy.logger.info('Roap:request#sendRoap --> Race Condition /call mediaID not present');\n }\n\n const mediaUrl = `${locusSelfUrl}/${MEDIA}`;\n const deviceUrl = this.webex.internal.device.url;\n\n LoggerProxy.logger.info(`Roap:request#sendRoap --> ${mediaUrl} \\n ${roapMessage.messageType} \\n seq:${roapMessage.seq}`);\n\n Metrics.postEvent({event: eventType.MEDIA_REQUEST, meetingId});\n\n return this.webex\n .request({\n uri: mediaUrl,\n method: HTTP_VERBS.PUT,\n body: {\n device: {\n url: deviceUrl,\n deviceType: this.config.meetings.deviceType\n },\n correlationId,\n localMedias: [\n {\n localSdp: JSON.stringify(this.attachRechabilityData({\n roapMessage,\n // eslint-disable-next-line no-warning-comments\n // TODO: check whats the need for video and audiomute\n audioMuted: !!options.audioMuted,\n videoMuted: !!options.videoMuted\n })),\n mediaId: options.mediaId\n }\n ],\n clientMediaPreferences: {\n preferTranscoding: options.preferTranscoding ?? true\n }\n }\n })\n .then((res) => {\n Metrics.postEvent({event: eventType.MEDIA_RESPONSE, meetingId});\n\n // always it will be the first mediaConnection Object\n const mediaConnections = res.body.mediaConnections && res.body.mediaConnections.length > 0 && res.body.mediaConnections[0];\n\n LoggerProxy.logger.info(\n `Roap:request#sendRoap --> response:${JSON.stringify(mediaConnections, null, 2)}'\\n StatusCode:'${res.statusCode}`\n );\n const {locus} = res.body;\n\n locus.roapSeq = options.roapMessage.seq;\n\n return {\n locus,\n ...(mediaConnections && {mediaConnections: res.body.mediaConnections})\n };\n })\n .catch((err) => {\n Metrics.postEvent({event: eventType.MEDIA_RESPONSE, meetingId, data: {error: Metrics.parseLocusError(err, true)}});\n LoggerProxy.logger.error(`Roap:request#sendRoap --> Error:${JSON.stringify(err, null, 2)}`);\n LoggerProxy.logger.error(\n `Roap:request#sendRoapRequest --> errorBody:${JSON.stringify(roapMessage, null, 2)} + '\\\\n mediaId:'${options.mediaId}`\n );\n throw err;\n });\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["state.js"],"names":["shouldStep","roap","meeting","messageType","msg","_OFFER_","remote","shareStatus","_REQUESTED_","mediaProperties","peerConnection","_ANSWER_","LoggerProxy","logger","log","signalingState","handleTransition","value","signal","ROAP","ROAP_STATE","INIT","ROAP_SIGNAL","RX_OFFER","WAIT_TX_ANSWER","TX_OFFER","WAIT_RX_ANSWER","WAIT_RX_OFFER","RX_ANSWER","mediaId","WAIT_TX_OK","error","GLARE","WAIT_TX_OFFER","TX_ANSWER","WAIT_RX_OK","TX_OK","RX_OK","ERROR","RoapStateMachine","createState","RoapState","StateMachine","factory","init","transitions","name","ROAP_TRANSITIONS","STEP","from","to","state","methods","onAfterStep","transition"],"mappings":"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","sourcesContent":["import StateMachine from 'javascript-state-machine';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {ROAP, _OFFER_, _ANSWER_, _REQUESTED_} from '../constants';\n\nconst shouldStep = (roap, meeting) => {\n const {messageType} = roap.msg;\n\n if (meeting) {\n if (messageType === _OFFER_ && roap.remote && meeting.shareStatus === _REQUESTED_) {\n // The peer-connection is waiting for answer but got an offer Reset. Try to\n // send the offer later after you accept the answer\n return false;\n }\n // Assuming the mercury event has come first before the response for the event\n // we have to wait for the response and trigger the ROAP request later on\n if (!meeting.mediaProperties.peerConnection && messageType === _ANSWER_) {\n return false;\n }\n }\n LoggerProxy.logger.log('Roap:state#shouldStep --> RoapStateMachine: PeerConnectionState, ', meeting.mediaProperties.peerConnection.signalingState);\n LoggerProxy.logger.log('Roap:state#shouldStep --> RoapStateMachine: success save proceeding with transition, ', roap.msg);\n\n return true;\n};\n\nconst handleTransition = (value, signal, meeting) => {\n LoggerProxy.logger.log(`Roap:state#handleTransition --> current ${value} to ${signal}`);\n\n switch (value) {\n case ROAP.ROAP_STATE.INIT:\n if (signal === ROAP.ROAP_SIGNAL.RX_OFFER) {\n return ROAP.ROAP_STATE.WAIT_TX_ANSWER;\n }\n if (signal === ROAP.ROAP_SIGNAL.TX_OFFER) {\n return ROAP.ROAP_STATE.WAIT_RX_ANSWER;\n }\n\n return value;\n\n case ROAP.ROAP_STATE.WAIT_RX_OFFER:\n return value;\n\n case ROAP.ROAP_STATE.WAIT_RX_ANSWER:\n if (signal === ROAP.ROAP_SIGNAL.RX_ANSWER) {\n // There is a race condition where the /call response comes after mercury event from the server\n // As mercury sends roap event if it didnt get back a response. We can send the roap ok after that\n if (meeting.mediaId) {\n return ROAP.ROAP_STATE.WAIT_TX_OK;\n }\n LoggerProxy.logger.error('Roap:state#handleTransition --> Race Condition no mediaId, continuing.');\n\n return value;\n }\n\n if (signal === ROAP.ROAP_SIGNAL.RX_OFFER) {\n return ROAP.ROAP_STATE.GLARE;\n }\n\n return value;\n\n case ROAP.ROAP_STATE.WAIT_TX_OFFER:\n return value;\n\n case ROAP.ROAP_STATE.WAIT_TX_ANSWER:\n if (signal === ROAP.ROAP_SIGNAL.TX_ANSWER) {\n return ROAP.ROAP_STATE.WAIT_RX_OK;\n }\n\n return value;\n\n case ROAP.ROAP_STATE.WAIT_TX_OK:\n if (signal === ROAP.ROAP_SIGNAL.TX_OK) {\n return ROAP.ROAP_STATE.INIT;\n }\n\n return value;\n\n case ROAP.ROAP_STATE.WAIT_RX_OK:\n if (signal === ROAP.ROAP_SIGNAL.RX_OK) {\n return ROAP.ROAP_STATE.INIT;\n }\n\n return value;\n\n case ROAP.ROAP_STATE.ERROR:\n // eslint-disable-next-line no-warning-comments\n // TODO: resolve error state. Add a signal constant and handle the cleanup\n return ROAP.ROAP_STATE.INIT;\n\n case ROAP.ROAP_STATE.GLARE:\n return ROAP.ROAP_STATE.WAIT_RX_ANSWER;\n default:\n return value;\n }\n};\n\nconst RoapStateMachine = {\n /**\n * @param {Roap} roapRef\n * initializes the state machine\n * @returns {StateMachine} an instance of a state machine\n */\n createState() {\n const RoapState = StateMachine.factory({\n init: ROAP.ROAP_STATE.INIT,\n transitions: [\n {\n name: ROAP.ROAP_TRANSITIONS.STEP,\n from: '*',\n /**\n * Method to handle the transitions between states\n * @param {String} signal\n * @param {Meeting} meeting instance of a Meeting\n * @param {Object} roap\n * @returns {String} new state value\n */\n to(signal, meeting, roap) {\n const value = this.state;\n\n if (!shouldStep(roap, meeting)) {\n return value;\n }\n\n return handleTransition(value, signal, meeting);\n }\n }\n ],\n methods: {\n /**\n * Event that fires after we've transitioned to a new state\n * @param {Object} transition\n * @returns {null}\n */\n onAfterStep(transition) {\n LoggerProxy.logger.log(\n `Roap:state#onAfterStep --> RoapStateMachine->onAfterStep#fired! State changed from '${transition.from}' to '${\n transition.to\n }' with transition '${transition.transition}''.`\n );\n }\n }\n });\n\n return new RoapState();\n }\n};\n\nexport default RoapStateMachine;\n"]}
1
+ {"version":3,"names":["shouldStep","roap","meeting","messageType","msg","_OFFER_","remote","shareStatus","_REQUESTED_","mediaProperties","peerConnection","_ANSWER_","LoggerProxy","logger","log","signalingState","handleTransition","value","signal","ROAP","ROAP_STATE","INIT","ROAP_SIGNAL","RX_OFFER","WAIT_TX_ANSWER","TX_OFFER","WAIT_RX_ANSWER","WAIT_RX_OFFER","RX_ANSWER","mediaId","WAIT_TX_OK","error","GLARE","WAIT_TX_OFFER","TX_ANSWER","WAIT_RX_OK","TX_OK","RX_OK","ERROR","RoapStateMachine","createState","RoapState","StateMachine","factory","init","transitions","name","ROAP_TRANSITIONS","STEP","from","to","state","methods","onAfterStep","transition"],"sources":["state.js"],"sourcesContent":["import StateMachine from 'javascript-state-machine';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {ROAP, _OFFER_, _ANSWER_, _REQUESTED_} from '../constants';\n\nconst shouldStep = (roap, meeting) => {\n const {messageType} = roap.msg;\n\n if (meeting) {\n if (messageType === _OFFER_ && roap.remote && meeting.shareStatus === _REQUESTED_) {\n // The peer-connection is waiting for answer but got an offer Reset. Try to\n // send the offer later after you accept the answer\n return false;\n }\n // Assuming the mercury event has come first before the response for the event\n // we have to wait for the response and trigger the ROAP request later on\n if (!meeting.mediaProperties.peerConnection && messageType === _ANSWER_) {\n return false;\n }\n }\n LoggerProxy.logger.log('Roap:state#shouldStep --> RoapStateMachine: PeerConnectionState, ', meeting.mediaProperties.peerConnection.signalingState);\n LoggerProxy.logger.log('Roap:state#shouldStep --> RoapStateMachine: success save proceeding with transition, ', roap.msg);\n\n return true;\n};\n\nconst handleTransition = (value, signal, meeting) => {\n LoggerProxy.logger.log(`Roap:state#handleTransition --> current ${value} to ${signal}`);\n\n switch (value) {\n case ROAP.ROAP_STATE.INIT:\n if (signal === ROAP.ROAP_SIGNAL.RX_OFFER) {\n return ROAP.ROAP_STATE.WAIT_TX_ANSWER;\n }\n if (signal === ROAP.ROAP_SIGNAL.TX_OFFER) {\n return ROAP.ROAP_STATE.WAIT_RX_ANSWER;\n }\n\n return value;\n\n case ROAP.ROAP_STATE.WAIT_RX_OFFER:\n return value;\n\n case ROAP.ROAP_STATE.WAIT_RX_ANSWER:\n if (signal === ROAP.ROAP_SIGNAL.RX_ANSWER) {\n // There is a race condition where the /call response comes after mercury event from the server\n // As mercury sends roap event if it didnt get back a response. We can send the roap ok after that\n if (meeting.mediaId) {\n return ROAP.ROAP_STATE.WAIT_TX_OK;\n }\n LoggerProxy.logger.error('Roap:state#handleTransition --> Race Condition no mediaId, continuing.');\n\n return value;\n }\n\n if (signal === ROAP.ROAP_SIGNAL.RX_OFFER) {\n return ROAP.ROAP_STATE.GLARE;\n }\n\n return value;\n\n case ROAP.ROAP_STATE.WAIT_TX_OFFER:\n return value;\n\n case ROAP.ROAP_STATE.WAIT_TX_ANSWER:\n if (signal === ROAP.ROAP_SIGNAL.TX_ANSWER) {\n return ROAP.ROAP_STATE.WAIT_RX_OK;\n }\n\n return value;\n\n case ROAP.ROAP_STATE.WAIT_TX_OK:\n if (signal === ROAP.ROAP_SIGNAL.TX_OK) {\n return ROAP.ROAP_STATE.INIT;\n }\n\n return value;\n\n case ROAP.ROAP_STATE.WAIT_RX_OK:\n if (signal === ROAP.ROAP_SIGNAL.RX_OK) {\n return ROAP.ROAP_STATE.INIT;\n }\n\n return value;\n\n case ROAP.ROAP_STATE.ERROR:\n // eslint-disable-next-line no-warning-comments\n // TODO: resolve error state. Add a signal constant and handle the cleanup\n return ROAP.ROAP_STATE.INIT;\n\n case ROAP.ROAP_STATE.GLARE:\n return ROAP.ROAP_STATE.WAIT_RX_ANSWER;\n default:\n return value;\n }\n};\n\nconst RoapStateMachine = {\n /**\n * @param {Roap} roapRef\n * initializes the state machine\n * @returns {StateMachine} an instance of a state machine\n */\n createState() {\n const RoapState = StateMachine.factory({\n init: ROAP.ROAP_STATE.INIT,\n transitions: [\n {\n name: ROAP.ROAP_TRANSITIONS.STEP,\n from: '*',\n /**\n * Method to handle the transitions between states\n * @param {String} signal\n * @param {Meeting} meeting instance of a Meeting\n * @param {Object} roap\n * @returns {String} new state value\n */\n to(signal, meeting, roap) {\n const value = this.state;\n\n if (!shouldStep(roap, meeting)) {\n return value;\n }\n\n return handleTransition(value, signal, meeting);\n }\n }\n ],\n methods: {\n /**\n * Event that fires after we've transitioned to a new state\n * @param {Object} transition\n * @returns {null}\n */\n onAfterStep(transition) {\n LoggerProxy.logger.log(\n `Roap:state#onAfterStep --> RoapStateMachine->onAfterStep#fired! State changed from '${transition.from}' to '${\n transition.to\n }' with transition '${transition.transition}''.`\n );\n }\n }\n });\n\n return new RoapState();\n }\n};\n\nexport default RoapStateMachine;\n"],"mappings":";;;;;;;;;;;;AAAA;;AAEA;;AACA;;AAEA,IAAMA,UAAU,GAAG,SAAbA,UAAa,CAACC,IAAD,EAAOC,OAAP,EAAmB;EACpC,IAAOC,WAAP,GAAsBF,IAAI,CAACG,GAA3B,CAAOD,WAAP;;EAEA,IAAID,OAAJ,EAAa;IACX,IAAIC,WAAW,KAAKE,kBAAhB,IAA2BJ,IAAI,CAACK,MAAhC,IAA0CJ,OAAO,CAACK,WAAR,KAAwBC,sBAAtE,EAAmF;MACjF;MACA;MACA,OAAO,KAAP;IACD,CALU,CAMX;IACA;;;IACA,IAAI,CAACN,OAAO,CAACO,eAAR,CAAwBC,cAAzB,IAA2CP,WAAW,KAAKQ,mBAA/D,EAAyE;MACvE,OAAO,KAAP;IACD;EACF;;EACDC,qBAAYC,MAAZ,CAAmBC,GAAnB,CAAuB,mEAAvB,EAA4FZ,OAAO,CAACO,eAAR,CAAwBC,cAAxB,CAAuCK,cAAnI;;EACAH,qBAAYC,MAAZ,CAAmBC,GAAnB,CAAuB,uFAAvB,EAAgHb,IAAI,CAACG,GAArH;;EAEA,OAAO,IAAP;AACD,CAnBD;;AAqBA,IAAMY,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,KAAD,EAAQC,MAAR,EAAgBhB,OAAhB,EAA4B;EACnDU,qBAAYC,MAAZ,CAAmBC,GAAnB,mDAAkEG,KAAlE,iBAA8EC,MAA9E;;EAEA,QAAQD,KAAR;IACE,KAAKE,gBAAKC,UAAL,CAAgBC,IAArB;MACE,IAAIH,MAAM,KAAKC,gBAAKG,WAAL,CAAiBC,QAAhC,EAA0C;QACxC,OAAOJ,gBAAKC,UAAL,CAAgBI,cAAvB;MACD;;MACD,IAAIN,MAAM,KAAKC,gBAAKG,WAAL,CAAiBG,QAAhC,EAA0C;QACxC,OAAON,gBAAKC,UAAL,CAAgBM,cAAvB;MACD;;MAED,OAAOT,KAAP;;IAEF,KAAKE,gBAAKC,UAAL,CAAgBO,aAArB;MACE,OAAOV,KAAP;;IAEF,KAAKE,gBAAKC,UAAL,CAAgBM,cAArB;MACE,IAAIR,MAAM,KAAKC,gBAAKG,WAAL,CAAiBM,SAAhC,EAA2C;QACzC;QACA;QACA,IAAI1B,OAAO,CAAC2B,OAAZ,EAAqB;UACnB,OAAOV,gBAAKC,UAAL,CAAgBU,UAAvB;QACD;;QACDlB,qBAAYC,MAAZ,CAAmBkB,KAAnB,CAAyB,wEAAzB;;QAEA,OAAOd,KAAP;MACD;;MAED,IAAIC,MAAM,KAAKC,gBAAKG,WAAL,CAAiBC,QAAhC,EAA0C;QACxC,OAAOJ,gBAAKC,UAAL,CAAgBY,KAAvB;MACD;;MAED,OAAOf,KAAP;;IAEF,KAAKE,gBAAKC,UAAL,CAAgBa,aAArB;MACE,OAAOhB,KAAP;;IAEF,KAAKE,gBAAKC,UAAL,CAAgBI,cAArB;MACE,IAAIN,MAAM,KAAKC,gBAAKG,WAAL,CAAiBY,SAAhC,EAA2C;QACzC,OAAOf,gBAAKC,UAAL,CAAgBe,UAAvB;MACD;;MAED,OAAOlB,KAAP;;IAEF,KAAKE,gBAAKC,UAAL,CAAgBU,UAArB;MACE,IAAIZ,MAAM,KAAKC,gBAAKG,WAAL,CAAiBc,KAAhC,EAAuC;QACrC,OAAOjB,gBAAKC,UAAL,CAAgBC,IAAvB;MACD;;MAED,OAAOJ,KAAP;;IAEF,KAAKE,gBAAKC,UAAL,CAAgBe,UAArB;MACE,IAAIjB,MAAM,KAAKC,gBAAKG,WAAL,CAAiBe,KAAhC,EAAuC;QACrC,OAAOlB,gBAAKC,UAAL,CAAgBC,IAAvB;MACD;;MAED,OAAOJ,KAAP;;IAEF,KAAKE,gBAAKC,UAAL,CAAgBkB,KAArB;MACE;MACA;MACA,OAAOnB,gBAAKC,UAAL,CAAgBC,IAAvB;;IAEF,KAAKF,gBAAKC,UAAL,CAAgBY,KAArB;MACE,OAAOb,gBAAKC,UAAL,CAAgBM,cAAvB;;IACF;MACE,OAAOT,KAAP;EAhEJ;AAkED,CArED;;AAuEA,IAAMsB,gBAAgB,GAAG;EACvB;AACF;AACA;AACA;AACA;EACEC,WANuB,yBAMT;IACZ,IAAMC,SAAS,GAAGC,gCAAaC,OAAb,CAAqB;MACrCC,IAAI,EAAEzB,gBAAKC,UAAL,CAAgBC,IADe;MAErCwB,WAAW,EAAE,CACX;QACEC,IAAI,EAAE3B,gBAAK4B,gBAAL,CAAsBC,IAD9B;QAEEC,IAAI,EAAE,GAFR;;QAGE;AACV;AACA;AACA;AACA;AACA;AACA;QACUC,EAVF,cAUKhC,MAVL,EAUahB,OAVb,EAUsBD,IAVtB,EAU4B;UACxB,IAAMgB,KAAK,GAAG,KAAKkC,KAAnB;;UAEA,IAAI,CAACnD,UAAU,CAACC,IAAD,EAAOC,OAAP,CAAf,EAAgC;YAC9B,OAAOe,KAAP;UACD;;UAED,OAAOD,gBAAgB,CAACC,KAAD,EAAQC,MAAR,EAAgBhB,OAAhB,CAAvB;QACD;MAlBH,CADW,CAFwB;MAwBrCkD,OAAO,EAAE;QACP;AACR;AACA;AACA;AACA;QACQC,WANO,uBAMKC,UANL,EAMiB;UACtB1C,qBAAYC,MAAZ,CAAmBC,GAAnB,+FACyFwC,UAAU,CAACL,IADpG,mBAEIK,UAAU,CAACJ,EAFf,gCAGwBI,UAAU,CAACA,UAHnC;QAKD;MAZM;IAxB4B,CAArB,CAAlB;;IAwCA,OAAO,IAAIb,SAAJ,EAAP;EACD;AAhDsB,CAAzB;eAmDeF,gB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["util.js"],"names":["RoapUtil","ROAP_ANSWER","_ANSWER_","toLowerCase","shouldHandleMedia","meeting","offer","mediaProperties","peerConnection","signalingState","SDP","HAVE_LOCAL_OFFER","handleError","pc","PeerConnectionManager","rollBackLocalDescription","then","resolve","catch","err","LoggerProxy","logger","error","reject","findError","messageType","errorType","type","ROAP","RECEIVE_ROAP_MSG","SEND_ROAP_MSG","_ERROR_","_CONFLICT_","ensureMeeting","SEND_ROAP_MSG_SUCCESS","updatePeerConnection","session","offerSdp","OFFER","sdps","meetingId","id","remoteQualityLevel","res","roap","lastRoapOffer","setRemoteDescription","info","correlationId","ParameterError","setRemoteSessionDetails","ANSWER","seq","locusId","locusSelfId","locusInfo","self","mediaId"],"mappings":"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","sourcesContent":["\nimport PeerConnectionManager from '../peer-connection-manager';\nimport {\n _ANSWER_,\n _ERROR_,\n _CONFLICT_,\n ROAP,\n SDP\n} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport ParameterError from '../common/errors/parameter';\n\nconst RoapUtil = {};\nconst ROAP_ANSWER = _ANSWER_.toLowerCase();\n\nRoapUtil.shouldHandleMedia = (meeting) => {\n const offer =\n meeting.mediaProperties.peerConnection &&\n meeting.mediaProperties.peerConnection.signalingState === SDP.HAVE_LOCAL_OFFER;\n\n if (offer) {\n return false;\n }\n\n return true;\n};\n\nRoapUtil.handleError = (pc) =>\n PeerConnectionManager.rollBackLocalDescription({peerConnection: pc})\n .then(() => Promise.resolve(true))\n .catch((err) => {\n LoggerProxy.logger.error(`Roap:util#handleError --> ${err}`);\n\n return Promise.reject(err);\n });\n\nRoapUtil.findError = (messageType, errorType, type) =>\n (type === ROAP.RECEIVE_ROAP_MSG || type === ROAP.SEND_ROAP_MSG) && messageType === _ERROR_ && errorType === _CONFLICT_;\n\nRoapUtil.ensureMeeting = (meeting, type) => {\n if (type === ROAP.RECEIVE_ROAP_MSG || type === ROAP.SEND_ROAP_MSG || type === ROAP.SEND_ROAP_MSG_SUCCESS) {\n if (!meeting) {\n return false;\n }\n }\n\n return true;\n};\n\nRoapUtil.updatePeerConnection = (meeting, session) => PeerConnectionManager.updatePeerConnection({\n offerSdp: session.OFFER.sdps,\n peerConnection: meeting.mediaProperties.peerConnection\n},\n{\n meetingId: meeting.id,\n remoteQualityLevel: meeting.mediaProperties.remoteQualityLevel\n})\n .then((res) => {\n meeting.roap.lastRoapOffer = session.OFFER.sdps;\n\n return res;\n });\n\n\nRoapUtil.setRemoteDescription = (meeting, session) => {\n LoggerProxy.logger.info(`Roap:util#setRemoteDescription --> Transmit WAIT_TX_OK, correlationId: ${meeting.correlationId}`);\n if (!(meeting && (meeting.mediaProperties.peerConnection))) {\n LoggerProxy.logger.error(`Roap:util#setRemoteDescription --> DANGER no media or screen peer connection, correlationId: ${meeting.correlationId}`);\n\n return Promise.reject(new ParameterError('Must provide a media or screen peer connection'));\n }\n\n return PeerConnectionManager.setRemoteSessionDetails(\n meeting.mediaProperties.peerConnection,\n ROAP_ANSWER,\n session.ANSWER.sdps[0],\n meeting.id\n ).then(() => {\n LoggerProxy.logger.info(`Roap:util#setRemoteDescription --> Success for correlationId: ${meeting.correlationId}`);\n\n return {\n seq: session.ANSWER.seq,\n locusId: meeting.locusId,\n locusSelfId: meeting.locusInfo.self.id,\n mediaId: meeting.mediaId,\n correlationId: meeting.correlationId\n };\n })\n .catch((err) => {\n LoggerProxy.logger.error(`Roap:util#setRemoteDescription --> ${err}`);\n throw err;\n });\n};\n\nexport default RoapUtil;\n"]}
1
+ {"version":3,"names":["RoapUtil","ROAP_ANSWER","_ANSWER_","toLowerCase","shouldHandleMedia","meeting","offer","mediaProperties","peerConnection","signalingState","SDP","HAVE_LOCAL_OFFER","handleError","pc","PeerConnectionManager","rollBackLocalDescription","then","resolve","catch","err","LoggerProxy","logger","error","reject","findError","messageType","errorType","type","ROAP","RECEIVE_ROAP_MSG","SEND_ROAP_MSG","_ERROR_","_CONFLICT_","ensureMeeting","SEND_ROAP_MSG_SUCCESS","updatePeerConnection","session","offerSdp","OFFER","sdps","meetingId","id","remoteQualityLevel","res","roap","lastRoapOffer","setRemoteDescription","info","correlationId","ParameterError","setRemoteSessionDetails","ANSWER","seq","locusId","locusSelfId","locusInfo","self","mediaId"],"sources":["util.js"],"sourcesContent":["\nimport PeerConnectionManager from '../peer-connection-manager';\nimport {\n _ANSWER_,\n _ERROR_,\n _CONFLICT_,\n ROAP,\n SDP\n} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport ParameterError from '../common/errors/parameter';\n\nconst RoapUtil = {};\nconst ROAP_ANSWER = _ANSWER_.toLowerCase();\n\nRoapUtil.shouldHandleMedia = (meeting) => {\n const offer =\n meeting.mediaProperties.peerConnection &&\n meeting.mediaProperties.peerConnection.signalingState === SDP.HAVE_LOCAL_OFFER;\n\n if (offer) {\n return false;\n }\n\n return true;\n};\n\nRoapUtil.handleError = (pc) =>\n PeerConnectionManager.rollBackLocalDescription({peerConnection: pc})\n .then(() => Promise.resolve(true))\n .catch((err) => {\n LoggerProxy.logger.error(`Roap:util#handleError --> ${err}`);\n\n return Promise.reject(err);\n });\n\nRoapUtil.findError = (messageType, errorType, type) =>\n (type === ROAP.RECEIVE_ROAP_MSG || type === ROAP.SEND_ROAP_MSG) && messageType === _ERROR_ && errorType === _CONFLICT_;\n\nRoapUtil.ensureMeeting = (meeting, type) => {\n if (type === ROAP.RECEIVE_ROAP_MSG || type === ROAP.SEND_ROAP_MSG || type === ROAP.SEND_ROAP_MSG_SUCCESS) {\n if (!meeting) {\n return false;\n }\n }\n\n return true;\n};\n\nRoapUtil.updatePeerConnection = (meeting, session) => PeerConnectionManager.updatePeerConnection({\n offerSdp: session.OFFER.sdps,\n peerConnection: meeting.mediaProperties.peerConnection\n},\n{\n meetingId: meeting.id,\n remoteQualityLevel: meeting.mediaProperties.remoteQualityLevel\n})\n .then((res) => {\n meeting.roap.lastRoapOffer = session.OFFER.sdps;\n\n return res;\n });\n\n\nRoapUtil.setRemoteDescription = (meeting, session) => {\n LoggerProxy.logger.info(`Roap:util#setRemoteDescription --> Transmit WAIT_TX_OK, correlationId: ${meeting.correlationId}`);\n if (!(meeting && (meeting.mediaProperties.peerConnection))) {\n LoggerProxy.logger.error(`Roap:util#setRemoteDescription --> DANGER no media or screen peer connection, correlationId: ${meeting.correlationId}`);\n\n return Promise.reject(new ParameterError('Must provide a media or screen peer connection'));\n }\n\n return PeerConnectionManager.setRemoteSessionDetails(\n meeting.mediaProperties.peerConnection,\n ROAP_ANSWER,\n session.ANSWER.sdps[0],\n meeting.id\n ).then(() => {\n LoggerProxy.logger.info(`Roap:util#setRemoteDescription --> Success for correlationId: ${meeting.correlationId}`);\n\n return {\n seq: session.ANSWER.seq,\n locusId: meeting.locusId,\n locusSelfId: meeting.locusInfo.self.id,\n mediaId: meeting.mediaId,\n correlationId: meeting.correlationId\n };\n })\n .catch((err) => {\n LoggerProxy.logger.error(`Roap:util#setRemoteDescription --> ${err}`);\n throw err;\n });\n};\n\nexport default RoapUtil;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["data.js"],"names":["WebRTCData","data","id","uuid","v4","flat","forEach","key","DEFAULT_OMISSION_DATA_KEYS"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;;AAGA;;AAEA;;AACA;AACA;AACA;IACqBA,U;AACnB;AACF;AACA;AACE,sBAAYC,IAAZ,EAAkB;AAAA;AAChB,SAAKA,IAAL,GAAYA,IAAZ;AACA,SAAKC,EAAL,GAAUC,cAAKC,EAAL,EAAV;AACD;AAED;AACF;AACA;AACA;;;;;WACE,gBAAO;AAAA;;AACL,UAAMC,IAAI,GAAG,EAAb;AAEA,yBAAY,KAAKJ,IAAjB,EAAuBK,OAAvB,CAA+B,UAACC,GAAD,EAAS;AACtCF,QAAAA,IAAI,CAACE,GAAD,CAAJ,GAAY,oBAAK,KAAI,CAACN,IAAL,CAAUM,GAAV,CAAL,EAAqBC,qCAArB,CAAZ;AACD,OAFD;AAIA,aAAOH,IAAP;AACD;AAED;AACF;AACA;AACA;;;;WACE,mBAAU;AACR,aAAO,uBAAQ,KAAKJ,IAAb,CAAP;AACD;AAED;AACF;AACA;AACA;;;;WACE,iBAAQ;AACN,aAAO,KAAKC,EAAZ;AACD;AAED;AACF;AACA;AACA;;;;WACE,mBAAU;AACR,aAAO,KAAKD,IAAZ;AACD","sourcesContent":["import uuid from 'uuid';\nimport {isEmpty, omit} from 'lodash';\n\nimport {DEFAULT_OMISSION_DATA_KEYS} from '../constants';\n\n// TODO: Break this up a bit more, so that consumers aren't calling data.data.getData()\n/**\n * @class WebRTCData\n */\nexport default class WebRTCData {\n /**\n * @param {Object} data\n */\n constructor(data) {\n this.data = data;\n this.id = uuid.v4();\n }\n\n /**\n * get omitted rtc/rtcp/rtp/track/transport/candidate data with omitted data (default)\n * @returns {Object}\n */\n omit() {\n const flat = {};\n\n Object.keys(this.data).forEach((key) => {\n flat[key] = omit(this.data[key], DEFAULT_OMISSION_DATA_KEYS);\n });\n\n return flat;\n }\n\n /**\n * returns if the data is empty\n * @returns {Boolean};\n */\n isEmpty() {\n return isEmpty(this.data);\n }\n\n /**\n * get the unique id for this specific stat pull\n * @returns {String};\n */\n getId() {\n return this.id;\n }\n\n /**\n * get the transformed data\n * @returns {Object}\n */\n getData() {\n return this.data;\n }\n}\n"]}
1
+ {"version":3,"names":["WebRTCData","data","id","uuid","v4","flat","forEach","key","DEFAULT_OMISSION_DATA_KEYS"],"sources":["data.js"],"sourcesContent":["import uuid from 'uuid';\nimport {isEmpty, omit} from 'lodash';\n\nimport {DEFAULT_OMISSION_DATA_KEYS} from '../constants';\n\n// TODO: Break this up a bit more, so that consumers aren't calling data.data.getData()\n/**\n * @class WebRTCData\n */\nexport default class WebRTCData {\n /**\n * @param {Object} data\n */\n constructor(data) {\n this.data = data;\n this.id = uuid.v4();\n }\n\n /**\n * get omitted rtc/rtcp/rtp/track/transport/candidate data with omitted data (default)\n * @returns {Object}\n */\n omit() {\n const flat = {};\n\n Object.keys(this.data).forEach((key) => {\n flat[key] = omit(this.data[key], DEFAULT_OMISSION_DATA_KEYS);\n });\n\n return flat;\n }\n\n /**\n * returns if the data is empty\n * @returns {Boolean};\n */\n isEmpty() {\n return isEmpty(this.data);\n }\n\n /**\n * get the unique id for this specific stat pull\n * @returns {String};\n */\n getId() {\n return this.id;\n }\n\n /**\n * get the transformed data\n * @returns {Object}\n */\n getData() {\n return this.data;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;;AAGA;;AAEA;;AACA;AACA;AACA;IACqBA,U;EACnB;AACF;AACA;EACE,oBAAYC,IAAZ,EAAkB;IAAA;IAChB,KAAKA,IAAL,GAAYA,IAAZ;IACA,KAAKC,EAAL,GAAUC,cAAKC,EAAL,EAAV;EACD;EAED;AACF;AACA;AACA;;;;;WACE,gBAAO;MAAA;;MACL,IAAMC,IAAI,GAAG,EAAb;MAEA,mBAAY,KAAKJ,IAAjB,EAAuBK,OAAvB,CAA+B,UAACC,GAAD,EAAS;QACtCF,IAAI,CAACE,GAAD,CAAJ,GAAY,oBAAK,KAAI,CAACN,IAAL,CAAUM,GAAV,CAAL,EAAqBC,qCAArB,CAAZ;MACD,CAFD;MAIA,OAAOH,IAAP;IACD;IAED;AACF;AACA;AACA;;;;WACE,mBAAU;MACR,OAAO,uBAAQ,KAAKJ,IAAb,CAAP;IACD;IAED;AACF;AACA;AACA;;;;WACE,iBAAQ;MACN,OAAO,KAAKC,EAAZ;IACD;IAED;AACF;AACA;AACA;;;;WACE,mBAAU;MACR,OAAO,KAAKD,IAAZ;IACD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["events.js"],"names":["operateEvent","operate","type","keys","stat","kind","foundMatch","found","some","key","match","data","StatsEvents","series","callback","MEETINGS","first","sendRemainStopped","recvRemainStopped","getData","operator","EVENT_TYPES","LOCAL","DEFAULT_EVENT_AUDIO_SEND_KEYS","EVENT_STATS_MAP","BYTES_SENT","AUDIO","DEFAULT_EVENT_VIDEO_SEND_KEYS","VIDEO","REMOTE","DEFAULT_EVENT_VIDEO_RECEIVE_KEYS","BYTES_RECEIVED","DEFAULT_EVENT_AUDIO_RECEIVE_KEYS","somethingMatched","find","element","get","length","fiveSecondsData","getSlice","prop","rtpOutAudio","rtpInAudio","rtpInVideo","rtpOutVideo","sendAnalysis","StatsAnalyzer","analyze","analysisKeys","check","ANALYSIS_CHECKS","INCREASING","receiveAnalysis","valid","bytesSent","reports","ret","stop","bytesReceived","start"],"mappings":"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","sourcesContent":["import StatsAnalyzer from '../analyzer/analyzer';\nimport {\n DEFAULT_EVENT_VIDEO_SEND_KEYS,\n DEFAULT_EVENT_AUDIO_SEND_KEYS,\n DEFAULT_EVENT_AUDIO_RECEIVE_KEYS,\n DEFAULT_EVENT_VIDEO_RECEIVE_KEYS,\n EVENT_TYPES,\n EVENT_STATS_MAP,\n MEETINGS,\n AUDIO,\n VIDEO,\n ANALYSIS_CHECKS\n} from '../constants';\n\n/**\n * @param {Object} operate the filtered, parsed, converted, transformed, simplified data point to check against\n * @param {String} type - local or remote\n * @param {String} keys - the stat keys for types of stats defined by DEFAULT_TRANSFORM_REGEX\n * @param {String} stat - the accessor to get the actual stat\n * @param {String} kind - audio or video\n * @returns {Object} always whatever the first sentFirstVideoBytes were, in the past or if it happened now, or undefined if never\n * @private\n * @memberof StatsEvents\n */\nconst operateEvent = (operate, type, keys, stat, kind) => {\n const foundMatch = {};\n\n foundMatch.found = keys.some((key) => {\n if (operate[key] && operate[key][stat] && operate[key][stat] > 0) {\n foundMatch.match = {\n type,\n key,\n data: operate[key],\n stat,\n kind\n };\n\n return true;\n }\n\n return false;\n });\n\n return foundMatch;\n};\n\n/**\n * @export\n * @class StatsEvents\n */\nexport default class StatsEvents {\n namespace = MEETINGS;\n\n /**\n * constructs an instance\n * @constructor\n * @param {StatsHistory} series\n * @param {Function} callback\n * @memberof StatsEvents\n */\n constructor(series = null, callback = () => {}) {\n /**\n * @instance\n * @type {StatsHistory}\n * @private\n * @memberof StatsEvents\n */\n this.series = series;\n /**\n * @instance\n * @type {Function}\n * @private\n * @memberof StatsEvents\n */\n this.callback = callback;\n /**\n * @instance\n * @type {WebRTCData}\n * @private\n * @memberof StatsEvents\n */\n this.first = null;\n /**\n * @instance\n * @type {Boolean}\n * @private\n * @memberof StatsEvents\n */\n this.sendRemainStopped = false;\n /**\n * @instance\n * @type {Boolean}\n * @private\n * @memberof StatsEvents\n */\n this.recvRemainStopped = false;\n }\n\n /**\n * looks for data starting to flow through\n * @param {WebRTCData} data\n * @returns {Object}\n */\n start(data) {\n if (data && data.data && data.data.getData()) {\n const operate = data.data.getData();\n\n if (operate && !this.first) {\n const operator = [\n operateEvent(operate, EVENT_TYPES.LOCAL, DEFAULT_EVENT_AUDIO_SEND_KEYS, EVENT_STATS_MAP.BYTES_SENT, AUDIO),\n operateEvent(operate, EVENT_TYPES.LOCAL, DEFAULT_EVENT_VIDEO_SEND_KEYS, EVENT_STATS_MAP.BYTES_SENT, VIDEO),\n operateEvent(operate, EVENT_TYPES.REMOTE, DEFAULT_EVENT_VIDEO_RECEIVE_KEYS, EVENT_STATS_MAP.BYTES_RECEIVED, VIDEO),\n operateEvent(operate, EVENT_TYPES.REMOTE, DEFAULT_EVENT_AUDIO_RECEIVE_KEYS, EVENT_STATS_MAP.BYTES_RECEIVED, AUDIO)\n ];\n const somethingMatched = operator.find((element) => element && element.found && element.match);\n\n if (somethingMatched) {\n this.first = somethingMatched.match;\n this.callback(this.first);\n\n return somethingMatched;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Looks for data to stop coming through\n * @returns {Object}\n */\n stop() {\n if (!this.series || this.series.get().length < 5) {\n return null;\n }\n const fiveSecondsData = this.series.getSlice(5);\n const prop = fiveSecondsData[0] && fiveSecondsData[0].rtpOutAudio || fiveSecondsData[0].rtpInAudio || fiveSecondsData[0].rtpInVideo || fiveSecondsData[0].rtpOutVideo;\n const sendAnalysis = StatsAnalyzer.analyze(fiveSecondsData, {analysisKeys: [{key: EVENT_STATS_MAP.BYTES_SENT, check: ANALYSIS_CHECKS.INCREASING, prop}]});\n const receiveAnalysis = StatsAnalyzer.analyze(fiveSecondsData, {analysisKeys: [{key: EVENT_STATS_MAP.BYTES_RECEIVED, check: ANALYSIS_CHECKS.INCREASING, prop}]});\n\n if (!sendAnalysis.valid && sendAnalysis.data.bytesSent.reports.length > 0) {\n if (!this.sendRemainStopped) {\n const ret = {stop: true, stat: EVENT_STATS_MAP.BYTES_SENT};\n\n this.callback(ret);\n this.sendRemainStopped = true;\n this.first = null;\n\n return ret;\n }\n }\n else if (sendAnalysis.valid && sendAnalysis.data.bytesSent.reports.length > 0) {\n this.sendRemainStopped = false;\n }\n if (!receiveAnalysis.valid && receiveAnalysis.data.bytesReceived.reports.length > 0) {\n if (!this.recvRemainStopped) {\n const ret = {stop: true, stat: EVENT_STATS_MAP.BYTES_RECEIVED};\n\n this.callback(ret);\n this.recvRemainStopped = true;\n this.first = null;\n\n return ret;\n }\n }\n else if (receiveAnalysis.valid && receiveAnalysis.data.bytesReceived.reports.length > 0) {\n this.recvRemainStopped = false;\n }\n\n return null;\n }\n\n /**\n * handles all the types of events that need to be sent when they happen from getStats API\n * @param {WebRTCData} data\n * @returns {Object}\n */\n event(data) {\n return {\n start: this.start(data),\n stop: this.stop()\n };\n }\n}\n"]}
1
+ {"version":3,"names":["operateEvent","operate","type","keys","stat","kind","foundMatch","found","some","key","match","data","StatsEvents","series","callback","MEETINGS","first","sendRemainStopped","recvRemainStopped","getData","operator","EVENT_TYPES","LOCAL","DEFAULT_EVENT_AUDIO_SEND_KEYS","EVENT_STATS_MAP","BYTES_SENT","AUDIO","DEFAULT_EVENT_VIDEO_SEND_KEYS","VIDEO","REMOTE","DEFAULT_EVENT_VIDEO_RECEIVE_KEYS","BYTES_RECEIVED","DEFAULT_EVENT_AUDIO_RECEIVE_KEYS","somethingMatched","find","element","get","length","fiveSecondsData","getSlice","prop","rtpOutAudio","rtpInAudio","rtpInVideo","rtpOutVideo","sendAnalysis","StatsAnalyzer","analyze","analysisKeys","check","ANALYSIS_CHECKS","INCREASING","receiveAnalysis","valid","bytesSent","reports","ret","stop","bytesReceived","start"],"sources":["events.js"],"sourcesContent":["import StatsAnalyzer from '../analyzer/analyzer';\nimport {\n DEFAULT_EVENT_VIDEO_SEND_KEYS,\n DEFAULT_EVENT_AUDIO_SEND_KEYS,\n DEFAULT_EVENT_AUDIO_RECEIVE_KEYS,\n DEFAULT_EVENT_VIDEO_RECEIVE_KEYS,\n EVENT_TYPES,\n EVENT_STATS_MAP,\n MEETINGS,\n AUDIO,\n VIDEO,\n ANALYSIS_CHECKS\n} from '../constants';\n\n/**\n * @param {Object} operate the filtered, parsed, converted, transformed, simplified data point to check against\n * @param {String} type - local or remote\n * @param {String} keys - the stat keys for types of stats defined by DEFAULT_TRANSFORM_REGEX\n * @param {String} stat - the accessor to get the actual stat\n * @param {String} kind - audio or video\n * @returns {Object} always whatever the first sentFirstVideoBytes were, in the past or if it happened now, or undefined if never\n * @private\n * @memberof StatsEvents\n */\nconst operateEvent = (operate, type, keys, stat, kind) => {\n const foundMatch = {};\n\n foundMatch.found = keys.some((key) => {\n if (operate[key] && operate[key][stat] && operate[key][stat] > 0) {\n foundMatch.match = {\n type,\n key,\n data: operate[key],\n stat,\n kind\n };\n\n return true;\n }\n\n return false;\n });\n\n return foundMatch;\n};\n\n/**\n * @export\n * @class StatsEvents\n */\nexport default class StatsEvents {\n namespace = MEETINGS;\n\n /**\n * constructs an instance\n * @constructor\n * @param {StatsHistory} series\n * @param {Function} callback\n * @memberof StatsEvents\n */\n constructor(series = null, callback = () => {}) {\n /**\n * @instance\n * @type {StatsHistory}\n * @private\n * @memberof StatsEvents\n */\n this.series = series;\n /**\n * @instance\n * @type {Function}\n * @private\n * @memberof StatsEvents\n */\n this.callback = callback;\n /**\n * @instance\n * @type {WebRTCData}\n * @private\n * @memberof StatsEvents\n */\n this.first = null;\n /**\n * @instance\n * @type {Boolean}\n * @private\n * @memberof StatsEvents\n */\n this.sendRemainStopped = false;\n /**\n * @instance\n * @type {Boolean}\n * @private\n * @memberof StatsEvents\n */\n this.recvRemainStopped = false;\n }\n\n /**\n * looks for data starting to flow through\n * @param {WebRTCData} data\n * @returns {Object}\n */\n start(data) {\n if (data && data.data && data.data.getData()) {\n const operate = data.data.getData();\n\n if (operate && !this.first) {\n const operator = [\n operateEvent(operate, EVENT_TYPES.LOCAL, DEFAULT_EVENT_AUDIO_SEND_KEYS, EVENT_STATS_MAP.BYTES_SENT, AUDIO),\n operateEvent(operate, EVENT_TYPES.LOCAL, DEFAULT_EVENT_VIDEO_SEND_KEYS, EVENT_STATS_MAP.BYTES_SENT, VIDEO),\n operateEvent(operate, EVENT_TYPES.REMOTE, DEFAULT_EVENT_VIDEO_RECEIVE_KEYS, EVENT_STATS_MAP.BYTES_RECEIVED, VIDEO),\n operateEvent(operate, EVENT_TYPES.REMOTE, DEFAULT_EVENT_AUDIO_RECEIVE_KEYS, EVENT_STATS_MAP.BYTES_RECEIVED, AUDIO)\n ];\n const somethingMatched = operator.find((element) => element && element.found && element.match);\n\n if (somethingMatched) {\n this.first = somethingMatched.match;\n this.callback(this.first);\n\n return somethingMatched;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Looks for data to stop coming through\n * @returns {Object}\n */\n stop() {\n if (!this.series || this.series.get().length < 5) {\n return null;\n }\n const fiveSecondsData = this.series.getSlice(5);\n const prop = fiveSecondsData[0] && fiveSecondsData[0].rtpOutAudio || fiveSecondsData[0].rtpInAudio || fiveSecondsData[0].rtpInVideo || fiveSecondsData[0].rtpOutVideo;\n const sendAnalysis = StatsAnalyzer.analyze(fiveSecondsData, {analysisKeys: [{key: EVENT_STATS_MAP.BYTES_SENT, check: ANALYSIS_CHECKS.INCREASING, prop}]});\n const receiveAnalysis = StatsAnalyzer.analyze(fiveSecondsData, {analysisKeys: [{key: EVENT_STATS_MAP.BYTES_RECEIVED, check: ANALYSIS_CHECKS.INCREASING, prop}]});\n\n if (!sendAnalysis.valid && sendAnalysis.data.bytesSent.reports.length > 0) {\n if (!this.sendRemainStopped) {\n const ret = {stop: true, stat: EVENT_STATS_MAP.BYTES_SENT};\n\n this.callback(ret);\n this.sendRemainStopped = true;\n this.first = null;\n\n return ret;\n }\n }\n else if (sendAnalysis.valid && sendAnalysis.data.bytesSent.reports.length > 0) {\n this.sendRemainStopped = false;\n }\n if (!receiveAnalysis.valid && receiveAnalysis.data.bytesReceived.reports.length > 0) {\n if (!this.recvRemainStopped) {\n const ret = {stop: true, stat: EVENT_STATS_MAP.BYTES_RECEIVED};\n\n this.callback(ret);\n this.recvRemainStopped = true;\n this.first = null;\n\n return ret;\n }\n }\n else if (receiveAnalysis.valid && receiveAnalysis.data.bytesReceived.reports.length > 0) {\n this.recvRemainStopped = false;\n }\n\n return null;\n }\n\n /**\n * handles all the types of events that need to be sent when they happen from getStats API\n * @param {WebRTCData} data\n * @returns {Object}\n */\n event(data) {\n return {\n start: this.start(data),\n stop: this.stop()\n };\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["filter.js"],"names":["StatsFilter","objectMode","report","encoding","callback","data","StatsTransformer","transform","push","WebRTCData","Transform"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA;;;;;;AAEA;AACA;AACA;IACqBA,W;;;;;AACnB;AACF;AACA;AACA;AACE,yBAAc;AAAA;AAAA,6BACN;AAACC,MAAAA,UAAU,EAAE;AAAb,KADM;AAEb;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;;WACE,oBAAWC,MAAX,EAAmBC,QAAnB,EAA6BC,QAA7B,EAAuC;AACrC,UAAI,CAACF,MAAL,EAAa;AACXE,QAAAA,QAAQ;AAER;AACD;;AACD,UAAMC,IAAI,GAAGC,qBAAiBC,SAAjB,CAA2BL,MAA3B,CAAb;;AACA,UAAMM,IAAI,GAAG,IAAIC,aAAJ,CAAeJ,IAAf,CAAb;AAEA,WAAKG,IAAL,CAAU;AACRH,QAAAA,IAAI,EAAEG;AADE,OAAV;AAGAJ,MAAAA,QAAQ;AACT;;;EA9BsCM,yB","sourcesContent":["import {Transform} from 'readable-stream';\n\nimport StatsTransformer from '../stats/transformer';\nimport WebRTCData from '../stats/data';\n\n/**\n * Reforms the interesting data from an RTCStatsReport to a new format\n */\nexport default class StatsFilter extends Transform {\n /**\n * Tells the Stream we're operating in objectMode\n * @private\n */\n constructor() {\n super({objectMode: true});\n }\n\n /**\n * Filters out data on the RTCStatsReport to the data around call quality and pushes it as a WebRTCData object\n * @param {RTCStatsReport} report\n * @param {*} encoding\n * @param {Function} callback\n * @private\n * @returns {undefined}\n */\n _transform(report, encoding, callback) {\n if (!report) {\n callback();\n\n return;\n }\n const data = StatsTransformer.transform(report);\n const push = new WebRTCData(data);\n\n this.push({\n data: push\n });\n callback();\n }\n}\n"]}
1
+ {"version":3,"names":["StatsFilter","objectMode","report","encoding","callback","data","StatsTransformer","transform","push","WebRTCData","Transform"],"sources":["filter.js"],"sourcesContent":["import {Transform} from 'readable-stream';\n\nimport StatsTransformer from '../stats/transformer';\nimport WebRTCData from '../stats/data';\n\n/**\n * Reforms the interesting data from an RTCStatsReport to a new format\n */\nexport default class StatsFilter extends Transform {\n /**\n * Tells the Stream we're operating in objectMode\n * @private\n */\n constructor() {\n super({objectMode: true});\n }\n\n /**\n * Filters out data on the RTCStatsReport to the data around call quality and pushes it as a WebRTCData object\n * @param {RTCStatsReport} report\n * @param {*} encoding\n * @param {Function} callback\n * @private\n * @returns {undefined}\n */\n _transform(report, encoding, callback) {\n if (!report) {\n callback();\n\n return;\n }\n const data = StatsTransformer.transform(report);\n const push = new WebRTCData(data);\n\n this.push({\n data: push\n });\n callback();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA;;;;;;AAEA;AACA;AACA;IACqBA,W;;;;;EACnB;AACF;AACA;AACA;EACE,uBAAc;IAAA;IAAA,yBACN;MAACC,UAAU,EAAE;IAAb,CADM;EAEb;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;;WACE,oBAAWC,MAAX,EAAmBC,QAAnB,EAA6BC,QAA7B,EAAuC;MACrC,IAAI,CAACF,MAAL,EAAa;QACXE,QAAQ;QAER;MACD;;MACD,IAAMC,IAAI,GAAGC,qBAAiBC,SAAjB,CAA2BL,MAA3B,CAAb;;MACA,IAAMM,IAAI,GAAG,IAAIC,aAAJ,CAAeJ,IAAf,CAAb;MAEA,KAAKG,IAAL,CAAU;QACRH,IAAI,EAAEG;MADE,CAAV;MAGAJ,QAAQ;IACT;;;EA9BsCM,yB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["history.js"],"names":["StatsHistory","max","history","index","length","getAt","previous","getMostRecent","current","exclusiveEnd","slice","data","removed","pop","unshift"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;;AACA;AACA;AACA;AACA;IACqBA,Y;AACnB;AACF;AACA;AACA;AACE,wBAAYC,GAAZ,EAAiB;AAAA;;AACf;AACJ;AACA;AACA;AACA;AACA;AACI,SAAKC,OAAL,GAAe,EAAf;AACA;AACJ;AACA;AACA;AACA;AACA;;AACI,SAAKD,GAAL,GAAWA,GAAX;AACD;AAED;AACF;AACA;AACA;AACA;;;;;WACE,eAAM;AACJ,aAAO,KAAKC,OAAZ;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,iBAAQ;AACN,WAAKA,OAAL,GAAe,EAAf;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,eAAMC,KAAN,EAAa;AACX,aAAO,KAAKD,OAAL,CAAaC,KAAb,CAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,yBAAgB;AACd,aAAO,KAAKD,OAAL,CAAaE,MAAb,GAAsB,CAAtB,GAA0B,KAAKC,KAAL,CAAW,CAAX,CAA1B,GAA0C,IAAjD;AACD;AAED;AACF;AACA;AACA;;;;WACE,yBAAgB;AACd,aAAO;AACLC,QAAAA,QAAQ,EAAE,KAAKC,aAAL,EADL;AAELC,QAAAA,OAAO,EAAE,KAAKN,OAAL,CAAaE,MAAb,GAAsB,CAAtB,GAA0B,KAAKC,KAAL,CAAW,CAAX,CAA1B,GAA0C;AAF9C,OAAP;AAID;AAED;AACF;AACA;AACA;AACA;;;;WACE,kBAASI,YAAT,EAAuB;AACrB,aAAO,KAAKP,OAAL,CAAaQ,KAAb,CAAmB,CAAnB,EAAsBD,YAAtB,CAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,aAAIE,IAAJ,EAAU;AACR,UAAIC,OAAO,GAAG,IAAd;;AAEA,UAAI,KAAKV,OAAL,CAAaE,MAAb,IAAuB,KAAKH,GAAhC,EAAqC;AACnCW,QAAAA,OAAO,GAAG,KAAKV,OAAL,CAAaW,GAAb,EAAV;AACD;;AACD,WAAKX,OAAL,CAAaY,OAAb,CAAqBH,IAArB;AAEA,aAAOC,OAAP;AACD","sourcesContent":["/**\n * stores the last x filtered stream datas\n */\n/**\n * @export\n * @class StatsHistory\n */\nexport default class StatsHistory {\n /**\n * instantiate our wrapped history array\n * @param {Number} max\n */\n constructor(max) {\n /**\n * @instance\n * @type {Array}\n * @public\n * @memberof StatsHistory\n */\n this.history = [];\n /**\n * @instance\n * @type {Number}\n * @public\n * @memberof StatsHistory\n */\n this.max = max;\n }\n\n /**\n * @returns {Array} the array of stats reports, read from [0] = most recent to [length - 1] = least recent\n * @public\n * @memberof StatsHistory\n */\n get() {\n return this.history;\n }\n\n /**\n * deletes the history array and resets it\n * @returns {undefined}\n * @public\n * @memberof StatsHistory\n */\n clear() {\n this.history = [];\n }\n\n /**\n * gets the stored stat\n * @param {Number} index the location\n * @returns {Object} the stat at location index\n * @public\n * @memberof StatsHistory\n */\n getAt(index) {\n return this.history[index];\n }\n\n /**\n * gets the most recently stored stat\n * @returns {Object} the most recently added stat to the history recorder\n * @public\n * @memberof StatsHistory\n */\n getMostRecent() {\n return this.history.length > 1 ? this.getAt(0) : null;\n }\n\n /**\n * gets the last two values, that can be used to compare\n * @returns {Object} {previous: WebRTCData, current: WebRTCData}\n */\n getComparable() {\n return {\n previous: this.getMostRecent(),\n current: this.history.length > 2 ? this.getAt(1) : null\n };\n }\n\n /**\n * gets a cut of the n most recent WebRTC datas stored\n * @param {Number} exclusiveEnd\n * @returns {Array}\n */\n getSlice(exclusiveEnd) {\n return this.history.slice(0, exclusiveEnd);\n }\n\n /**\n * adds a history entry into tshe array at the head, removes from the tail\n * if too large, returns the old tail if removed\n * @param {WebRTCData} data filtered stats report to add to the history array\n * @returns {Object} the removed stats report at the end if that had to be removed\n * to make space for the new stats data report to be added to the front\n */\n add(data) {\n let removed = null;\n\n if (this.history.length >= this.max) {\n removed = this.history.pop();\n }\n this.history.unshift(data);\n\n return removed;\n }\n}\n"]}
1
+ {"version":3,"names":["StatsHistory","max","history","index","length","getAt","previous","getMostRecent","current","exclusiveEnd","slice","data","removed","pop","unshift"],"sources":["history.js"],"sourcesContent":["/**\n * stores the last x filtered stream datas\n */\n/**\n * @export\n * @class StatsHistory\n */\nexport default class StatsHistory {\n /**\n * instantiate our wrapped history array\n * @param {Number} max\n */\n constructor(max) {\n /**\n * @instance\n * @type {Array}\n * @public\n * @memberof StatsHistory\n */\n this.history = [];\n /**\n * @instance\n * @type {Number}\n * @public\n * @memberof StatsHistory\n */\n this.max = max;\n }\n\n /**\n * @returns {Array} the array of stats reports, read from [0] = most recent to [length - 1] = least recent\n * @public\n * @memberof StatsHistory\n */\n get() {\n return this.history;\n }\n\n /**\n * deletes the history array and resets it\n * @returns {undefined}\n * @public\n * @memberof StatsHistory\n */\n clear() {\n this.history = [];\n }\n\n /**\n * gets the stored stat\n * @param {Number} index the location\n * @returns {Object} the stat at location index\n * @public\n * @memberof StatsHistory\n */\n getAt(index) {\n return this.history[index];\n }\n\n /**\n * gets the most recently stored stat\n * @returns {Object} the most recently added stat to the history recorder\n * @public\n * @memberof StatsHistory\n */\n getMostRecent() {\n return this.history.length > 1 ? this.getAt(0) : null;\n }\n\n /**\n * gets the last two values, that can be used to compare\n * @returns {Object} {previous: WebRTCData, current: WebRTCData}\n */\n getComparable() {\n return {\n previous: this.getMostRecent(),\n current: this.history.length > 2 ? this.getAt(1) : null\n };\n }\n\n /**\n * gets a cut of the n most recent WebRTC datas stored\n * @param {Number} exclusiveEnd\n * @returns {Array}\n */\n getSlice(exclusiveEnd) {\n return this.history.slice(0, exclusiveEnd);\n }\n\n /**\n * adds a history entry into tshe array at the head, removes from the tail\n * if too large, returns the old tail if removed\n * @param {WebRTCData} data filtered stats report to add to the history array\n * @returns {Object} the removed stats report at the end if that had to be removed\n * to make space for the new stats data report to be added to the front\n */\n add(data) {\n let removed = null;\n\n if (this.history.length >= this.max) {\n removed = this.history.pop();\n }\n this.history.unshift(data);\n\n return removed;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;;AACA;AACA;AACA;AACA;IACqBA,Y;EACnB;AACF;AACA;AACA;EACE,sBAAYC,GAAZ,EAAiB;IAAA;;IACf;AACJ;AACA;AACA;AACA;AACA;IACI,KAAKC,OAAL,GAAe,EAAf;IACA;AACJ;AACA;AACA;AACA;AACA;;IACI,KAAKD,GAAL,GAAWA,GAAX;EACD;EAED;AACF;AACA;AACA;AACA;;;;;WACE,eAAM;MACJ,OAAO,KAAKC,OAAZ;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,iBAAQ;MACN,KAAKA,OAAL,GAAe,EAAf;IACD;IAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,eAAMC,KAAN,EAAa;MACX,OAAO,KAAKD,OAAL,CAAaC,KAAb,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,yBAAgB;MACd,OAAO,KAAKD,OAAL,CAAaE,MAAb,GAAsB,CAAtB,GAA0B,KAAKC,KAAL,CAAW,CAAX,CAA1B,GAA0C,IAAjD;IACD;IAED;AACF;AACA;AACA;;;;WACE,yBAAgB;MACd,OAAO;QACLC,QAAQ,EAAE,KAAKC,aAAL,EADL;QAELC,OAAO,EAAE,KAAKN,OAAL,CAAaE,MAAb,GAAsB,CAAtB,GAA0B,KAAKC,KAAL,CAAW,CAAX,CAA1B,GAA0C;MAF9C,CAAP;IAID;IAED;AACF;AACA;AACA;AACA;;;;WACE,kBAASI,YAAT,EAAuB;MACrB,OAAO,KAAKP,OAAL,CAAaQ,KAAb,CAAmB,CAAnB,EAAsBD,YAAtB,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,aAAIE,IAAJ,EAAU;MACR,IAAIC,OAAO,GAAG,IAAd;;MAEA,IAAI,KAAKV,OAAL,CAAaE,MAAb,IAAuB,KAAKH,GAAhC,EAAqC;QACnCW,OAAO,GAAG,KAAKV,OAAL,CAAaW,GAAb,EAAV;MACD;;MACD,KAAKX,OAAL,CAAaY,OAAb,CAAqBH,IAArB;MAEA,OAAOC,OAAP;IACD"}
@@ -49,63 +49,63 @@ var WebRTCStats = /*#__PURE__*/function (_StatelessWebexPlugin) {
49
49
  var _super = _createSuper(WebRTCStats);
50
50
 
51
51
  /**
52
- *
53
- * @param {Object} attrs
54
- * @param {Object} options
55
- * @param {Object} [optionalCreateOptions]
56
- */
52
+ *
53
+ * @param {Object} attrs
54
+ * @param {Object} options
55
+ * @param {Object} [optionalCreateOptions]
56
+ */
57
57
  function WebRTCStats(attrs, options, optionalCreateOptions) {
58
58
  var _this;
59
59
 
60
60
  (0, _classCallCheck2.default)(this, WebRTCStats);
61
61
  _this = _super.call(this, {}, options);
62
62
  /**
63
- * @instance
64
- * @type {Object}
65
- * @private
66
- * @memberof WebRTCStats
67
- */
63
+ * @instance
64
+ * @type {Object}
65
+ * @private
66
+ * @memberof WebRTCStats
67
+ */
68
68
 
69
69
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "namespace", _constants.MEETINGS);
70
70
  _this.attrs = attrs;
71
71
  /**
72
- * @instance
73
- * @type {Object}
74
- * @private
75
- * @memberof WebRTCStats
76
- */
72
+ * @instance
73
+ * @type {Object}
74
+ * @private
75
+ * @memberof WebRTCStats
76
+ */
77
77
 
78
78
  _this.options = options;
79
79
  /**
80
- * @instance
81
- * @type {Object}
82
- * @public
83
- * @memberof WebRTCStats
84
- */
80
+ * @instance
81
+ * @type {Object}
82
+ * @public
83
+ * @memberof WebRTCStats
84
+ */
85
85
 
86
86
  _this.senders = {};
87
87
  /**
88
- * @instance
89
- * @type {Object}
90
- * @public
91
- * @memberof WebRTCStats
92
- */
88
+ * @instance
89
+ * @type {Object}
90
+ * @public
91
+ * @memberof WebRTCStats
92
+ */
93
93
 
94
94
  _this.receivers = {};
95
95
  /**
96
- * @instance
97
- * @type {Meeting}
98
- * @private
99
- * @memberof WebRTCStats
100
- */
96
+ * @instance
97
+ * @type {Meeting}
98
+ * @private
99
+ * @memberof WebRTCStats
100
+ */
101
101
 
102
102
  _this.meetingRef = null;
103
103
  /**
104
- * @instance
105
- * @type {Object}
106
- * @public
107
- * @memberof WebRTCStats
108
- */
104
+ * @instance
105
+ * @type {Object}
106
+ * @public
107
+ * @memberof WebRTCStats
108
+ */
109
109
 
110
110
  _this.statsConfig = null;
111
111
 
@@ -114,15 +114,15 @@ var WebRTCStats = /*#__PURE__*/function (_StatelessWebexPlugin) {
114
114
  return _this;
115
115
  }
116
116
  /**
117
- * @param {Object} [optionalCreateOptions]
118
- * @param {Object} optionalCreateOptions.config
119
- * @param {Meeting} optionalCreateOptions.meeting
120
- * @param {Object} optionalCreateOptions.senders
121
- * @param {Object} optionalCreateOptions.receivers
122
- * @returns {WebRTCStats}
123
- * @private
124
- * @memberof WebRTCStats
125
- */
117
+ * @param {Object} [optionalCreateOptions]
118
+ * @param {Object} optionalCreateOptions.config
119
+ * @param {Meeting} optionalCreateOptions.meeting
120
+ * @param {Object} optionalCreateOptions.senders
121
+ * @param {Object} optionalCreateOptions.receivers
122
+ * @returns {WebRTCStats}
123
+ * @private
124
+ * @memberof WebRTCStats
125
+ */
126
126
 
127
127
 
128
128
  (0, _createClass2.default)(WebRTCStats, [{
@@ -149,11 +149,11 @@ var WebRTCStats = /*#__PURE__*/function (_StatelessWebexPlugin) {
149
149
  return this;
150
150
  }
151
151
  /**
152
- * @param {Object} config
153
- * @returns {WebRTCStats}
154
- * @public
155
- * @memberof WebRTCStats
156
- */
152
+ * @param {Object} config
153
+ * @returns {WebRTCStats}
154
+ * @public
155
+ * @memberof WebRTCStats
156
+ */
157
157
 
158
158
  }, {
159
159
  key: "setConfig",
@@ -161,11 +161,11 @@ var WebRTCStats = /*#__PURE__*/function (_StatelessWebexPlugin) {
161
161
  this.statsConfig = config;
162
162
  }
163
163
  /**
164
- * @param {Meeting} meeting
165
- * @returns {WebRTCStats}
166
- * @public
167
- * @memberof WebRTCStats
168
- */
164
+ * @param {Meeting} meeting
165
+ * @returns {WebRTCStats}
166
+ * @public
167
+ * @memberof WebRTCStats
168
+ */
169
169
 
170
170
  }, {
171
171
  key: "associateMeeting",
@@ -174,12 +174,12 @@ var WebRTCStats = /*#__PURE__*/function (_StatelessWebexPlugin) {
174
174
  return this;
175
175
  }
176
176
  /**
177
- * @param {Object} senders
178
- * @param {Boolean} useConfig
179
- * @returns {WebRTCStats}
180
- * @public
181
- * @memberof WebRTCStats
182
- */
177
+ * @param {Object} senders
178
+ * @param {Boolean} useConfig
179
+ * @returns {WebRTCStats}
180
+ * @public
181
+ * @memberof WebRTCStats
182
+ */
183
183
 
184
184
  }, {
185
185
  key: "addSenders",
@@ -198,12 +198,12 @@ var WebRTCStats = /*#__PURE__*/function (_StatelessWebexPlugin) {
198
198
  return this;
199
199
  }
200
200
  /**
201
- * @param {Object} sender
202
- * @param {Boolean} useConfig
203
- * @returns {WebRTCStats}
204
- * @public
205
- * @memberof WebRTCStats
206
- */
201
+ * @param {Object} sender
202
+ * @param {Boolean} useConfig
203
+ * @returns {WebRTCStats}
204
+ * @public
205
+ * @memberof WebRTCStats
206
+ */
207
207
 
208
208
  }, {
209
209
  key: "addSender",
@@ -222,12 +222,12 @@ var WebRTCStats = /*#__PURE__*/function (_StatelessWebexPlugin) {
222
222
  return this;
223
223
  }
224
224
  /**
225
- *
226
- * @param {String} id
227
- * @returns {WebRTCStats}
228
- * @public
229
- * @memberof WebRTCStats
230
- */
225
+ *
226
+ * @param {String} id
227
+ * @returns {WebRTCStats}
228
+ * @public
229
+ * @memberof WebRTCStats
230
+ */
231
231
 
232
232
  }, {
233
233
  key: "addSenderStats",
@@ -237,12 +237,12 @@ var WebRTCStats = /*#__PURE__*/function (_StatelessWebexPlugin) {
237
237
  return newSender;
238
238
  }
239
239
  /**
240
- *
241
- * @param {String} id
242
- * @returns {WebRTCStats}
243
- * @public
244
- * @memberof WebRTCStats
245
- */
240
+ *
241
+ * @param {String} id
242
+ * @returns {WebRTCStats}
243
+ * @public
244
+ * @memberof WebRTCStats
245
+ */
246
246
 
247
247
  }, {
248
248
  key: "addReceiverStats",
@@ -252,12 +252,12 @@ var WebRTCStats = /*#__PURE__*/function (_StatelessWebexPlugin) {
252
252
  return newReceiver;
253
253
  }
254
254
  /**
255
- * @param {Object} receivers
256
- * @param {boolean} useConfig
257
- * @returns {WebRTCStats}
258
- * @public
259
- * @memberof WebRTCStats
260
- */
255
+ * @param {Object} receivers
256
+ * @param {boolean} useConfig
257
+ * @returns {WebRTCStats}
258
+ * @public
259
+ * @memberof WebRTCStats
260
+ */
261
261
 
262
262
  }, {
263
263
  key: "addReceivers",
@@ -276,12 +276,12 @@ var WebRTCStats = /*#__PURE__*/function (_StatelessWebexPlugin) {
276
276
  return this;
277
277
  }
278
278
  /**
279
- * @param {Object} receiver
280
- * @param {boolean} useConfig
281
- * @returns {WebRTCStats}
282
- * @public
283
- * @memberof WebRTCStats
284
- */
279
+ * @param {Object} receiver
280
+ * @param {boolean} useConfig
281
+ * @returns {WebRTCStats}
282
+ * @public
283
+ * @memberof WebRTCStats
284
+ */
285
285
 
286
286
  }, {
287
287
  key: "addReceiver",
@@ -300,10 +300,10 @@ var WebRTCStats = /*#__PURE__*/function (_StatelessWebexPlugin) {
300
300
  return this;
301
301
  }
302
302
  /**
303
- * @returns {Object}
304
- * @public
305
- * @memberof WebRTCStats
306
- */
303
+ * @returns {Object}
304
+ * @public
305
+ * @memberof WebRTCStats
306
+ */
307
307
 
308
308
  }, {
309
309
  key: "getReceivers",
@@ -311,10 +311,10 @@ var WebRTCStats = /*#__PURE__*/function (_StatelessWebexPlugin) {
311
311
  return this.receivers;
312
312
  }
313
313
  /**
314
- * @returns {Object}
315
- * @public
316
- * @memberof WebRTCStats
317
- */
314
+ * @returns {Object}
315
+ * @public
316
+ * @memberof WebRTCStats
317
+ */
318
318
 
319
319
  }, {
320
320
  key: "getSenders",
@@ -322,11 +322,11 @@ var WebRTCStats = /*#__PURE__*/function (_StatelessWebexPlugin) {
322
322
  return this.senders;
323
323
  }
324
324
  /**
325
- * @param {String} id
326
- * @returns {Object}
327
- * @public
328
- * @memberof WebRTCStats
329
- */
325
+ * @param {String} id
326
+ * @returns {Object}
327
+ * @public
328
+ * @memberof WebRTCStats
329
+ */
330
330
 
331
331
  }, {
332
332
  key: "getSender",
@@ -334,11 +334,11 @@ var WebRTCStats = /*#__PURE__*/function (_StatelessWebexPlugin) {
334
334
  return this.senders[id];
335
335
  }
336
336
  /**
337
- * @param {String} id
338
- * @returns {Object}
339
- * @public
340
- * @memberof WebRTCStats
341
- */
337
+ * @param {String} id
338
+ * @returns {Object}
339
+ * @public
340
+ * @memberof WebRTCStats
341
+ */
342
342
 
343
343
  }, {
344
344
  key: "getReceiver",
@@ -346,10 +346,10 @@ var WebRTCStats = /*#__PURE__*/function (_StatelessWebexPlugin) {
346
346
  return this.receivers[id];
347
347
  }
348
348
  /**
349
- * @returns {Object}
350
- * @public
351
- * @memberof WebRTCStats
352
- */
349
+ * @returns {Object}
350
+ * @public
351
+ * @memberof WebRTCStats
352
+ */
353
353
 
354
354
  }, {
355
355
  key: "destroySenders",
@@ -361,10 +361,10 @@ var WebRTCStats = /*#__PURE__*/function (_StatelessWebexPlugin) {
361
361
  });
362
362
  }
363
363
  /**
364
- * @returns {undefined}
365
- * @public
366
- * @memberof WebRTCStats
367
- */
364
+ * @returns {undefined}
365
+ * @public
366
+ * @memberof WebRTCStats
367
+ */
368
368
 
369
369
  }, {
370
370
  key: "destroyReceivers",
@@ -376,11 +376,11 @@ var WebRTCStats = /*#__PURE__*/function (_StatelessWebexPlugin) {
376
376
  });
377
377
  }
378
378
  /**
379
- * @param {String} id
380
- * @returns {undefined}
381
- * @public
382
- * @memberof WebRTCStats
383
- */
379
+ * @param {String} id
380
+ * @returns {undefined}
381
+ * @public
382
+ * @memberof WebRTCStats
383
+ */
384
384
 
385
385
  }, {
386
386
  key: "destroySender",
@@ -397,11 +397,11 @@ var WebRTCStats = /*#__PURE__*/function (_StatelessWebexPlugin) {
397
397
  delete this.receivers[id];
398
398
  }
399
399
  /**
400
- * @param {String} id
401
- * @returns {undefined}
402
- * @public
403
- * @memberof WebRTCStats
404
- */
400
+ * @param {String} id
401
+ * @returns {undefined}
402
+ * @public
403
+ * @memberof WebRTCStats
404
+ */
405
405
 
406
406
  }, {
407
407
  key: "destroyReceiver",