/*! *****************************************************************************Copyright (c) Microsoft Corporation.Permission to use, copy, modify, and/or distribute this software for anypurpose with or without fee is hereby granted.THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITHREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITYAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROMLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OROTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE ORPERFORMANCE OF THIS SOFTWARE.***************************************************************************** */
varCALL_METHOD_ERROR,__assign=function(){return__assign=Object.assign||function(t){for(vars,i=1,n=arguments.length;i<n;i++)for(varpins=arguments[i])Object.prototype.hasOwnProperty.call(s,p)&&(t[p]=s[p]);returnt},__assign.apply(this,arguments)},hasOwnProperty=Object.prototype.hasOwnProperty,isUndef=function(v){returnnull==v},isArray=Array.isArray,PATH_RE=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;functiongetPaths(path,data){if(isArray(path))returnpath;if(data&&(val=data,key=path,hasOwnProperty.call(val,key)))return[path];varval,key,res=[];returnpath.replace(PATH_RE,(function(match,p1,offset,string){returnres.push(offset?string.replace(/\\(\\)?/g,"$1"):p1||match),string})),res}functiongetPageId(page){returnpage.__wxWebviewId__?page.__wxWebviewId__:page.privateProperties?page.privateProperties.slaveId:page.$page?page.$page.id:void0}functiongetPagePath(page){returnpage.route||page.uri}functiongetPageQuery(page){returnpage.options||page.$page&&page.$page.options||{}}functionparsePage(page){return{id:getPageId(page),path:getPagePath(page),query:getPageQuery(page)}}functiongetPageVm(id){varpage=function(id){returngetCurrentPages().find((function(page){returngetPageId(page)===id}))}(id);returnpage&&page.$vm}functionmatchNodeId(vm,nodeId){returnvm.$scope&&((scope=vm.$scope).__wxExparserNodeId__||scope.nodeId||scope.id)===nodeId;varscope}functionfindComponentVm(vm,nodeId,isVue3){var_a,_b,_c,_d,_e,_f,_g,_h,_j,_k,_l,_m,res;if(void0===isVue3&&(isVue3=!1),isVue3)if(vm.component&&matchNodeId(vm.component,nodeId))res=vm.component;else{varchildren=[];vm.childreninstanceofArray?children=vm.children:(null===(_b=null===(_a=vm.component)||void0===_a?void0:_a.subTree)||void0===_b?void0:_b.children)&&(null===(_d=null===(_c=vm.component)||void0===_c?void0:_c.subTree)||void0===_d?void0:_d.children)instanceofArray?children=vm.component.subTree.children:(null===(_h=null===(_g=null===(_f=null===(_e=vm.component)||void0===_e?void0:_e.subTree)||void0===_f?void0:_f.component)||void0===_g?void0:_g.subTree)||void0===_h?void0:_h.children)&&(null===(_m=null===(_l=null===(_k=null===(_j=vm.component)||void0===_j?void0:_j.subTree)||void0===_k?void0:_k.component)||void0===_l?void0:_l.subTree)||void0===_m?void0:_m.children)instanceofArray&&(children=vm.component.subTree.component.subTree.children),children.find((function(child){returnres=findComponentVm(child,nodeId,!0)}))}elsevm&&(matchNodeId(vm,nodeId)?res=vm:vm.$children.find((function(child){returnres=findComponentVm(child,nodeId)})));returnres}functiongetComponentVm(pageId,nodeId){varpageVm=getPageVm(pageId);if(pageVm)returnisVue3(pageVm)?findComponentVm(pageVm.$.subTree,nodeId,!0):findComponentVm(pageVm,nodeId)}functiongetData(vm,path){vardata,vmData=vm.$data||vm.data;returnvm.exposed?vmData=__assign(__assign({},vmData),vm.exposed):vm.$&&vm.$.exposed&&(vmData=__assign(__assign({},vmData),vm.$.exposed)),vm&&(data=path?function(data,path){vardataPath,paths=getPaths(path,data);for(dataPath=paths.shift();!isUndef(dataPath);){if(null==(data=data[dataPath]))return;dataPath=paths.shift()}returndata}(vmData,path):Object.assign({},vmData)),Promise.resolve({data:data})}functionsetData(vm,data){if(vm){var_isVue3_1=isVue3(vm);Object.keys(data).forEach((function(name){_isVue3_1?(vm.$data||vm.data)[name]=data[name]:vm[name]=data[name]}))}returnPromise.resolve()}functioncallMethod(vm,method,args){returnisVue3(vm)&&(vm=vm.$vm||vm.ctx),newPromise((function(resolve,reject){var_a,_b;if(!vm)returnreject(CALL_METHOD_ERROR.VM_NOT_EXISTS);if(!vm[method]&&!(null===(_b=vm.$.exposed)||void0===_b?void0:_b[method]))returnreject(CALL_METHOD_ERROR.METHOD_NOT_EXISTS);varobj,ret=vm[method]?vm[method].apply(vm,args):(_a=vm.$.exposed)[method].apply(_a,args);!(obj=ret)||"object"!=typeofobj&&"function"!=typeofobj||"function"!=typeofobj.then?resolve({result:ret}):ret.then((function(res){resolve({result:res})}))}))}functionisVue3(vm){return!vm.$children}!function(CALL_METHOD_ERROR){CALL_METHOD_ERROR.VM_NOT_EXISTS="VM_NOT_EXISTS",CALL_METHOD_ERROR.METHOD_NOT_EXISTS="METHOD_NOT_EXISTS"}(CALL_METHOD_ERROR||(CALL_METHOD_ERROR={}));varpostMessageId=1,postMessageCallbacks={};varsocketInstanceMap=newMap,firstSocketTaskEmitter=function(options){returnnewPromise((function(resolve,reject){varsocketInstanceData=socketInstanceMap.values().next().value;if(socketInstanceData){varmethod_1=options.method;if("onOpen"===method_1)returnhandleOnOpen(socketInstanceData,resolve);if(method_1.startsWith("on"))returnsocketInstanceData.instance[method_1]((function(data){resolve(data)}));"sendMessage"===method_1&&(method_1="send"),socketInstanceData.instance[method_1](__assign(__assign({},options),{success:function(result){resolve({result:result}),"close"===method_1&&socketInstanceMap.delete(socketInstanceMap.keys().next().value)},fail:function(error){reject(error)}}))}elsereject({errMsg:"socketTask not exists."})}))};functionhandleOnOpen(socketInstanceData,resolve){if(socketInstanceData.isOpend)resolve({data:socketInstanceData.openData});else{vartimer_1=setInterval((function(){socketInstanceData.isOpend&&(clearInterval(timer_1),resolve(socketInstanceData.openData))}),200);setTimeout((function(){clearInterval(timer_1)}),2e3)}}varSYNC_APIS=["stopRecord","getRecorderManager","pauseVoice","stopVoice","pauseBackgroundAudio","stopBackgroundAudio","getBackgroundAudioManager","createAudioContext","createInnerAudioContext","createVideoContext","createCameraContext","createMapContext","canIUse","startAccelerometer","stopAccelerometer","startCompass","stopCompass","hideToast","hideLoading","showNavigationBarLoading","hideNavigationBarLoading","navigateBack","createAnimation","pageScrollTo","createSelectorQuery","createCanvasContext","createContext","drawCanvas","hideKeyboard","stopPullDownRefresh","arrayBufferToBase64","base64ToArrayBuffer"],onApisEventMap=newMap,ON_APIS=["onCompassChange","onThemeChange","onUserCaptureScreen","onWindowResize","onMemoryWarning","onAccelerometerChange","onKeyboardHeightChange","onNetworkStatusChange","onPushMessage","onLocationChange","onGetWifiList","onWifiConnected","onWifiConnectedWithPartialInfo","onSocketOpen","onSocketError","onSocketMessage","onSocketClose"],originUni={},SYNC_API_RE=/^\$|Sync$|Window$|WindowStyle$|sendHostEvent|sendNativeEvent|restoreGlobal|requireGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64|getLocale|setLocale|invokePushCallback|getWindowInfo|getDeviceInfo|getAppBaseInfo|getSystemSetting|getAppAuthorizeSetting|initUTS|requireUTS|registerUTS/,MOCK_API_BLACKLIST_RE=/^on|^off/;functionisSyncApi(method){returnSYNC_API_RE.test(method)||-1!==SYNC_APIS.indexOf(method)}varApp={getPageStack:function(){returnPromise.resolve({pageStack:getCurrentPages().map((function(page){returnparsePage(page)}))})},getCurrentPage:function(){varpages=getCurrentPages(),len=pages.length;returnnewPromise((function(resolve,reject){len?resolve(parsePage(pages[len-1])):reject(Error("getCurrentPages().length=0"))}))},callUniMethod:function(params,send){varmethod=params.method,args=params.args;returnnewPromise((function(resolve,reject){if("connectSocket"!==method){varid,url;if(ON_APIS.includes(method)){onApisEventMap.has(method)||onApisEventMap.set(method,newMap);varuuid_1=args[0],callback_1=function(data){send({id:uuid_1,result:{method:method,data:data}})};returnmethod.startsWith("onSocket")?firstSocketTaskEmitter({method:method.replace("Socket","")}).then((function(res){returncallback_1(res)})).catch((function(err){returncallback_1(err)})):(onApisEventMap.get(method).set(uuid_1,callback_1),uni[method](callback_1)),resolve({result:null})}if(method.startsWith("off")&&ON_APIS.includes(method.replace("off","on"))){varonMethod=method.replace("off","on");if(onApisEventMap.has(onMethod)){varuuid=args[0];if(void0!==uuid){varcallback=onApisEventMap.get(onMethod).get(uuid);uni[method](callback),onApisEventMap.get(onMethod).delete(uuid)}else{onApisEventMap.get(onMethod).forEach((function(callback){uni[method](callback)})),onApisEventMap.delete(onMethod)}}returnresolve({result:null})}if(method.indexOf("Socket")>0)returnfirstSocketTaskEmitter(__assign({method:method.replace("Socket","")},args[0])).then((function(res){returnresolve(res)})).catch((function(err){returnreject(err)}));if(!uni[method])returnreject(Error("uni."+method+" not exists"));if(isSyncApi(method))returnresolve({result:uni[method].apply(uni,args)});varparams=[Object.assign({},args[0]||{},{success:function(result){setTimeout((function(){resolve({result:result})}),"pageScrollTo"===method?350:0)},fail:function(res){reject(Error(res.errMsg.replace(method+":fail ","")))}})];uni[method].apply(uni,params)}else(id=args[0].id,url=args[0].url,newPromise((function(resolve,reject){varsocketTask=uni.connectSocket({url:url,success:function(){resolve({result:{errMsg:"connectSocket:ok"}})},fail:function(){reject({result:{errMsg:"connectSocket:fail"}})}});socketInstanceMap.set(id,{instance:socketTask,isOpend:!1}),socketTask.onOpen((function(data){socketInstanceMap.get(id).isOpend=!0,socketInstanceMap.get(id).openData=data}))}))).then((function(res){returnresolve(res)})).catch((function(err){returnreject(err)}))}))},mockUniMethod:function(params){varmethod=params.method;if(!uni[method])throwError("uni."+method+" not exists");if(!function(method){return!MOCK_API_BLACKLIST_RE.test(method)}(method))throwError("You can't mock uni."+method);varmockFn,result=params.result,functionDeclaration=params.functionDeclaration;returnisUndef(result)&&isUndef(functionDeclaration)?(originUni[method]&&(uni[method]=originUni[method],deleteoriginUni[method]),Promise.resolve()):(mockFn=isUndef(functionDeclaration)?isSyncApi(method)?function(){returnresult}:function(params){setTimeout((function(){result.errMsg&&-1!==result.errMsg.indexOf(":fail")?params.fail&¶ms.fail(result):params.success&¶ms.success(result),params.complete&¶ms.complete(result)}),4)}:function(){for(varargs=[],_i=0;_i<arguments.length;_i++)args[_i]=arguments[_i];returnnewFunction("return "+functionDeclaration)().apply(mockFn,args.concat(params.args))},mockFn.origin=originUni[method]||uni[method],originUni[method]||(originUni[method]=uni[method]),uni[method]=mockFn,Promise.resolve())},captureScreenshot:function(params){returnnewPromise((function(resolve,reject){"undefined"!=typeofwindow&&(window.__uniapp_x_||window.__uniapp_x_postMessage)?function(data,callback){var_a,id=0;callback&&(id=postMessageId++,postMessageCallbacks[id]=callback);varmessage={data:{id:id,type:"automator",data:data}};console.log("postMessageToUniXWebView",message),(null===(_a=null===window||void0===window?void0:window.__uniapp_x_)||void0===_a?void0:_a.postMessage)?window.__uniapp_x_.postMessage(JSON.stringify(message)):(null===window||void0===window?void0:window.__uniapp_x_postMessage)&&window.__uniapp_x_postMessage({data:message})}({action:"captureScreenshot",args:params},(function(err,res){err?reject(Error("captureScreenshot fail: "+err)):resolve(res)})):reject(Error("captureScreenshot fail: supported only on the app platform."))}))},socketEmitter:function(params){returnnewPromise((function(resolve,reject){(function(params){returnnewPromise((function(resolve,reject){if(socketInstanceMap.has(params.id)){varsocketInstanceData=socketInstanceMap.get(params.id),socketTask=socketInstanceData.instance,method_2=params.method,id_1=params.id;if("onOpen"==method_2)returnhandleOnOpen(socketInstanceData,resolve);if(method_2.startsWith("on"))returnsocketTask[method_2]((function(data){resolve({method:"Socket."+method_2,id:id_1,data:data})}));socketTask[method_2](__assign(__assign({},params),{success:function(result){resolve(result),"close"===method_2&&socketInstanceMap.delete(params.id)},fail:function(error){reject(error)}}))}elsereject({errMsg:"socketTask not exists."})}))})(params).then((function(res){returnresolve(res)})).catch((function(err){returnreject(err)}))}))}},App$1=App,Page$1={getData:function(params){returngetData(getPageVm(params.pageId),params.path)},setData:function(params){returnsetData(getPageVm(params.pageId),params.data)},callMethod:function(params){var_a,err=((_a={})[CALL_METHOD_ERROR.VM_NOT_EXISTS]="Page["+params.pageId+"] not exists",_a[CALL_METHOD_ERROR.METHOD_NOT_EXISTS]="page."+params.method+" not exists",_a);returnnewPromise((function(resolve,reject){callMethod(getPageVm(params.pageId),params.method,params.args).then((function(res){returnresolve(res)})).catch((function(type){reject(Error(err[type]))}))}))},callMethodWithCallback:function(params){var_a,err=((_a={})[CALL_METHOD_ERROR.VM_NOT_EXISTS]="callMethodWithCallback:fail, Page["+params.pageId+"] not exists",_a[CALL_METHOD_ERROR.METHOD_NOT_EXISTS]="callMethodWithCallback:fail, page."+params.method+" not exists",_a),callback=params.args[params.args.length-1];callMethod(getPageVm(params.pageId),params.method,params.args).catch((function(type){callback({errMsg:err[type]})}))}};functiongetNodeId(params){returnparams.nodeId||params.elementId}varElement$1={getData:function(params){returngetData(getComponentVm(params.pageId,getNodeId(params)),params.path)},setData:function(params){returnsetData(getComponentVm(params.pageId,getNodeId(params)),params.data)},callMethod:function(params){var_a,nodeId=getNodeId(params),err=((_a={})[CALL_METHOD_ERROR.VM_NOT_EXISTS]="Component["+params.pageId+":"+nodeId+"] not exists",_a[CALL_METHOD_ERROR.METHOD_NOT_EXISTS]="component."+params.method+" not exists",_a);returnnewPromise((function(resolve,reject){callMethod(getComponentVm(params.pageId,nodeId),params.method,params.args).then((function(res){returnresolve(res)})).catch((function(type){reject(Error(err[type]))}))}))}},Api={};Object.keys(App$1).forEach((function(method){Api["App."+method]=App$1[method]})),Object.keys(Page$1).forEach((function(method){Api["Page."+method]=Page$1[method]})),Object.keys(Element$1).forEach((function(method){Api["Element."+method]=Element$1[method]}));varsocketTask,wsEndpoint=process.env.UNI_AUTOMATOR_WS_ENDPOINT;functionsend(data){socketTask.send({data:JSON.stringify(data)})}functiononMessage(res){var_a=JSON.parse(res.data),id=_a.id,method=_a.method,params=_a.params,data={id:id},fn=Api[method];if(!fn&&!fn)returndata.error={message:method+" unimplemented"},send(data);try{fn(params,send).then((function(res){res&&(data.result=res)})).catch((function(err){data.error={message:err.message}})).finally((function(){send(data)}))}catch(err){data.error={message:err.message},send(data)}}wx.$$initRuntimeAutomator=function(options){void0===options&&(options={}),(socketTask=uni.connectSocket({url:options.wsEndpoint||wsEndpoint,complete:function(){}})).onMessage(onMessage),socketTask.onOpen((function(res){options.success&&options.success(),console.log("已开启自动化测试...")})),socketTask.onError((function(res){console.log("automator.onError",res)})),socketTask.onClose((function(){options.fail&&options.fail({errMsg:"$$initRuntimeAutomator:fail"}),console.log("automator.onClose")}))},setTimeout((function(){wx.$$initRuntimeAutomator()}),500);export{send};