UNPKG

@apeiwan/ppjsbridge

Version:
3 lines (2 loc) 11.5 kB
/*!@apeiwan/ppjsbridge beta@0.1.1*/ !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).PPJSBridge=n()}(this,(function(){"use strict";function e(n){return(e="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})(n)}function n(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function t(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function r(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?t(Object(i),!0).forEach((function(t){n(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):t(Object(i)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))}))}return e}function i(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var t=[],r=!0,i=!1,o=void 0;try{for(var s,a=e[Symbol.iterator]();!(r=(s=a.next()).done)&&(t.push(s.value),!n||t.length!==n);r=!0);}catch(e){i=!0,o=e}finally{try{r||null==a.return||a.return()}finally{if(i)throw o}}return t}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var o,s=window.navigator.userAgent,a=s.match(/(Android);?[\s\/]+([\d.]+)?/),u=s.match(/(iPad).*OS\s([\d_]+)/),c=s.match(/(iPod)(.*OS\s([\d_]+))?/),d=!u&&s.match(/(iPhone\sOS|iOS)\s([\d_]+)/),f=/pipipeiwan/i.test(window.navigator.userAgent),l="1.1.7",p=a?"android":u||c||d?"ios":"pc",g="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},v=new(function(e){!function(n){function t(){}var r=t.prototype,i=n.EventEmitter;function o(e,n){for(var t=e.length;t--;)if(e[t].listener===n)return t;return-1}function s(e){return function(){return this[e].apply(this,arguments)}}r.getListeners=function(e){var n,t,r=this._getEvents();if(e instanceof RegExp)for(t in n={},r)r.hasOwnProperty(t)&&e.test(t)&&(n[t]=r[t]);else n=r[e]||(r[e]=[]);return n},r.flattenListeners=function(e){var n,t=[];for(n=0;n<e.length;n+=1)t.push(e[n].listener);return t},r.getListenersAsObject=function(e){var n,t=this.getListeners(e);return t instanceof Array&&((n={})[e]=t),n||t},r.addListener=function(e,n){if(!function e(n){return"function"==typeof n||n instanceof RegExp||!(!n||"object"!=typeof n)&&e(n.listener)}(n))throw new TypeError("listener must be a function");var t,r=this.getListenersAsObject(e),i="object"==typeof n;for(t in r)r.hasOwnProperty(t)&&-1===o(r[t],n)&&r[t].push(i?n:{listener:n,once:!1});return this},r.on=s("addListener"),r.addOnceListener=function(e,n){return this.addListener(e,{listener:n,once:!0})},r.once=s("addOnceListener"),r.defineEvent=function(e){return this.getListeners(e),this},r.defineEvents=function(e){for(var n=0;n<e.length;n+=1)this.defineEvent(e[n]);return this},r.removeListener=function(e,n){var t,r,i=this.getListenersAsObject(e);for(r in i)i.hasOwnProperty(r)&&-1!==(t=o(i[r],n))&&i[r].splice(t,1);return this},r.off=s("removeListener"),r.addListeners=function(e,n){return this.manipulateListeners(!1,e,n)},r.removeListeners=function(e,n){return this.manipulateListeners(!0,e,n)},r.manipulateListeners=function(e,n,t){var r,i,o=e?this.removeListener:this.addListener,s=e?this.removeListeners:this.addListeners;if("object"!=typeof n||n instanceof RegExp)for(r=t.length;r--;)o.call(this,n,t[r]);else for(r in n)n.hasOwnProperty(r)&&(i=n[r])&&("function"==typeof i?o.call(this,r,i):s.call(this,r,i));return this},r.removeEvent=function(e){var n,t=typeof e,r=this._getEvents();if("string"===t)delete r[e];else if(e instanceof RegExp)for(n in r)r.hasOwnProperty(n)&&e.test(n)&&delete r[n];else delete this._events;return this},r.removeAllListeners=s("removeEvent"),r.emitEvent=function(e,n){var t,r,i,o,s=this.getListenersAsObject(e);for(o in s)if(s.hasOwnProperty(o))for(t=s[o].slice(0),i=0;i<t.length;i++)!0===(r=t[i]).once&&this.removeListener(e,r.listener),r.listener.apply(this,n||[])===this._getOnceReturnValue()&&this.removeListener(e,r.listener);return this},r.trigger=s("emitEvent"),r.emit=function(e){var n=Array.prototype.slice.call(arguments,1);return this.emitEvent(e,n)},r.setOnceReturnValue=function(e){return this._onceReturnValue=e,this},r._getOnceReturnValue=function(){return!this.hasOwnProperty("_onceReturnValue")||this._onceReturnValue},r._getEvents=function(){return this._events||(this._events={})},t.noConflict=function(){return n.EventEmitter=i,t},e.exports?e.exports=t:n.EventEmitter=t}("undefined"!=typeof window?window:g||{})}(o={exports:{}}),o.exports),h=function(e,n){var t,r=String(e).split(".").map((function(e){return parseInt(e)})),i=String(n).split(".").map((function(e){return parseInt(e)})),o=Math.max(r.length,i.length);if(null==e||null==n)throw new Error;if(0==e.length&&0==n.length)return 0;if(0==e.length)return-1;if(0==n.length)return 1;for(var s=0;s<o&&0==(t=a(r[s],i[s]));s++);return t;function a(e,n){return"number"!=typeof e&&(e=0),"number"!=typeof n&&(n=0),n<e?1:e<n?-1:0}},w=function(n){var t=(window.FLPPJSBridge||{}).version;if(!t)return!1;if(f){if("ios"===p){var r=("object"===e(n)?n.ios:n)||l;return-1<h(t,r)}var i=("object"===e(n)?n.android:n)||l;return-1<h(t,i)}return!1},m=function(){return f&&sessionStorage.getItem("token")||""},y=function(){var n=window.FLPPJSBridge||{};return f&&"object"===e(window.FLPPJSBridge)?(n.env+"").toUpperCase()||void 0:""},P=function(){var n=window.FLPPJSBridge||{};return f&&"object"===e(window.FLPPJSBridge)?n.version:""},b=function(){return f?!!sessionStorage.getItem("token"):""},O=function(){return r({},window.FLPPJSBridge,{token:m(),env:y(),version:P(),isLogin:b(),os:p})},S=function(e){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},t=e.action;n.handle?n.handle(e,O()):("success"===t?n.success&&n.success(e,O()):n.fail&&n.fail(e,O()),n.complete&&n.complete(e,O()))},L=function(e){if(n=e,t={},f?n.version&&!w(n.version)&&(t={message:"not use api,because app notSupport",action:"notSupport"}):t={message:"not pipiapp environment",action:"notApp"},!t.action||(window._PPJSBridge_.console&&console.warn(":::PPJSBridge\u53d1\u9001\u547d\u4ee4\u5931\u8d25:::",n.cmd,n),S(t,n),0)){var n,t,i,o,s,a=e.handle,u=e.success,c=e.fail,d=e.complete,l={cmd:e.cmd};(a||u||c||d)&&(l.handle=function(e){var n=["a","b","c","d","e","f","g","h","i","g","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"][Math.round(25*Math.random())]+(65536*(1+Math.random())|0).toString(16).substring(1);return v.addOnceListener(n,(function(n){var t=e.cmd;"func.ready"!==t&&"func.login"!==t||window.FLPPJSBridge||(window.FLPPJSBridge=n.data),window._PPJSBridge_.console&&console.warn(":::PPJSBridge\u6536\u5230App\u56de\u8c03:::",t,n),S(n,e)})),window[n]=function(e){v.emitEvent(n,[e])},n}(e)),e.data&&(l.data=e.data),-1!==(s=(o=r({},i=l)).cmd).indexOf(".")&&(s=s.split("."),o.api=s[1],s=s[0]),window._PPJSBridge_.console&&console.warn(":::PPJSBridge\u547d\u4ee4\u53d1\u9001\u6210\u529f:::",i.cmd,i),"ios"===p?window.webkit.messageHandlers[s].postMessage(o):"android"===p&&window["flppAndroid"+s].postMessage(JSON.stringify(o))}},j=function(n){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"&",r="";for(var i in n){var o=n[i];""!==o&&(r+=i+"="+encodeURIComponent("object"===e(o)?JSON.stringify(o):o)+t)}return r?r.substr(0,r.length-1):""},E=function(e,n){var t=-1!==e.indexOf("?")?"&":"?";return e+(n?t:"")+n},_=function(e){if("?"!==(1<arguments.length&&void 0!==arguments[1]?arguments[1]:"?")&&-1!==e.indexOf("&")){var n=e.indexOf("&");e=e.substr(0,n)+"?"+e.substr(n)}var t=function(e){var n=window.location.hash,t=window.location.search;if(e){var r=e.indexOf("#"),i=e.indexOf("?");if(n=-1!==r?e.substr(r):"",i<r||-1!==i&&-1===r){var o=i<r?r-i:e.length;t=e.substr(i,o)}else t=""}return{hashStr:n,searchStr:t}}(e),r=t.hashStr,i=t.searchStr,o=r.indexOf("?");r=-1!==o?r.substr(o+1)+"&":"";var s=i.indexOf("?");-1!==s&&(i=i.substr(s+1));var a={};if(-1!==o||-1!==s)for(var u=(r+i).split("&"),c=0;c<u.length;c++){var d=u[c].split("=");if(d[0]){var f="";try{f=decodeURIComponent(d[1])}catch(e){f=d[1]}a[d[0]]=f}}return a},J="func.login",B="func.goBack",x="func.ready",A="func.openAppPage",R="func.share",F={};function k(e,n){var t=n.data,r=void 0===t?{}:t;r.token&&F.set(r.token),e&&e({data:O(),action:n.action,message:n.message},O())}F.format=function(e){return""===e||"null"===e?"":e},F.set=function(e){var n=F.format(e);n&&sessionStorage.setItem("token",n)};var U=function(e,n){var t=_(e);e=e.split("?")[0];var r=j(t);return e+(r?("ios"===n?"&":"?")+r:"")},I={console:!1};window._PPJSBridge_=I;var V=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=document.getElementById("PPJSBridge"),t=I.console;n&&"string"==typeof(t=n.getAttribute("console"))&&(t=-1===t.indexOf("production")&&Boolean(t)),t=void 0===e.console?t:e.console,window._PPJSBridge_=r({},window._PPJSBridge_,{console:t})};V();var C,M="_ppjsbridge_shareurl_";return(C=_())[M]&&!f&&window.location.replace(C[M]),{os:p,isPiPiApp:f,invoke:L,isCanIUse:w,login:function(e){L({cmd:J,handle:function(n){k(e,n)},version:"1.2.9"})},ready:function(e){function n(){window.FLPPJSBridge?k(e,{data:window.FLPPJSBridge,action:"success",message:""}):L({cmd:x,handle:function(n){k(e,n)}})}window.PPJSBridgeReady=!0,window.FLPPJSBridge?k(e,{data:window.FLPPJSBridge,action:"success",message:""}):"complete"===document.readyState?n():document.addEventListener("DOMContentLoaded",(function(){n()}),!0)},openWindow:function(n){var t=n.version||"",o={},s={},a={},u=n.ios,c=n.android;"object"===e(n.android)&&(o.android=n.android.version||"",s=n.android.query||{},c=n.android.url),"object"===e(n.ios)&&(o.ios=n.ios.version||"",a=n.ios.query||{},u=n.ios.url),t=t||o;var d=function(e,n){var t=2<arguments.length&&void 0!==arguments[2]?arguments[2]:"&",r=-1!==e.indexOf("?")?t:"?";return e+(n?r:"")+n};if(n.url){var f=n.url;u="FLWebPageViewController?urlString="+U(f,"ios"),c="WebViewActivity?url="+U(f,"android")}var l=function(){var e=n.query,t={},o={ios:{},android:{}};for(var s in e){var a=s+"";if(-1!==a.indexOf("["))for(var u=a.substr(1,a.length-2).split(","),c=0;c<u.length;c++){var d=i(u[c].split(":"),2),f=d[0],l=d[1];o[f][l]=e[s]}else t[s]=e[s]}return r({},t,{},o[p])};return L({version:"{}"===JSON.stringify(t)?"":t,data:{para:JSON.stringify({ios:{ios_route:d(u,j(r({},a,{},l())))},android:{androidRoute:d(c,j(r({},s,{},l())))}}[p])},cmd:A,fail:function(e){"notApp"===e.action&&n.href&&(window.location.href=n.href)},handle:n.handle})},getToken:m,getVersion:P,getEnv:y,getApp:O,isLogin:b,back:function(){L({cmd:B})},getStitchingUrlParams:j,getRequestUrlParam:_,addUrlParams:E,share:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=e.data,o=r({},i,{copy:i.copy||i.url});t.appOpenUrl&&(o.copy=E(t.appOpenUrl,j(n({},M,o.copy))),o.url=E(t.appOpenUrl,j(n({},M,o.url)))),e.data=o,L(r({cmd:R},e))},getFormatShareUrl:function(e,t){return E(t,j(n({},M,e)))},init:V}}));