@jolibox/native-bridge 1.1.13 → 1.1.14-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var Ie=Object.defineProperty,Pe=Object.defineProperties;var Ce=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var te=Object.prototype.hasOwnProperty,ne=Object.prototype.propertyIsEnumerable;var re=(e,r,t)=>r in e?Ie(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,f=(e,r)=>{for(var t in r||(r={}))te.call(r,t)&&re(e,t,r[t]);if(M)for(var t of M(r))ne.call(r,t)&&re(e,t,r[t]);return e},ie=(e,r)=>Pe(e,Ce(r));var se=(e,r)=>{var t={};for(var n in e)te.call(e,n)&&r.indexOf(n)<0&&(t[n]=e[n]);if(e!=null&&M)for(var n of M(e))r.indexOf(n)<0&&ne.call(e,n)&&(t[n]=e[n]);return t};var R=(e,r,t)=>new Promise((n,i)=>{var s=u=>{try{o(t.next(u))}catch(c){i(c)}},a=u=>{try{o(t.throw(u))}catch(c){i(c)}},o=u=>u.done?n(u.value):Promise.resolve(u.value).then(s,a);o((t=t.apply(e,r)).next())});function De(e){return!!(e!=null&&e.__nativeBuffers__)}var Ue=e=>{let r=atob(e),t=r.length,n=new Uint8Array(t);for(let i=0;i<t;i++)n[i]=r.charCodeAt(i);return n.buffer};function x(e){if(typeof e=="string")try{e=JSON.parse(e)}catch(t){return{}}if(typeof e!="object"||e===null)return{};if(!De(e))return e;let r=e.__nativeBuffers__;if(delete e.__nativeBuffers__,r)for(let t=0;t<r.length;t++){let n=r[t];if(n){let i;n.value?i=n.value:n.base64&&(i=Ue(n.base64)),typeof i!="undefined"&&i instanceof ArrayBuffer&&(e[n.key]=i)}}return e}var Le=e=>{let r="",t=new Uint8Array(e),n=t.byteLength;for(let i=0;i<n;i++)r+=String.fromCharCode(t[i]);return btoa(r)};function oe(e={},r=!1){let t=e,n=[];for(let[i,s]of Object.entries(t))if(s!==void 0&&s instanceof ArrayBuffer&&s.byteLength!==void 0){let a=r?{value:s,key:i}:{base64:Le(s),key:i};n.push(a),delete t[i]}return n.length>0&&(t.__nativeBuffers__=n),t}var G=Object.defineProperty;var Je=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertySymbols,Fe=Object.prototype.hasOwnProperty,je=Object.prototype.propertyIsEnumerable,ce=(e,r,t)=>r in e?G(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,Be=(e,r)=>{for(var t in r||(r={}))Fe.call(r,t)&&ce(e,t,r[t]);if(ae)for(var t of ae(r))je.call(r,t)&&ce(e,t,r[t]);return e};var He=(e,r)=>{for(var t in r)G(e,t,{get:r[t],enumerable:!0})},le=(e,r,t,n)=>{for(var i=n>1?void 0:n?Je(r,t):r,s=e.length-1,a;s>=0;s--)(a=e[s])&&(i=(n?a(r,t,i):a(i))||i);return n&&i&&G(r,t,i),i},Ve=(e,r,t)=>new Promise((n,i)=>{var s=u=>{try{o(t.next(u))}catch(c){i(c)}},a=u=>{try{o(t.throw(u))}catch(c){i(c)}},o=u=>u.done?n(u.value):Promise.resolve(u.value).then(s,a);o((t=t.apply(e,r)).next())});if(typeof window!="undefined"&&!window.AbortController){let e=function(){this.signal=new r};e.prototype.abort=function(){this.signal._aborted=!0,typeof this.signal.onabort=="function"&&this.signal.onabort(new Event("abort"));let t=new Event("abort");this.signal.dispatchEvent(t)};let r=function(){this._aborted=!1,this.aborted=!1,this.onabort=null,this._eventListeners={}};Object.defineProperty(r.prototype,"aborted",{get:function(){return this._aborted}}),r.prototype.addEventListener=function(t,n){this._eventListeners[t]||(this._eventListeners[t]=[]),this._eventListeners[t].push(n)},r.prototype.removeEventListener=function(t,n){if(!this._eventListeners[t])return;let i=this._eventListeners[t].indexOf(n);i!==-1&&this._eventListeners[t].splice(i,1)},r.prototype.dispatchEvent=function(t){if(this._eventListeners[t.type])for(let n of this._eventListeners[t.type])n.call(this,t)},window.AbortController=e,window.AbortSignal=r}function Ke(e){return new Promise(r=>{setTimeout(()=>{r()},e)})}var de=class{constructor(){this.state="pending",this.promise=new Promise((e,r)=>{this.resolve=t=>{this.state==="pending"&&(this.state="fulfilled",e(t))},this.reject=t=>{this.state==="pending"&&(this.state="rejected",r(t))}})}};function z(e){return typeof e=="string"}function _(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function $e(e){return typeof e=="undefined"}function Ge(e){return $e(e)||e===null}function me(e){return typeof e=="function"}function ge(e){return _(e)&&me(e.then)}function fe(e){let r=e,t=null,n=function(...i){return t||(t=new r(...i)),t};return n.prototype=r.prototype,n}var ze=(e=>(e[e.DEVELOPER_FILE_NOT_FOUND=0]="DEVELOPER_FILE_NOT_FOUND",e[e.INTERNAL_IOS_CAN_NOT_FOUND_PKG=1]="INTERNAL_IOS_CAN_NOT_FOUND_PKG",e[e.USER_IOS_LOAD_TIMEOUT=2]="USER_IOS_LOAD_TIMEOUT",e[e.INTERNAL_IOS_PKG_LOAD_ERROR=3]="INTERNAL_IOS_PKG_LOAD_ERROR",e[e.INTERNAL_IOS_PKG_PARSE_FAIL=4]="INTERNAL_IOS_PKG_PARSE_FAIL",e[e.USER_IOS_GET_EMPTY_DATA=5]="USER_IOS_GET_EMPTY_DATA",e[e.USER_ANDROID_GET_PKG_FAIL=6]="USER_ANDROID_GET_PKG_FAIL",e[e.DEVELOPER_ANDROID_PACKAGE_FILE_UNEXPECTED_REQUIRE=7]="DEVELOPER_ANDROID_PACKAGE_FILE_UNEXPECTED_REQUIRE",e))(ze||{}),We=class extends Error{constructor(e){if(typeof e=="string"){super(e),this.priority="P1";return}super(e.message),this.priority="P1",this.stack=e.stack,this.raw=e}},P=class extends We{constructor(){super(...arguments),this.kind="INTERNAL_ERROR"}};var pe=class extends P{constructor(){super(...arguments),this.name="INTERNAL_INVOKE_NATIVE_ERROR"}},he=class extends P{constructor(e,r,t,n){super(e),this.errNo=r,this.name="INTERNAL_APPLY_NATIVE_ERROR",this.errorType=t,this.errorCode=n}};var ve=class extends P{constructor(){super(...arguments),this.name="INTERNAL_JSCORE_ERROR",this.priority="P0"}};var C=class extends P{constructor(){super(...arguments),this.name="INTERNAL_METRIC_REPORT_ERROR"}};function w(e){return(...r)=>{var t,n;((n=(t=globalThis.VConsole)==null?void 0:t[e])!=null?n:globalThis.console[e])(...r)}}var D={log:w("log"),warn:w("warn"),info:w("info"),error:w("error"),debug:w("debug")};Object.assign(globalThis,{logger:D});var Qe=Symbol.for("Jolibox.canIUseMap"),Xe={};globalThis[Qe]=Xe;var Ye=(e=>(e[e.System=1e3]="System",e[e.ErrorTrace=1001]="ErrorTrace",e[e.UserDefined=1002]="UserDefined",e))(Ye||{}),qe=(e=>(e.MiniGame="mini-game",e.MiniDrama="mini-drama",e.App="app",e.WebSDK="web-sdk",e.AppSDK="app-sdk",e))(qe||{}),Ze=(e=>(e[e.App=0]="App",e[e.H5=1]="H5",e[e.Weapp=2]="Weapp",e[e.Alipay=3]="Alipay",e[e.Gcash=4]="Gcash",e[e.Dana=5]="Dana",e[e.Umma=6]="Umma",e[e.WebSDK=1e3]="WebSDK",e[e.AppSDK=1001]="AppSDK",e[e.Other=9999]="Other",e))(Ze||{});function er(){try{if(window.__joliboxLocalStorage__)return window.__joliboxLocalStorage__;let e=Object.getOwnPropertyDescriptor(window,"localStorage");if(e&&e.get){let n=e.get.call(window);return window.__joliboxLocalStorage__=n,n}if(e=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(window),"localStorage"),e&&e.get)return e.get.call(window);let r=Window.prototype,t=Object.getOwnPropertyDescriptor(r,"localStorage");if(t&&t.get){let n=t.get.call(window);return window.__joliboxLocalStorage__=n,n}return localStorage}catch(e){return console.warn("Failed to get original localStorage, fallback to default implementation",e),localStorage}}er();var hr={isiOS:navigator.userAgent.includes("iPhone")||navigator.userAgent.includes("iPod")||navigator.userAgent.includes("iPad")||navigator.userAgent.includes("iPhone OS"),iosVersion:()=>{let e=navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/);return[parseInt(e[1],10),parseInt(e[2],10),parseInt(e[3]||"0",10)]},isAndroid:navigator.userAgent.includes("Android"),isMac:navigator.userAgent.includes("Mac"),isFacebook:navigator.userAgent.includes("FB_IAB"),isPC:!navigator.userAgent.includes("iPhone")&&!navigator.userAgent.includes("Android")};var H=class V{constructor(r){this.element=r,this.next=V.Undefined,this.prev=V.Undefined}};H.Undefined=new H(void 0);var d=H,rr=class{constructor(){this._first=d.Undefined,this._last=d.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===d.Undefined}clear(){let e=this._first;for(;e!==d.Undefined;){let r=e.next;e.prev=d.Undefined,e.next=d.Undefined,e=r}this._first=d.Undefined,this._last=d.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,r){let t=new d(e);if(this._first===d.Undefined)this._first=t,this._last=t;else if(r){let i=this._last;this._last=t,t.prev=i,i.next=t}else{let i=this._first;this._first=t,t.next=i,i.prev=t}this._size+=1;let n=!1;return()=>{n||(n=!0,this._remove(t))}}shift(){if(this._first!==d.Undefined){let e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==d.Undefined){let e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==d.Undefined&&e.next!==d.Undefined){let r=e.prev;r.next=e.next,e.next.prev=r}else e.prev===d.Undefined&&e.next===d.Undefined?(this._first=d.Undefined,this._last=d.Undefined):e.next===d.Undefined?(this._last=this._last.prev,this._last.next=d.Undefined):e.prev===d.Undefined&&(this._first=this._first.next,this._first.prev=d.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==d.Undefined;)yield e.element,e=e.next}},tr=0,I=class{constructor(e){this.value=e,this.id=tr++}},O=class{constructor(e){this.options=e,this._size=0}dispose(e){var r,t;this._disposed||(this._disposed=!0,this._listeners&&(e?(this._listeners instanceof I&&(this._listeners=[this._listeners]),this._listeners=this._listeners.filter(n=>(n==null?void 0:n.value)===e)):(this._listeners=void 0,this._size=0)),(t=(r=this.options)==null?void 0:r.onDidRemoveLastListener)==null||t.call(r))}get event(){var e;return(e=this._event)!=null||(this._event=(r,t)=>{var n,i,s,a,o,u;if(this._disposed)return()=>{console.info("[Jolibox SDK] Emitter is _disposed")};t&&(r=r.bind(t));let c=new I(r);this._listeners?this._listeners instanceof I?this._listeners=[this._listeners,c]:this._listeners.push(c):((i=(n=this.options)==null?void 0:n.onWillAddFirstListener)==null||i.call(n,this),this._listeners=c,(a=(s=this.options)==null?void 0:s.onDidFirstListener)==null||a.call(s,this)),(u=(o=this.options)==null?void 0:o.onDidAddListener)==null||u.call(o,this),this._size++}),this._event}_deliver(e,r){var t;if(!e)return;let n=((t=this.options)==null?void 0:t.onListenerError)||Error.constructor;if(!n){e.value(r);return}try{e.value(r)}catch(i){n(i)}}fire(e){this._listeners&&(this._listeners instanceof I?this._deliver(this._listeners,e):this._listeners.forEach(r=>this._deliver(r,e)))}hasListeners(){return this._size>0}},U=class{constructor(){this.listeners=new Map,this.listerHandlerMap=new WeakMap,this.cachedEventQueue=new Map}on(e,r){var t;let n=(t=this.listeners.get(e))!=null?t:new O,i=a=>r(...a.args);this.listerHandlerMap.set(r,i),n.event(i),this.listeners.set(e,n);let s=this.cachedEventQueue.get(e);if(s)for(;s.size>0;)n.fire(Be({event:e},s.shift()))}off(e,r){let t=this.listeners.get(e);if(t){let n=this.listerHandlerMap.get(r);t.dispose(n)}}emit(e,...r){let t=this.listeners.get(e);if(t)t.fire({event:e,args:r});else{let n=this.cachedEventQueue.get(e);n||(n=new rr,this.cachedEventQueue.set(e,n)),n.push({args:r})}}},K={};He(K,{None:()=>nr,filter:()=>sr,once:()=>be,toPromise:()=>ir});var nr=()=>{console.log("[Jolibox SDK] None Event")};function ir(e){return new Promise(r=>be(e)(r))}function be(e){return(r,t=null)=>{let n=!1;return e(i=>{if(!n)return n=!0,r.call(t,i)},null)}}function sr(e,r){return(t=>{let n,i={onWillAddFirstListener(){n=t(s.fire,s)}},s=new O(i);return s.event})((t,n=null)=>e(i=>r(i)&&t.call(n,i),null))}var B=Symbol.for("Jolibox.hostEmitter"),or=()=>{let e=new U;return globalThis[B]||(globalThis[B]={on:e.on.bind(e),off:e.off.bind(e),emit:e.emit.bind(e)}),globalThis[B]},vr=or();function ar(e,r){let t=Math.min(e.length,r.length);for(let n=0;n<t;n++)cr(e[n],r[n])}function cr(e,r){if(z(r)){if(typeof e!==r)throw new Error(`argument does not match constraint: typeof ${r}`)}else if(me(r)){try{if(e instanceof r)return}catch(t){}if(!Ge(e)&&e.constructor===r||r.length===1&&r.call(void 0,e)===!0)return;throw new Error("[Jolibox SDK]argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true")}}var $=class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new O,this.onDidRegisterCommand=this._onDidRegisterCommand.event,console.log("[Jolibox SDK] command registry")}registerCommand(e){if(!e)throw new Error("invalid command");if(e.metadata&&Array.isArray(e.metadata.args)){let t=[];for(let i of e.metadata.args)t.push(i.constraint);let n=e.handler;e.handler=function(...i){return ar(i,t),n(...i)}}let{id:r}=e;this._commands.get(r)&&console.info(`[Jolibox SDK] duplicated command is registered ${r}`),this._commands.set(r,e),this._onDidRegisterCommand.fire(r)}getCommand(e){return this._commands.get(e)}getCommands(){let e=new Map;for(let r of this._commands.keys()){let t=this.getCommand(r);t&&e.set(r,t)}return e}};$=le([fe],$);var ue=class{constructor(){this._onWillExecuteCommand=new O,this.onWillExecuteCommand=this._onWillExecuteCommand.event,this._onDidExecuteCommand=new O,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this.registry=new $,this._starActivation=null}_activateStar(){return this._starActivation||(this._starActivation=Ke(3e4)),this._starActivation}executeCommand(e,...r){return Ve(this,null,function*(){return this.registry.getCommand(e)?this._tryExecuteCommand(e,r):(yield Promise.all([Promise.race([this._activateStar(),K.toPromise(K.filter(this.registry.onDidRegisterCommand,t=>t===e))])]),this._tryExecuteCommand(e,r))})}executeCommandThowErr(e,...r){if(!this.registry.getCommand(e))throw new Error(`command '${e}' not found`);let t=this.registry.getCommand(e);this._onWillExecuteCommand.fire({commandId:e,args:r});let n=this.invokeFunction(t.handler,...r);return this._onDidExecuteCommand.fire({commandId:e,args:r}),n}_tryExecuteCommand(e,r){let t=this.registry.getCommand(e);if(!t)return Promise.reject(new Error(`command '${e}' not found`));try{this._onWillExecuteCommand.fire({commandId:e,args:r});let n=this.invokeFunction(t.handler,...r);return this._onDidExecuteCommand.fire({commandId:e,args:r}),Promise.resolve(n)}catch(n){return Promise.reject(n)}}invokeFunction(e,...r){let t=!1;try{return e(...r)}finally{t=!0}}};ue=le([fe],ue);var br=Symbol.for("Jolibox.commands");function k(e,r){return`[${e}]:${r}`}var y="custom_event_";var _e=[],ye=[],Ee=["env","createRequestTask","login"],L="__batch_event__";var ur=e=>e==="pv"?e:"default",E=class{constructor(r){this.interval=30;this.lastReportTime=0;this.cache={};let{reporter:t,interval:n=30,eventName:i,tagNameOrder:s,metricName:a,type:o}=r;this.reporter=t,this.interval=n,this.eventName=i,this.tagNameOrder=s,this.metricName=a,this.type=ur(o)}report(r){this.type==="pv"?this.addPVPoint(r):this.addPoint(r),this.tryReport(!1)}flush(){this.tryReport(!0)}tryReport(r){if(Object.keys(this.cache).length){if(r){this.reporter(this.processPoints(this.cache)),this.clearPoints();return}this.lastReportTime=this.lastReportTime||Date.now(),Date.now()-this.lastReportTime>=this.interval*1e3&&(this.reporter(this.processPoints(this.cache)),this.clearPoints(),this.lastReportTime=Date.now())}}addPoint(r){let t=(n,i,s,a)=>{let o=i.shift();if(o){let u=a[o];n[u]||(n[u]={}),t(n[u],i,s,a)}else n[s]||(n[s]=[]),n[s].push(a[s])};t(this.cache,[...this.tagNameOrder],this.metricName,r)}addPVPoint(r){let t=(i,s,a,o)=>{let u=s.shift();if(!u&&_(o))throw new C(`report value failed to match tagNameOrder, ${JSON.stringify(n)}`);if(u){let c=[];if(_(o))c.push(...Object.keys(o));else if(z(o)){if(s.length>0)throw new C(`report value failed to match tagNameOrder, ${JSON.stringify(n)}`);c.push(o)}else throw new C(`expected metric value to be a string, but got a(n) ${typeof o}, ${JSON.stringify(n)}`);c.forEach(l=>{i[l]||(i[l]={});let m=_(o)?o[l]:o;t(i[l],[...s],a,m)})}else i[a]?i[a]++:i[a]=1},n={point:r,metricName:this.metricName,tagNameOrder:this.tagNameOrder};t(this.cache,[...this.tagNameOrder],this.metricName,r)}processPoints(r){return{eventName:this.eventName,tagNameOrder:this.tagNameOrder,metricName:this.metricName,metricAggregateType:this.type==="pv"?"itoa":"arr",data:r}}clearPoints(){this.cache={}}},Ne=!1,W,Q,X;function Se(e,r){Ne||(W=new E({eventName:"jolibox_invoke",tagNameOrder:["status","method","errNo","errMsg","isForeground"],metricName:"duration",reporter(i){e.invoke("trackAsync",JSON.stringify({event:"reportMetrics",data:i}),-1)}}),Q=new E({eventName:"jolibox_invoke_js2native",tagNameOrder:["status","method","isForeground"],metricName:"duration",reporter(i){e.invoke("trackAsync",JSON.stringify({event:"reportMetrics",data:i}),-1)}}),X=new E({eventName:"jolibox_invoke_native2js",tagNameOrder:["status","method","isForeground"],metricName:"duration",reporter(i){e.invoke("trackAsync",JSON.stringify({event:"reportMetrics",data:i}),-1)}}),r("onJoliboxEnterBackground",()=>{W.flush(),Q.flush(),X.flush()}),Ne=!0);function t(i){var N,S;let{method:s,args:a,startTime:o,isForeground:u,errMsg:c=`${s}:fail no errMsg`,errNo:l=0,__timing:m={receiveJSInvoke:0,invokeCallback:0}}=i,{receiveJSInvoke:p,invokeCallback:v}=m,A=(S=(N=c.match(/\S:(\S+)\s?/))==null?void 0:N[1])!=null?S:"fail";W.report({status:A,method:n(s,a),errNo:`${l}`,errMsg:c,isForeground:u,duration:Date.now()-o}),o&&p&&v&&(Q.report({status:A,method:s,isForeground:u,duration:Number((p-o).toFixed(3))}),X.report({status:A,method:s,isForeground:u,duration:Number((Date.now()-v).toFixed(3))}))}function n(i,s){return(i==="callHostMethod"||i==="callHostMethodSync")&&s!=null&&s.method?`${i}-${s.method}`:i}return t}var Y=[],lr=!1;function xe(e,r){let t=0,n=!0,i=new Map,s=Se(e,r);r("onJoliboxEnterBackground",()=>{n=!1}),r("onJoliboxEnterForeground",()=>{n=!0,Y.forEach(p=>R(this,[p],function*({method:c,args:l,resolve:m}){let v=yield o(c,l);m(v)})),Y.length=0});let a=(c,l)=>{let m=i.get(Number(c));if(!m)return;let p=x(l);m(p),i.delete(Number(c))},o=(c,l)=>{var Z,ee;let m=Date.now(),p=`${n}`;t+=1;let v=new de;if(i.set(t,v.resolve),!n&&ye.includes(c))return new Promise(h=>{Y.push({method:c,args:l,resolve:h})});let N=ie(f({},{method:c,startTime:m,args:l,isForeground:p}),{invokeType:"js-bridge"}),S=!lr&&_e.includes(c),F=oe(l,S),j=S?F:JSON.stringify(F),g;if(c.endsWith("Sync")||Ee.includes(c)?g=(Z=e.call)==null?void 0:Z.call(e,c,F,t):typeof j=="string"?g=e.invoke(c,j,t):g=(ee=e.call)==null?void 0:ee.call(e,c,j,t),g){try{typeof g=="string"&&(g=JSON.parse(g)),g=x(g)}catch(h){D.error(h)}return i.delete(t),g.errorCode&&(g.errorCode=k(c,g.errorCode)),s(f(f({},N),g)),g}return c.endsWith("Sync")&&i.delete(t),v.promise.then(h=>(h.errorCode&&(h.errorCode=k(c,h.errorCode)),s(f(f({},N),h)),h))};return{invokeNative:o,applyNative:(c,l)=>{let m=o(c,l);return ge(m)?m.then(p=>Re(c,p)):Re(c,m)},invokeHandler:a}}function Re(e,r){if(!_(r)){D.warn(`[Jolibox SDK]${e} no response value`);return}let o=r,{errMsg:t,errNo:n,errorType:i,errorCode:s}=o,a=se(o,["errMsg","errNo","errorType","errorCode"]);if(t&&t!==`${e}:ok`)throw new he(t,n,i,s);return a}function we(e){let r=new U,t=new U,n=new E({eventName:"jolibox_publish",tagNameOrder:["type","event"],metricName:"duration",reporter(i){e.invoke("trackAsync",JSON.stringify({event:"reportMetrics",data:i}),-1)}});return r.on("onJoliboxEnterBackground",()=>{n.flush()}),{onNative:r.on.bind(r),offNative:r.off.bind(r),subscribe:t.on.bind(t),unsubscribe:t.off.bind(t),subscribeHandler(i,s,a){let o=x(s),u;if(o.__extra){u=o.params;let{type:c,startTime:l}=o.__extra;n.report({type:c,event:i,duration:Date.now()-l})}else u=o;if(i===L){u.forEach(l=>{let[m,p]=l;try{t.emit(m.slice(y.length),p,a)}catch(v){}});return}if(i.startsWith(y)){t.emit(i.slice(y.length),u,a);return}r.emit(i,u,a)}}}function Oe(e){let r=new Map,t;return(i,s,a,o)=>{if(o){let c=a?[a]:"*";e.publish(`${y}${i}`,s,c);return}t||(t=Promise.resolve().then(()=>{r.forEach((c,l)=>{try{let m=l?[l]:"*";e.publish(L,c,m)}catch(m){}}),t=void 0,r.clear()}));let u=r.get(a);u||(u=[],r.set(a,u)),u.push([`${y}${i}`,s])}}function q(e){let{subscribeHandler:r,onNative:t,offNative:n,subscribe:i,unsubscribe:s}=we(e),{invokeNative:a,invokeHandler:o,applyNative:u}=xe(e,t),c=Oe(e);return{invokeHandler:o,subscribeHandler:r,applyNative:u,invokeNative:a,onNative:t,offNative:n,publish:c,subscribe:i,unsubscribe:s}}function J(e,r){return{params:e,__extra:{startTime:Date.now(),type:r}}}var T,b={trigger(){},exit(){return Promise.resolve(!1)},onReady(e){b.trigger=e},onDoExit(e){b.exit=e}},ke=e=>{let r=window.prompt("invoke",JSON.stringify({event:"envSync",paramsString:JSON.stringify({})}));if(!r)e.onError(new pe("native env failed"));else{let{data:t}=JSON.parse(r);return t!=null?t:void 0}};if(window.webkit){let e=window.webkit.messageHandlers,r=(i="")=>{b.trigger(),e.onDocumentReady.postMessage({path:i})},t=i=>R(void 0,null,function*(){let s=yield b.exit();e.doExit.postMessage({uuid:i,shouldInterrupt:s})});T={onDocumentReady:r,doExit:t,invoke(i,s,a){e.invoke.postMessage({event:i,paramsString:s,callbackId:a})},publish(i,s,a){let o=J(s,"joliboxJSCore");window.prompt("publish",JSON.stringify({event:i,paramsString:JSON.stringify(o),webviewIds:a}))},call(i,s,a){let o=window.prompt("invoke",JSON.stringify({event:i,paramsString:JSON.stringify(s),callbackId:a}));if(o)return JSON.parse(o)}};let n={onDocumentReady:r,env:ke,doExit:t};globalThis.joliboxJSCore=f({},n)}if(window.JoliAndroidSDKBridge){let e=window.JoliAndroidSDKBridge,r=(i="")=>{b.trigger(),e.onDocumentReady(JSON.stringify({path:i}))},t=i=>R(void 0,null,function*(){let s=yield b.exit();e.doExit(JSON.stringify({uuid:i,shouldInterrupt:s}))});T={onDocumentReady:r,invoke(i,s,a){e.invoke(JSON.stringify({event:i,paramsString:s,callbackId:a}))},doExit:t,publish(i,s,a){let o=J(s,"joliboxJSCore");e.publish({event:i,paramsString:JSON.stringify(o),webviewIds:a})},call(i,s,a){let o=window.prompt("invoke",JSON.stringify({event:i,paramsString:JSON.stringify(s),callbackId:a}));if(o)return JSON.parse(o)}};let n={onDocumentReady:r,env:ke,doExit:t};globalThis.joliboxJSCore=f({},n)}var Ae=T;if(!Ae)throw new ve("No joliboxJScore is found, native bridge not found.");var dr=f({},Ae),Me=q(dr),{invokeHandler:Te}=Me,{applyNative:Nt,invokeNative:St,onNative:mr,offNative:Rt,subscribeHandler:gr,publish:xt,subscribe:wt,unsubscribe:Ot}=Me,kt=(e,r)=>{mr(e,(...t)=>{var n;(n=t[0])!=null&&n.errorCode&&(t[0].errorCode=k(e,t[0].errorCode)),r(...t)})};globalThis.joliboxJSBridge={callHandler:Te,invokeHandler:Te,subscribeHandler:gr};export{b as RuntimeLoader,Nt as applyNative,St as invokeNative,Rt as offNative,mr as onNative,kt as onNativeWithError,xt as publish,wt as subscribe,gr as subscribeHandler,Ot as unsubscribe};
|
|
1
|
+
var Pe=Object.defineProperty,Ce=Object.defineProperties;var De=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var te=Object.prototype.hasOwnProperty,ne=Object.prototype.propertyIsEnumerable;var re=(e,r,t)=>r in e?Pe(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,f=(e,r)=>{for(var t in r||(r={}))te.call(r,t)&&re(e,t,r[t]);if(M)for(var t of M(r))ne.call(r,t)&&re(e,t,r[t]);return e},ie=(e,r)=>Ce(e,De(r));var se=(e,r)=>{var t={};for(var n in e)te.call(e,n)&&r.indexOf(n)<0&&(t[n]=e[n]);if(e!=null&&M)for(var n of M(e))r.indexOf(n)<0&&ne.call(e,n)&&(t[n]=e[n]);return t};var R=(e,r,t)=>new Promise((n,i)=>{var s=u=>{try{o(t.next(u))}catch(c){i(c)}},a=u=>{try{o(t.throw(u))}catch(c){i(c)}},o=u=>u.done?n(u.value):Promise.resolve(u.value).then(s,a);o((t=t.apply(e,r)).next())});function Ue(e){return!!(e!=null&&e.__nativeBuffers__)}var Le=e=>{let r=atob(e),t=r.length,n=new Uint8Array(t);for(let i=0;i<t;i++)n[i]=r.charCodeAt(i);return n.buffer};function x(e){if(typeof e=="string")try{e=JSON.parse(e)}catch(t){return{}}if(typeof e!="object"||e===null)return{};if(!Ue(e))return e;let r=e.__nativeBuffers__;if(delete e.__nativeBuffers__,r)for(let t=0;t<r.length;t++){let n=r[t];if(n){let i;n.value?i=n.value:n.base64&&(i=Le(n.base64)),typeof i!="undefined"&&i instanceof ArrayBuffer&&(e[n.key]=i)}}return e}var Je=e=>{let r="",t=new Uint8Array(e),n=t.byteLength;for(let i=0;i<n;i++)r+=String.fromCharCode(t[i]);return btoa(r)};function oe(e={},r=!1){let t=e,n=[];for(let[i,s]of Object.entries(t))if(s!==void 0&&s instanceof ArrayBuffer&&s.byteLength!==void 0){let a=r?{value:s,key:i}:{base64:Je(s),key:i};n.push(a),delete t[i]}return n.length>0&&(t.__nativeBuffers__=n),t}var G=Object.defineProperty;var Fe=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertySymbols,je=Object.prototype.hasOwnProperty,Be=Object.prototype.propertyIsEnumerable,ce=(e,r,t)=>r in e?G(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,He=(e,r)=>{for(var t in r||(r={}))je.call(r,t)&&ce(e,t,r[t]);if(ae)for(var t of ae(r))Be.call(r,t)&&ce(e,t,r[t]);return e};var Ve=(e,r)=>{for(var t in r)G(e,t,{get:r[t],enumerable:!0})},le=(e,r,t,n)=>{for(var i=n>1?void 0:n?Fe(r,t):r,s=e.length-1,a;s>=0;s--)(a=e[s])&&(i=(n?a(r,t,i):a(i))||i);return n&&i&&G(r,t,i),i},Ke=(e,r,t)=>new Promise((n,i)=>{var s=u=>{try{o(t.next(u))}catch(c){i(c)}},a=u=>{try{o(t.throw(u))}catch(c){i(c)}},o=u=>u.done?n(u.value):Promise.resolve(u.value).then(s,a);o((t=t.apply(e,r)).next())});if(typeof window!="undefined"&&!window.AbortController){let e=function(){this.signal=new r};e.prototype.abort=function(){this.signal._aborted=!0,typeof this.signal.onabort=="function"&&this.signal.onabort(new Event("abort"));let t=new Event("abort");this.signal.dispatchEvent(t)};let r=function(){this._aborted=!1,this.aborted=!1,this.onabort=null,this._eventListeners={}};Object.defineProperty(r.prototype,"aborted",{get:function(){return this._aborted}}),r.prototype.addEventListener=function(t,n){this._eventListeners[t]||(this._eventListeners[t]=[]),this._eventListeners[t].push(n)},r.prototype.removeEventListener=function(t,n){if(!this._eventListeners[t])return;let i=this._eventListeners[t].indexOf(n);i!==-1&&this._eventListeners[t].splice(i,1)},r.prototype.dispatchEvent=function(t){if(this._eventListeners[t.type])for(let n of this._eventListeners[t.type])n.call(this,t)},window.AbortController=e,window.AbortSignal=r}function $e(e){return new Promise(r=>{setTimeout(()=>{r()},e)})}var de=class{constructor(){this.state="pending",this.promise=new Promise((e,r)=>{this.resolve=t=>{this.state==="pending"&&(this.state="fulfilled",e(t))},this.reject=t=>{this.state==="pending"&&(this.state="rejected",r(t))}})}};function z(e){return typeof e=="string"}function _(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function Ge(e){return typeof e=="undefined"}function ze(e){return Ge(e)||e===null}function me(e){return typeof e=="function"}function ge(e){return _(e)&&me(e.then)}function fe(e){let r=e,t=null,n=function(...i){return t||(t=new r(...i)),t};return n.prototype=r.prototype,n}var We=(e=>(e[e.DEVELOPER_FILE_NOT_FOUND=0]="DEVELOPER_FILE_NOT_FOUND",e[e.INTERNAL_IOS_CAN_NOT_FOUND_PKG=1]="INTERNAL_IOS_CAN_NOT_FOUND_PKG",e[e.USER_IOS_LOAD_TIMEOUT=2]="USER_IOS_LOAD_TIMEOUT",e[e.INTERNAL_IOS_PKG_LOAD_ERROR=3]="INTERNAL_IOS_PKG_LOAD_ERROR",e[e.INTERNAL_IOS_PKG_PARSE_FAIL=4]="INTERNAL_IOS_PKG_PARSE_FAIL",e[e.USER_IOS_GET_EMPTY_DATA=5]="USER_IOS_GET_EMPTY_DATA",e[e.USER_ANDROID_GET_PKG_FAIL=6]="USER_ANDROID_GET_PKG_FAIL",e[e.DEVELOPER_ANDROID_PACKAGE_FILE_UNEXPECTED_REQUIRE=7]="DEVELOPER_ANDROID_PACKAGE_FILE_UNEXPECTED_REQUIRE",e))(We||{}),Qe=class extends Error{constructor(e){if(typeof e=="string"){super(e),this.priority="P1";return}super(e.message),this.priority="P1",this.stack=e.stack,this.raw=e}},P=class extends Qe{constructor(){super(...arguments),this.kind="INTERNAL_ERROR"}};var pe=class extends P{constructor(){super(...arguments),this.name="INTERNAL_INVOKE_NATIVE_ERROR"}},he=class extends P{constructor(e,r,t,n){super(e),this.errNo=r,this.name="INTERNAL_APPLY_NATIVE_ERROR",this.errorType=t,this.errorCode=n}};var ve=class extends P{constructor(){super(...arguments),this.name="INTERNAL_JSCORE_ERROR",this.priority="P0"}};var C=class extends P{constructor(){super(...arguments),this.name="INTERNAL_METRIC_REPORT_ERROR"}};function w(e){return(...r)=>{var t,n;((n=(t=globalThis.VConsole)==null?void 0:t[e])!=null?n:globalThis.console[e])(...r)}}var D={log:w("log"),warn:w("warn"),info:w("info"),error:w("error"),debug:w("debug")};Object.assign(globalThis,{logger:D});var Xe=Symbol.for("Jolibox.canIUseMap"),Ye={};globalThis[Xe]=Ye;var qe=(e=>(e[e.System=1e3]="System",e[e.ErrorTrace=1001]="ErrorTrace",e[e.UserDefined=1002]="UserDefined",e))(qe||{}),Ze=(e=>(e.MiniGame="mini-game",e.MiniDrama="mini-drama",e.App="app",e.WebSDK="web-sdk",e.AppSDK="app-sdk",e))(Ze||{}),er=(e=>(e[e.App=0]="App",e[e.H5=1]="H5",e[e.Weapp=2]="Weapp",e[e.Alipay=3]="Alipay",e[e.Gcash=4]="Gcash",e[e.Dana=5]="Dana",e[e.Umma=6]="Umma",e[e.WebSDK=1e3]="WebSDK",e[e.AppSDK=1001]="AppSDK",e[e.Other=9999]="Other",e))(er||{});function rr(){try{if(window.__joliboxLocalStorage__)return window.__joliboxLocalStorage__;let e=Object.getOwnPropertyDescriptor(window,"localStorage");if(e&&e.get){let n=e.get.call(window);return window.__joliboxLocalStorage__=n,n}if(e=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(window),"localStorage"),e&&e.get)return e.get.call(window);let r=Window.prototype,t=Object.getOwnPropertyDescriptor(r,"localStorage");if(t&&t.get){let n=t.get.call(window);return window.__joliboxLocalStorage__=n,n}return localStorage}catch(e){return console.warn("Failed to get original localStorage, fallback to default implementation",e),localStorage}}rr();var vr={isiOS:navigator.userAgent.includes("iPhone")||navigator.userAgent.includes("iPod")||navigator.userAgent.includes("iPad")||navigator.userAgent.includes("iPhone OS"),iosVersion:()=>{let e=navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/);return[parseInt(e[1],10),parseInt(e[2],10),parseInt(e[3]||"0",10)]},isAndroid:navigator.userAgent.includes("Android"),isMac:navigator.userAgent.includes("Mac"),isFacebook:navigator.userAgent.includes("FB_IAB"),isPC:!navigator.userAgent.includes("iPhone")&&!navigator.userAgent.includes("Android")};var H=class V{constructor(r){this.element=r,this.next=V.Undefined,this.prev=V.Undefined}};H.Undefined=new H(void 0);var d=H,tr=class{constructor(){this._first=d.Undefined,this._last=d.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===d.Undefined}clear(){let e=this._first;for(;e!==d.Undefined;){let r=e.next;e.prev=d.Undefined,e.next=d.Undefined,e=r}this._first=d.Undefined,this._last=d.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,r){let t=new d(e);if(this._first===d.Undefined)this._first=t,this._last=t;else if(r){let i=this._last;this._last=t,t.prev=i,i.next=t}else{let i=this._first;this._first=t,t.next=i,i.prev=t}this._size+=1;let n=!1;return()=>{n||(n=!0,this._remove(t))}}shift(){if(this._first!==d.Undefined){let e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==d.Undefined){let e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==d.Undefined&&e.next!==d.Undefined){let r=e.prev;r.next=e.next,e.next.prev=r}else e.prev===d.Undefined&&e.next===d.Undefined?(this._first=d.Undefined,this._last=d.Undefined):e.next===d.Undefined?(this._last=this._last.prev,this._last.next=d.Undefined):e.prev===d.Undefined&&(this._first=this._first.next,this._first.prev=d.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==d.Undefined;)yield e.element,e=e.next}},nr=0,I=class{constructor(e){this.value=e,this.id=nr++}},O=class{constructor(e){this.options=e,this._size=0}dispose(e){var r,t;this._disposed||(this._disposed=!0,this._listeners&&(e?(this._listeners instanceof I&&(this._listeners=[this._listeners]),this._listeners=this._listeners.filter(n=>(n==null?void 0:n.value)===e)):(this._listeners=void 0,this._size=0)),(t=(r=this.options)==null?void 0:r.onDidRemoveLastListener)==null||t.call(r))}get event(){var e;return(e=this._event)!=null||(this._event=(r,t)=>{var n,i,s,a,o,u;if(this._disposed)return()=>{console.info("[Jolibox SDK] Emitter is _disposed")};t&&(r=r.bind(t));let c=new I(r);this._listeners?this._listeners instanceof I?this._listeners=[this._listeners,c]:this._listeners.push(c):((i=(n=this.options)==null?void 0:n.onWillAddFirstListener)==null||i.call(n,this),this._listeners=c,(a=(s=this.options)==null?void 0:s.onDidFirstListener)==null||a.call(s,this)),(u=(o=this.options)==null?void 0:o.onDidAddListener)==null||u.call(o,this),this._size++}),this._event}_deliver(e,r){var t;if(!e)return;let n=((t=this.options)==null?void 0:t.onListenerError)||Error.constructor;if(!n){e.value(r);return}try{e.value(r)}catch(i){n(i)}}fire(e){this._listeners&&(this._listeners instanceof I?this._deliver(this._listeners,e):this._listeners.forEach(r=>this._deliver(r,e)))}hasListeners(){return this._size>0}},U=class{constructor(){this.listeners=new Map,this.listerHandlerMap=new WeakMap,this.cachedEventQueue=new Map}on(e,r){var t;let n=(t=this.listeners.get(e))!=null?t:new O,i=a=>r(...a.args);this.listerHandlerMap.set(r,i),n.event(i),this.listeners.set(e,n);let s=this.cachedEventQueue.get(e);if(s)for(;s.size>0;)n.fire(He({event:e},s.shift()))}off(e,r){let t=this.listeners.get(e);if(t){let n=this.listerHandlerMap.get(r);t.dispose(n)}}emit(e,...r){let t=this.listeners.get(e);if(t)t.fire({event:e,args:r});else{let n=this.cachedEventQueue.get(e);n||(n=new tr,this.cachedEventQueue.set(e,n)),n.push({args:r})}}},K={};Ve(K,{None:()=>ir,filter:()=>or,once:()=>be,toPromise:()=>sr});var ir=()=>{console.log("[Jolibox SDK] None Event")};function sr(e){return new Promise(r=>be(e)(r))}function be(e){return(r,t=null)=>{let n=!1;return e(i=>{if(!n)return n=!0,r.call(t,i)},null)}}function or(e,r){return(t=>{let n,i={onWillAddFirstListener(){n=t(s.fire,s)}},s=new O(i);return s.event})((t,n=null)=>e(i=>r(i)&&t.call(n,i),null))}var B=Symbol.for("Jolibox.hostEmitter"),ar=()=>{let e=new U;return globalThis[B]||(globalThis[B]={on:e.on.bind(e),off:e.off.bind(e),emit:e.emit.bind(e)}),globalThis[B]},br=ar();function cr(e,r){let t=Math.min(e.length,r.length);for(let n=0;n<t;n++)ur(e[n],r[n])}function ur(e,r){if(z(r)){if(typeof e!==r)throw new Error(`argument does not match constraint: typeof ${r}`)}else if(me(r)){try{if(e instanceof r)return}catch(t){}if(!ze(e)&&e.constructor===r||r.length===1&&r.call(void 0,e)===!0)return;throw new Error("[Jolibox SDK]argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true")}}var $=class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new O,this.onDidRegisterCommand=this._onDidRegisterCommand.event,console.log("[Jolibox SDK] command registry")}registerCommand(e){if(!e)throw new Error("invalid command");if(e.metadata&&Array.isArray(e.metadata.args)){let t=[];for(let i of e.metadata.args)t.push(i.constraint);let n=e.handler;e.handler=function(...i){return cr(i,t),n(...i)}}let{id:r}=e;this._commands.get(r)&&console.info(`[Jolibox SDK] duplicated command is registered ${r}`),this._commands.set(r,e),this._onDidRegisterCommand.fire(r)}getCommand(e){return this._commands.get(e)}getCommands(){let e=new Map;for(let r of this._commands.keys()){let t=this.getCommand(r);t&&e.set(r,t)}return e}};$=le([fe],$);var ue=class{constructor(){this._onWillExecuteCommand=new O,this.onWillExecuteCommand=this._onWillExecuteCommand.event,this._onDidExecuteCommand=new O,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this.registry=new $,this._starActivation=null}_activateStar(){return this._starActivation||(this._starActivation=$e(3e4)),this._starActivation}executeCommand(e,...r){return Ke(this,null,function*(){return this.registry.getCommand(e)?this._tryExecuteCommand(e,r):(yield Promise.all([Promise.race([this._activateStar(),K.toPromise(K.filter(this.registry.onDidRegisterCommand,t=>t===e))])]),this._tryExecuteCommand(e,r))})}executeCommandThowErr(e,...r){if(!this.registry.getCommand(e))throw new Error(`command '${e}' not found`);let t=this.registry.getCommand(e);this._onWillExecuteCommand.fire({commandId:e,args:r});let n=this.invokeFunction(t.handler,...r);return this._onDidExecuteCommand.fire({commandId:e,args:r}),n}_tryExecuteCommand(e,r){let t=this.registry.getCommand(e);if(!t)return Promise.reject(new Error(`command '${e}' not found`));try{this._onWillExecuteCommand.fire({commandId:e,args:r});let n=this.invokeFunction(t.handler,...r);return this._onDidExecuteCommand.fire({commandId:e,args:r}),Promise.resolve(n)}catch(n){return Promise.reject(n)}}invokeFunction(e,...r){let t=!1;try{return e(...r)}finally{t=!0}}};ue=le([fe],ue);var _r=Symbol.for("Jolibox.commands");function k(e,r){return`[${e}]:${r}`}var _e=()=>!!(navigator.userAgent||"").includes("JoliboxPlatformSDK");var y="custom_event_";var ye=[],Ee=[],Ne=["env","createRequestTask","login"],L="__batch_event__";var lr=e=>e==="pv"?e:"default",E=class{constructor(r){this.interval=30;this.lastReportTime=0;this.cache={};let{reporter:t,interval:n=30,eventName:i,tagNameOrder:s,metricName:a,type:o}=r;this.reporter=t,this.interval=n,this.eventName=i,this.tagNameOrder=s,this.metricName=a,this.type=lr(o)}report(r){this.type==="pv"?this.addPVPoint(r):this.addPoint(r),this.tryReport(!1)}flush(){this.tryReport(!0)}tryReport(r){if(Object.keys(this.cache).length){if(r){this.reporter(this.processPoints(this.cache)),this.clearPoints();return}this.lastReportTime=this.lastReportTime||Date.now(),Date.now()-this.lastReportTime>=this.interval*1e3&&(this.reporter(this.processPoints(this.cache)),this.clearPoints(),this.lastReportTime=Date.now())}}addPoint(r){let t=(n,i,s,a)=>{let o=i.shift();if(o){let u=a[o];n[u]||(n[u]={}),t(n[u],i,s,a)}else n[s]||(n[s]=[]),n[s].push(a[s])};t(this.cache,[...this.tagNameOrder],this.metricName,r)}addPVPoint(r){let t=(i,s,a,o)=>{let u=s.shift();if(!u&&_(o))throw new C(`report value failed to match tagNameOrder, ${JSON.stringify(n)}`);if(u){let c=[];if(_(o))c.push(...Object.keys(o));else if(z(o)){if(s.length>0)throw new C(`report value failed to match tagNameOrder, ${JSON.stringify(n)}`);c.push(o)}else throw new C(`expected metric value to be a string, but got a(n) ${typeof o}, ${JSON.stringify(n)}`);c.forEach(l=>{i[l]||(i[l]={});let m=_(o)?o[l]:o;t(i[l],[...s],a,m)})}else i[a]?i[a]++:i[a]=1},n={point:r,metricName:this.metricName,tagNameOrder:this.tagNameOrder};t(this.cache,[...this.tagNameOrder],this.metricName,r)}processPoints(r){return{eventName:this.eventName,tagNameOrder:this.tagNameOrder,metricName:this.metricName,metricAggregateType:this.type==="pv"?"itoa":"arr",data:r}}clearPoints(){this.cache={}}},Se=!1,W,Q,X;function Re(e,r){Se||(W=new E({eventName:"jolibox_invoke",tagNameOrder:["status","method","errNo","errMsg","isForeground"],metricName:"duration",reporter(i){e.invoke("trackAsync",JSON.stringify({event:"reportMetrics",data:i}),-1)}}),Q=new E({eventName:"jolibox_invoke_js2native",tagNameOrder:["status","method","isForeground"],metricName:"duration",reporter(i){e.invoke("trackAsync",JSON.stringify({event:"reportMetrics",data:i}),-1)}}),X=new E({eventName:"jolibox_invoke_native2js",tagNameOrder:["status","method","isForeground"],metricName:"duration",reporter(i){e.invoke("trackAsync",JSON.stringify({event:"reportMetrics",data:i}),-1)}}),r("onJoliboxEnterBackground",()=>{W.flush(),Q.flush(),X.flush()}),Se=!0);function t(i){var N,S;let{method:s,args:a,startTime:o,isForeground:u,errMsg:c=`${s}:fail no errMsg`,errNo:l=0,__timing:m={receiveJSInvoke:0,invokeCallback:0}}=i,{receiveJSInvoke:p,invokeCallback:v}=m,A=(S=(N=c.match(/\S:(\S+)\s?/))==null?void 0:N[1])!=null?S:"fail";W.report({status:A,method:n(s,a),errNo:`${l}`,errMsg:c,isForeground:u,duration:Date.now()-o}),o&&p&&v&&(Q.report({status:A,method:s,isForeground:u,duration:Number((p-o).toFixed(3))}),X.report({status:A,method:s,isForeground:u,duration:Number((Date.now()-v).toFixed(3))}))}function n(i,s){return(i==="callHostMethod"||i==="callHostMethodSync")&&s!=null&&s.method?`${i}-${s.method}`:i}return t}var Y=[],dr=!1;function we(e,r){let t=0,n=!0,i=new Map,s=Re(e,r);r("onJoliboxEnterBackground",()=>{n=!1}),r("onJoliboxEnterForeground",()=>{n=!0,Y.forEach(p=>R(this,[p],function*({method:c,args:l,resolve:m}){let v=yield o(c,l);m(v)})),Y.length=0});let a=(c,l)=>{let m=i.get(Number(c));if(!m)return;let p=x(l);m(p),i.delete(Number(c))},o=(c,l)=>{var Z,ee;let m=Date.now(),p=`${n}`;t+=1;let v=new de;if(i.set(t,v.resolve),!n&&Ee.includes(c))return new Promise(h=>{Y.push({method:c,args:l,resolve:h})});let N=ie(f({},{method:c,startTime:m,args:l,isForeground:p}),{invokeType:"js-bridge"}),S=!dr&&ye.includes(c),F=oe(l,S),j=S?F:JSON.stringify(F),g;if(c.endsWith("Sync")||Ne.includes(c)?g=(Z=e.call)==null?void 0:Z.call(e,c,F,t):typeof j=="string"?g=e.invoke(c,j,t):g=(ee=e.call)==null?void 0:ee.call(e,c,j,t),g){try{typeof g=="string"&&(g=JSON.parse(g)),g=x(g)}catch(h){D.error(h)}return i.delete(t),g.errorCode&&(g.errorCode=k(c,g.errorCode)),s(f(f({},N),g)),g}return c.endsWith("Sync")&&i.delete(t),v.promise.then(h=>(h.errorCode&&(h.errorCode=k(c,h.errorCode)),s(f(f({},N),h)),h))};return{invokeNative:o,applyNative:(c,l)=>{let m=o(c,l);return ge(m)?m.then(p=>xe(c,p)):xe(c,m)},invokeHandler:a}}function xe(e,r){if(!_(r)){D.warn(`[Jolibox SDK]${e} no response value`);return}let o=r,{errMsg:t,errNo:n,errorType:i,errorCode:s}=o,a=se(o,["errMsg","errNo","errorType","errorCode"]);if(t&&t!==`${e}:ok`)throw new he(t,n,i,s);return a}function Oe(e){let r=new U,t=new U,n=new E({eventName:"jolibox_publish",tagNameOrder:["type","event"],metricName:"duration",reporter(i){e.invoke("trackAsync",JSON.stringify({event:"reportMetrics",data:i}),-1)}});return r.on("onJoliboxEnterBackground",()=>{n.flush()}),{onNative:r.on.bind(r),offNative:r.off.bind(r),subscribe:t.on.bind(t),unsubscribe:t.off.bind(t),subscribeHandler(i,s,a){let o=x(s),u;if(o.__extra){u=o.params;let{type:c,startTime:l}=o.__extra;n.report({type:c,event:i,duration:Date.now()-l})}else u=o;if(i===L){u.forEach(l=>{let[m,p]=l;try{t.emit(m.slice(y.length),p,a)}catch(v){}});return}if(i.startsWith(y)){t.emit(i.slice(y.length),u,a);return}r.emit(i,u,a)}}}function ke(e){let r=new Map,t;return(i,s,a,o)=>{if(o){let c=a?[a]:"*";e.publish(`${y}${i}`,s,c);return}t||(t=Promise.resolve().then(()=>{r.forEach((c,l)=>{try{let m=l?[l]:"*";e.publish(L,c,m)}catch(m){}}),t=void 0,r.clear()}));let u=r.get(a);u||(u=[],r.set(a,u)),u.push([`${y}${i}`,s])}}function q(e){let{subscribeHandler:r,onNative:t,offNative:n,subscribe:i,unsubscribe:s}=Oe(e),{invokeNative:a,invokeHandler:o,applyNative:u}=we(e,t),c=ke(e);return{invokeHandler:o,subscribeHandler:r,applyNative:u,invokeNative:a,onNative:t,offNative:n,publish:c,subscribe:i,unsubscribe:s}}function J(e,r){return{params:e,__extra:{startTime:Date.now(),type:r}}}var T,b={trigger(){},exit(){return Promise.resolve(!1)},onReady(e){b.trigger=e},onDoExit(e){b.exit=e}},Te=e=>{let r=window.prompt("invoke",JSON.stringify({event:"envSync",paramsString:JSON.stringify({})}));if(!r)e.onError(new pe("native env failed"));else{let{data:t}=JSON.parse(r);return t!=null?t:void 0}};if(window.webkit){let e=window.webkit.messageHandlers,r=(i="")=>{b.trigger(),e.onDocumentReady.postMessage({path:i})},t=i=>R(void 0,null,function*(){let s=yield b.exit();e.doExit.postMessage({uuid:i,shouldInterrupt:s})});T={onDocumentReady:r,doExit:t,invoke(i,s,a){e.invoke.postMessage({event:i,paramsString:s,callbackId:a})},publish(i,s,a){let o=J(s,"joliboxJSCore");window.prompt("publish",JSON.stringify({event:i,paramsString:JSON.stringify(o),webviewIds:a}))},call(i,s,a){let o=window.prompt("invoke",JSON.stringify({event:i,paramsString:JSON.stringify(s),callbackId:a}));if(o)return JSON.parse(o)}};let n={onDocumentReady:r,env:Te,doExit:t};globalThis.joliboxJSCore=f({},n)}if(window.JoliAndroidSDKBridge){let e=window.JoliAndroidSDKBridge,r=(i="")=>{b.trigger(),e.onDocumentReady(JSON.stringify({path:i}))},t=i=>R(void 0,null,function*(){let s=yield b.exit();e.doExit(JSON.stringify({uuid:i,shouldInterrupt:s}))});T={onDocumentReady:r,invoke(i,s,a){e.invoke(JSON.stringify({event:i,paramsString:s,callbackId:a}))},doExit:t,publish(i,s,a){let o=J(s,"joliboxJSCore");e.publish({event:i,paramsString:JSON.stringify(o),webviewIds:a})},call(i,s,a){let o=window.prompt("invoke",JSON.stringify({event:i,paramsString:JSON.stringify(s),callbackId:a}));if(o)return JSON.parse(o)}};let n={onDocumentReady:r,env:Te,doExit:t};globalThis.joliboxJSCore=f({},n)}var Me=T;if(!Me&&_e())throw new ve("No joliboxJScore is found, native bridge not found.");var mr=f({},Me),Ie=q(mr),{invokeHandler:Ae}=Ie,{applyNative:St,invokeNative:Rt,onNative:gr,offNative:xt,subscribeHandler:fr,publish:wt,subscribe:Ot,unsubscribe:kt}=Ie,Tt=(e,r)=>{gr(e,(...t)=>{var n;(n=t[0])!=null&&n.errorCode&&(t[0].errorCode=k(e,t[0].errorCode)),r(...t)})};globalThis.joliboxJSBridge={callHandler:Ae,invokeHandler:Ae,subscribeHandler:fr};export{b as RuntimeLoader,St as applyNative,Rt as invokeNative,xt as offNative,gr as onNative,Tt as onNativeWithError,wt as publish,Ot as subscribe,fr as subscribeHandler,kt as unsubscribe};
|
package/dist/utils/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jolibox/native-bridge",
|
|
3
3
|
"description": "This project is Jolibox JS-SDk bridge for Native",
|
|
4
|
-
"version": "1.1.
|
|
4
|
+
"version": "1.1.14-beta.1",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
7
7
|
"license": "MIT",
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
],
|
|
12
12
|
"types": "./dist/index.d.ts",
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@jolibox/common": "1.1.
|
|
15
|
-
"@jolibox/types": "1.1.
|
|
14
|
+
"@jolibox/common": "1.1.14-beta.1",
|
|
15
|
+
"@jolibox/types": "1.1.14-beta.1"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
18
|
"typescript": "5.7.3",
|