UNPKG

twilio-video

Version:

Twilio Video JavaScript Library

38 lines (30 loc) 338 kB
/*! twilio-video.js 2.35.0 The following license applies to all parts of this software except as documented below. Copyright (C) 2019-2026 Twilio, inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of Twilio nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ !function(e){var t={exports:{}},n=(t.exports,function(){function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function t(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var t=e.default;if("function"==typeof t){var n=function e(){var n=!1;try{n=this instanceof e}catch{}return n?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,i.get?i:{enumerable:!0,get:function(){return e[t]}})}),n}var n={exports:{}},i={},r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,i=arguments.length;n<i;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},o.apply(this,arguments)};function a(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r<i.length;r++)t.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(e,i[r])&&(n[i[r]]=e[i[r]])}return n}function c(e,t,n,i){var r,s=arguments.length,o=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,n,o):r(t,n))||o);return s>3&&o&&Object.defineProperty(t,n,o),o}function l(e,t){return function(n,i){t(n,i,e)}}function d(e,t,n,i,r,s){function o(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var a,c=i.kind,l="getter"===c?"get":"setter"===c?"set":"value",d=!t&&e?i.static?e:e.prototype:null,u=t||(d?Object.getOwnPropertyDescriptor(d,i.name):{}),h=!1,p=n.length-1;p>=0;p--){var f={};for(var m in i)f[m]="access"===m?{}:i[m];for(var m in i.access)f.access[m]=i.access[m];f.addInitializer=function(e){if(h)throw new TypeError("Cannot add initializers after decoration has completed");s.push(o(e||null))};var g=(0,n[p])("accessor"===c?{get:u.get,set:u.set}:u[l],f);if("accessor"===c){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(a=o(g.get))&&(u.get=a),(a=o(g.set))&&(u.set=a),(a=o(g.init))&&r.unshift(a)}else(a=o(g))&&("field"===c?r.unshift(a):u[l]=a)}d&&Object.defineProperty(d,i.name,u),h=!0}function u(e,t,n){for(var i=arguments.length>2,r=0;r<t.length;r++)n=i?t[r].call(e,n):t[r].call(e);return i?n:void 0}function h(e){return"symbol"==typeof e?e:"".concat(e)}function p(e,t,n){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:n?"".concat(n," ",t):t})}function f(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function m(e,t,n,i){return new(n||(n=Promise))(function(r,s){function o(e){try{c(i.next(e))}catch(e){s(e)}}function a(e){try{c(i.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(o,a)}c((i=i.apply(e,t||[])).next())})}function g(e,t){var n,i,r,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return o.next=a(0),o.throw=a(1),o.return=a(2),"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(a){return function(c){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,a[0]&&(s=0)),s;)try{if(n=1,i&&(r=2&a[0]?i.return:a[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,a[1])).done)return r;switch(i=0,r&&(a=[2&a[0],r.value]),a[0]){case 0:case 1:r=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,i=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(r=s.trys,(r=r.length>0&&r[r.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!r||a[1]>r[0]&&a[1]<r[3])){s.label=a[1];break}if(6===a[0]&&s.label<r[1]){s.label=r[1],r=a;break}if(r&&s.label<r[2]){s.label=r[2],s.ops.push(a);break}r[2]&&s.ops.pop(),s.trys.pop();continue}a=t.call(e,s)}catch(e){a=[6,e],i=0}finally{n=r=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}}var _=Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]};function v(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||_(t,e,n)}function b(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],i=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function y(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var i,r,s=n.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(i=s.next()).done;)o.push(i.value)}catch(e){r={error:e}}finally{try{i&&!i.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}return o}function k(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(y(arguments[t]));return e}function w(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var i=Array(e),r=0;for(t=0;t<n;t++)for(var s=arguments[t],o=0,a=s.length;o<a;o++,r++)i[r]=s[o];return i}function S(e,t,n){if(n||2===arguments.length)for(var i,r=0,s=t.length;r<s;r++)!i&&r in t||(i||(i=Array.prototype.slice.call(t,0,r)),i[r]=t[r]);return e.concat(i||Array.prototype.slice.call(t))}function T(e){return this instanceof T?(this.v=e,this):new T(e)}function C(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,r=n.apply(e,t||[]),s=[];return i=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),o("next"),o("throw"),o("return",function(e){return function(t){return Promise.resolve(t).then(e,l)}}),i[Symbol.asyncIterator]=function(){return this},i;function o(e,t){r[e]&&(i[e]=function(t){return new Promise(function(n,i){s.push([e,t,n,i])>1||a(e,t)})},t&&(i[e]=t(i[e])))}function a(e,t){try{(n=r[e](t)).value instanceof T?Promise.resolve(n.value.v).then(c,l):d(s[0][2],n)}catch(e){d(s[0][3],e)}var n}function c(e){a("next",e)}function l(e){a("throw",e)}function d(e,t){e(t),s.shift(),s.length&&a(s[0][0],s[0][1])}}function P(e){var t,n;return t={},i("next"),i("throw",function(e){throw e}),i("return"),t[Symbol.iterator]=function(){return this},t;function i(i,r){t[i]=e[i]?function(t){return(n=!n)?{value:T(e[i](t)),done:!1}:r?r(t):t}:r}}function E(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=b(e),t={},i("next"),i("throw"),i("return"),t[Symbol.asyncIterator]=function(){return this},t);function i(n){t[n]=e[n]&&function(t){return new Promise(function(i,r){(function(e,t,n,i){Promise.resolve(i).then(function(t){e({value:t,done:n})},t)})(i,r,(t=e[n](t)).done,t.value)})}}}function O(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var L=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t},R=function(e){return R=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},R(e)};function I(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=R(e),i=0;i<n.length;i++)"default"!==n[i]&&_(t,e,n[i]);return L(t,e),t}function M(e){return e&&e.__esModule?e:{default:e}}function D(e,t,n,i){if("a"===n&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?i:"a"===n?i.call(e):i?i.value:t.get(e)}function A(e,t,n,i,r){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?r.call(e,n):r?r.value=n:t.set(e,n),n}function x(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}function j(e,t,n){if(null!=t){if("object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object expected.");var i,r;if(n){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");i=t[Symbol.asyncDispose]}if(void 0===i){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");i=t[Symbol.dispose],n&&(r=i)}if("function"!=typeof i)throw new TypeError("Object not disposable.");r&&(i=function(){try{r.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:i,async:n})}else n&&e.stack.push({async:!0});return t}var $="function"==typeof SuppressedError?SuppressedError:function(e,t,n){var i=new Error(n);return i.name="SuppressedError",i.error=e,i.suppressed=t,i};function N(e){function t(t){e.error=e.hasError?new $(t,e.error,"An error was suppressed during disposal."):t,e.hasError=!0}var n,i=0;return function r(){for(;n=e.stack.pop();)try{if(!n.async&&1===i)return i=0,e.stack.push(n),Promise.resolve().then(r);if(n.dispose){var s=n.dispose.call(n.value);if(n.async)return i|=2,Promise.resolve(s).then(r,function(e){return t(e),r()})}else i|=1}catch(e){t(e)}if(1===i)return e.hasError?Promise.reject(e.error):Promise.resolve();if(e.hasError)throw e.error}()}function V(e,t){return"string"==typeof e&&/^\.\.?\//.test(e)?e.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(e,n,i,r,s){return n?t?".jsx":".js":!i||r&&s?i+r+"."+s.toLowerCase()+"js":e}):e}var F,B,U,H,W={__extends:s,__assign:o,__rest:a,__decorate:c,__param:l,__esDecorate:d,__runInitializers:u,__propKey:h,__setFunctionName:p,__metadata:f,__awaiter:m,__generator:g,__createBinding:_,__exportStar:v,__values:b,__read:y,__spread:k,__spreadArrays:w,__spreadArray:S,__await:T,__asyncGenerator:C,__asyncDelegator:P,__asyncValues:E,__makeTemplateObject:O,__importStar:I,__importDefault:M,__classPrivateFieldGet:D,__classPrivateFieldSet:A,__classPrivateFieldIn:x,__addDisposableResource:j,__disposeResources:N,__rewriteRelativeImportExtension:V},q=t(Object.freeze({__proto__:null,__addDisposableResource:j,get __assign(){return o},__asyncDelegator:P,__asyncGenerator:C,__asyncValues:E,__await:T,__awaiter:m,__classPrivateFieldGet:D,__classPrivateFieldIn:x,__classPrivateFieldSet:A,__createBinding:_,__decorate:c,__disposeResources:N,__esDecorate:d,__exportStar:v,__extends:s,__generator:g,__importDefault:M,__importStar:I,__makeTemplateObject:O,__metadata:f,__param:l,__propKey:h,__read:y,__rest:a,__rewriteRelativeImportExtension:V,__runInitializers:u,__setFunctionName:p,__spread:k,__spreadArray:S,__spreadArrays:w,__values:b,default:W})),Q={},z={};function G(){if(H)return U;H=1;var e=function(){},t="undefined",n=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),i=["trace","debug","info","warn","error"];function r(e,t){var n=e[t];if("function"==typeof n.bind)return n.bind(e);try{return Function.prototype.bind.call(n,e)}catch(t){return function(){return Function.prototype.apply.apply(n,[e,arguments])}}}function s(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function o(t,n){for(var r=0;r<i.length;r++){var s=i[r];this[s]=r<t?e:this.methodFactory(s,t,n)}this.log=this.debug}function a(e,n,i){return function(){typeof console!==t&&(o.call(this,n,i),this[e].apply(this,arguments))}}function c(i,o,c){return function(i){return"debug"===i&&(i="log"),typeof console!==t&&("trace"===i&&n?s:void 0!==console[i]?r(console,i):void 0!==console.log?r(console,"log"):e)}(i)||a.apply(this,arguments)}function l(e,n,r){var s,a=this,l="loglevel";function d(){var e;if(typeof window!==t&&l){try{e=window.localStorage[l]}catch(e){}if(typeof e===t)try{var n=window.document.cookie,i=n.indexOf(encodeURIComponent(l)+"=");-1!==i&&(e=/^([^;]+)/.exec(n.slice(i))[1])}catch(e){}return void 0===a.levels[e]&&(e=void 0),e}}"string"==typeof e?l+=":"+e:"symbol"==typeof e&&(l=void 0),a.name=e,a.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},a.methodFactory=r||c,a.getLevel=function(){return s},a.setLevel=function(n,r){if("string"==typeof n&&void 0!==a.levels[n.toUpperCase()]&&(n=a.levels[n.toUpperCase()]),!("number"==typeof n&&n>=0&&n<=a.levels.SILENT))throw"log.setLevel() called with invalid level: "+n;if(s=n,!1!==r&&function(e){var n=(i[e]||"silent").toUpperCase();if(typeof window!==t&&l){try{return void(window.localStorage[l]=n)}catch(e){}try{window.document.cookie=encodeURIComponent(l)+"="+n+";"}catch(e){}}}(n),o.call(a,n,e),typeof console===t&&n<a.levels.SILENT)return"No console available for logging"},a.setDefaultLevel=function(e){d()||a.setLevel(e,!1)},a.enableAll=function(e){a.setLevel(a.levels.TRACE,e)},a.disableAll=function(e){a.setLevel(a.levels.SILENT,e)};var u=d();null==u&&(u=null==n?"WARN":n),a.setLevel(u,!1)}var d=new l,u={};d.getLogger=function(e){if("symbol"!=typeof e&&"string"!=typeof e||""===e)throw new TypeError("You must supply a name when creating a logger.");var t=u[e];return t||(t=u[e]=new l(e,d.getLevel(),d.methodFactory)),t};var h=typeof window!==t?window.log:void 0;return d.noConflict=function(){return typeof window!==t&&window.log===d&&(window.log=h),d},d.getLoggers=function(){return u},d.default=d,U=d}var K,Y,J,X,Z,ee={exports:{}},te={name:"twilio-video",version:"2.35.0"};function ne(){return K||(K=1,function(e){const t=te;e.exports.SDK_NAME=`${t.name}.js`,e.exports.SDK_VERSION=t.version,e.exports.SDP_FORMAT="unified",e.exports.hardwareDevicePublisheriPad={hwDeviceManufacturer:"Apple",hwDeviceModel:"iPad",hwDeviceType:"tablet",platformName:"iOS"},e.exports.hardwareDevicePublisheriPhone={hwDeviceManufacturer:"Apple",hwDeviceModel:"iPhone",hwDeviceType:"mobile",platformName:"iOS"},e.exports.DEFAULT_ENVIRONMENT="prod",e.exports.DEFAULT_REALM="us1",e.exports.DEFAULT_REGION="gll",e.exports.DEFAULT_LOG_LEVEL="warn",e.exports.DEFAULT_LOGGER_NAME="twilio-video",e.exports.WS_SERVER=(e,t)=>(t="gll"===t?"global":encodeURIComponent(t),"prod"===e?`wss://${t}.vss.twilio.com/signaling`:`wss://${t}.vss.${e}.twilio.com/signaling`),e.exports.PUBLISH_MAX_ATTEMPTS=5,e.exports.PUBLISH_BACKOFF_JITTER=10,e.exports.PUBLISH_BACKOFF_MS=20,e.exports.typeErrors={ILLEGAL_INVOKE:(e,t)=>new TypeError(`Illegal call to ${e}: ${t}`),INVALID_TYPE(e,t){return new TypeError(`${e} must be ${n=t,["a","e","i","o","u"].includes(n.toLowerCase()[0])?"an":"a"} ${t}`);var n},INVALID_VALUE:(e,t)=>new RangeError(`${e} must be one of ${t.join(", ")}`),REQUIRED_ARGUMENT:e=>new TypeError(`${e} must be specified`)},e.exports.DEFAULT_FRAME_RATE=24,e.exports.DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS=1e4,e.exports.DEFAULT_ICE_GATHERING_TIMEOUT_MS=15e3,e.exports.DEFAULT_SESSION_TIMEOUT_SEC=30,e.exports.DEFAULT_NQ_LEVEL_LOCAL=1,e.exports.DEFAULT_NQ_LEVEL_REMOTE=0,e.exports.MAX_NQ_LEVEL=3,e.exports.ICE_ACTIVITY_CHECK_PERIOD_MS=1e3,e.exports.ICE_INACTIVITY_THRESHOLD_MS=3e3,e.exports.iceRestartBackoffConfig={factor:1.1,min:1,max:1e3*e.exports.DEFAULT_SESSION_TIMEOUT_SEC,jitter:1},e.exports.reconnectBackoffConfig={factor:1.5,min:80,jitter:1},e.exports.subscriptionMode={MODE_COLLABORATION:"collaboration",MODE_GRID:"grid",MODE_PRESENTATION:"presentation"},e.exports.trackSwitchOffMode={MODE_DISABLED:"disabled",MODE_DETECTED:"detected",MODE_PREDICTED:"predicted"},e.exports.trackPriority={PRIORITY_HIGH:"high",PRIORITY_LOW:"low",PRIORITY_STANDARD:"standard"},e.exports.clientTrackSwitchOffControl={MODE_AUTO:"auto",MODE_MANUAL:"manual"},e.exports.videoContentPreferencesMode={MODE_AUTO:"auto",MODE_MANUAL:"manual"}}(ee)),ee.exports}function ie(){if(J)return Y;J=1;const e=G().getLogger,t=ne(),{DEFAULT_LOG_LEVEL:n,DEFAULT_LOGGER_NAME:i}=t,r=ne().typeErrors;let s;class o{constructor(t,s,a,c,l){if("string"!=typeof t)throw r.INVALID_TYPE("moduleName","string");if(!s)throw r.REQUIRED_ARGUMENT("component");"object"!=typeof a&&(a={}),l=l||e,u(a),Object.defineProperties(this,{_component:{value:s},_logLevels:{value:a},_warnings:{value:new Set},_loggerName:{get:function(){let e=c&&"string"==typeof c?c:i;return this._logLevelsEqual||(e=`${e}-${t}`),e}},_logger:{get:function(){const e=l(this._loggerName);let i=this._logLevels[t]||n;return i="off"===i?"silent":i,e.setDefaultLevel(i),e}},_logLevelsEqual:{get:function(){return 1===new Set(Object.values(this._logLevels)).size}},logLevel:{get:function(){return o.getLevelByName(a[t]||n)}},name:{get:s.toString.bind(s)}})}static getLevelByName(e){return isNaN(e)?(d(e=e.toUpperCase()),o[e]):parseInt(e,10)}createLog(e,t){let n=this._loggerName;return this._logLevelsEqual||(n=n.substring(0,n.lastIndexOf("-"))),new o(e,t,this._logLevels,n)}setLevels(e){return u(e),Object.assign(this._logLevels,e),this}log(e,t){let n=o._levels[e];if(!n)throw r.INVALID_VALUE("logLevel",c);n=n.toLowerCase();const i=[(new Date).toISOString(),n,this.name];return(this._logger[n]||function(){})(...i.concat(t)),this}debug(){return this.log(o.DEBUG,[].slice.call(arguments))}deprecated(e){const t=function(e){if(s=s||new Map,s.has(e))return s.get(e);const t=new Set;return s.set(e,t),t}(this._component.constructor);return t.has(e)?this:(t.add(e),this.warn(e))}info(){return this.log(o.INFO,[].slice.call(arguments))}warn(){return this.log(o.WARN,[].slice.call(arguments))}warnOnce(e){return this._warnings.has(e)?this:(this._warnings.add(e),this.warn(e))}error(){return this.log(o.ERROR,[].slice.call(arguments))}throw(e,t){throw e.clone&&(e=e.clone(t)),this.log(o.ERROR,e),e}}Object.defineProperties(o,{DEBUG:{value:0},INFO:{value:1},WARN:{value:2},ERROR:{value:3},OFF:{value:4},_levels:{value:["DEBUG","INFO","WARN","ERROR","OFF"]}});const a={},c=[],l=o._levels.map((e,t)=>(a[e]=!0,c.push(t),e));function d(e){if(!(e in a))throw r.INVALID_VALUE("level",l)}function u(e){Object.keys(e).forEach(t=>{d(e[t].toUpperCase())})}return Y=o}function re(){if(X)return z;X=1,Object.defineProperty(z,"__esModule",{value:!0}),z.createNoiseCancellationAudioProcessor=function(s,o){return e.__awaiter(this,void 0,void 0,function*(){let e=r.get(s.vendor);if(!e){let a=n[s.vendor];if(!a)throw new Error(`Unsupported NoiseCancellationOptions.vendor: ${s.vendor}`);const{supportedVersion:c,pluginFile:l}=a,d=s.sdkAssetsPath,u=`${d}/${l}`;try{o.debug("loading noise cancellation sdk: ",u);const n=yield t(u);o.debug("Loaded noise cancellation sdk:",n);const a=n.default;i({supportedVersion:c,plugin:a,log:o}),a.isInitialized()||(o.debug("initializing noise cancellation sdk: ",d),yield a.init({rootDir:d}),o.debug("noise cancellation sdk initialized!")),e={vendor:s.vendor,isInitialized:()=>a.isInitialized(),isConnected:()=>a.isConnected(),isEnabled:()=>a.isEnabled(),disconnect:()=>a.disconnect(),enable:()=>a.enable(),disable:()=>a.disable(),destroy:()=>a.destroy(),setLogging:e=>a.setLogging(e),connect:e=>{o.debug("connect: ",e.id),a.isConnected()&&a.disconnect();const t=a.connect(new MediaStream([e]));if(!t)throw new Error("Error connecting with noise cancellation sdk");const n=t.getAudioTracks()[0];if(!n)throw new Error("Error getting clean track from noise cancellation sdk");return a.enable(),n}},r.set(s.vendor,e)}catch(e){throw o.error(`Error loading noise cancellation sdk:${u}`,e),e}}return e})};const e=q,t=(B||(B=1,F=function(e){const{location:t,URL:n}=e;return[t,n].some(e=>!e)?function(e){return Promise.reject(new Error(`Failed to import: ${e}: dynamicImport is not supported`))}:(e.__twilioVideoImportedModules={},function(i){return i in e.__twilioVideoImportedModules?Promise.resolve(e.__twilioVideoImportedModules[i]):new Function("scope",`return import('${new n(i,t)}').then(m => scope.__twilioVideoImportedModules['${i}'] = m);`)(e)})}(globalThis)),F);ie();const n={krisp:{supportedVersion:"1.0.0",pluginFile:"krispsdk.mjs"},rnnoise:{supportedVersion:"0.6.0",pluginFile:"rnnoise_sdk.mjs"}},i=({supportedVersion:e,plugin:t,log:n})=>{if(!t.getVersion||!t.isSupported)throw new Error("Plugin does not export getVersion/isSupported api. Are you using old version of the plugin ?");const i=t.getVersion();n.debug(`Plugin Version = ${i}`);const r=e.split(".").map(e=>Number(e)),s=i.split(".").map(e=>Number(e));if(3!==r.length||3!==s.length)throw new Error(`Unsupported Plugin version format: ${e}, ${i}`);if(r[0]!==s[0])throw new Error(`Major version mismatch: [Plugin version ${i}], [Supported Version ${e}]`);if(s[1]<r[1])throw new Error(`Minor version mismatch: [Plugin version ${i}] < [Supported Version ${e}]`);const o=new AudioContext,a=t.isSupported(o);if(o.close(),!a)throw new Error("Noise Cancellation plugin is not supported on your browser")};let r=new Map;return z}var se,oe={},ae={};function ce(){if(se)return ae;function e(e,t,n,i){if(i in t)return;if(i.match(/^on[a-z]+$/))return;let r,s=!1;try{const t=Object.getOwnPropertyDescriptor(e,i);s=t&&!!t.get}catch(e){}if(!s){try{r=typeof e[i]}catch(e){}"function"===r&&(t[i]=function(){return this[n][i].apply(this[n],arguments)})}}function t(){return"undefined"!=typeof navigator&&"string"==typeof navigator.userAgent?navigator.userAgent:null}function n(e){return void 0===e&&(e=t()),/Chrome|CriOS/.test(e)?"chrome":/Firefox|FxiOS/.test(e)?"firefox":/Safari|iPhone|iPad|iPod/.test(e)?"safari":null}se=1;const i=new Map;return ae.clearCachedSupportedCodecs=function(){i.clear()},ae.defer=function(){const e={};return e.promise=new Promise((t,n)=>{e.resolve=t,e.reject=n}),e},ae.delegateMethods=function(t,n,i){for(const r in t)e(t,n,i,r)},ae.difference=function(e,t){e=Array.isArray(e)?new Set(e):new Set(e.values()),t=Array.isArray(t)?new Set(t):new Set(t.values());const n=new Set;return e.forEach(e=>{t.has(e)||n.add(e)}),n},ae.flatMap=function(e,t){return(e instanceof Map||e instanceof Set?Array.from(e.values()):e).reduce((e,n)=>e.concat(t(n)),[])},ae.guessBrowser=n,ae.guessBrowserVersion=function(e){void 0===e&&(e=t());const i={chrome:"Chrome|CriOS",firefox:"Firefox|FxiOS",safari:"Version"}[n(e)];if(!i)return null;const r=new RegExp(`(${i})/([^\\s]+)`),[,,s]=e.match(r)||[];if(!s)return null;const o=s.split(".").map(Number);return{major:isNaN(o[0])?null:o[0],minor:isNaN(o[1])?null:o[1]}},ae.isCodecSupported=function(e,t){const n=i.get(t);return n?Promise.resolve(n.has(e.toLowerCase())):function(e){if("undefined"!=typeof RTCRtpSender&&"function"==typeof RTCRtpSender.getCapabilities)return Promise.resolve(new Set(RTCRtpSender.getCapabilities(e).codecs.map(({mimeType:e})=>e.split("/")[1].toLowerCase())));if("undefined"==typeof RTCPeerConnection||void 0===RTCPeerConnection.prototype||"function"!=typeof RTCPeerConnection.prototype.addTransceiver||"function"!=typeof RTCPeerConnection.prototype.close||"function"!=typeof RTCPeerConnection.prototype.createOffer)return Promise.resolve(new Set);const t=new RTCPeerConnection;return t.addTransceiver(e),t.createOffer().then(({sdp:e})=>(t.close(),new Set((e.match(/^a=rtpmap:.+$/gm)||[]).map(e=>e.match(/^a=rtpmap:.+ ([^/]+)/)[1].toLowerCase()))),()=>(t.close(),new Set))}(t).then(n=>(i.set(t,n),n.has(e.toLowerCase())))},ae.isIOSChrome=function(e){return void 0===e&&(e=t()),/Mobi/.test(e)&&"chrome"===n()&&/iPad|iPhone|iPod/.test(e)},ae.interceptEvent=function(e,t){let n=null;Object.defineProperty(e,"on"+t,{get:function(){return n},set:function(e){n&&this.removeEventListener(t,n),"function"==typeof e?(n=e,this.addEventListener(t,n)):n=null}})},ae.legacyPromise=function(e,t,n){return t?e.then(t,n):e},ae.makeUUID=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})},ae.proxyProperties=function(e,t,n){Object.getOwnPropertyNames(e).forEach(e=>{!function(e,t,n,i){if(i in t)return;if(i.match(/^on[a-z]+$/))return Object.defineProperty(t,i,{value:null,writable:!0}),void n.addEventListener(i.slice(2),(...e)=>t.dispatchEvent(...e));Object.defineProperty(t,i,{enumerable:!0,get:function(){return n[i]}})}(0,t,n,e)})},ae.support=function(){return"object"==typeof navigator&&"object"==typeof navigator.mediaDevices&&"function"==typeof navigator.mediaDevices.getUserMedia&&"function"==typeof RTCPeerConnection},ae}var le,de,ue,he,pe,fe,me,ge,_e={};function ve(){if(le)return _e;le=1;const e="1234567890abcdef";function t(t){let n="";for(let t=0;t<32;t++)n+=e.charAt(Math.floor(16*Math.random()));return`${t}${n}`}return _e.sessionSID=t("SS"),_e.createSID=t,_e}function be(){if(ue)return de;ue=1;return de={recordingMediaLost:"recording-media-lost"}}function ye(){if(he)return oe;he=1;const e=ne(),{typeErrors:t,trackPriority:n}=e,i=ce(),{sessionSID:r}=ve(),s=be();function o(){return"undefined"!=typeof navigator&&navigator.userAgent?navigator.userAgent:"Unknown"}function a(e,t,n,i){if(i in t)return;if(i.match(/^on[a-z]+$/))return;let r;try{r=typeof e[i]}catch(e){}"function"===r&&(t[i]=function(...e){return this[n][i](...e)})}function c(e){return"object"==typeof e&&!Array.isArray(e)}function l(e){Object.getOwnPropertyNames(e).forEach(t=>{t.startsWith("_")&&d(e,t)})}function d(e,t){const n=Object.getOwnPropertyDescriptor(e,t);n.enumerable=!1,Object.defineProperty(e,t,n)}function u(e){return e.map(h)}function h(e){return Array.isArray(e)?u(e):e instanceof Set?(n=e,u([...n])):e instanceof Map?[...e.entries()].reduce((e,[t,n])=>Object.assign({[t]:h(n)},e),{}):e&&"object"==typeof e?(t=e,Object.entries(t).reduce((e,[t,n])=>Object.assign({[t]:h(n)},e),{})):e;var t,n}function p(e){return e?"true":"false"}function f(e){return _(e,[{prop:"dominantSpeakerPriority",type:"string",payloadProp:"active_speaker_priority"},{prop:"maxSubscriptionBitrate",type:"number",payloadProp:"max_subscription_bandwidth"},{prop:"maxTracks",type:"number",payloadProp:"max_tracks"},{prop:"mode",type:"string"},{prop:"renderDimensions",type:"object",payloadProp:"render_dimensions",transform:g},{prop:"trackSwitchOffMode",type:"string",payloadProp:"track_switch_off"}])}function m(e){return _(e,[{prop:"height",type:"number"},{prop:"width",type:"number"}])}function g(e){const{PRIORITY_HIGH:t,PRIORITY_LOW:i,PRIORITY_STANDARD:r}=n;return _(e,[{prop:t,type:"object",transform:m},{prop:i,type:"object",transform:m},{prop:r,type:"object",transform:m}])}function _(e,t){return t.reduce((t,{prop:n,type:i,payloadProp:r=n,transform:s=e=>e})=>typeof e[n]===i?Object.assign({[r]:s(e[n])},t):t,{})}return oe.constants=e,oe.createBandwidthProfilePayload=function(e){return _(e,[{prop:"video",type:"object",transform:f}])},oe.createMediaSignalingPayload=function(e,t,n,i,r,s,o){const a={transports:[{type:"data-channel"}]};return Object.assign(e?{active_speaker:a}:{},t?{network_quality:a}:{},s?{render_hints:a}:{},r?{publisher_hints:a}:{},n?{track_priority:a}:{},i?{track_switch_off:a}:{},o?{extension_transcriptions:a}:{})},oe.createMediaWarningsPayload=function(e){const t={[s.recordingMediaLost]:"recordings"};return e.map(e=>t[e]).filter(e=>!!e)},oe.createRoomConnectingEventPayload=function(e){const t={sessionSID:r,iceServers:(e.iceServers||[]).length,audioTracks:(e.tracks||[]).filter(e=>"audio"===e.kind).length,videoTracks:(e.tracks||[]).filter(e=>"video"===e.kind).length,dataTracks:(e.tracks||[]).filter(e=>"data"===e.kind).length};if([["audio"],["automaticSubscription"],["enableDscp"],["eventListener"],["preflight"],["video"],["dominantSpeaker","enableDominantSpeaker"]].forEach(([n,i])=>{t[i=i||n]=p(!!e[n])}),[["maxVideoBitrate"],["maxAudioBitrate"]].forEach(([n,i])=>{i=i||n,"number"==typeof e[n]?t[i]=e[n]:isNaN(Number(e[n]))||(t[i]=Number(e[n]))}),[["iceTransportPolicy"],["region"],["name","roomName"]].forEach(([n,i])=>{i=i||n,"string"==typeof e[n]?t[i]=e[n]:"number"==typeof e[n]&&"name"===n&&(t[i]=e[n].toString())}),["preferredAudioCodecs","preferredVideoCodecs"].forEach(n=>{n in e&&(t[n]=JSON.stringify(e[n]))}),"networkQuality"in e&&(t.networkQualityConfiguration={},c(e.networkQuality)?["local","remote"].forEach(n=>{"number"==typeof e.networkQuality[n]&&(t.networkQualityConfiguration[n]=e.networkQuality[n])}):(t.networkQualityConfiguration.remote=0,t.networkQualityConfiguration.local=e.networkQuality?1:0)),e.bandwidthProfile&&e.bandwidthProfile.video){const n=e.bandwidthProfile.video||{};t.bandwidthProfileOptions={},["mode","maxTracks","trackSwitchOffMode","dominantSpeakerPriority","maxSubscriptionBitrate","renderDimensions","contentPreferencesMode","clientTrackSwitchOffControl"].forEach(e=>{"number"==typeof n[e]||"string"==typeof n[e]?t.bandwidthProfileOptions[e]=n[e]:"boolean"==typeof n[e]?t.bandwidthProfileOptions[e]=p(n[e]):"object"==typeof n[e]&&(t.bandwidthProfileOptions[e]=JSON.stringify(n[e]))})}return Object.entries({RTCPeerConnection:"customRTCPeerConnectionImpl",MediaStream:"customMediaStreamImpl",getUserMedia:"customGetUserMediaImpl",enumerateDevices:"customEnumerateDevicesImpl"}).forEach(([n,i])=>{t[i]=p(void 0!==e[n])}),{group:"room",name:"connecting",level:"info",payload:t}},oe.createRoomConnectedEventPayload=function(){return{group:"room",name:"connected",level:"info"}},oe.boolToString=p,oe.createSubscribePayload=function(e){return{rules:[{type:e?"include":"exclude",all:!0}],revision:1}},oe.asLocalTrack=function(e,n){if(e instanceof n.LocalAudioTrack||e instanceof n.LocalVideoTrack||e instanceof n.LocalDataTrack)return e;if(e instanceof n.MediaStreamTrack)return"audio"===e.kind?new n.LocalAudioTrack(e,n):new n.LocalVideoTrack(e,n);throw t.INVALID_TYPE("track","LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack")},oe.asLocalTrackPublication=function(e,t,n,i){return new(0,{audio:i.LocalAudioTrackPublication,video:i.LocalVideoTrackPublication,data:i.LocalDataTrackPublication}[e.kind])(t,e,n,i)},oe.capitalize=function(e){return e[0].toUpperCase()+e.slice(1)},oe.deprecateEvents=function(e,t,n,i){const r=new Set;t.on("newListener",function s(o){n.has(o)&&!r.has(o)&&(i.deprecated(`${e}#${o} has been deprecated and scheduled for removal in twilio-video.js@2.0.0.${n.get(o)?` Use ${e}#${n.get(o)} instead.`:""}`),r.add(o)),r.size>=n.size&&t.removeListener("newListener",s)})},oe.difference=function(e,t){e=Array.isArray(e)?new Set(e):new Set(e.values()),t=Array.isArray(t)?new Set(t):new Set(t.values());const n=new Set;return e.forEach(e=>{t.has(e)||n.add(e)}),n},oe.filterObject=function(e,t){return Object.keys(e).reduce((n,i)=>(e[i]!==t&&(n[i]=e[i]),n),{})},oe.flatMap=function(e,t){const n=e instanceof Map||e instanceof Set?Array.from(e.values()):e;return t=t||function(e){return e},n.reduce((e,n)=>{const i=t(n);return e.concat(i)},[])},oe.getPlatform=function(){const e=o(),[,t="unknown"]=e.match(/\(([^)]+)\)/)||[],[n]=t.split(";").map(e=>e.trim());return n.toLowerCase()},oe.getUserAgent=o,oe.hidePrivateProperties=l,oe.hidePrivateAndCertainPublicPropertiesInClass=function(e,t){return class extends e{constructor(...e){super(...e),l(this),function(e,t=[]){t.forEach(t=>{e.hasOwnProperty(t)&&d(e,t)})}(this,t)}}},oe.isDeepEqual=function e(t,n){if(t===n)return!0;if(typeof t!=typeof n)return!1;if(null===t)return null===n;if(null===n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((t,i)=>e(t,n[i]));if("object"==typeof t){const i=Object.keys(t).sort(),r=Object.keys(n).sort();return!Array.isArray(n)&&e(i,r)&&i.every(i=>e(t[i],n[i]))}return!1},oe.isNonArrayObject=c,oe.inRange=function(e,t,n){return t<=e&&e<=n},oe.makeUUID=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})},oe.oncePerTick=function(e){let t=null;function n(){t=null,e()}return function(){t&&clearTimeout(t),t=setTimeout(n)}},oe.promiseFromEvents=function(e,t,n,i){return new Promise((r,s)=>{function o(){const e=[].slice.call(arguments);i&&t.removeListener(i,a),r(...e)}function a(){const e=[].slice.call(arguments);t.removeListener(n,o),s(...e)}t.once(n,o),i&&t.once(i,a),e()})},oe.getOrNull=function(e,t){return t.split(".").reduce((e,t)=>e?e[t]:null,e)},oe.defer=function(){const e={};return e.promise=new Promise((t,n)=>{e.resolve=t,e.reject=n}),e},oe.delegateMethods=function(e,t,n){for(const i in e)a(e,t,n,i)},oe.proxyProperties=function(e,t,n){Object.getOwnPropertyNames(e).forEach(e=>{!function(e,t,n,i){if(i in t)return;if(i.match(/^on[a-z]+$/))return Object.defineProperty(t,i,{value:null,writable:!0}),void n.addEventListener(i.slice(2),function(...e){t.dispatchEvent(...e)});Object.defineProperty(t,i,{enumerable:!0,get:()=>n[i]})}(0,t,n,e)})},oe.legacyPromise=function(e,t,n){return t?e.then(e=>{t(e)},e=>{n(e)}):e},oe.buildLogLevels=function(e){return"string"==typeof e?{default:e,media:e,signaling:e,webrtc:e}:e},oe.trackClass=function(e,t){return`${(t=t?"Local":"")+(e.kind||"").replace(/\w{1}/,e=>e.toUpperCase())}Track`},oe.trackPublicationClass=function(e,t){return`${(t=t?"Local":"")+(e.kind||"").replace(/\w{1}/,e=>e.toUpperCase())}TrackPublication`},oe.valueToJSON=h,oe.withJitter=function(e,t){const n=Math.random();return e-t+Math.floor(2*t*n+.5)},oe.isChromeScreenShareTrack=function(e){return"chrome"===i.guessBrowser()&&"video"===e.kind&&"displaySurface"in e.getSettings()},oe.waitForSometime=function(e=10){return new Promise(t=>setTimeout(t,e))},oe.waitForEvent=function(e,t){return new Promise(n=>{e.addEventListener(t,function i(r){e.removeEventListener(t,i),n(r)})})},oe}function ke(){if(fe)return pe;fe=1;const{flatMap:e,guessBrowser:t,guessBrowserVersion:n}=ce(),i=t(),r=n(),s="chrome"===i,o="firefox"===i,a="safari"===i,c=s?r.major:null;function l(e,t){return"function"==typeof e.get?e.get(t):e.find(e=>e.id===t)}function d(e){const t=Array.from(e.values()).find(({nominated:e,type:t})=>"candidate-pair"===t&&e);if(!t)return null;const n=l(e,t.localCandidateId),i=l(e,t.remoteCandidateId),r=[{key:"candidateType",type:"string"},{key:"ip",type:"string"},{key:"port",type:"number"},{key:"priority",type:"number"},{key:"protocol",type:"string"},{key:"url",type:"string"}],s=r.concat([{key:"deleted",type:"boolean"},{key:"relayProtocol",type:"string"},{key:"networkType",type:"string"}]),o=n?s.reduce((e,{key:t,type:i})=>(e[t]=typeof n[t]===i?n[t]:"deleted"!==t&&null,e),{}):null,a=i?r.reduce((e,{key:t,type:n})=>(e[t]=typeof i[t]===n?i[t]:null,e),{}):null;return[{key:"availableIncomingBitrate",type:"number"},{key:"availableOutgoingBitrate",type:"number"},{key:"bytesReceived",type:"number"},{key:"bytesSent",type:"number"},{key:"consentRequestsSent",type:"number"},{key:"currentRoundTripTime",type:"number"},{key:"lastPacketReceivedTimestamp",type:"number"},{key:"lastPacketSentTimestamp",type:"number"},{key:"nominated",type:"boolean"},{key:"priority",type:"number"},{key:"readable",type:"boolean"},{key:"requestsReceived",type:"number"},{key:"requestsSent",type:"number"},{key:"responsesReceived",type:"number"},{key:"responsesSent",type:"number"},{key:"retransmissionsReceived",type:"number"},{key:"retransmissionsSent",type:"number"},{key:"state",type:"string",fixup:e=>"inprogress"===e?"in-progress":e},{key:"totalRoundTripTime",type:"number"},{key:"transportId",type:"string"},{key:"writable",type:"boolean"}].reduce((e,{key:n,type:i,fixup:r})=>(e[n]=typeof t[n]===i?r?r(t[n]):t[n]:null,e),{localCandidate:o,remoteCandidate:a})}function u(e){const t=Array.from(e.values()).find(({nominated:e,type:t})=>"candidate-pair"===t&&e);if(!t)return null;const n=l(e,t.localCandidateId),i=l(e,t.remoteCandidateId),r=[{key:"candidateType",type:"string"},{key:"ip",ffKeys:["address","ipAddress"],type:"string"},{key:"port",ffKeys:["portNumber"],type:"number"},{key:"priority",type:"number"},{key:"protocol",ffKeys:["transport"],type:"string"},{key:"url",type:"string"}],s=r.concat([{key:"deleted",type:"boolean"},{key:"relayProtocol",type:"string"}]),o={host:"host",peerreflexive:"prflx",relayed:"relay",serverreflexive:"srflx"},a=n?s.reduce((e,{ffKeys:t,key:i,type:r})=>{const s=t&&t.find(e=>e in n)||i;return e[i]=typeof n[s]===r?"candidateType"===s&&o[n[s]]||n[s]:"deleted"!==s&&null,e},{}):null,c=i?r.reduce((e,{ffKeys:t,key:n,type:r})=>{const s=t&&t.find(e=>e in i)||n;return e[n]=typeof i[s]===r?"candidateType"===s&&o[i[s]]||i[s]:null,e},{}):null;return[{key:"availableIncomingBitrate",type:"number"},{key:"availableOutgoingBitrate",type:"number"},{key:"bytesReceived",type:"number"},{key:"bytesSent",type:"number"},{key:"consentRequestsSent",type:"number"},{key:"currentRoundTripTime",type:"number"},{key:"lastPacketReceivedTimestamp",type:"number"},{key:"lastPacketSentTimestamp",type:"number"},{key:"nominated",type:"boolean"},{key:"priority",type:"number"},{key:"readable",type:"boolean"},{key:"requestsReceived",type:"number"},{key:"requestsSent",type:"number"},{key:"responsesReceived",type:"number"},{key:"responsesSent",type:"number"},{key:"retransmissionsReceived",type:"number"},{key:"retransmissionsSent",type:"number"},{key:"state",type:"string"},{key:"totalRoundTripTime",type:"number"},{key:"transportId",type:"string"},{key:"writable",type:"boolean"}].reduce((e,{key:n,type:i})=>(e[n]=typeof t[n]===i?t[n]:null,e),{localCandidate:a,remoteCandidate:c})}function h(e,t,n){return e["local"===n?"getSenders":"getReceivers"]().map(({track:e})=>e).filter(e=>e&&e.kind===t)}function p(e,t,n){const i=n.log;return c&&c<67?new Promise((n,i)=>{e.getStats(e=>{n([f(e,t)])},null,i)}):e.getStats(t).then(e=>(i.info("getStats by track successful"),m(e,n))).catch(()=>(i.warn("getStats by track failed. Getting default stats"),e.getStats().then(r=>{i.info("getStats by default successful");const s=function(e,t){if(!e||!t)return!1;if(e.getReceivers){const n=e.getReceivers();for(const e of n)if(e.track&&e.track.id===t.id)return!0}if(e.getRemoteStreams){const n=e.getRemoteStreams();for(const e of n){const n=e.getTracks();for(const e of n)if(e.id===t.id)return!0}}return!1}(e,t);i.info(`Starting filtering stats for ${s?"remote":"local"} track`);const o=function(e,t,n=!1){let i;if(Array.isArray(e))i=new Map(e.map(e=>[e.id||String(Math.random()),e]));else if(e instanceof Map)i=e;else{if("object"!=typeof e||null===e)return new Map;{const t=new Map;Object.keys(e).forEach(n=>{t.set(n,e[n])}),i=t}}if(!i||!t)return new Map;const r=new Map,s=t.id,o=t.kind;let a=null,c=null,l=null;for(const[e,t]of i){if(n&&"inbound-rtp"===t.type&&t.trackIdentifier===s){a=t,c=e,l=t.ssrc;break}if(!n&&"media-source"===t.type&&t.trackIdentifier===s){a=t,c=e;break}"track"===t.type&&t.trackIdentifier===s&&(a||(a=t,c=e))}if(!a)if(n){const e=[];for(const[t,n]of i)"inbound-rtp"!==n.type||n.kind!==o&&n.mediaType!==o||e.push({id:t,stat:n});(1===e.length||e.length>1)&&(a=e[0].stat,c=e[0].id,l=a.ssrc)}else for(const[e,t]of i)if("media-source"===t.type&&t.kind===o){a=t,c=e;break}if(!a)return r;r.set(c,a);const d=new Set;if(n){if(a.codecId&&d.add(a.codecId),a.transportId&&d.add(a.transportId),a.remoteId&&d.add(a.remoteId),l)for(const[e,t]of i)"remote-outbound-rtp"===t.type&&t.ssrc===l&&d.add(e);for(const e of d)i.has(e)&&r.set(e,i.get(e));for(const[e,t]of i)"track"===t.type&&t.trackIdentifier===s&&r.set(e,t)}else{for(const[e,t]of i)if("outbound-rtp"===t.type&&t.mediaSourceId===c){r.set(e,t),t.codecId&&d.add(t.codecId),t.transportId&&d.add(t.transportId);const n=e;for(const[e,t]of i)"remote-inbound-rtp"===t.type&&t.localId===n&&r.set(e,t)}for(const e of d)i.has(e)&&r.set(e,i.get(e))}let u=null;const h=new Set;for(const e of r.values())e.transportId&&h.add(e.transportId);for(const e of h)if(i.has(e)){const t=i.get(e);r.set(e,t),t.selectedCandidatePairId&&(u=t.selectedCandidatePairId),t.localCertificateId&&i.has(t.localCertificateId)&&r.set(t.localCertificateId,i.get(t.localCertificateId)),t.remoteCertificateId&&i.has(t.remoteCertificateId)&&r.set(t.remoteCertificateId,i.get(t.remoteCertificateId))}if(u&&i.has(u)){const e=i.get(u);r.set(u,e),e.localCandidateId&&i.has(e.localCandidateId)&&r.set(e.localCandidateId,i.get(e.localCandidateId)),e.remoteCandidateId&&i.has(e.remoteCandidateId)&&r.set(e.remoteCandidateId,i.get(e.remoteCandidateId))}return r}(r,t,s);return i.info(`Completed filtering stats for ${s?"remote":"local"} track`),m(o,n)})))}function f(e,t){const n=e.result().find(e=>"ssrc"===e.type&&e.stat("googTrackId")===t.id);let i={};return n&&(i.timestamp=Math.round(Number(n.timestamp)),i=n.names().reduce((e,t)=>{switch(t){case"googCodecName":e.codecName=n.stat(t);break;case"googRtt":e.roundTripTime=Number(n.stat(t));break;case"googJitterReceived":e.jitter=Number(n.stat(t));break;case"googFrameWidthInput":e.frameWidthInput=Number(n.stat(t));break;case"googFrameHeightInput":e.frameHeightInput=Number(n.stat(t));break;case"googFrameWidthSent":e.frameWidthSent=Number(n.stat(t));break;case"googFrameHeightSent":e.frameHeightSent=Number(n.stat(t));break;case"googFrameWidthReceived":e.frameWidthReceived=Number(n.stat(t));break;case"googFrameHeightReceived":e.frameHeightReceived=Number(n.stat(t));break;case"googFrameRateInput":e.frameRateInput=Number(n.stat(t));break;case"googFrameRateSent":e.frameRateSent=Number(n.stat(t));break;case"googFrameRateReceived":e.frameRateReceived=Number(n.stat(t));break;case"ssrc":e[t]=n.stat(t);break;case"bytesReceived":case"bytesSent":case"packetsLost":case"packetsReceived":case"packetsSent":case"audioInputLevel":case"audioOutputLevel":e[t]=Number(n.stat(t))}return e},i)),i}function m(e,{simulateExceptionWhileStandardizingStats:t=!1}){if(t)throw new Error("Error while gathering stats");let n=null;const i=[];let r=null,s=null,o=null,a=null,c=null;e.forEach(e=>{const{type:t}=e;switch(t){case"inbound-rtp":n=e;break;case"outbound-rtp":i.push(e);break;case"media-source":c=e;break;case"track":o=e;break;case"codec":a=e;break;case"remote-inbound-rtp":r=e;break;case"remote-outbound-rtp":s=e}});const l=o?o.remoteSource:!c,d=[],u=l?s:r;return(l?[n]:i).forEach(e=>{const t={},n=[e,c,o,a,u&&u.ssrc===e.ssrc?u:null];function i(e){const t=n.find(t=>t&&void 0!==t[e])||null;return t?t[e]:null}const r=i("ssrc");"number"==typeof r&&(t.ssrc=String(r));const s=i("timestamp");t.timestamp=Math.round(s);let h=i("mimeType");"string"==typeof h&&(h=h.split("/"),t.codecName=h[h.length-1]);const p=i("roundTripTime");"number"==typeof p&&(t.roundTripTime=Math.round(1e3*p));const f=i("jitter");"number"==typeof f&&(t.jitter=Math.round(1e3*f));const m=i("frameWidth");"number"==typeof m&&(l?t.frameWidthReceived=m:(t.frameWidthSent=m,t.frameWidthInput=o?o.frameWidth:c.width));const g=i("frameHeight");"number"==typeof g&&(l?t.frameHeightReceived=g:(t.frameHeightSent=g,t.frameHeightInput=o?o.frameHeight:c.height));const _=i("framesPerSecond");"number"!=typeof _&&null!==_||(t[l?"frameRateReceived":"frameRateSent"]=_);const v=i("qualityLimitationReason");"string"==typeof v&&(t.qualityLimitationReason=v);const b=i("bytesReceived");"number"==typeof b&&(t.bytesReceived=b);const y=i("bytesSent");"number"==typeof y&&(t.bytesSent=y);const k=i("packetsLost");"number"==typeof k&&(t.packetsLost=k);const w=i("packetsReceived");"number"==typeof w&&(t.packetsReceived=w);const S=i("packetsSent");"number"==typeof S&&(t.packetsSent=S);let T=i("audioLevel");"number"==typeof T&&(T=Math.round(32767*T),l?t.audioOutputLevel=T:t.audioInputLevel=T);const C=i("totalPacketSendDelay");"number"==typeof C&&(t.totalPacketSendDelay=C);const P=i("totalEncodeTime");"number"==typeof P&&(t.totalEncodeTime=P);const E=i("framesEncoded");"number"==typeof E&&(t.framesEncoded=E);const O=i("estimatedPlayoutTimestamp");"number"==typeof O&&(t.estimatedPlayoutTimestamp=O);const L=i("totalDecodeTime");"number"==typeof L&&(t.totalDecodeTime=L);const R=i("framesDecoded");"number"==typeof R&&(t.framesDecoded=R);const I=i("jitterBufferDelay");"number"==typeof I&&(t.jitterBufferDelay=I);const M=i("jitterBufferEmittedCount");"number"==typeof M&&(t.jitterBufferEmittedCount=M);const D=i("freezeCount");"number"==typeof D&&(t.freezeCount=D),d.push(t)}),d}function g(e=new Map,{isRemote:t,simulateExceptionWhileStandardizingStats:n=!1}){if(n)throw new Error("Error while gathering stats");let i=null,r=null;e.forEach(t=>{const{isRemote:n,remoteId:s,type:o}=t;if(!n)switch(o){case"inbound-rtp":i=t,r=l(e,s);break;case"outbound-rtp":r=t,i=l(e,s)}});const s=t?i:r,o=t?r:i;function a(e){return s&&void 0!==s[e]?s[e]:o&&void 0!==o[e]?o[e]:null}const c={},d=a("timestamp");c.timestamp=Math.round(d);const u=a("ssrc");"number"==typeof u&&(c.ssrc=String(u));const h=a("bytesSent");"number"==typeof h&&(c.bytesSent=h);const p=a("packetsLost");"number"==typeof p&&(c.packetsLost=p);const f=a("packetsSent");"number"==typeof f&&(c.packetsSent=f);const m=a("roundTripTime");"number"==typeof m&&(c.roundTripTime=Math.round(1e3*m));const g=a("jitter");"number"==typeof g&&(c.jitter=Math.round(1e3*g));const _=a("framesPerSecond");"number"!=typeof _&&null!==_||(c.frameRateSent=_);const v=a("bytesReceived");"number"==typeof v&&(c.bytesReceived=v);const b=a("packetsReceived");"number"==typeof b&&(c.packetsReceived=b);const y=a("framesPerSecond");"number"!=typeof y&&null!==y||(c.frameRateReceived=y);const k=a("totalPacketSendDelay");"number"==typeof k&&(c.totalPacketSendDelay=k);const w=a("totalEncodeTime");"number"==typeof w&&(c.totalEncodeTime=w);const S=a("framesEncoded");"number"==typeof S&&(c.framesEncoded=S);const T=a("estimatedPlayoutTimestamp");"number"==typeof T&&(c.estimatedPlayoutTimestamp=T);const C=a("totalDecodeTime");"number"==typeof C&&(c.totalDecodeTime=C);const P=a("framesDecoded");"number"==typeof P&&(c.framesDecoded=P);const E=a("jitterBufferDelay");"number"==typeof E&&(c.jitterBufferDelay=E);const O=a("jitterBufferEmittedCount");"number"==typeof O&&(c.jitterBufferEmittedCount=O);const L=a("freezeCount");return"number"==typeof L&&(c.freezeCount=L),c}return pe=function(t,n){return t&&"function"==typeof t.getStats?function(t,n){const i=h(t,"audio","local"),r=h(t,"video","local"),c=h(t,"audio"),l=h(t,"video"),f={activeIceCandidatePair:null,localAudioTrackStats:[],localVideoTrackStats:[],remoteAudioTrackStats:[],remoteVideoTrackStats:[]},m=e([[i,"localAudioTrackStats",!1],[r,"localVideoTrackStats",!1],[c,"remoteAudioTrackStats",!0],[l,"remoteVideoTrackStats",!0]],([e,i,r])=>e.map(e=>function(e,t,n={}){if(void 0!==n.testForChrome||s)return p(e,t,n);if(void 0!==n.testForFirefox||o)return function(e,t,n){return e.getStats(t).then(e=>[g(e,n)])}(e,t,n);if(void 0!==n.testForSafari||a)return p(e,t,n);return Promise.reject(new Error("RTCPeerConnection#getStats() not supported"))}(t,e,Object.assign({isRemote:r},n)).then(t=>{t.forEach(t=>{t.trackId=e.id,f[i].push(t)})})));return Promise.all(m).then(()=>function(e,t={}){if(void 0!==t.testForChrome||s||void 0!==t.testForSafari||a)return e.getStats().then(d);if(void 0!==t.testForFirefox||o)return e.getStats().then(u);return Promise.reject(new Error("RTCPeerConnection#getStats() not supported"))}(t,n)).then(e=>(f.activeIceCandidatePair=e,f))}(t,n):Promise.reject(new Error("Given PeerConnection does not support getStats"))},pe}function we(){if(ge)return me;return ge=1,me=function(e={audio:!0,video:!0}){return"object"==typeof navigator&&"object"==typeof navigator.mediaDevices&&"function"==typeof navigator.mediaDevices.getUserMedia?navigator.mediaDevices.getUserMedia(e):Promise.reject(new Error("getUserMedia is not supported"))}}var Se,Te,Ce,Pe,Ee,Oe={exports:{}},Le={exports:{}};function Re(){if(Se)return Le.exports;Se=1;var e,t="object"==typeof Reflect?Reflect:null,n=t&&"function"==typeof t.apply?t.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};e=t&&"function"==typeof t.ownKeys?t.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwn