@agora-js/report
Version:
logger and report module across @agora-js packages
6 lines (4 loc) • 42 kB
JavaScript
/**
* AgoraWebSDK_N-v4.24.4-0-gb4d645709-dirty Copyright AgoraInc.
*/
import{EventEmitter as t,setParameter as e,getParameter as r,VERSION as o,retryable as n,checkValidString as s,checkValidNumber as a,wait as i,AgoraRTCErrorCode as c,AgoraRTCError as l,throttleByKey as p,IS_GLOBAL_VERSION as d,BUILD as u,isPageRecording as E,loadInstallId as h,dividePackage as _,networkIndicator as g,NETWORK_STATE as S,DEFAULT_RETRY_CONFIG as R,post as T,postProtobuf as I,AgoraAPITag as f,AgoraAPIName as O,getMessageEncoding as m,appendBuffer as A}from"@agora-js/shared";export{AgoraRTCErrorCode}from"@agora-js/shared";import v from"axios";function y(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,o=Array(e);r<e;r++)o[r]=t[r];return o}function P(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var o=r.call(t,e||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function N(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,o)}return r}function b(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?N(Object(r),!0).forEach((function(e){P(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):N(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function C(t,e){return C=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},C(t,e)}function D(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var o,n,s,a,i=[],c=!0,l=!1;try{if(s=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(o=s.call(r)).done)&&(i.push(o.value),i.length!==e);c=!0);}catch(t){l=!0,n=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw n}}return i}}(t,e)||function(t,e){if(t){if("string"==typeof t)return y(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?y(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function U(){U=function(t,e){return new r(t,void 0,e)};var t=RegExp.prototype,e=new WeakMap;function r(t,o,n){var s=RegExp(t,o);return e.set(s,n||e.get(t)),C(s,r.prototype)}function o(t,r){var o=e.get(r);return Object.keys(o).reduce((function(e,r){var n=o[r];if("number"==typeof n)e[r]=t[n];else{for(var s=0;void 0===t[n[s]]&&s+1<n.length;)s++;e[r]=t[n[s]]}return e}),Object.create(null))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&C(t,e)}(r,RegExp),r.prototype.exec=function(e){var r=t.exec.call(this,e);if(r){r.groups=o(r,this);var n=r.indices;n&&(n.groups=o(n,this))}return r},r.prototype[Symbol.replace]=function(r,n){if("string"==typeof n){var s=e.get(this);return t[Symbol.replace].call(this,r,n.replace(/\$<([^>]+)(>|$)/g,(function(t,e,r){if(""===r)return t;var o=s[e];return Array.isArray(o)?"$"+o.join("$"):"number"==typeof o?"$"+o:""})))}if("function"==typeof n){var a=this;return t[Symbol.replace].call(this,r,(function(){var t=arguments;return"object"!=typeof t[t.length-1]&&(t=[].slice.call(t)).push(o(t,a)),n.apply(this,t)}))}return t[Symbol.replace].call(this,r,n)},U.apply(this,arguments)}const w=new class extends t{constructor(){super(...arguments),P(this,"currentUploadLogID",0)}reportLogUploadError(t){const e=t.errorRange;e[e.length-1]&&e[e.length-1]>this.currentUploadLogID&&(this.currentUploadLogID=e[e.length-1],this.emit("REPORT_LOG_UPLOAD",t))}};class L{constructor(t){P(this,"logger",void 0),P(this,"prefixLists",[]),this.logger=t}debug(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];this.logger.debug(...this.prefixLists,...e)}info(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];this.logger.info(...this.prefixLists,...e)}warning(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];this.logger.warning(...this.prefixLists,...e)}error(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];this.logger.error(...this.prefixLists,...e)}prefix(t){return this.prefixLists.push(t),this}popPrefix(){return this.prefixLists.pop(),this}}function M(){const t=new Date;return t.toTimeString().split(" ")[0]+":"+t.getMilliseconds()}function W(){const t=new Date,e=/((\d+:){2}\d+)/.exec((new Date).toUTCString());return e?(null==e?void 0:e[0])+":"+t.getUTCMilliseconds():t.toTimeString().split(" ")[0]+":"+t.getMilliseconds()}const x={DEBUG:0,INFO:1,WARNING:2,ERROR:3,NONE:4},V=Date.now(),j=t=>{for(const e in x)if(Object.prototype.hasOwnProperty.call(x,e)&&x[e]===t)return e;return"DEFAULT"};class k{constructor(){P(this,"proxyServerURL",void 0),P(this,"logLevel",x.DEBUG),P(this,"uploadState","collecting"),P(this,"uploadLogWaitingList",[]),P(this,"uploadLogUploadingList",[]),P(this,"uploadErrorCount",0),P(this,"currentLogID",0),P(this,"url",void 0),P(this,"extLog",((t,e)=>{this.appendLogToWaitingList(t,...e)}))}debug(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];const o=[x.DEBUG].concat(e);this.log.apply(this,o)}info(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];const o=[x.INFO].concat(e);this.log.apply(this,o)}warning(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];const o=[x.WARNING].concat(e);this.log.apply(this,o)}warn(){this.warning(...arguments)}error(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];const o=[x.ERROR].concat(e);this.log.apply(this,o)}upload(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];const o=[x.DEBUG].concat(e);this.uploadLog.apply(this,o)}setLogLevel(t){t=Math.min(Math.max(0,t),4),this.logLevel=t}enableLogUpload(){e("UPLOAD_LOG",!0)}disableLogUpload(){e("UPLOAD_LOG",!1),this.uploadLogUploadingList=[],this.uploadLogWaitingList=[]}setProxyServer(t){this.proxyServerURL=t}prefix(t){return new L(this).prefix(t)}log(){for(var t=arguments.length,e=new Array(t),o=0;o<t;o++)e[o]=arguments[o];if(Date.now()-V<100)return void setTimeout((()=>{this.log(...e)}),Date.now()-V);const n=Math.max(0,Math.min(4,e[0]));if(e[0]=M()+" Agora-SDK [".concat(j(n),"]:"),this.appendLogToWaitingList(n,...e),n<this.logLevel)return;const s=M()+" %cAgora-SDK [".concat(j(n),"]:");let a=[];if(!r("USE_NEW_LOG"))switch(n){case x.DEBUG:a=[s,"color: #64B5F6;"].concat(e.slice(1)),console.log.apply(console,a);break;case x.INFO:a=[s,"color: #1E88E5; font-weight: bold;"].concat(e.slice(1)),console.log.apply(console,a);break;case x.WARNING:a=[s,"color: #FB8C00; font-weight: bold;"].concat(e.slice(1)),console.warn.apply(console,a);break;case x.ERROR:a=[s,"color: #B00020; font-weight: bold;"].concat(e.slice(1)),console.error.apply(console,a)}}uploadLog(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];if(Date.now()-V<100)return void setTimeout((()=>{this.uploadLog(...e)}),Date.now()-V);const o=Math.max(0,Math.min(4,e[0]));e[0]=M()+" Agora-SDK [".concat(j(o),"]:"),this.appendLogToWaitingList(o,...e)}appendLogToWaitingList(t){if(!r("UPLOAD_LOG"))return;for(var e=arguments.length,o=new Array(e>1?e-1:0),n=1;n<e;n++)o[n-1]=arguments[n];Array.isArray(o[0])?o[0][0]=W()+" Agora-SDK [".concat(j(t),"]:"):o[0]=W()+" Agora-SDK [".concat(j(t),"]:");let s="";o.forEach((t=>{"object"==typeof t&&(t=JSON.stringify(t)),s+="".concat(t," ")})),this.uploadLogWaitingList.push({payload_str:s,log_level:t,log_item_id:this.currentLogID++}),"uploading"===this.uploadState&&0===this.uploadLogUploadingList.length&&this.uploadLogInterval()}startUpload(){this.uploadState="uploading",0===this.uploadLogUploadingList.length&&this.uploadLogInterval()}async uploadLogs(){const t=this.uploadLogUploadingList,e={sdk_version:o,process_id:r("PROCESS_ID"),payload:JSON.stringify(t)};return n((async()=>{const t=await v.post(this.url||(this.proxyServerURL?"https://".concat(this.proxyServerURL,"/ls/?h=").concat(r("LOG_UPLOAD_SERVER"),"&p=443&d=upload/v1"):"https://".concat(r("LOG_UPLOAD_SERVER"),"/upload/v1")),e,{responseType:"text"});if("OK"!==t.data){const e=new Error("unexpected upload log response");throw e.response=t,e}}),(()=>(this.uploadLogUploadingList=[],!1)),(e=>{const r={status:-1,message:e.message,errorRange:t.map((t=>t.log_item_id))};return e.response?(r.status=e.response.status,r.data=e.response.data,r.headers=e.response.headers):e.request&&(r.status=e.request.status),w.reportLogUploadError(r),!0}),{timeout:r("UPLOAD_LOG_REQUEST_RETRY_INTERVAL"),maxRetryTimeout:r("UPLOAD_LOG_REQUEST_MAX_RETRY_INTERVAL")})}uploadLogInterval(){0===this.uploadLogUploadingList.length&&0===this.uploadLogWaitingList.length||(0===this.uploadLogUploadingList.length&&(this.uploadLogUploadingList=this.uploadLogWaitingList.splice(0,r("UPLOAD_LOG_LENGTH_EACH_TIME"))),this.uploadLogs().then((()=>{this.uploadErrorCount=0,this.uploadLogWaitingList.length>0&&window.setTimeout((()=>this.uploadLogInterval()),r("UPLOAD_LOG_INTERVAL"))})).catch((t=>{this.uploadErrorCount+=1,this.uploadErrorCount<2?window.setTimeout((()=>this.uploadLogInterval()),r("UPLOAD_LOG_TWICE_RETRY_INTERVAL_V1")):window.setTimeout((()=>this.uploadLogInterval()),r("UPLOAD_LOG_RETRY_INTERVAL_V1"))})))}}const F=new k;let B=function(t){return t.FREE="free",t.UPLOADING="uploading",t}({}),G=function(t){return t[t.MISC=0]="MISC",t[t.INTERNAL_EVENT=1]="INTERNAL_EVENT",t[t.PUBLIC_EVENT=2]="PUBLIC_EVENT",t[t.WEB_EVENT=3]="WEB_EVENT",t[t.INTERNAL_API=4]="INTERNAL_API",t[t.WEB_API=5]="WEB_API",t[t.PUBLIC_API=6]="PUBLIC_API",t}({});function J(t){return s(t.reportId,"params.reportId",0,100,!1),s(t.category,"params.category",0,100,!1),s(t.event,"params.event",0,100,!1),s(t.label,"params.label",0,100,!1),a(t.value,"params.value",Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,!1),!0}let Y=function(t){return t[t.RECOVER=0]="RECOVER",t[t.WARNING=1]="WARNING",t[t.ERROR=2]="ERROR",t}({}),H=function(t){return t.CONFIG_DISTRIBUTE="config-distribute-error",t}({});const K={sid:"",lts:0,success:null,cname:null,uid:null,peer:null,cid:null,elapse:null,extend:null,vid:0};let Q=function(t){return t.PUBLISH="publish",t.SUBSCRIBE="subscribe",t.WS_COMPRESSOR_INIT="ws_compressor_init",t.SESSION_INIT="session_init",t.JOIN_CHOOSE_SERVER="join_choose_server",t.RTE_DETAIL="rte_detail_stats",t.REQ_USER_ACCOUNT="req_user_account",t.JOIN_GATEWAY="join_gateway",t.REJOIN_GATEWAY="rejoin_gateway",t.STREAM_SWITCH="stream_switch",t.REQUEST_PROXY_WORKER_MANAGER="request_proxy_worker_manager",t.REQUEST_PROXY_APPCENTER="request_proxy_appcenter",t.FIRST_VIDEO_RECEIVED="first_video_received",t.FIRST_AUDIO_RECEIVED="first_audio_received",t.FIRST_VIDEO_DECODE="first_video_decode",t.FIRST_AUDIO_DECODE="first_audio_decode",t.XLA_PEER_FIRST_VIDEO_FRAME="xla_peer_first_video_frame",t.ON_ADD_AUDIO_STREAM="on_add_audio_stream",t.ON_ADD_VIDEO_STREAM="on_add_video_stream",t.ON_UPDATE_STREAM="on_update_stream",t.ON_REMOVE_STREAM="on_remove_stream",t.USER_ANALYTICS="req_user_analytics",t.PC_STATS="pc_stats",t.UPDATE_REMOTE_RTPCAPABILITIES="update_remote_rtpCapabilities",t.AB_TEST="ab_test",t.ALARM_STATUS_NOTIFY="alarm_status_notify",t}({}),X=function(t){return t.SESSION="io.agora.pb.Wrtc.Session",t.JOIN_CHOOSE_SERVER="io.agora.pb.Wrtc.JoinChooseServer",t.RTE_DETAIL="io.agora.pb.Wrtc.RteDetailStats",t.REQ_USER_ACCOUNT="io.agora.pb.Wrtc.ReqUserAccount",t.JOIN_GATEWAY="io.agora.pb.Wrtc.JoinGateway",t.RE_JOIN_GATEWAY="io.agora.pb.Wrtc.ReJoinGateway",t.PUBLISH="io.agora.pb.Wrtc.Publish",t.SUBSCRIBE="io.agora.pb.Wrtc.Subscribe",t.WS_COMPRESSOR_INIT="io.agora.pb.Wrtc.WsCompressorInit",t.STREAM_SWITCH="io.agora.pb.Wrtc.StreamSwitch",t.AUDIO_SENDING_STOPPED="io.agora.pb.Wrtc.AudioSendingStopped",t.VIDEO_SENDING_STOPPED="io.agora.pb.Wrtc.VideoSendingStopped",t.REQUEST_PROXY_APPCENTER="io.agora.pb.Wrtc.RequestProxyAppCenter",t.REQUEST_PROXY_WORKER_MANAGER="io.agora.pb.Wrtc.RequestProxyWorkerManager",t.API_INVOKE="io.agora.pb.Wrtc.ApiInvoke",t.FIRST_VIDEO_RECEIVED="io.agora.pb.Wrtc.FirstVideoReceived",t.FIRST_AUDIO_RECEIVED="io.agora.pb.Wrtc.FirstAudioReceived",t.FIRST_VIDEO_DECODE="io.agora.pb.Wrtc.FirstVideoDecode",t.FIRST_AUDIO_DECODE="io.agora.pb.Wrtc.FirstAudioDecode",t.XLA_PEER_FIRST_VIDEO_FRAME="io.agora.pb.Wrtc.XLAPeerFirstVideoFrame",t.ON_ADD_AUDIO_STREAM="io.agora.pb.Wrtc.OnAddAudioStream",t.ON_ADD_VIDEO_STREAM="io.agora.pb.Wrtc.OnAddVideoStream",t.ON_UPDATE_STREAM="io.agora.pb.Wrtc.OnUpdateStream",t.ON_REMOVE_STREAM="io.agora.pb.Wrtc.OnRemoveStream",t.JOIN_CHANNEL_TIMEOUT="io.agora.pb.Wrtc.JoinChannelTimeout",t.PEER_PUBLISH_STATUS="io.agora.pb.Wrtc.PeerPublishStatus",t.WORKER_EVENT="io.agora.pb.Wrtc.WorkerEvent",t.AP_WORKER_EVENT="io.agora.pb.Wrtc.APWorkerEvent",t.JOIN_WEB_PROXY_AP="io.agora.pb.Wrtc.JoinWebProxyAP",t.WEBSOCKET_QUIT="io.agora.pb.Wrtc.WebSocketQuit",t.USER_ANALYTICS="io.agora.pb.Wrtc.UserAnalytics",t.AUTOPLAY_FAILED="io.agora.pb.Wrtc.AutoplayFailed",t.PC_STATS="io.agora.pb.Wrtc.PCStats",t.UPDATE_REMOTE_RTPCAPABILITIES="io.agora.pb.Wrtc.UpdateRemoteRTPCapabilities",t.AB_TEST="io.agora.pb.Wrtc.ABTest",t.ALARM_STATUS_NOTIFY="io.agora.pb.Wrtc.AlarmStatusNotify",t}({}),q=function(t){return t[t.WORKER_EVENT=156]="WORKER_EVENT",t[t.AP_WORKER_EVENT=160]="AP_WORKER_EVENT",t}({}),$=function(t){return t[t.SESSION=26]="SESSION",t[t.JOIN_CHOOSE_SERVER=27]="JOIN_CHOOSE_SERVER",t[t.REQ_USER_ACCOUNT=196]="REQ_USER_ACCOUNT",t[t.JOIN_GATEWAY=28]="JOIN_GATEWAY",t[t.PUBLISH=30]="PUBLISH",t[t.SUBSCRIBE=29]="SUBSCRIBE",t[t.WS_COMPRESSOR_INIT=9430]="WS_COMPRESSOR_INIT",t[t.STREAM_SWITCH=32]="STREAM_SWITCH",t[t.AUDIO_SENDING_STOPPED=33]="AUDIO_SENDING_STOPPED",t[t.VIDEO_SENDING_STOPPED=34]="VIDEO_SENDING_STOPPED",t[t.REQUEST_PROXY_APPCENTER=35]="REQUEST_PROXY_APPCENTER",t[t.REQUEST_PROXY_WORKER_MANAGER=36]="REQUEST_PROXY_WORKER_MANAGER",t[t.API_INVOKE=41]="API_INVOKE",t[t.FIRST_VIDEO_RECEIVED=348]="FIRST_VIDEO_RECEIVED",t[t.FIRST_AUDIO_RECEIVED=349]="FIRST_AUDIO_RECEIVED",t[t.FIRST_VIDEO_DECODE=350]="FIRST_VIDEO_DECODE",t[t.FIRST_AUDIO_DECODE=351]="FIRST_AUDIO_DECODE",t[t.ON_ADD_AUDIO_STREAM=352]="ON_ADD_AUDIO_STREAM",t[t.ON_ADD_VIDEO_STREAM=353]="ON_ADD_VIDEO_STREAM",t[t.ON_UPDATE_STREAM=356]="ON_UPDATE_STREAM",t[t.ON_REMOVE_STREAM=355]="ON_REMOVE_STREAM",t[t.JOIN_CHANNEL_TIMEOUT=407]="JOIN_CHANNEL_TIMEOUT",t[t.PEER_PUBLISH_STATUS=408]="PEER_PUBLISH_STATUS",t[t.WORKER_EVENT=156]="WORKER_EVENT",t[t.AP_WORKER_EVENT=160]="AP_WORKER_EVENT",t[t.JOIN_WEB_PROXY_AP=700]="JOIN_WEB_PROXY_AP",t[t.WEBSOCKET_QUIT=671]="WEBSOCKET_QUIT",t[t.USER_ANALYTICS=1e4]="USER_ANALYTICS",t[t.AUTOPLAY_FAILED=9178]="AUTOPLAY_FAILED",t}({});const z="[config-restore]",Z="websdk_ng_",tt=Z+"blocked_config_hashes",et=Z+"api_failure_records",rt=Z+"global_parameter",ot=Z+"config_restore_state";function nt(t){if(null==t||"object"!=typeof t)return JSON.stringify(t);if(Array.isArray(t))return"["+t.map((t=>nt(t))).join(",")+"]";return"{"+Object.keys(t).sort().map((e=>JSON.stringify(e)+":"+nt(t[e]))).join(",")+"}"}function st(t){let e=2166136261;for(let r=0;r<t.length;r++)e^=t.charCodeAt(r),e=Math.imul(e,16777619);return(e>>>0).toString(36)}function at(t){return st(nt(t))}function it(){try{const t=window.localStorage.getItem(ot);if(t)return JSON.parse(t)}catch(t){}return{currentConfigHash:"",configVerified:!1}}function ct(t){try{window.localStorage.setItem(ot,JSON.stringify(t))}catch(t){}}function lt(){try{const t=window.localStorage.getItem(et);return t?JSON.parse(t):[]}catch(t){return F.debug("[error] ".concat(z," error getting API failure records:"),t),[]}}function pt(){return lt().reduce(((t,e)=>t+e.count),0)}function dt(){try{window.localStorage.removeItem(et)}catch(t){F.debug("[error] ".concat(z," error clearing API failure records:"),t)}}function ut(){try{const t=pt(),e=r("MAX_CONFIG_RETRY");if(t<e)return;const o=it().currentConfigHash;F.debug("[warning] ".concat(z," restoring config due to ").concat(t," API failures")),o&&function(t){try{const e=window.localStorage.getItem(tt);let r=[];e&&(r=JSON.parse(e).configHashes);const o=[...new Set([...r,t])];window.localStorage.setItem(tt,JSON.stringify({configHashes:o,timestamp:Date.now()})),F.debug("[warning] ".concat(z," blocked config hash: ").concat(t))}catch(t){F.debug("[error] ".concat(z," error blocking config hash:"),t)}}(o),window.localStorage.removeItem(rt);const n=lt().slice(-5);It(null,{status:Y.ERROR,type:H.CONFIG_DISTRIBUTE,message:"Config cache cleared due to API failures",extend:{failureCount:t,maxRetry:e,blockedConfigHash:o,recentFailures:n.map((t=>({api:t.apiName,error:t.errorCode||t.errorMessage,count:t.count,lastTime:t.lastTimestamp})))}}),dt()}catch(t){F.debug("[error] ".concat(z," error restoring config:"),t)}}function Et(t,e){try{if(!r("ENABLE_CONFIG_RESTORE"))return;if(e&&"AgoraRTCException"===e.name){const t=r("CONFIG_ERROR_MONITOR");if(!Array.isArray(t)||!t.includes(e.code))return}const o=window.localStorage.getItem(rt);if(!o||o.length<20)return;const n=it();if(n.configVerified)return;const s=r("CONFIG_RESTORE_ERROR_API");if(!Array.isArray(s)||!s.includes(t))return;let a,i;e&&(e.code&&(a=e.code),i=e.message?e.message:"string"==typeof e?e:e.toString()),function(t,e,r){try{const o=lt(),n="".concat(t,":").concat(e||""),s=o.find((t=>"".concat(t.apiName,":").concat(t.errorCode||"")===n)),a=it().currentConfigHash;if(s)s.count++,s.lastTimestamp=Date.now(),r&&(s.errorMessage=r),a&&(s.configHash=a);else{const n=Date.now();o.push({apiName:t,errorCode:e,errorMessage:r,count:1,firstTimestamp:n,lastTimestamp:n,configHash:a||void 0})}const i=o.length>20?o.slice(-20):o;window.localStorage.setItem(et,JSON.stringify(i))}catch(t){F.debug("[error] ".concat(z," error saving API failure record:"),t)}}(t,a,i);const c=pt(),l=r("MAX_CONFIG_RETRY");F.debug("".concat(z," API failure count: ").concat(c,"/").concat(l,", API: ").concat(t,", Error: ").concat(a||i)),c>=l&&ut()}catch(t){}}function ht(t){try{const e=at(t),r=it();if(r.currentConfigHash&&r.currentConfigHash===e)return ct({currentConfigHash:e,configVerified:!0}),dt(),gt(),void F.debug("".concat(z," config verified as safe, skip further checks"));ct({currentConfigHash:e,configVerified:!1}),dt(),gt()}catch(t){F.debug("[error] ".concat(z," error on config applied:"),t)}}function _t(t){try{if(!r("ENABLE_CONFIG_RESTORE"))return!1;const e=at(t),o=window.localStorage.getItem(tt);if(!o)return!1;const n=JSON.parse(o),s=r("BLOCKED_CONFIG_MAX_TIME");return Date.now()-n.timestamp>s?(gt(),!1):n.configHashes.includes(e)}catch(t){return F.debug("[error] ".concat(z," error checking blocked config:"),t),!1}}function gt(){try{window.localStorage.removeItem(tt)}catch(t){F.debug("[error] ".concat(z," error resetting blocked config:"),t)}}class St{constructor(){P(this,"baseInfoMap",new Map),P(this,"proxyServer",void 0),P(this,"eventUploadTimer",void 0),P(this,"setSessionIdTimer",void 0),P(this,"url",void 0),P(this,"sids",new Set),P(this,"backupUrl",void 0),P(this,"_appId",void 0),P(this,"_aid",0),P(this,"keyEventUploadPendingItems",[]),P(this,"normalEventUploadPendingItems",[]),P(this,"apiInvokeUploadPendingItems",[]),P(this,"apiInvokeCount",0),P(this,"apiInvokeLoggedCount",0),P(this,"ltsList",[]),P(this,"lastSendNormalEventTime",Date.now()),P(this,"customReportCounterTimer",void 0),P(this,"customReportCount",0),P(this,"extApiInvoke",(async t=>{for(const e of t){const t=b(b({},e),{},{sid:null,invokeId:++this.apiInvokeCount,tag:f.TRACER});this.sendApiInvoke(t)}})),this.eventUploadTimer=window.setInterval(this.doSend.bind(this),r("EVENT_REPORT_SEND_INTERVAL")),this.setSessionIdTimer=window.setInterval(this.appendSessionId.bind(this),r("EVENT_REPORT_SEND_INTERVAL"))}getBaseInfoBySessionId(t){return this.baseInfoMap.get(t)}setAppId(t){this._appId=t,this._aid=parseInt(t.replace(/[a-fA-F0-9]{8}/g,(t=>{let e=D(t,2);return e[0]+e[1]})),16)||0}reportApiInvoke(t,e,o){e.timeout=e.timeout||6e4,e.reportResult=void 0===e.reportResult||e.reportResult;const n=Date.now();this.apiInvokeCount+=1;const s=this.apiInvokeCount,a=!!r("SHOW_REPORT_INVOKER_LOG"),d=!!r("SHOW_REPORT_USER_INVOKER_LOG"),u=a||d&&e.id;u&&(this.apiInvokeLoggedCount+=1);const E=this.apiInvokeLoggedCount;function h(t,r){if(u){let o="[apiInvoke-".concat(E,"]");if(e.id&&(o+="[".concat(e.id,"]")),e.name&&(o+="[".concat(e.name,"]"),e.name===O.JOIN))return F.info("".concat(o," ").concat(t));F.info("".concat(o," ").concat(t),"start"===t?e.options:r||"")}}const _=()=>({tag:e.tag,invokeId:s,sid:t,name:e.name,apiInvokeTime:n,options:e.options,states:e.states||null});h("start");let g=!1;i(e.timeout).then((()=>{g||(this.sendApiInvoke(b(b({},_()),{},{error:c.API_INVOKE_TIMEOUT,success:!1})),h("timeout"),Et(e.name,new l(c.API_INVOKE_TIMEOUT)))}));const S=new l(c.UNEXPECTED_ERROR,"".concat(e.name,": this api invoke is end"));return{onSuccess:t=>{const r=()=>{if(g)throw S;return g=!0,this.sendApiInvoke(b(b({},_()),{},{success:!0},e.reportResult&&{result:t})),h("onSuccess"),t};return o?p(r,e.name+"Success",o,(()=>g=!0)):r()},onError:t=>{const r=()=>{if(g)throw t;g=!0,this.sendApiInvoke(b(b({},_()),{},{success:!1,error:t})),Et(e.name,t),h("onFailure",t.toString())};return o?p(r,e.name+"Error",o,(()=>g=!0)):r()}}}_send(t,e,r){this.send({type:t,data:e},r)}_sendApiInvoke(t){return this.sendApiInvoke(t)}sessionInit(t,e){if(this.baseInfoMap.has(t))return;const n=Date.now(),s=this.createBaseInfo(t,n);s.cname=e.cname,s.rteUrl=e.rteUrl;const a=Object.assign({},{willUploadConsoleLog:r("UPLOAD_LOG"),maxTouchPoints:navigator.maxTouchPoints,areaVersion:d?"global":"oversea",areas:r("AREAS")&&r("AREAS").join(",")},e.extend),i=e.stringUid,c=e.channelProfile,l=e.channelMode,p=e.isABTestSuccess,_=e.lsid,g=e.clientRole,S=Date.now(),R=b(b({},s),{},{eventType:Q.SESSION_INIT,appid:e.appid,browser:navigator.userAgent,buildFormat:e.buildFormat,build:u,lts:S,elapse:S-n,extend:JSON.stringify(a),mode:e.mode,process:r("PROCESS_ID"),appType:r("APP_TYPE"),success:!0,version:o,stringUid:i,channelProfile:c,channelMode:l,isABTestSuccess:p,lsid:_,clientType:E()?42:20,clientRole:g,serviceId:r("PROCESS_ID"),extensionID:r("PLUGIN_INFO").join(",")||"",rteUrl:e.rteUrl,rteSid:e.rteSid,installId:h()});this.send({type:X.SESSION,data:R},!0)}reportRteDetail(t){const e=this.baseInfoMap.get(t);if(!e)return;const r=e.info,o=Date.now(),n=b(b({},r),{},{eventType:Q.RTE_DETAIL,lts:o,success:!0,elapse:o-e.startTime,vid:void 0===r.vid?0:Number(r.vid),ua:navigator.userAgent});this.send({type:X.RTE_DETAIL,data:n},!0)}joinChooseServer(t,e){const r=this.baseInfoMap.get(t);if(!r)return;const o=r.info;e.vid&&(o.vid=e.vid);const n=Date.now(),s=b(b({},o),{},{role:e.role,eventType:Q.JOIN_CHOOSE_SERVER,lts:n,eventElapse:e.elapse||n-e.lts,chooseServerAddr:e.csAddr,errorCode:e.ec,elapse:n-r.startTime,success:e.succ,chooseServerAddrList:JSON.stringify(e.serverList),uid:e.uid?parseInt(e.uid):null,cid:e.cid?parseInt(e.cid):null,chooseServerIp:e.csIp||"",opid:e.opid,unilbsServerIds:e.unilbsServerIds,extend:e.extend||void 0,isHttp3:e.isHttp3,corssRegionTagReq:e.corssRegionTagReq||void 0,corssRegionTagRes:e.corssRegionTagRes||void 0,ua:navigator.userAgent,resourceTimingInfo:e.resourceTimingInfo||void 0});this.send({type:X.JOIN_CHOOSE_SERVER,data:s},!0)}reqUserAccount(t,e){const r=this.baseInfoMap.get(t);if(!r)return;const o=r.info,n=Date.now(),s=b(b({},o),{},{eventType:Q.REQ_USER_ACCOUNT,lts:n,success:e.success,serverAddress:e.serverAddr,stringUid:e.stringUid,uid:e.uid,errorCode:e.errorCode,elapse:e.elapse||n-r.startTime,eventElapse:n-e.lts,extend:JSON.stringify(e.extend)});this.send({type:X.REQ_USER_ACCOUNT,data:s},!0)}joinGateway(t,e){const r=this.baseInfoMap.get(t);if(!r)return;const o=r.info;e.vid&&(o.vid=e.vid),o.uid=e.uid,o.cid=e.cid;const n=Date.now(),s=e.firstSuccess,a=e.addr,i=e.isProxy,c=n-r.startTime,l=b(b({},o),{},{eventType:Q.JOIN_GATEWAY,lts:n,gatewayAddr:e.addr,success:e.succ,errorCode:e.ec,errorMsg:e.errorMsg||"",elapse:c,eventElapse:n-e.lts,firstSuccess:s,signalChannel:e.signalChannel,preload:e.preload?1:0,installId:h(),isABTestSuccess:e.isABTestSuccess?1:0,gatewayIp:null,gatewayPort:null,isProxy:i?1:0}),p=l.success?1:0;if(e.succ&&(r.lastJoinSuccessTime=n),a)if("1"===l.signalChannel){const t=U(/(\d+\.\d+\.\d+\.\d+):(\d+)/,{ip:1,port:2}),e=a.match(t);l.gatewayIp=e&&e.groups?e.groups.ip:"",l.gatewayPort=e&&e.groups?e.groups.port:""}else if(i){const t=a.match(/h=(\d{1,3}-){3}\d{1,3}/g),e=a.match(/p=[0-9]{1,6}/g);l.gatewayIp=t&&t.length?t[0].split("=")[1].replace(/-/g,"."):"",l.gatewayPort=e&&e.length?e[0].split("=")[1]:""}else{const t=a.match(/wss:\/\/(\d{1,3}-){3}\d{1,3}/g),e=a.match(/(:|p=)[0-9]{1,6}/g);l.gatewayIp=t&&t.length?t[0].split("//")[1].replace(/-/g,"."):"",l.gatewayPort=e&&e.length?e[0].split(/:|p=/g)[1]:""}if(s)this.send({type:X.JOIN_GATEWAY,data:l},!0);else{const t={isSuccess:p,port:l.gatewayPort};delete l.success,delete l.eventType,delete l.firstSuccess,delete l.gatewayPort,l.vid=Number(l.vid);const e=Object.assign({},l,t,{eventType:Q.REJOIN_GATEWAY});this.send({type:X.RE_JOIN_GATEWAY,data:e},!0)}}joinChannelTimeout(t,e){const r=this.baseInfoMap.get(t);if(!r)return;const o=Date.now(),n=b(b({},r.info),{},{lts:o,timeout:e,elapse:o-r.startTime});this.send({type:X.JOIN_CHANNEL_TIMEOUT,data:n},!0)}publish(t,e){const r=this.baseInfoMap.get(t);if(!r)return;const o=r.info,n=Date.now(),s=b(b({},o),{},{eventType:Q.PUBLISH,lts:n,eventElapse:e.eventElapse,elapse:n-r.startTime,success:e.succ,errorCode:e.ec,videoName:e.videoName,audioName:e.audioName,screenName:e.screenName,screenshare:e.screenshare,audio:e.audio,video:e.video,p2pid:e.p2pid,publishRequestid:e.publishRequestid});this.send({type:X.PUBLISH,data:s},!0)}subscribe(t,e,r){const o=this.baseInfoMap.get(t);if(!o)return;const n=o.info,s=Date.now(),a=b(b({},n),{},{eventType:Q.SUBSCRIBE,lts:s,eventElapse:e.eventElapse,elapse:s-o.startTime,success:e.succ,errorCode:e.ec,video:e.video,audio:e.audio,subscribeRequestid:e.subscribeRequestid,p2pid:e.p2pid,preSsrc:e.preSsrc?1:0},r&&{extend:JSON.stringify({isMassSubscribe:!0})});"string"==typeof e.peerid?a.peerSuid=e.peerid:a.peer=e.peerid,this.send({type:X.SUBSCRIBE,data:a},!0)}wsCompressorInit(t){const e=[...this.baseInfoMap.keys()],r=e.length?e[0]:"UnableToGetSid",o=this.baseInfoMap.get(r);if(!o)return;const n=o.info,s=Date.now(),a=b(b({},n),{},{eventType:Q.WS_COMPRESSOR_INIT,lts:s,eventElapse:t.eventElapse,elapse:s-o.startTime,status:t.status?1:2});this.send({type:X.WS_COMPRESSOR_INIT,data:a},!0)}firstXLAPeerFirstVideoFrame(t,e){const r=this.baseInfoMap.get(t);if(!r)return;const o=r.info,n=Date.now(),s=e.peerPubStatusMs-(r.lastJoinSuccessTime||n),a=b(b({},o),{},{elapse:n-r.startTime,eventType:Q.XLA_PEER_FIRST_VIDEO_FRAME,lts:n,peer:e.peer,width:e.width,height:e.height,ssrc:e.ssrc,p2pid:e.p2pid,peerPublishDuration:e.peerPublishDuration,joinChannelSuccessElapse:s,peerPubStatusMs:e.peerPubStatusMs-e.joinChannelStart,availablePublish:e.peerPublishDuration>s?1:0,preloadStart:Math.max(e.preloadStart-e.joinChannelStart,0),preloadEnd:Math.max(e.preloadEnd-e.joinChannelStart,0),encrypt:Math.max(e.apStart-e.joinChannelStart,0),ap:Math.max(e.apEnd-e.joinChannelStart,0),sua:Math.max(e.suaEnd-e.joinChannelStart,0),beforeConnect:Math.max(e.beforeConnect-e.joinChannelStart,0),peerRecevier:Math.max(e.peerReceiver-e.joinChannelStart,0),ice:Math.max(e.ice-e.joinChannelStart,0),pc:Math.max(e.pc-e.joinChannelStart,0),signalConnected:Math.max(e.signalConnected-e.joinChannelStart,0),joinReq:Math.max(e.joinReq-e.joinChannelStart,0),joinRes:Math.max(e.joinRes-e.joinChannelStart,0),userJoinNotify:Math.max(e.userJoinNotify-e.joinChannelStart,0),videoSsrcNotify:Math.max(e.videoAddNotify-e.joinChannelStart,0),subscribeDelayMs:Math.max(e.subscribeStart-e.videoAddNotify,0),subscribeStart:Math.max(e.subscribeStart-e.joinChannelStart,0),subscribeEnd:Math.max(e.subscribeEnd-e.joinChannelStart,0),firstReceived:Math.max(e.firstReceived-e.joinChannelStart,0),firstDecoded:Math.max(e.firstDecoded-e.joinChannelStart,0),firstPreRender:Math.max(e.firstPreRender-e.joinChannelStart,0),firstRender:Math.max(e.firstRender-e.joinChannelStart,0),playDelayMs:Math.max(e.playStart-e.subscribeEnd,0),playStart:Math.max(e.playStart-e.joinChannelStart,0),playEnd:Math.max(e.playEnd-e.joinChannelStart,0),isPreSub:e.isPreSub?1:0,isPrePc:e.isPrePc?1:0,isPreInstantVideo:e.isPreInstantVideo?1:0,firstReceivedEncodedFrame:e.firstReceivedEncodedFrame?Math.max(e.firstReceivedEncodedFrame-e.joinChannelStart,0):void 0,frameType:e.frameType||"",rtpTimestamp:e.rtpTimestamp||0,framePayloadType:e.framePayloadType||0,frameDataLength:e.frameDataLength||0,mimeType:e.mimeType||"",sdpEndPoint:e.sdpEndPoint?1:0});this.send({type:X.XLA_PEER_FIRST_VIDEO_FRAME,data:a},!0)}firstRemoteVideoDecode(t,e,r,o){const n=this.baseInfoMap.get(t);if(!n)return;const s=n.info,a=Date.now(),i=b(b(b({},s),o),{},{elapse:a-n.startTime,eventType:e,lts:a,firstDecodeFrame:Math.max((o.firstFrame||a)-n.startTime,0),apEnd:Math.max(o.apEnd-n.startTime,0),apStart:Math.max(o.apStart-n.startTime,0),joinGwEnd:Math.max(o.joinGwEnd-n.startTime,0),joinGwStart:Math.max(o.joinGwStart-n.startTime,0),pcEnd:Math.max(o.pcEnd-n.startTime,0),pcStart:Math.max(o.pcStart-n.startTime,0),subscriberEnd:Math.max(o.subscriberEnd-n.startTime,0),subscriberStart:Math.max(o.subscriberStart-n.startTime,0),videoAddNotify:Math.max(o.videoAddNotify-n.startTime,0)});this.send({type:r,data:i},!0)}firstRemoteFrame(t,e,r,o){const n=this.baseInfoMap.get(t);if(!n)return;const s=n.info,a=Date.now(),i=b(b(b({},s),o),{},{elapse:a-n.startTime,eventType:e,lts:a});this.send({type:r,data:i},!0)}abTest(t,e){const r=this.baseInfoMap.get(t);if(!r)return;const o=r.info,n=Date.now(),s=b(b(b({},o),e),{},{vid:void 0===o.vid?0:Number(o.vid),elapse:n-r.startTime,eventType:Q.AB_TEST,lts:n});this.send({type:X.AB_TEST,data:s},!0)}pcStats(t,e){const r=this.baseInfoMap.get(t);if(!r)return;const o=r.info,n=Date.now(),s=b(b(b({},o),e),{},{vid:void 0===o.vid?0:Number(o.vid),elapse:n-r.startTime,eventType:Q.PC_STATS,lts:n,preallocation:e.preallocation?1:0});this.send({type:X.PC_STATS,data:s},!0)}updateRemoteRTPCapabilities(t,e){if(t){const r=this.baseInfoMap.get(t);if(!r)return;const o=r.info,n=Date.now(),s=b(b(b({},o),e),{},{vid:void 0===o.vid?0:Number(o.vid),eventType:Q.UPDATE_REMOTE_RTPCAPABILITIES,lts:n});this.send({type:X.UPDATE_REMOTE_RTPCAPABILITIES,data:s},!0)}}onGatewayStream(t,e,r,o){const n=this.baseInfoMap.get(t);if(!n)return;const s=n.info,a=Date.now(),i=b(b(b({},s),o),{},{eventType:e,lts:a});this.send({type:r,data:i},!0)}streamSwitch(t,e){const r=this.baseInfoMap.get(t);if(!r)return;const o=r.info,n=Date.now(),s=b(b({},o),{},{eventType:Q.STREAM_SWITCH,lts:n,isDual:e.isdual,elapse:n-r.startTime,success:e.succ});this.send({type:X.STREAM_SWITCH,data:s},!0)}requestProxyAppCenter(t,e){const r=this.baseInfoMap.get(t);if(!r)return;const o=r.info,n=Date.now(),s=b(b({},o),{},{eventType:Q.REQUEST_PROXY_APPCENTER,lts:n,eventElapse:n-e.lts,elapse:n-r.startTime,APAddr:e.APAddr,workerManagerList:e.workerManagerList,response:e.response,errorCode:e.ec,success:e.succ});this.send({type:X.REQUEST_PROXY_APPCENTER,data:s},!0)}requestProxyWorkerManager(t,e){const r=this.baseInfoMap.get(t);if(!r)return;const o=r.info,n=Date.now(),s=b(b({},o),{},{eventType:Q.REQUEST_PROXY_WORKER_MANAGER,lts:n,eventElapse:n-e.lts,elapse:n-r.startTime,workerManagerAddr:e.workerManagerAddr,response:e.response,errorCode:e.ec,success:e.succ});this.send({type:X.REQUEST_PROXY_WORKER_MANAGER,data:s},!0)}setProxyServer(t){this.proxyServer=t,t?F.debug("reportProxyServerurl: ".concat(t)):F.debug("disable reportProxyServerurl: ".concat(t))}peerPublishStatus(t,e){const r=this.baseInfoMap.get(t);if(!r)return;const o=r.info,n=Date.now(),s=b(b({},o),{},{subscribeElapse:e.subscribeElapse,peer:e.peer,peerPublishDuration:Math.max(e.audioPublishDuration,e.videoPublishDuration),audiotag:e.audioPublishDuration>0?1:-1,videotag:e.videoPublishDuration>0?1:-1,lts:n,elapse:n-r.startTime,joinChannelSuccessElapse:n-(r.lastJoinSuccessTime||n),peerPublishDurationVideo:e.videoPublishDuration,peerPublishDurationAudio:e.audioPublishDuration});this.send({type:X.PEER_PUBLISH_STATUS,data:s},!0)}workerEvent(t,e){const r=this.baseInfoMap.get(t);if(!r)return;const o=r.info,n=Date.now(),s=b(b(b({},o),e),{},{elapse:n-r.startTime,lts:n,productType:"WebRTC"});_(s,"payload",1300).forEach((t=>this.send({type:X.WORKER_EVENT,data:t},!0)))}apworkerEvent(t,e){const r=this.baseInfoMap.get(t);if(!r)return;const o=r.info,n=Date.now(),s=b(b(b({},o),e),{},{elapse:n-r.startTime,lts:n});this.send({type:X.AP_WORKER_EVENT,data:s},!0)}joinWebProxyAP(t,e){const r=this.baseInfoMap.get(t);if(!r)return;const o=r.info,n=Date.now(),s=b(b(b({},o),e),{},{elapse:n-r.startTime,lts:n,extend:e.extend||void 0});this.send({type:X.JOIN_WEB_PROXY_AP,data:s},!0)}WebSocketQuit(t,e){const r=this.baseInfoMap.get(t);if(!r)return;const o=r.info,n=Date.now(),s=b(b(b({},o),e),{},{elapse:n-r.startTime,lts:n});this.send({type:X.WEBSOCKET_QUIT,data:s},!0)}async sendCustomReportMessage(t,e){if(this.customReportCount+=e.length,this.customReportCount>r("CUSTOM_REPORT_LIMIT"))throw new l(c.CUSTOM_REPORT_FREQUENCY_TOO_HIGH);this.customReportCounterTimer||(this.customReportCounterTimer=window.setInterval((()=>{this.customReportCount=0}),5e3));const o=Date.now(),n=e.map((e=>({type:X.USER_ANALYTICS,data:b(b({sid:t},e),{},{lts:o})})));try{r("NEW_REPORT_SERVER")?await this.postDataToStatsCollector2(n):await this.postDataToStatsCollector(n)}catch(t){throw F.error("send custom report message failed",t.toString()),new l(c.CUSTOM_REPORT_SEND_FAILED,t.message)}}reportAlarm(t,e){const o=t?this.baseInfoMap.get(t):void 0,n=null==o?void 0:o.info,s=Date.now(),a=b(b(b({},n),e),{},{vid:void 0===(null==n?void 0:n.vid)?0:Number(n.vid),elapse:o?s-o.startTime:0,eventType:Q.ALARM_STATUS_NOTIFY,lts:s,installId:h(),processId:r("PROCESS_ID")});this.send({type:X.ALARM_STATUS_NOTIFY,data:a},!0)}sendApiInvoke(t){const e=r("NOT_REPORT_EVENT");if(t.tag&&e.includes&&e.includes(t.tag))return!1;if(null===t.sid)return this.apiInvokeUploadPendingItems.push(t),!1;const o=this.baseInfoMap.get(t.sid);if(!o)return this.apiInvokeUploadPendingItems.push(t),!1;const n=o.info,s=n.cname,a=n.uid,i=n.cid;let c;if(t.lts=t.lts||Date.now(),t.error)if(t.error instanceof l){const e=t.error,r=e.code,o=e.message;c=r||(o||t.error.toString())}else c=t.error.toString();const p={invokeId:t.invokeId,sid:t.sid,cname:s,cid:i,uid:a,lts:t.lts,success:t.success,elapse:t.lts-o.startTime,execElapse:t.lts-t.apiInvokeTime,apiName:t.name,options:t.options?JSON.stringify(t.options):void 0,execStates:t.states?JSON.stringify(t.states):void 0,execResult:t.result?JSON.stringify(t.result):void 0,errorCode:t.error?c:void 0,errorMsg:t.error?JSON.stringify(t.error):void 0};return this.send({type:X.API_INVOKE,data:p},!1),!0}addSid(t){this.sids.add(t)}removeSid(t){this.sids.delete(t)}appendSessionId(){const t=this.apiInvokeUploadPendingItems;if(0===t.length)return;const e=Array.from(this.sids).find((t=>null!==t));e&&t.forEach((t=>{t&&(t.sid=e,this.sendApiInvoke(Object.assign({},t)))})),t.length=0}send(t,e){if(e)return this.keyEventUploadPendingItems.push(t),void this.sendItems(this.keyEventUploadPendingItems,!0);this.normalEventUploadPendingItems.push(t),this.normalEventUploadPendingItems.length>r("NORMAL_EVENT_QUEUE_CAPACITY")&&this.normalEventUploadPendingItems.splice(0,1),this.normalEventUploadPendingItems.length>=10&&this.sendItems(this.normalEventUploadPendingItems,!1)}doSend(){this.keyEventUploadPendingItems.length>0&&this.sendItems(this.keyEventUploadPendingItems,!0),this.normalEventUploadPendingItems.length>0&&Date.now()-this.lastSendNormalEventTime>=5e3&&this.sendItems(this.normalEventUploadPendingItems,!1)}sendItems(t,e){const o=[],n=[];for(;t.length;){const e=t.shift();o.length<20?o.push(e):n.push(e)}t.push(...n);for(const t of[...o])-1!==this.ltsList.indexOf(t.data.lts)?(t.data.lts=this.ltsList[this.ltsList.length-1]+1,this.ltsList.push(t.data.lts)):(this.ltsList.push(t.data.lts),this.ltsList.sort(((t,e)=>t-e)));e||(this.lastSendNormalEventTime=Date.now());return r("ENABLE_EVENT_REPORT")?(o.length&&(r("NEW_REPORT_SERVER")?this.postDataToStatsCollector2(o):this.postDataToStatsCollector(o)).catch((t=>o=>{r("EVENT_REPORT_RETRY")&&(e?this.keyEventUploadPendingItems=this.keyEventUploadPendingItems.concat(t):(this.normalEventUploadPendingItems=this.normalEventUploadPendingItems.concat(t),this.normalEventUploadPendingItems.length>r("NORMAL_EVENT_QUEUE_CAPACITY")&&(this.normalEventUploadPendingItems.splice(0,this.normalEventUploadPendingItems.length-r("NORMAL_EVENT_QUEUE_CAPACITY")),F.warning("report: drop normal events"))))})(o)),t):t}async postDataToStatsCollector2(t){g.networkState===S.OFFLINE&&await Promise.race([g.onlineWaiter,i(2*R.maxRetryTimeout)]);const e=t=>{let e=new Uint8Array;return t.forEach((t=>{const r=m(JSON.stringify(t.data)),o=new ArrayBuffer(5),n=(t=>{let e=0;return Object.entries(X).forEach((r=>{let o=D(r,2),n=o[0];o[1]===t.type&&(e=$[n])})),e})(t),s=new DataView(o);s.setUint16(0,r.byteLength,!0),s.setUint8(2,255&n),s.setUint8(3,n>>>8&255),s.setUint8(4,n>>>16&255),e=A(e,new Uint8Array(o)),e=A(e,r)})),e},o="event";let n=this.proxyServer?"https://".concat(this.proxyServer,"/rs/?h=").concat(r("NEW_REPORT_SERVER_DOMAINS")[0],"&p=443&d=").concat(o):"https://".concat(r("NEW_REPORT_SERVER_DOMAINS")[0],"/").concat(o);for(let s=0;s<2;s+=1){1===s&&(n=this.proxyServer?"https://".concat(this.proxyServer,"/rs/?h=").concat(r("NEW_REPORT_SERVER_DOMAINS")[1],"&p=443&d=").concat(o):"https://".concat(r("NEW_REPORT_SERVER_DOMAINS")[1],"/").concat(o));try{await T(n,{timeout:1e4,data:e(t),headers:b(b({biz:"webrtc",sendts:Math.round(Date.now()/1e3),debug:"false"},this._appId&&{appid:this._appId}),{},{"Content-Type":"application/octet-stream"})},!0)}catch(t){if(1===s)throw t;continue}return}}async postDataToStatsCollector(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const o=(t=>{const e=t&&t.data.sid&&this.baseInfoMap.get(t.data.sid);return e&&e.info.vid&&+e.info.vid||0})(t[0]),n=o?void 0:this._aid,s={msgType:"EventMessages",sentTs:Math.round(Date.now()/1e3),payloads:t.map((t=>JSON.stringify(t))),vid:o,aid:n};g.networkState===S.OFFLINE&&await Promise.race([g.onlineWaiter,i(2*R.maxRetryTimeout)]);const a=e?"/events/proto-raws":"/events/messages";let c=this.url||(this.proxyServer?"https://".concat(this.proxyServer,"/rs/?h=").concat(r("EVENT_REPORT_DOMAIN"),"&p=").concat(r("STATS_COLLECTOR_PORT"),"&d=").concat(a):"https://".concat(r("EVENT_REPORT_DOMAIN"),":").concat(r("STATS_COLLECTOR_PORT")).concat(a));for(let t=0;t<2;t+=1){1===t&&(c=this.backupUrl||(this.proxyServer?"https://".concat(this.proxyServer,"/rs/?h=").concat(r("EVENT_REPORT_BACKUP_DOMAIN"),"&p=").concat(r("STATS_COLLECTOR_PORT"),"&d=").concat(a):"https://".concat(r("EVENT_REPORT_BACKUP_DOMAIN"),":").concat(r("STATS_COLLECTOR_PORT")).concat(a)));try{e?await I(c,{timeout:1e4,data:s}):await T(c,{timeout:1e4,data:s})}catch(e){if(1===t)throw e;continue}return}}createBaseInfo(t,e){const r=Object.assign({},K);return r.sid=t,this.baseInfoMap.set(t,{info:r,startTime:e}),r}reportResourceTiming(t,e){const r=performance.getEntriesByName(t),o=r[r.length-1];o&&this.reportApiInvoke(e,{name:"Client.resourceTiming",options:o,tag:f.TRACER}).onSuccess()}}function Rt(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(e,r,o){const n=o.value;if("function"==typeof n){const s=t.className||e.__className__||("AgoraRTCClient"===e.constructor.name?"Client":e.constructor.name);o.value=function(){for(var e,o=arguments.length,a=new Array(o),i=0;i<o;i++)a[i]=arguments[i];let c=a;if(t.argsMap)try{c=t.argsMap(this,...a)}catch(t){F.warning(t),c=[]}try{JSON.stringify(c)}catch(t){F.warning("arguments for method ".concat(s,".").concat(String(r)," not serializable for apiInvoke.")),c=[]}const l=(t.report||Tt).reportApiInvoke(this._sessionId||null,{id:this._clientId||(null===(e=this.store)||void 0===e?void 0:e.clientId)||this._ID,name:"".concat(s,".").concat(String(r)),options:c,tag:f.TRACER,reportResult:t.reportResult},t.throttleTime);try{const e=n.apply(this,a);return e instanceof Promise?e.then((e=>(l.onSuccess(t.reportResult&&e),e))).catch((t=>{throw l.onError(t),t})):(l.onSuccess(t.reportResult&&e),e)}catch(t){throw l.onError(t),t}}}return o}}const Tt=new St;function It(t,e){Tt.reportAlarm(t,e)}w.on("REPORT_LOG_UPLOAD",(t=>{t.networkState=g.networkState,Tt.reportApiInvoke(null,{name:"logUploadError",options:t,tag:f.TRACER}).onSuccess("logUploadError")}));class ft extends l{constructor(t){super(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",arguments.length>2?arguments[2]:void 0),P(this,"name","AgoraRTCException")}print(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"error";return super.print(t,F)}throw(){super.throw(F)}}export{q as AgoraEventUploadId,k as AgoraLogger,ft as AgoraRTCError,Q as AgoraRTCEvent,St as AgoraRTCEventReport,X as AgoraRTCEventUploadType,K as EVENT_BASE_TEMPLATE,$ as EventNameToID,Y as EventReportAlarmStatus,H as EventReportAlarmType,G as LOG_TYPE,B as LOG_UPLOAD_STATE,lt as _getApiFailureRecords,It as _reportAlarmFn,Rt as apiInvoke,at as hashConfig,st as hashString,_t as isConfigBlocked,J as isEventCustomReportParams,w as logReportBus,F as logger,ht as onConfigApplied,Et as recordApiFailure,Tt as report,nt as stableStringify};