UNPKG

vrv-mini-sdk

Version:
1 lines 3.48 kB
import e from"simple-js-tools";let o={name:"Bridge",debug:!1,jsBridge:!1,electronBridge:!1,connect(){navigator.userAgent.toLowerCase().indexOf("electron")>-1?o.electronConnect():o.jsBridgeConnect()},jsBridgeConnect(e,r){(e=>{if(window.WebViewJavascriptBridge)return e(WebViewJavascriptBridge);if(window.WVJBCallbacks)return window.WVJBCallbacks.push(e);window.WVJBCallbacks=[e];let o=document.createElement("iframe");o.style.display="none",o.src="wvjbscheme://__BRIDGE_LOADED__",document.documentElement.appendChild(o),setTimeout((function(){document.documentElement.removeChild(o)}),0)})((e=>{o.jsBridge=e,e?console.info("[Bridge] JSBridge Connected"):r("JS桥连接失败")}))},electronConnect(){o.electronBridge=window.callByDDIOApp,o.electronBridge?console.info("[Bridge] Electron connected",o.electronBridge):console.error("[Bridge] Electron connect failed")},threadId:0,callMethod:(e,r={})=>new Promise(((t,n)=>{o.threadId++,console.time("thread-"+o.threadId),o.debug&&console.log("[Bridge][thread-"+o.threadId+"][start]",(new Date).toLocaleTimeString(),e,r),o.jsBridge?o.jsBridgeCallHandler(t,n,e,r,o.threadId):o.electronBridge?o.electronCallHandler(t,n,e,r,o.threadId):console.error("[Bridge] No Bridge,Or Please open it on the client")})),jsBridgeCallHandler(e,r,t,n={},i){if(o.jsBridge){let r=o.jsBridge.callHandler;["registerMessageNotice","registerNFCNotice","registerProgressNotice","multiScan","setRightNavBarItem"].includes(t)&&(r=o.jsBridge.registerHandler),r(t,n,(r=>{o.debug&&console.log("[Bridge][thread-"+i+"][end]",(new Date).toLocaleTimeString(),t,r),console.timeEnd("thread-"+i),e(r)}))}else console.error("[Bridge] No Bridge,Or Please open it on the client",o.jsBridge),r("No Bridge,Or Please open it on the client")},electronCallHandler(e,r,t,n={},i){o.electronBridge?o.electronBridge[t]?(n.success=r=>{o.debug&&console.log("[Bridge][thread-"+i+"][end]",(new Date).toLocaleTimeString(),t,r),console.timeEnd("thread-"+i),e(r)},o.electronBridge[t](n)):(console.error("[Bridge] electron illegal methods:",t),r("electron illegal methods:"+t)):(console.error("[Bridge] No Bridge,Or Please open it on the client"),r("No Bridge,Or Please open it on the client"))}};var r={nativeProxyFunction:"requestProxy"};let t=t=>{if(t.network.xhr.proxy||t.network.proxy){let n,i=e=>new Promise(((n,i)=>{o.callMethod(t.network.nativeProxyFunction||r.nativeProxyFunction,e.config).then((e=>n(e))).catch((e=>i(e)))}));n=!0===t.network.xhr.proxy||!0===t.network.proxy?i:t.network.xhr.proxy||t.network.proxy,e.xhr.mock.proxy=n,window.XMLHttpRequest=e.xhr.mock,console.info("[Proxy]","MiniXMLHttpRequest Replaced")}else window.XMLHttpRequest.prototype.mock&&(window.XMLHttpRequest=_XMLHttpRequest,console.info("[SDK]","XMLHttpRequest Recover"))},n=o=>{e.xhr.hook.debug=o.network.xhr.debug||o.debug,e.xhr.hook.requestHook=o.network.xhr.requestHook||o.network.requestHook,e.xhr.hook.responseHook=o.network.xhr.responseHook||o.network.responseHook,XMLHttpRequest.prototype.hooked||e.xhr.hook.createHooks()},i={debug:!1,load:r=>{if(r){if("object"!=typeof r)throw"params is not a object";i.debug=o.debug=e.xhr.mock.debug=e.xhr.hook.debug=r.debug,i.config=e.object.deepCopy(i.config,r)}i.loaded||o.connect(),t(i.config),n(i.config),i.loaded=!0},loaded:!1,config:{debug:!1,network:{proxy:!1,nativeProxyFunction:!1,requestHook:!1,responseHook:!1,xhr:{proxy:!1,requestHook:!1,responseHook:!1},fetch:{proxy:!1,requestHook:!1,responseHook:!1}}},Bridge:o,Flags:r};export{i as default};