UNPKG

trtc-sdk-v5

Version:
4 lines (3 loc) 12.5 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).CrossRoom=t()}(this,function(){"use strict";function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,o=Array(t);r<t;r++)o[r]=e[r];return o}function t(e,t,r,o,n,a,i){try{var u=e[a](i),c=u.value}catch(e){return void r(e)}u.done?t(c):Promise.resolve(c).then(o,n)}function r(e){return function(){var r=this,o=arguments;return new Promise(function(n,a){var i=e.apply(r,o);function u(e){t(i,n,a,u,c,"next",e)}function c(e){t(i,n,a,u,c,"throw",e)}u(void 0)})}}function o(e,t,r){return t&&function(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,u(o.key),o)}}(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function n(){ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e,t,r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",i=r.toStringTag||"@@toStringTag";function u(r,o,n,i){var u=o&&o.prototype instanceof s?o:s,d=Object.create(u.prototype);return a(d,"_invoke",function(r,o,n){var a,i,u,s=0,d=n||[],f=!1,l={p:0,n:0,v:e,a:p,f:p.bind(e,4),d:function(t,r){return a=t,i=0,u=e,l.n=r,c}};function p(r,o){for(i=r,u=o,t=0;!f&&s&&!n&&t<d.length;t++){var n,a=d[t],p=l.p,y=a[2];r>3?(n=y===o)&&(u=a[(i=a[4])?5:(i=3,3)],a[4]=a[5]=e):a[0]<=p&&((n=r<2&&p<a[1])?(i=0,l.v=o,l.n=a[1]):p<y&&(n=r<3||a[0]>o||o>y)&&(a[4]=r,a[5]=o,l.n=y,i=0))}if(n||r>1)return c;throw f=!0,o}return function(n,d,y){if(s>1)throw TypeError("Generator is already running");for(f&&1===d&&p(d,y),i=d,u=y;(t=i<2?e:u)||!f;){a||(i?i<3?(i>1&&(l.n=-1),p(i,u)):l.n=u:l.v=u);try{if(s=2,a){if(i||(n="next"),t=a[n]){if(!(t=t.call(a,u)))throw TypeError("iterator result is not an object");if(!t.done)return t;u=t.value,i<2&&(i=0)}else 1===i&&(t=a.return)&&t.call(a),i<2&&(u=TypeError("The iterator does not provide a '"+n+"' method"),i=1);a=e}else if((t=(f=l.n<0)?u:r.call(o,l))!==c)break}catch(t){a=e,i=1,u=t}finally{s=1}}return{value:t,done:f}}}(r,n,i),!0),d}var c={};function s(){}function d(){}function f(){}t=Object.getPrototypeOf;var l=[][o]?t(t([][o]())):(a(t={},o,function(){return this}),t),p=f.prototype=s.prototype=Object.create(l);function y(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,f):(e.__proto__=f,a(e,i,"GeneratorFunction")),e.prototype=Object.create(p),e}return d.prototype=f,a(p,"constructor",f),a(f,"constructor",d),d.displayName="GeneratorFunction",a(f,i,"GeneratorFunction"),a(p),a(p,i,"Generator"),a(p,o,function(){return this}),a(p,"toString",function(){return"[object Generator]"}),(n=function(){return{w:u,m:y}})()}function a(e,t,r,o){var n=Object.defineProperty;try{n({},"",{})}catch(e){n=0}a=function(e,t,r,o){function i(t,r){a(e,t,function(e){return this._invoke(t,r,e)})}t?n?n(e,t,{value:r,enumerable:!o,configurable:!o,writable:!o}):e[t]=r:(i("next",0),i("throw",1),i("return",2))},a(e,t,r,o)}function i(t){return function(t){if(Array.isArray(t))return e(t)}(t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||s(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,t);if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function s(t,r){if(t){if("string"==typeof t)return e(t,r);var o={}.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(t):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?e(t,r):void 0}}var d=Object.defineProperty,f=Object.defineProperties,l=Object.getOwnPropertyDescriptor,p=Object.getOwnPropertyDescriptors,y=Object.getOwnPropertySymbols,m=Object.prototype.hasOwnProperty,h=Object.prototype.propertyIsEnumerable,v=function(e,t,r){return t in e?d(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r},b=function(e,t){for(var r in t||(t={}))m.call(t,r)&&v(e,r,t[r]);if(y){var o,n=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=s(e))||t){r&&(e=r);var o=0,n=function(){};return{s:n,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){u=!0,a=e},f:function(){try{i||null==r.return||r.return()}finally{if(u)throw a}}}}(y(t));try{for(n.s();!(o=n.n()).done;){r=o.value;h.call(t,r)&&v(e,r,t[r])}}catch(e){n.e(e)}finally{n.f()}}return e},g=function(e,t){return f(e,p(t))},w=function(e,t,r,o){for(var n,a=l(t,r),i=e.length-1;i>=0;i--)(n=e[i])&&(a=n(t,r,a)||a);return a&&d(t,r,a),a},S=function(e,t,r){return v(e,"symbol"!==c(t)?t+"":t,r)},R={roomId:{type:"number"},strRoomId:{type:"string"}},I={name:"option",required:!0,properties:g(b({},R),{userId:{type:"string"}})},E={name:"option",required:!0,properties:{updateList:{type:"array",required:!0,arrayItem:{required:!0,type:"object",properties:g(b({},I.properties),{userId:{required:!1,type:"string"},muteAudio:{type:"boolean"},muteVideo:{type:"boolean"},muteSubStream:{type:"boolean"}})}}}},O={name:"option",properties:b({},R)},k=function(e){return"function"==typeof e};var _=function(e){var t=e.retryFunction,o=e.settings,a=e.onError,i=e.onRetrying,u=e.onRetryFailed,c=e.onRetrySuccess,s=e.context;return function(){for(var e=this,d=arguments.length,f=new Array(d),l=0;l<d;l++)f[l]=arguments[l];var p=o.retries,y=void 0===p?5:p,m=o.timeout,h=void 0===m?1e3:m,v=0,b=-1,g=0,w=function(){var o=r(n().m(function r(o,d){var l,p,m,S,R;return n().w(function(r){for(;;)switch(r.p=r.n){case 0:return l=s||e,r.p=1,r.n=2,t.apply(l,f);case 2:p=r.v,v>0&&c&&c.call(e,v),v=0,o(p),r.n=4;break;case 3:r.p=3,R=r.v,m=function(){clearTimeout(b),v=0,g=2,d(R)},S=function(){2!==g&&v<(k(y)?y():y)?(v++,g=1,k(i)&&i.call(e,v,m),b=window.setTimeout(function(){b=-1,w(o,d)},k(h)?h(v):h)):(m(),k(u)&&u.call(e,R))},k(a)?a.call(e,{error:R,retry:S,reject:d,retryFuncArgs:f,retriedCount:v}):S();case 4:return r.a(2)}},r,null,[[1,3]])}));return function(e,t){return o.apply(this,arguments)}}();return new Promise(w)}},j=new WeakMap;function A(e){var t=e.settings,r=void 0===t?{retries:5,timeout:2e3}:t,o=e.onError,n=e.onRetrying,a=e.onRetryFailed;return function(e,t,i){var u=_({retryFunction:i.value,settings:r,onError:function(r){var n,a=r.error,i=r.retry,u=r.reject,c=r.retryFuncArgs;o?o.call(this,a,function(){var r;(null==(r=j.get(e))?void 0:r.has(t))?i():u(a)},u,c):(null==(n=j.get(e))?void 0:n.has(t))?i():u(a)},onRetrying:function(r,o){var a;k(n)&&n.call(this,r,o),(null==(a=j.get(e))?void 0:a.has(t))&&(j.get(e).get(t).stopRetry=o)},onRetryFailed:a});return i.value=function(){for(var r=j.get(e),o=arguments.length,n=new Array(o),a=0;a<o;a++)n[a]=arguments[a];return r?r.set(t,{args:n}):j.set(e,new Map([[t,{args:n}]])),u.apply(this,n).finally(function(){var r;return null==(r=j.get(e))?void 0:r.delete(t)})},i}}var P=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.core=t,S(this,"disableRandomCall",!0),S(this,"connectedRoomIdSet",new Set),S(this,"updateSeq",0),S(this,"_log"),this._log=this.core.log.createChild({id:"".concat(this.getAlias())})}return o(e,[{key:"getName",value:function(){return e.Name}},{key:"getAlias",value:function(){return"crs-r"}},{key:"getGroup",value:function(e){var t,r=(null==e?void 0:e.userId)||(null==(t=null==e?void 0:e.updateList)?void 0:t[0].userId)||"";return r||(e?e.updateList?String(e.updateList[0].roomId)||e.updateList[0].strRoomId||"":String(e.roomId)||e.strRoomId||"":"*")}},{key:"getValidateRule",value:function(e){switch(e){case"start":return I;case"update":return E;case"stop":return O}}},{key:"start",value:(c=r(n().m(function e(t){var r,o,a,i,u,c,s,d,f;return n().w(function(e){for(;;)switch(e.p=e.n){case 0:if(r=t.roomId,o=t.strRoomId,a=t.userId,i=this.core.errorModule,u=i.RtcError,c=i.ErrorCode,this.core.room.sendSignalMessage){e.n=1;break}throw new u({code:c.ENV_NOT_SUPPORTED});case 1:return s=r||o,e.p=2,e.n=3,this.core.room.sendSignalMessage({command:"connect_other_room",responseCommand:String(8209),data:{roomId:s,userId:a,localRoomId:a?void 0:this.core.room.roomId},retries:3});case 3:if(0===(d=e.v).data.code){e.n=4;break}throw new u({code:c.SERVER_ERROR,extraCode:d.data.code,message:d.data.message});case 4:e.n=6;break;case 5:if(e.p=5,(f=e.v).code===this.core.errorModule.CoreErrorCode.API_CALL_ABORTED){e.n=6;break}throw f;case 6:a||this.connectedRoomIdSet.add(s);case 7:return e.a(2)}},e,this,[[2,5]])})),function(e){return c.apply(this,arguments)})},{key:"update",value:(u=r(n().m(function e(t){var r,o,a,i,u,c,s,d;return n().w(function(e){for(;;)switch(e.p=e.n){case 0:if(r=t.updateList,a=this.core.errorModule,i=a.RtcError,u=a.ErrorCode,this.core.room.sendSignalMessage){e.n=1;break}throw new i({code:u.ENV_NOT_SUPPORTED});case 1:return c=r.find(function(e){return e.userId})?0:1,e.p=2,e.n=3,this.core.room.sendSignalMessage({command:"update_other_room_forward_mode",responseCommand:String(8213),data:{seq:++this.updateSeq,operationType:c,updateList:r.map(function(e){var t=e.roomId,r=e.strRoomId;return{roomId:t||r,userId:e.userId,muteAudio:e.muteAudio,muteVideo:e.muteVideo,muteSubStream:e.muteSubStream}})},retries:3});case 3:if(!(s=e.v).data.data.expectSeq){e.n=4;break}return this.updateSeq=s.data.data.expectSeq,e.a(2,this.update({updateList:r}));case 4:if(0===s.data.code){e.n=5;break}throw new i({code:u.SERVER_ERROR,extraCode:s.data.code,message:s.data.message});case 5:if(!((null==(o=s.data.data.errorList)?void 0:o.length)>0)){e.n=6;break}throw new i({code:u.UNKNOWN_ERROR,message:s.data.data.errorList[0].message});case 6:e.n=8;break;case 7:if(e.p=7,(d=e.v).code===this.core.errorModule.CoreErrorCode.API_CALL_ABORTED){e.n=8;break}throw d;case 8:return e.a(2)}},e,this,[[2,7]])})),function(e){return u.apply(this,arguments)})},{key:"stop",value:(a=r(n().m(function e(){var t,r,o,a,u,c,s,d=arguments;return n().w(function(e){for(;;)switch(e.n){case 0:if(r=(t=d.length>0&&void 0!==d[0]?d[0]:{}).roomId,o=t.strRoomId,!(a=r||o)){e.n=2;break}return e.n=1,this.doStop(a);case 1:e.n=7;break;case 2:if(!(this.connectedRoomIdSet.size>0)){e.n=6;break}u=0,c=i(this.connectedRoomIdSet.values());case 3:if(!(u<c.length)){e.n=5;break}return s=c[u],e.n=4,this.doStop(s);case 4:u++,e.n=3;break;case 5:e.n=7;break;case 6:return e.n=7,this.doStop();case 7:return e.a(2)}},e,this)})),function(){return a.apply(this,arguments)})},{key:"doStop",value:(t=r(n().m(function e(t){var r,o,a,i,u;return n().w(function(e){for(;;)switch(e.p=e.n){case 0:if(r=this.core.errorModule,o=r.RtcError,a=r.ErrorCode,this.core.room.sendSignalMessage){e.n=1;break}throw new o({code:a.ENV_NOT_SUPPORTED});case 1:return e.p=1,e.n=2,this.core.room.sendSignalMessage({command:"disconnect_other_room",responseCommand:String(8211),data:{roomId:t,localRoomId:this.core.room.roomId},retries:3});case 2:if(0===(i=e.v).data.code){e.n=3;break}throw new o({code:a.SERVER_ERROR,extraCode:i.data.code,message:i.data.message});case 3:e.n=5;break;case 4:if(e.p=4,(u=e.v).code===this.core.errorModule.CoreErrorCode.API_CALL_ABORTED){e.n=5;break}throw u;case 5:this.connectedRoomIdSet.delete(t);case 6:return e.a(2)}},e,this,[[1,4]])})),function(e){return t.apply(this,arguments)})},{key:"destroy",value:function(){}}]);var t,a,u,c}();return S(P,"Name","CrossRoom"),w([A({settings:{retries:3,timeout:1e3},onRetrying:function(e){this._log.warn("retry start: ".concat(e))}})],P.prototype,"start"),w([A({settings:{retries:3,timeout:1e3},onRetrying:function(e){this._log.warn("retry update: ".concat(e))}})],P.prototype,"update"),P});