UNPKG

vrv-mini-sdk

Version:
1 lines 9.5 kB
var miniSDK=function(){"use strict";let e={name:"Bridge",debug:!1,jsBridge:!1,electronBridge:!1,connect(){navigator.userAgent.toLowerCase().indexOf("electron")>-1?e.electronConnect():e.jsBridgeConnect()},jsBridgeConnect(t,n){(e=>{if(window.WebViewJavascriptBridge)return e(WebViewJavascriptBridge);if(window.WVJBCallbacks)return window.WVJBCallbacks.push(e);window.WVJBCallbacks=[e];let t=document.createElement("iframe");t.style.display="none",t.src="wvjbscheme://__BRIDGE_LOADED__",document.documentElement.appendChild(t),setTimeout((function(){document.documentElement.removeChild(t)}),0)})((t=>{e.jsBridge=t,t||n("JS桥连接失败")}))},electronConnect(){e.electronBridge=window.callByDDIOApp,e.electronBridge},threadId:0,callMethod:(t,n={})=>new Promise(((o,r)=>{e.threadId++,e.debug,e.jsBridge?e.jsBridgeCallHandler(o,r,t,n,e.threadId):e.electronBridge&&e.electronCallHandler(o,r,t,n,e.threadId)})),jsBridgeCallHandler(t,n,o,r={},s){if(e.jsBridge){let n=e.jsBridge.callHandler;["registerMessageNotice","registerNFCNotice","registerProgressNotice","multiScan","setRightNavBarItem"].includes(o)&&(n=e.jsBridge.registerHandler),n(o,r,(n=>{e.debug,t(n)}))}else n("No Bridge,Or Please open it on the client")},electronCallHandler(t,n,o,r={},s){e.electronBridge?e.electronBridge[o]?(r.success=n=>{e.debug,t(n)},e.electronBridge[o](r)):n("electron illegal methods:"+o):n("No Bridge,Or Please open it on the client")}},t={extend:function(){let e,n,o,r,s,i=arguments[0]||{},a=1,d=arguments.length;for(1===d&&(i=this,a=0);a<d;a++)if(e=arguments[a],e)for(n in e)o=i[n],r=e[n],i!==r&&void 0!==r&&(t.isArray(r)||t.isObject(r)?(t.isArray(r)&&(s=o&&t.isArray(o)?o:[]),t.isObject(r)&&(s=o&&t.isObject(o)?o:{}),i[n]=t.extend(s,r)):i[n]=r);return i},each:function(e,t,n){let o,r;if("number"===this.type(e))for(o=0;o<e;o++)t(o,o);else if(e.length===+e.length)for(o=0;o<e.length&&!1!==t.call(n,e[o],o,e);o++);else for(r in e)if(!1===t.call(n,e[r],r,e))break},type:function(e){return null==e?String(e):Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1].toLowerCase()}};t.each("String Object Array RegExp Function".split(" "),(function(e){t["is"+e]=function(n){return t.type(n)===e.toLowerCase()}})),t.isObjectOrArray=function(e){return t.isObject(e)||t.isArray(e)},t.isNumeric=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},t.keys=function(e){let t=[];for(let n in e)e.hasOwnProperty(n)&&t.push(n);return t},t.values=function(e){let t=[];for(let n in e)e.hasOwnProperty(n)&&t.push(e[n]);return t},window._XMLHttpRequest=window.XMLHttpRequest,window._ActiveXObject=window.ActiveXObject;try{new window.Event("config")}catch(e){window.Event=function(e,t,n,o){let r=document.createEvent("CustomEvent");return r.initCustomEvent(e,t,n,o),r}}let n={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},o="readystatechange loadstart progress abort error load timeout loadend".split(" "),r="timeout withCredentials".split(" "),s="readyState responseURL status statusText responseType response responseText responseXML".split(" "),i={100:"Continue",101:"Switching Protocols",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",300:"Multiple Choice",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported"};function a(){this.config={events:{},headers:{}},this.proxy=!1,this.debug=!1}t.extend(a,n),t.extend(a.prototype,n),a.prototype.mini=!0,a.prototype.noProxy=!1,t.extend(a.prototype,{open:function(e,n,i,d,c){let l=this;function p(e){for(let e=0;e<s.length;e++)try{l[s[e]]=xhr[s[e]]}catch(e){}l.dispatchEvent(new Event(e.type))}if(t.extend(this.config,{method:e,url:n,async:"boolean"!=typeof i||i,username:d,password:c,body:"",options:{url:n,method:e}}),this.noProxy){let t=function(){let e=function(){let e=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,t=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,n=location.href,o=t.exec(n.toLowerCase())||[];return e.test(o[1])}();return window.ActiveXObject?!e&&t()||n():t();function t(){try{return new window._XMLHttpRequest}catch(e){}}function n(){try{return new window._ActiveXObject("Microsoft.XMLHTTP")}catch(e){}}}();this.config.xhr=t;for(let e=0;e<o.length;e++)t.addEventListener(o[e],p);d?t.open(e,n,i,d,c):t.open(e,n,i);for(let e=0;e<r.length;e++)try{t[r[e]]=l[r[e]]}catch(e){}}else this.readyState=a.OPENED,this.dispatchEvent(new Event("readystatechange"))},setRequestHeader:function(e,t){if(this.noProxy)return void this.config.xhr.setRequestHeader(e,t);let n=this.config.headers;n[e]?n[e]+=","+t:n[e]=t},timeout:0,withCredentials:!1,upload:{},send:function(e){let t=this;function n(e,n){a.debug,t.responseData=e.responseData,t.responseHeaders=e.responseHeaders,t.response=e.response||e,"string"==typeof e.response&&(t.responseText=e.response),t.responseType=e.responseType,t.responseURL=e.responseURL,t.responseXML=e.responseXML,t.status=e.status||200,t.statusText=e.statusText||i[e.status],t.timeout=e.timeout,t.withCredentials=e.withCredentials,t.readyState=a.DONE,t.dispatchEvent(new Event("readystatechange")),t.dispatchEvent(new Event("load")),t.dispatchEvent(new Event("loadend"))}this.config.body=e,this.config.timeout=this.timeout,this.noProxy?this.config.xhr.send(e):(this.setRequestHeader("X-Requested-With","MiniXMLHttpRequest"),this.dispatchEvent(new Event("loadstart")),t.readyState=a.HEADERS_RECEIVED,t.dispatchEvent(new Event("readystatechange")),t.readyState=a.LOADING,t.dispatchEvent(new Event("readystatechange")),a.proxy&&(a.debug,a.proxy(t).then((e=>{n(e)})).catch((e=>{n(e)}))))},abort:function(){this.noProxy?this.config.xhr.abort():(this.readyState=a.UNSENT,this.dispatchEvent(new Event("abort",!1,!1,this)),this.dispatchEvent(new Event("error",!1,!1,this)))}}),t.extend(a.prototype,{status:a.UNSENT,statusText:"",getResponseHeader:function(e){return this.noProxy?this.config.xhr.getResponseHeader(e):this.responseHeaders[e.toLowerCase()]},getAllResponseHeaders:function(){if(this.noProxy)return this.config.xhr.getAllResponseHeaders();let e=this.responseHeaders,t="";for(let n in e)e.hasOwnProperty(n)&&(t+=n+": "+e[n]+"\r\n");return t},overrideMimeType:function(){},responseHeaders:{},responseURL:"",responseType:"",response:null,responseText:"",responseXML:null}),t.extend(a.prototype,{addEventListener:function(e,t){let n=this.config.events;n[e]||(n[e]=[]),n[e].push(t)},removeEventListener:function(e,t){let n=this.config.events[e]||[];for(let e=0;e<n.length;e++)n[e]===t&&n.splice(e--,1)},dispatchEvent:function(e){let t=this.config.events[e.type]||[];for(let n=0;n<t.length;n++)t[n].call(this,e);let n="on"+e.type;this[n]&&this[n](e)}});let d={init:e=>{d.createHooks(e)},XHR_Hooked:!1,miniXHR_Hooked:!1,createHooks(e){if(XMLHttpRequest.prototype.mini?this.miniXHR_Hooked:this.XHR_Hooked)return;let t=XMLHttpRequest.prototype.open;XMLHttpRequest.prototype.open=function(){let n=this.send,o=arguments,r={};return this.send=function(t){let s=e.network.xhr.requestHook?e.network.xhr.requestHook:e.network.requestHook;if(s){r={url:o[1],method:o[0],body:arguments[0],headers:this.getAllResponseHeaders()};let{url:t,method:n,body:i,headers:a}=s(r);o[0]=n,o[1]=t,arguments[0]=i;for(let e in a)a.hasOwnProperty(e)&&this.setRequestHeader(e,a[e]);e.debug}return n.apply(this,arguments)},this.addEventListener("readystatechange",(()=>{if(4===this.readyState){let t=this.responseText,n=this.response;Object.defineProperty(this,"responseText",{writable:!0}),Object.defineProperty(this,"response",{writable:!0}),this.responseText=t,this.response=n;let o=e.network.xhr.responseHook?e.network.xhr.responseHook:e.network.responseHook;o&&(o(r,this),e.debug),this.hookStatus="Response Hook"}}),!1),t.apply(this,[].slice.call(arguments))},XMLHttpRequest.prototype.mini?this.miniXHR_Hooked=!0:this.XHR_Hooked=!0}};var c={nativeProxyFunction:"requestProxy"};let l={debug:!1,load:n=>{if(n){if("object"!=typeof n)throw"params is not a object";l.debug=n.debug,n.network.bridge&&(e.debug=n.network.bridge.debug),l.config=t.extend(l.config,n)}l.loaded=((t,n)=>{n||e.connect();let o=!1;if(t.network.xhr.proxy||t.network.proxy){let n=n=>new Promise(((o,r)=>{e.callMethod(t.network.nativeProxyFunction||c.nativeProxyFunction,n.config).then((e=>o(e))).catch((e=>r(e)))})),r=!1,s=!1;"function"==typeof t.network.xhr.proxy&&(s=t.network.xhr.proxy),"function"==typeof t.network.proxy&&(r=t.network.proxy),a.proxy=s||r||n,o=!window.XMLHttpRequest.prototype.mini,window.XMLHttpRequest=a}else window.XMLHttpRequest.prototype.mini&&(o=window.XMLHttpRequest.prototype.mini,window.XMLHttpRequest=_XMLHttpRequest);return n&&!o||d.init(t),!0})(l.config,l.loaded)},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:{debug:!1}}},Bridge:e,XHR:a,Flags:c};return l}();