@jolibox/implement 1.1.11-beta.1 → 1.1.11-beta.3
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/.rush/temp/package-deps_build.json +8 -8
- package/dist/common/ads/anti-cheating.d.ts +11 -1
- package/dist/common/ads/index.d.ts +4 -9
- package/dist/index.js +2 -2
- package/dist/index.native.js +4 -4
- package/implement.build.log +2 -2
- package/package.json +3 -3
- package/src/common/ads/anti-cheating.ts +24 -1
- package/src/common/ads/index.ts +15 -16
- package/src/native/api/ads.ts +7 -0
- package/src/native/api/navigate.ts +42 -4
- package/src/native/bootstrap/index.ts +5 -5
- package/src/native/bootstrap/retention.ts +8 -4
- package/src/native/types/native-method-map.d.ts +17 -0
package/dist/index.native.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var Ts=Object.create;var Ce=Object.defineProperty,ks=Object.defineProperties,Es=Object.getOwnPropertyDescriptor,Ss=Object.getOwnPropertyDescriptors,ws=Object.getOwnPropertyNames,Pe=Object.getOwnPropertySymbols,Is=Object.getPrototypeOf,wt=Object.prototype.hasOwnProperty,pr=Object.prototype.propertyIsEnumerable;var mr=(e,t,r)=>t in e?Ce(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,h=(e,t)=>{for(var r in t||(t={}))wt.call(t,r)&&mr(e,r,t[r]);if(Pe)for(var r of Pe(t))pr.call(t,r)&&mr(e,r,t[r]);return e},C=(e,t)=>ks(e,Ss(t));var ce=(e,t)=>{var r={};for(var n in e)wt.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&Pe)for(var n of Pe(e))t.indexOf(n)<0&&pr.call(e,n)&&(r[n]=e[n]);return r};var f=(e,t)=>()=>(e&&(t=e(e=0)),t);var fr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),hr=(e,t)=>{for(var r in t)Ce(e,r,{get:t[r],enumerable:!0})},_s=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of ws(t))!wt.call(e,s)&&s!==r&&Ce(e,s,{get:()=>t[s],enumerable:!(n=Es(t,s))||n.enumerable});return e};var gr=(e,t,r)=>(r=e!=null?Ts(Is(e)):{},_s(t||!e||!e.__esModule?Ce(r,"default",{value:e,enumerable:!0}):r,e));var g=(e,t,r)=>new Promise((n,s)=>{var o=c=>{try{a(r.next(c))}catch(l){s(l)}},i=c=>{try{a(r.throw(c))}catch(l){s(l)}},a=c=>c.done?n(c.value):Promise.resolve(c.value).then(o,i);a((r=r.apply(e,t)).next())});function As(e){return!!(e!=null&&e.__nativeBuffers__)}function Ee(e){if(typeof e=="string")try{e=JSON.parse(e)}catch(r){return{}}if(typeof e!="object"||e===null)return{};if(!As(e))return e;let t=e.__nativeBuffers__;if(delete e.__nativeBuffers__,t)for(let r=0;r<t.length;r++){let n=t[r];if(n){let s;n.value?s=n.value:n.base64&&(s=Rs(n.base64)),typeof s!="undefined"&&s instanceof ArrayBuffer&&(e[n.key]=s)}}return e}function yr(e={},t=!1){let r=e,n=[];for(let[s,o]of Object.entries(r))if(o!==void 0&&o instanceof ArrayBuffer&&o.byteLength!==void 0){let i=t?{value:o,key:s}:{base64:xs(o),key:s};n.push(i),delete r[s]}return n.length>0&&(r.__nativeBuffers__=n),r}var Rs,xs,It=f(()=>{"use strict";Rs=e=>{let t=atob(e),r=t.length,n=new Uint8Array(r);for(let s=0;s<r;s++)n[s]=t.charCodeAt(s);return n.buffer};xs=e=>{let t="",r=new Uint8Array(e),n=r.byteLength;for(let s=0;s<n;s++)t+=String.fromCharCode(r[s]);return btoa(t)}});function Ns(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}function le(e){return typeof e=="string"}function B(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function kr(e){return typeof e=="object"&&Array.isArray(e)}function Ie(e){return e===!0||e===!1}function Os(e){return typeof e>"u"}function Fs(e){return Os(e)||e===null}function Er(e){return typeof e=="function"}function Sr(e){return B(e)&&Er(e.then)}function wr(e){let t=e,r=null,n=function(...s){return r||(r=new t(...s)),r};return n.prototype=t.prototype,n}function Ir(e,t,r){if(typeof r!="function")throw new Error("[Jolibox SDK]Customizer must be a function");function n(s,o){for(let i in o)if(Object.prototype.hasOwnProperty.call(o,i)){let a=s[i],c=o[i],l=r(a,c,i,s,o);l!==void 0?s[i]=l:vr(c)&&vr(a)?s[i]=n(h({},a),c):Array.isArray(c)&&Array.isArray(a)?s[i]=[...a,...c]:s[i]=c}return s}return n(e,t)}function vr(e){return e&&typeof e=="object"&&e.constructor===Object}function _r(e,t){if(Array.isArray(e))return e.concat(t)}function _e(e,t,r={}){let n=null,s,o,i,{leading:a=!1,trailing:c=!0}=r,l=()=>(i=e.apply(o,s),s=void 0,o=void 0,i),u=function(...m){s=m,o=this;let p=a&&!n;if(n&&clearTimeout(n),n=setTimeout(()=>{n=null,c&&!p&&l()},t),p)return l()};return u.cancel=()=>{n&&clearTimeout(n),n=null,s=o=void 0},u.flush=()=>{if(n)return clearTimeout(n),n=null,l()},u}function Us(e,t){return(...r)=>t(e,...r)}function Ue(e){return t=>Us(t,function(r,...n){if(typeof r=="function")try{return r.apply(this,n)}catch(s){e(new Ct(`${s}`))}})}function Se(e){return(...t)=>{var r,n;((n=(r=globalThis.VConsole)==null?void 0:r[e])!=null?n:globalThis.console[e])(...t)}}function Qs(e){return new Promise(t=>Mr(e)(t))}function Mr(e){return(t,r=null)=>{let n=!1;return e(s=>{if(!n)return n=!0,t.call(r,s)},null)}}function Ys(e,t){return(r=>{let n,s={onWillAddFirstListener(){n=r(o.fire,o)}},o=new we(s);return o.event})((r,n=null)=>e(s=>t(s)&&r.call(n,s),null))}function Zs(e,t){let r=Math.min(e.length,t.length);for(let n=0;n<r;n++)eo(e[n],t[n])}function eo(e,t){if(le(t)){if(typeof e!==t)throw new Error(`argument does not match constraint: typeof ${t}`)}else if(Er(t)){try{if(e instanceof t)return}catch(r){}if(!Fs(e)&&e.constructor===t||t.length===1&&t.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")}}function N(){if(globalThis[At])return globalThis[At];let e=new Fe,t=new xt,r={registerCommand(n,s,o){e.registerCommand({id:n,handler:s,metadata:o})},executeCommand(n,...s){return t.executeCommand(n,...s)},excuteCommandSync(n,...s){return t.executeCommandThowErr(n,...s)}};return globalThis[At]=r,r}var br,Ps,Cs,Tr,se,Ds,Pt,de,Ar,Rr,Ct,xr,Pr,Cr,Nr,Or,Ae,De,Nt,J,Fr,Ms,Ot,Ls,Ft,Bs,js,Ne,Js,$s,Hs,Dr,Dt,Vs,Ks,qs,Ur,Z,x,Gs,zs,Oe,we,q,Rt,Ws,_t,Xs,ee,Fe,xt,At,E=f(()=>{"use strict";br=Object.defineProperty,Ps=Object.getOwnPropertyDescriptor,Cs=(e,t)=>{for(var r in t)br(e,r,{get:t[r],enumerable:!0})},Tr=(e,t,r,n)=>{for(var s=n>1?void 0:n?Ps(t,r):t,o=e.length-1,i;o>=0;o--)(i=e[o])&&(s=(n?i(t,r,s):i(s))||s);return n&&s&&br(t,r,s),s};se=class{constructor(){this.state="pending",this.promise=new Promise((e,t)=>{this.resolve=r=>{this.state==="pending"&&(this.state="fulfilled",e(r))},this.reject=r=>{this.state==="pending"&&(this.state="rejected",t(r))}})}};Ds=(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))(Ds||{}),Pt=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}},de=class extends Pt{constructor(){super(...arguments),this.kind="INTERNAL_ERROR"}},Ar=class extends Pt{constructor(){super(...arguments),this.kind="USER_ERROR"}},Rr=class extends Ar{constructor(){super(...arguments),this.name="USER_VALIDATE_ERROR"}},Ct=class extends Ar{constructor(e,t,r){super(e),this.message=e,this.errNo=t,this.name="USER_CUSTOM_ERROR",this.errMsg=e,r&&(this.extra=Object.assign({},this.extra,r))}},xr=class extends de{constructor(){super(...arguments),this.name="INTERNAL_SCHEMA_PARSE_ERROR",this.priority="P0"}},Pr=class extends de{constructor(){super(...arguments),this.name="INTERNAL_INVOKE_NATIVE_ERROR"}},Cr=class extends de{constructor(e,t,r,n){super(e),this.errNo=t,this.name="INTERNAL_APPLY_NATIVE_ERROR",this.errorType=r,this.errorCode=n}},Nr=class extends de{constructor(){super(...arguments),this.name="INTERNAL_JSCORE_ERROR",this.priority="P0"}},Or=class extends de{constructor(){super(...arguments),this.name="INTERNAL_GLOBAL_JS_ERROR",this.priority="P1"}},Ae=class extends Pt{constructor(e,t,r,n,s){super(e),this.message=e,this.code=t,this.kind="API_ERROR",this.name="API_ERROR",r&&(this.errorType=r),n!==void 0&&(this.stack=n),s&&(this.priority=s)}toJSON(){return{message:this.message,stack:this.stack,name:this.name,code:this.code,errorType:this.errorType}}},De=class extends de{constructor(){super(...arguments),this.name="INTERNAL_METRIC_REPORT_ERROR"}},Nt=class extends de{constructor(){super(...arguments),this.name="INTERNAL_REPORTER_ERROR"}};J={log:Se("log"),warn:Se("warn"),info:Se("info"),error:Se("error"),debug:Se("debug")};Object.assign(globalThis,{logger:J});Fr=Symbol.for("Jolibox.canIUseMap"),Ms={};globalThis[Fr]=Ms;Ot={get config(){return globalThis[Fr]}},Ls=(e=>(e[e.System=1e3]="System",e[e.ErrorTrace=1001]="ErrorTrace",e[e.UserDefined=1002]="UserDefined",e))(Ls||{}),Ft=(e=>(e.MiniGame="mini-game",e.MiniDrama="mini-drama",e.App="app",e.WebSDK="web-sdk",e.AppSDK="app-sdk",e))(Ft||{}),Bs=(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))(Bs||{}),js=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)}),Ne={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")},Js=()=>Ne.isiOS?"iOS":Ne.isAndroid?"Android":Ne.isMac?"Mac":Ne.isFacebook?"Facebook":"PC",$s="device_id",Hs="advertising_id",Dr=e=>(localStorage.getItem(e)||localStorage.setItem(e,js()),localStorage.getItem(e)),Dt=()=>Dr($s),Vs=()=>Dr(Hs),Ks=e=>e.charAt(0).toUpperCase()+e.slice(1),qs=()=>{var t;let e=new URLSearchParams(window.location.search);return Ks((t=e.get("utm_source"))!=null?t:"")||"JoliboxSDK"},Ur=e=>{let t="JoliboxWebSDK",r=Js(),n=navigator.language,s=Dt(),o=Vs();return`${t} (${qs()}${r}; UnknownModel; UnknownSystemVersion; ${n}) uuid/${s} adid/${o} version/${e||""}`},x=(Z=class{constructor(t){this.element=t,this.next=Z.Undefined,this.prev=Z.Undefined}},Z.Undefined=new Z(void 0),Z),Gs=class{constructor(){this._first=x.Undefined,this._last=x.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===x.Undefined}clear(){let e=this._first;for(;e!==x.Undefined;){let t=e.next;e.prev=x.Undefined,e.next=x.Undefined,e=t}this._first=x.Undefined,this._last=x.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){let r=new x(e);if(this._first===x.Undefined)this._first=r,this._last=r;else if(t){let s=this._last;this._last=r,r.prev=s,s.next=r}else{let s=this._first;this._first=r,r.next=s,s.prev=r}this._size+=1;let n=!1;return()=>{n||(n=!0,this._remove(r))}}shift(){if(this._first!==x.Undefined){let e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==x.Undefined){let e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==x.Undefined&&e.next!==x.Undefined){let t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===x.Undefined&&e.next===x.Undefined?(this._first=x.Undefined,this._last=x.Undefined):e.next===x.Undefined?(this._last=this._last.prev,this._last.next=x.Undefined):e.prev===x.Undefined&&(this._first=this._first.next,this._first.prev=x.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==x.Undefined;)yield e.element,e=e.next}},zs=0,Oe=class{constructor(e){this.value=e,this.id=zs++}},we=class{constructor(e){this.options=e,this._size=0}dispose(e){var t,r;this._disposed||(this._disposed=!0,this._listeners&&(e?(this._listeners instanceof Oe&&(this._listeners=[this._listeners]),this._listeners=this._listeners.filter(n=>(n==null?void 0:n.value)===e)):(this._listeners=void 0,this._size=0)),(r=(t=this.options)==null?void 0:t.onDidRemoveLastListener)==null||r.call(t))}get event(){var e;return(e=this._event)!=null||(this._event=(t,r)=>{var s,o,i,a,c,l;if(this._disposed)return()=>{console.info("[Jolibox SDK] Emitter is _disposed")};r&&(t=t.bind(r));let n=new Oe(t);this._listeners?this._listeners instanceof Oe?this._listeners=[this._listeners,n]:this._listeners.push(n):((o=(s=this.options)==null?void 0:s.onWillAddFirstListener)==null||o.call(s,this),this._listeners=n,(a=(i=this.options)==null?void 0:i.onDidFirstListener)==null||a.call(i,this)),(l=(c=this.options)==null?void 0:c.onDidAddListener)==null||l.call(c,this),this._size++}),this._event}_deliver(e,t){var n;if(!e)return;let r=((n=this.options)==null?void 0:n.onListenerError)||Error.constructor;if(!r){e.value(t);return}try{e.value(t)}catch(s){r(s)}}fire(e){this._listeners&&(this._listeners instanceof Oe?this._deliver(this._listeners,e):this._listeners.forEach(t=>this._deliver(t,e)))}hasListeners(){return this._size>0}},q=class{constructor(){this.listeners=new Map,this.listerHandlerMap=new WeakMap,this.cachedEventQueue=new Map}on(e,t){var o;let r=(o=this.listeners.get(e))!=null?o:new we,n=i=>t(...i.args);this.listerHandlerMap.set(t,n),r.event(n),this.listeners.set(e,r);let s=this.cachedEventQueue.get(e);if(s)for(;s.size>0;)r.fire(h({event:e},s.shift()))}off(e,t){let r=this.listeners.get(e);if(r){let n=this.listerHandlerMap.get(t);r.dispose(n)}}emit(e,...t){let r=this.listeners.get(e);if(r)r.fire({event:e,args:t});else{let n=this.cachedEventQueue.get(e);n||(n=new Gs,this.cachedEventQueue.set(e,n)),n.push({args:t})}}},Rt={};Cs(Rt,{None:()=>Ws,filter:()=>Ys,once:()=>Mr,toPromise:()=>Qs});Ws=()=>{console.log("[Jolibox SDK] None Event")};_t=Symbol.for("Jolibox.hostEmitter"),Xs=()=>{let e=new q;return globalThis[_t]||(globalThis[_t]={on:e.on.bind(e),off:e.off.bind(e),emit:e.emit.bind(e)}),globalThis[_t]},ee=Xs();Fe=class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new we,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 r=[];for(let s of e.metadata.args)r.push(s.constraint);let n=e.handler;e.handler=function(...s){return Zs(s,r),n(...s)}}let{id:t}=e;this._commands.get(t)&&console.info(`[Jolibox SDK] duplicated command is registered ${t}`),this._commands.set(t,e),this._onDidRegisterCommand.fire(t)}getCommand(e){return this._commands.get(e)}getCommands(){let e=new Map;for(let t of this._commands.keys()){let r=this.getCommand(t);r&&e.set(t,r)}return e}};Fe=Tr([wr],Fe);xt=class{constructor(){this._onWillExecuteCommand=new we,this.onWillExecuteCommand=this._onWillExecuteCommand.event,this._onDidExecuteCommand=new we,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this.registry=new Fe,this._starActivation=null}_activateStar(){return this._starActivation||(this._starActivation=Ns(3e4)),this._starActivation}executeCommand(e,...t){return g(this,null,function*(){return this.registry.getCommand(e)?this._tryExecuteCommand(e,t):(yield Promise.all([Promise.race([this._activateStar(),Rt.toPromise(Rt.filter(this.registry.onDidRegisterCommand,r=>r===e))])]),this._tryExecuteCommand(e,t))})}executeCommandThowErr(e,...t){if(!this.registry.getCommand(e))throw new Error(`command '${e}' not found`);let r=this.registry.getCommand(e);this._onWillExecuteCommand.fire({commandId:e,args:t});let n=this.invokeFunction(r.handler,...t);return this._onDidExecuteCommand.fire({commandId:e,args:t}),n}_tryExecuteCommand(e,t){let r=this.registry.getCommand(e);if(!r)return Promise.reject(new Error(`command '${e}' not found`));try{this._onWillExecuteCommand.fire({commandId:e,args:t});let n=this.invokeFunction(r.handler,...t);return this._onDidExecuteCommand.fire({commandId:e,args:t}),Promise.resolve(n)}catch(n){return Promise.reject(n)}}invokeFunction(e,...t){let r=!1;try{return e(...t)}finally{r=!0}}};xt=Tr([wr],xt);At=Symbol.for("Jolibox.commands")});function M(e,t={}){Ut.emit("ERROR_REPORT",{error:e,options:t})}var Ut,ue,G=f(()=>{"use strict";E();E();Ut=new q,ue=new q;M.debounce=_e(M,50,{leading:!0})});function Me(e,t){return`[${e}]:${t}`}var me,Mt,oe=f(()=>{"use strict";G();E();G();me=(e,t)=>{var r,n;return new Ae((n=(r=t==null?void 0:t.errMsg)!=null?r:e.msg)!=null?n:"",e.code,e.type)},Mt=e=>new Rr(e)});var pe,Lr,Br,jr,Le,Be=f(()=>{"use strict";pe="custom_event_",Lr=[],Br=[],jr=["env","createRequestTask","login"],Le="__batch_event__"});function $r(e,t){Jr||(Lt=new fe({eventName:"jolibox_invoke",tagNameOrder:["status","method","errNo","errMsg","isForeground"],metricName:"duration",reporter(s){e.invoke("track",JSON.stringify({event:"reportMetrics",data:s}),-1)}}),Bt=new fe({eventName:"jolibox_invoke_js2native",tagNameOrder:["status","method","isForeground"],metricName:"duration",reporter(s){e.invoke("track",JSON.stringify({event:"reportMetrics",data:s}),-1)}}),jt=new fe({eventName:"jolibox_invoke_native2js",tagNameOrder:["status","method","isForeground"],metricName:"duration",reporter(s){e.invoke("track",JSON.stringify({event:"reportMetrics",data:s}),-1)}}),t("onJoliboxEnterBackground",()=>{Lt.flush(),Bt.flush(),jt.flush()}),Jr=!0);function r(s){var T,y;let{method:o,args:i,startTime:a,isForeground:c,errMsg:l=`${o}:fail no errMsg`,errNo:u=0,__timing:m={receiveJSInvoke:0,invokeCallback:0}}=s,{receiveJSInvoke:p,invokeCallback:b}=m,_=(y=(T=l.match(/\S:(\S+)\s?/))==null?void 0:T[1])!=null?y:"fail";Lt.report({status:_,method:n(o,i),errNo:`${u}`,errMsg:l,isForeground:c,duration:Date.now()-a}),a&&p&&b&&(Bt.report({status:_,method:o,isForeground:c,duration:Number((p-a).toFixed(3))}),jt.report({status:_,method:o,isForeground:c,duration:Number((Date.now()-b).toFixed(3))}))}function n(s,o){return(s==="callHostMethod"||s==="callHostMethodSync")&&o!=null&&o.method?`${s}-${o.method}`:s}return r}var to,fe,Jr,Lt,Bt,jt,Jt=f(()=>{"use strict";E();to=e=>e==="pv"?e:"default",fe=class{constructor(t){this.interval=30;this.lastReportTime=0;this.cache={};let{reporter:r,interval:n=30,eventName:s,tagNameOrder:o,metricName:i,type:a}=t;this.reporter=r,this.interval=n,this.eventName=s,this.tagNameOrder=o,this.metricName=i,this.type=to(a)}report(t){this.type==="pv"?this.addPVPoint(t):this.addPoint(t),this.tryReport(!1)}flush(){this.tryReport(!0)}tryReport(t){if(Object.keys(this.cache).length){if(t){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(t){let r=(n,s,o,i)=>{let a=s.shift();if(a){let c=i[a];n[c]||(n[c]={}),r(n[c],s,o,i)}else n[o]||(n[o]=[]),n[o].push(i[o])};r(this.cache,[...this.tagNameOrder],this.metricName,t)}addPVPoint(t){let r=(s,o,i,a)=>{let c=o.shift();if(!c&&B(a))throw new De(`report value failed to match tagNameOrder, ${JSON.stringify(n)}`);if(c){let l=[];if(B(a))l.push(...Object.keys(a));else if(le(a)){if(o.length>0)throw new De(`report value failed to match tagNameOrder, ${JSON.stringify(n)}`);l.push(a)}else throw new De(`expected metric value to be a string, but got a(n) ${typeof a}, ${JSON.stringify(n)}`);l.forEach(u=>{s[u]||(s[u]={});let m=B(a)?a[u]:a;r(s[u],[...o],i,m)})}else s[i]?s[i]++:s[i]=1},n={point:t,metricName:this.metricName,tagNameOrder:this.tagNameOrder};r(this.cache,[...this.tagNameOrder],this.metricName,t)}processPoints(t){return{eventName:this.eventName,tagNameOrder:this.tagNameOrder,metricName:this.metricName,metricAggregateType:this.type==="pv"?"itoa":"arr",data:t}}clearPoints(){this.cache={}}},Jr=!1});function Vr(e,t){let r=0,n=!0,s=new Map,o=$r(e,t);t("onJoliboxEnterBackground",()=>{n=!1}),t("onJoliboxEnterForeground",()=>{n=!0,$t.forEach(p=>g(this,[p],function*({method:l,args:u,resolve:m}){let b=yield a(l,u);m(b)})),$t.length=0});let i=(l,u)=>{let m=s.get(Number(l));if(!m)return;let p=Ee(u);m(p),s.delete(Number(l))},a=(l,u)=>{var U,I;let m=Date.now(),p=`${n}`;r+=1;let b=new se;if(s.set(r,b.resolve),!n&&Br.includes(l))return new Promise(A=>{$t.push({method:l,args:u,resolve:A})});let T=C(h({},{method:l,startTime:m,args:u,isForeground:p}),{invokeType:"js-bridge"}),y=!ro&&Lr.includes(l),S=yr(u,y),R=y?S:JSON.stringify(S),w;if(l.endsWith("Sync")||jr.includes(l)?w=(U=e.call)==null?void 0:U.call(e,l,S,r):typeof R=="string"?w=e.invoke(l,R,r):w=(I=e.call)==null?void 0:I.call(e,l,R,r),w){try{typeof w=="string"&&(w=JSON.parse(w)),w=Ee(w)}catch(A){J.error(A)}return s.delete(r),w.errorCode&&(w.errorCode=Me(l,w.errorCode)),o(h(h({},T),w)),w}return l.endsWith("Sync")&&s.delete(r),b.promise.then(A=>(A.errorCode&&(A.errorCode=Me(l,A.errorCode)),o(h(h({},T),A)),A))};return{invokeNative:a,applyNative:(l,u)=>{let m=a(l,u);return Sr(m)?m.then(p=>Hr(l,p)):Hr(l,m)},invokeHandler:i}}function Hr(e,t){if(!B(t)){J.warn(`[Jolibox SDK]${e} no response value`);return}let a=t,{errMsg:r,errNo:n,errorType:s,errorCode:o}=a,i=ce(a,["errMsg","errNo","errorType","errorCode"]);if(r&&r!==`${e}:ok`)throw new Cr(r,n,s,o);return i}var $t,ro,Kr=f(()=>{"use strict";It();E();oe();Be();Jt();$t=[],ro=!1});function qr(e){let t=new q,r=new q,n=new fe({eventName:"jolibox_publish",tagNameOrder:["type","event"],metricName:"duration",reporter(s){e.invoke("track",JSON.stringify({event:"reportMetrics",data:s}),-1)}});return t.on("onJoliboxEnterBackground",()=>{n.flush()}),{onNative:t.on.bind(t),offNative:t.off.bind(t),subscribe:r.on.bind(r),unsubscribe:r.off.bind(r),subscribeHandler(s,o,i){let a=Ee(o),c;if(a.__extra){c=a.params;let{type:l,startTime:u}=a.__extra;n.report({type:l,event:s,duration:Date.now()-u})}else c=a;if(s===Le){c.forEach(u=>{let[m,p]=u;try{r.emit(m.slice(pe.length),p,i)}catch(b){}});return}if(s.startsWith(pe)){r.emit(s.slice(pe.length),c,i);return}t.emit(s,c,i)}}}var Gr=f(()=>{"use strict";E();It();Jt();Be()});function zr(e){let t=new Map,r;return(s,o,i,a)=>{if(a){let l=i?[i]:"*";e.publish(`${pe}${s}`,o,l);return}r||(r=Promise.resolve().then(()=>{t.forEach((l,u)=>{try{let m=u?[u]:"*";e.publish(Le,l,m)}catch(m){}}),r=void 0,t.clear()}));let c=t.get(i);c||(c=[],t.set(i,c)),c.push([`${pe}${s}`,o])}}var Wr=f(()=>{"use strict";Be()});function Ht(e){let{subscribeHandler:t,onNative:r,offNative:n,subscribe:s,unsubscribe:o}=qr(e),{invokeNative:i,invokeHandler:a,applyNative:c}=Vr(e,r),l=zr(e);return{invokeHandler:a,subscribeHandler:t,applyNative:c,invokeNative:i,onNative:r,offNative:n,publish:l,subscribe:s,unsubscribe:o}}var Qr=f(()=>{"use strict";Kr();Gr();Wr()});var Yr=f(()=>{"use strict"});var Xr=f(()=>{"use strict";Qr();Yr()});function ge(e,t){return{params:e,__extra:{startTime:Date.now(),type:t}}}var je=f(()=>{"use strict"});var ie,z,Zr,en=f(()=>{"use strict";E();je();G();z={trigger(){},exit(){return Promise.resolve(!1)},onReady(e){z.trigger=e},doExit(e){z.exit=e}},Zr=()=>{let e=window.prompt("invoke",JSON.stringify({event:"envSync",paramsString:JSON.stringify({})}));if(!e)M(new Pr("native env failed"));else{let{data:t}=JSON.parse(e);return t!=null?t:void 0}};if(window.webkit){let e=window.webkit.messageHandlers,t=(s="")=>{z.trigger(),e.onDocumentReady.postMessage({path:s})};ie={onDocumentReady:t,doExit:s=>g(void 0,null,function*(){let o=yield z.exit();e.doExit.postMessage({uuid:s,shouldInterrupt:o})}),invoke(s,o,i){e.invoke.postMessage({event:s,paramsString:o,callbackId:i})},publish(s,o,i){let a=ge(o,"joliboxJSCore");window.prompt("publish",JSON.stringify({event:s,paramsString:JSON.stringify(a),webviewIds:i}))},call(s,o,i){let a=window.prompt("invoke",JSON.stringify({event:s,paramsString:JSON.stringify(o),callbackId:i}));if(a)return JSON.parse(a)}};let n={onDocumentReady:t,env:Zr};globalThis.joliboxJSCore=h({},n)}if(window.JoliAndroidSDKBridge){let e=window.JoliAndroidSDKBridge,t=(s="")=>{z.trigger(),e.onDocumentReady(JSON.stringify({path:s}))};ie={onDocumentReady:t,invoke(s,o,i){e.invoke(JSON.stringify({event:s,paramsString:o,callbackId:i}))},doExit:s=>g(void 0,null,function*(){let o=yield z.exit();e.doExit(JSON.stringify({uuid:s,shouldInterrupt:o}))}),publish(s,o,i){let a=ge(o,"joliboxJSCore");e.publish({event:s,paramsString:JSON.stringify(a),webviewIds:i})},call(s,o,i){let a=window.prompt("invoke",JSON.stringify({event:s,paramsString:JSON.stringify(o),callbackId:i}));if(a)return JSON.parse(a)}};let n={onDocumentReady:t,env:Zr};globalThis.joliboxJSCore=h({},n)}});function Vt(){globalThis.onmessage=function(e){e.data==="msg:setup"&&([ye]=e.ports,ye.onmessage=function(t){let r=JSON.parse(t.data);r[0]==="publish"?globalThis.ttJSBridge.subscribeHandler(r[1],r[2]):r[0]==="invoke"&&globalThis.ttJSBridge.invokeHandler(r[1],r[2])},ye.publish=function(t,r){let n=ge(r,"messagePort");ye.postMessage(JSON.stringify(["publish",t,JSON.stringify(n)]))},ye.postMessage("msg:setup:ok"))}}var ye,tn=f(()=>{"use strict";je()});var Je=f(()=>{"use strict";en();tn();je()});var nn,no,sn,rn,$,P,Q,Fa,so,on,Da,Ua,H=f(()=>{"use strict";Xr();Je();oe();E();Je();nn=ie;if(!nn)throw new Nr("No joliboxJScore is found, native bridge not found.");Vt();no=h({},nn),sn=Ht(no),{invokeHandler:rn}=sn,{applyNative:$,invokeNative:P,onNative:Q,offNative:Fa,subscribeHandler:so,publish:on,subscribe:Da,unsubscribe:Ua}=sn;globalThis.joliboxJSBridge={callHandler:rn,invokeHandler:rn,subscribeHandler:so}});var Kt,qt,an,cn,ln=f(()=>{"use strict";E();G();Kt=e=>{let t=e.replace(/-/g,"+").replace(/_/g,"/"),r=t.length%4===0?"":"=".repeat(4-t.length%4),n=atob(t+r);try{return JSON.parse(n)}catch(s){return{}}},qt=e=>{let t=JSON.stringify(e);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")},an=e=>{var t;try{let s=(t=new URL(e).searchParams.get("joliSource"))==null?void 0:t.split(".");if(s!=null&&s.length){let[o,i,a]=s;return{headerJson:Kt(o),payloadJson:Kt(i),signature:Kt(a)}}else throw"joli_source is missing"}catch(r){return M(new xr(`${e} not a valid schema: ${r}`)),{headerJson:{},payloadJson:{},signature:{}}}},cn=e=>{let{headerJson:t,payloadJson:r,signature:n}=e,s=qt(t),o=qt(r),i=qt(n);return`${s}.${o}.${i}`}});var oo,$e,dn,Gt=f(()=>{"use strict";E();oo="1.1.11-beta.1",$e=()=>oo,dn=()=>{let e=$e();return`${Ur(e)}`}});var io,un,zt,mn,L,ao,v,K=f(()=>{"use strict";E();ln();Gt();E();io={deviceInfo:{brand:"UnknownBrand",model:"UnknownModel",did:Dt(),pixelRatio:window.devicePixelRatio||1,platform:"h5",system:"UnknownSystemVersion",lang:"zh"},sdkInfo:{nativeSDKVersion:"",jssdkVersion:$e()},schema:window.location.href,platform:"h5"},zt=(un=globalThis.joliboxJSCore)==null?void 0:un.env,L=Object.assign({},(mn=zt==null?void 0:zt())!=null?mn:io),ao=()=>{var p,b,_,T,y,S,R,w,U;let{payloadJson:e,headerJson:t,signature:r}=L.schema.length?an(L.schema):{},n=`${L.deviceInfo.did}-${new Date().getTime()}`,o=new URL(L.schema.length?L.schema:window.location.href).searchParams,i=(_=(b=(p=o.get("mpId"))!=null?p:o.get("appId"))!=null?b:o.get("gameId"))!=null?_:"",a=(S=(y=(T=L.clientSessionId)!=null?T:e==null?void 0:e.sessionId)!=null?y:o.get("sessionId"))!=null?S:n,c=!!((R=e==null?void 0:e.testAdsMode)!=null?R:o.get("testAdsMode")==="true"),l=(U=(w=e==null?void 0:e.joliboxEnv)!=null?w:o.get("joliboxEnv"))!=null?U:"production",u=l==="staging",m=t==null?void 0:t.channel;return{get testMode(){return u},get testAdsMode(){return c},get joliboxEnv(){return l},get joliSource(){var I;return(I=o.get("joliSource"))!=null?I:null},get mpId(){var I;return(I=i!=null?i:e==null?void 0:e.id)!=null?I:""},get mpVersion(){var I;return(I=t==null?void 0:t.ver)!=null?I:$e()},get mpType(){var I,A;return(A=(I=t==null?void 0:t.__mpType)!=null?I:e==null?void 0:e.__mpType)!=null?A:"game"},get platform(){var I;return(I=L.platform)!=null?I:L.deviceInfo.platform},get deviceInfo(){return L.deviceInfo},get sdkInfo(){return L.sdkInfo},get hostInfo(){return L.hostInfo},get hostUserInfo(){return L.hostUserInfo},get sessionId(){var I,A;return(A=(I=L.clientSessionId)!=null?I:a)!=null?A:n},get channel(){return m},get webviewId(){var I;return(I=L.webviewId)!=null?I:-1},get shouldInterupt(){return e==null?void 0:e.__shouldInterupt},get from(){return e==null?void 0:e.__from},onEnvConfigChanged:I=>{Ir(L,I,_r)},encodeJoliSourceQuery:I=>{var A;return t&&r?cn({headerJson:t,payloadJson:h(h({},e),I),signature:r}):(A=o.get("joliSource"))!=null?A:""}}},v=ao()});var Wt,fn,co,lo,pn,uo,hn=f(()=>{"use strict";E();G();K();E();Wt=!1,fn=(e,t)=>e==null?!1:t in e,co=e=>fn(e,"kind"),lo=e=>{let t=e.toLowerCase().split("_");return t[0]+t.slice(1).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join("")},pn=(e,t={},r)=>{var o,i,a;let n={user_id:(i=(o=v.hostUserInfo)==null?void 0:o.uid)!=null?i:"",device_id:(a=v.deviceInfo.did)!=null?a:"",timestamp:Date.now(),tag:lo(e.name)},s=C(h({},n),{env:t.environment,isFromUser:r});r?ue.emit("GLOBAL_USER_ERROR",e,s):ue.emit("GLOBAL_ERROR",e,s)},uo=e=>fn(e,"kind")&&e.kind==="USER_ERROR";Ut.on("ERROR_REPORT",({error:e,options:t})=>{if(Wt)return;Wt=!0;let r=co(e)&&e.raw?e.raw:e;try{let n=uo(e);pn(e,t,n)}catch(n){let s=n instanceof Error?n.message:String(n),o=new Nt(`${s}, origin error: ${r.message}`);J.error(o),pn(new Nt(o.message),{environment:t.environment},!1)}finally{Wt=!1}})});var gn=f(()=>{"use strict";hn();oe();E();H();ue.on("GLOBAL_ERROR",(e,t)=>{var n;let r={message:e.message,stack:(n=e.stack)!=null?n:"",errorType:e.name,source:0};P("trackAsync",{event:"reportJsError",data:r})});ue.on("GLOBAL_USER_ERROR",(e,t)=>{J.log("UserError",e,t)})});var Qt=f(()=>{"use strict"});function yn(e,t){let r=(n,s,o)=>{let i=C(h({tag:n},t),{extra:h({},s)});n=="globalJsError"?M(new Or(JSON.stringify(i))):e("systemLog",i,o)};return r.debounce=_e(r,500,{leading:!0}),r}function vn(e){let t=(r,n,s)=>{var a;let o=(a=s&&JSON.stringify(s))!=null?a:0,i={speed_value_type:r,total_duration:n};o&&Object.assign(i,{extra:o}),e("joliboxSpeedAnalysis",i)};return t.debounce=_e(t,500,{leading:!0}),t}var bn=f(()=>{"use strict";E();E();G()});function Tn(e,t){let r=yn(e,t),n=vn(r);return{track:r,trackPerformance:n}}var kn=f(()=>{"use strict";bn()});var En=f(()=>{"use strict";K();E();E()});var Sn=f(()=>{"use strict";kn();Qt();En()});var He,wn=f(()=>{"use strict";He=class{constructor(t,r){this.eventEmitter=t;this.lastReportTime=0;this.visible=!0;this.timer=this.createRAFTimer(t=>{this.reporter({event:"PLAY_GAME",params:{duration:t}}),this.tracker("PlayGame",{duration:t})});this.interval=r!=null?r:5*1e3,t.on("visible",n=>{this.visible=n})}start(t){this.reporter({event:"OPEN_GAME",params:{timestamp:Date.now(),duration:t!=null?t:0}}),this.tracker("OpenGame",{duration:t!=null?t:0}),this.timer.start()}close(t){this.reporter({event:"CLOSE_GAME",params:{timestamp:Date.now(),duration:t}}),this.tracker("CloseGame",{duration:t}),this.timer.stop()}createRAFTimer(t){let r=Date.now(),n,s,o=!1,i=0,a=()=>{if(!o)return;let b=Date.now(),_=b-r;_>=this.interval&&(this.visible&&(i+=_,t(i)),r=b),n=requestAnimationFrame(a)},c=()=>{u(),r=Date.now(),s=window.setInterval(()=>{if(!o)return;let b=Date.now();b-r>=this.interval&&(r=b)},this.interval)},l=()=>{m(),r=Date.now(),n=requestAnimationFrame(a)},u=()=>{n&&(cancelAnimationFrame(n),n=0)},m=()=>{s&&(clearInterval(s),s=0)};this.eventEmitter.on("visible",b=>{o&&(console.log("visible",b),b?l():c())});let p=this.visible;return{start(){o||(o=!0,p?l():c())},stop(){o=!1,u(),m()}}}}});var Yt=f(()=>{"use strict"});function _n(e,t,r){let{response:n,startTime:s,endTime:o,requestFrom:i}=r,{errMsg:a="",profile:c={}}=n,u={duration:o-s,request_type:e,url:t.split("?")[0],result:r.state,error_msg:r.state==="fail"?a:"",socket_reused:c.socketReused?1:0,request_from:i};(i==="public"&&In<po||i==="inner")&&(u.joli_request_number=In++,setTimeout(()=>{V("joliboxNetRequestResult",u)},500))}var In,po,An=f(()=>{"use strict";Yt();ae();In=0,po=10});function Ve(e,t,r){var c,l,u;let n=new Map,s=(c=r==null?void 0:r.baseUrl)!=null?c:"https://api.jolibox.com",o=(l=r==null?void 0:r.type)!=null?l:"public",i=(u=r==null?void 0:r.defaultHeaders)!=null?u:{};return Q("onRequestTaskStateChange",m=>{if(typeof m.requestTaskId!="string")return;let p=n.get(m.requestTaskId);if(p)if(m.state==="success"){let b=m,{requestTaskId:T,state:y}=b,S=ce(b,["requestTaskId","state"]);p.resolve(S),n.delete(T)}else if(m.state==="fail"){let _=m,{requestTaskId:T,state:y}=_,S=ce(_,["requestTaskId","state"]);p.reject(S),n.delete(T)}else J.warn("onRequestTaskStateChange unknown event",m)}),ee.on("onLoginComplete",({isLogin:m,token:p})=>{m&&p&&(i["X-JOLI-TOKEN"]=p)}),(b,..._)=>g(this,[b,..._],function*(m,p={}){let T=Date.now(),y=fo(m,C(h({},p),{baseUrl:s})),{method:S="GET",responseType:R="text",dataType:w="json",timeout:U,enableCache:I=!1,appendHostCookie:A=!0}=p,ke=Object.assign({"content-type":"application/json"},i,p.header),ne={url:y,method:S,header:ke,enableCache:I,responseType:R,appendHostCookie:A};if(S=="POST"||S=="PUT"){let W=go(p.data,ke["content-type"]);ne.data=W}U&&Object.assign(ne,{timeout:U});let{data:{requestTaskId:St}}=P(e,ne);if(typeof St!="string")throw me({code:-1,msg:"requestTaskId is not a string"});let ur=(W,X)=>{_n("request",y,{state:W,startTime:T,endTime:Date.now(),params:ne,response:X,requestId:St,requestFrom:o=="public"?"public":"inner"})},{resolve:fs,reject:hs,promise:gs}=new se;n.set(St,{resolve:fs,reject:hs});try{let W=yield gs;ur("success",W);let{data:X}=W;return w==="json"&&typeof X=="string"&&(X=ho(X)),{url:y,timeout:U,method:S,response:C(h({},W),{data:X})}}catch(W){let X=W;if(B(X)){let{errMsg:xe,prefetchDetail:ys,isPrefetch:vs,errNo:bs}=X;le(xe)&&(ur("fail",{errMsg:xe,isPrefetch:vs,prefetchDetail:ys}),M(me({code:-1,msg:xe},{errNo:bs,errMsg:xe})))}throw W}})}function ho(e){try{return JSON.parse(e.trim())}catch(t){return e}}function go(e,t="application/json"){let r=t.toLowerCase();return e===void 0?"":typeof e=="string"||e instanceof ArrayBuffer?e:r.includes("application/x-www-form-urlencoded")||r.includes("application/json")||typeof e=="object"?JSON.stringify(e):String(e)}var fo,Xt=f(()=>{"use strict";E();An();Yt();H();G();oe();fo=(e,t)=>{if(/^https?:\/\//.test(e))return e;let r=t==null?void 0:t.query,s=new URLSearchParams(r).toString();return t!=null&&t.baseUrl?`${t.baseUrl}${e}${s?`?${s}`:""}`:`${e}${s?`?${s}`:""}`}});var Zt,Rn,te,Ke=f(()=>{"use strict";Gt();Xt();K();Zt={"x-user-agent":dn()};(Rn=v.hostUserInfo)!=null&&Rn.token&&(Zt["x-joli-token"]=v.hostUserInfo.token);v.joliSource&&(Zt["x-joli-source"]=v.joliSource);te=Ve("createRequestTaskSync","operateRequestTaskSync",{type:"inner",baseUrl:v.testMode?"https://stg-api.jolibox.com":"https://api.jolibox.com",defaultHeaders:Zt})});var qe,xn=f(()=>{"use strict";K();wn();Ke();H();qe=class extends He{constructor(t,r,n){super(r,n),this.gameId=v.mpId,this.sessionId=v.sessionId,this.track=t}reporter(t){return g(this,null,function*(){let{event:r,params:n}=t,s=[];s.push(te("/api/base/app-event",{method:"POST",data:{eventType:r,gameInfo:h({gameId:this.gameId,sessionId:this.sessionId},n)}})),yield Promise.all(s)})}reportToNative(t){return g(this,null,function*(){let{event:r,params:n}=t;yield $("userTrackAsync",{event:r,params:h({},n),gameId:this.gameId})})}tracker(t,r=null){this.track(t,r)}}});var Fn={};hr(Fn,{nativeTaskEmitter:()=>Re,taskTracker:()=>j,track:()=>V,trackPerformance:()=>Nn});var yo,Pn,Cn,V,Nn,On,Re,j,ae=f(()=>{"use strict";gn();E();Qt();Sn();K();xn();H();yo=(e,t,r)=>{var i,a;let n=t,s=B(n.extra)?n.extra:le(n.extra)?JSON.parse(n.extra):{},o=C(h({},s),{mp_id:(i=n.mp_id)!=null?i:"",mp_version:(a=n.mp_version)!=null?a:""});P("trackAsync",{event:e,data:o,webviewId:r})},{track:V,trackPerformance:Nn}=Tn(yo,{type:Ft.AppSDK,platform:"native",jssdk_version:(Cn=(Pn=v.sdkInfo)==null?void 0:Pn.jssdkVersion)!=null?Cn:"1.0.0",mp_id:v.mpId,mp_version:v.mpVersion}),On=N();On.registerCommand("ReportSDK.traceSystemTimeline",({event:e,duration:t,extra:r})=>{Nn(e,t,r)});On.registerCommand("ReportSDK.traceSystem",({event:e,info:t})=>{V(e,t)});Re=new q,j=new qe(V,Re)});function Dn(){let e=null,t=window.fetch,r=()=>{e=document.createElement("style"),e.setAttribute("data-jolibox-sdk","default-styles");let o=`
|
|
1
|
+
var Io=Object.create;var Ne=Object.defineProperty,_o=Object.defineProperties,Ro=Object.getOwnPropertyDescriptor,Ao=Object.getOwnPropertyDescriptors,xo=Object.getOwnPropertyNames,Ce=Object.getOwnPropertySymbols,Po=Object.getPrototypeOf,It=Object.prototype.hasOwnProperty,fr=Object.prototype.propertyIsEnumerable;var pr=(e,t,r)=>t in e?Ne(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,h=(e,t)=>{for(var r in t||(t={}))It.call(t,r)&&pr(e,r,t[r]);if(Ce)for(var r of Ce(t))fr.call(t,r)&&pr(e,r,t[r]);return e},P=(e,t)=>_o(e,Ao(t));var ce=(e,t)=>{var r={};for(var n in e)It.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&Ce)for(var n of Ce(e))t.indexOf(n)<0&&fr.call(e,n)&&(r[n]=e[n]);return r};var f=(e,t)=>()=>(e&&(t=e(e=0)),t);var hr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),gr=(e,t)=>{for(var r in t)Ne(e,r,{get:t[r],enumerable:!0})},Co=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of xo(t))!It.call(e,o)&&o!==r&&Ne(e,o,{get:()=>t[o],enumerable:!(n=Ro(t,o))||n.enumerable});return e};var yr=(e,t,r)=>(r=e!=null?Io(Po(e)):{},Co(t||!e||!e.__esModule?Ne(r,"default",{value:e,enumerable:!0}):r,e));var y=(e,t,r)=>new Promise((n,o)=>{var s=c=>{try{a(r.next(c))}catch(l){o(l)}},i=c=>{try{a(r.throw(c))}catch(l){o(l)}},a=c=>c.done?n(c.value):Promise.resolve(c.value).then(s,i);a((r=r.apply(e,t)).next())});function No(e){return!!(e!=null&&e.__nativeBuffers__)}function Ee(e){if(typeof e=="string")try{e=JSON.parse(e)}catch(r){return{}}if(typeof e!="object"||e===null)return{};if(!No(e))return e;let t=e.__nativeBuffers__;if(delete e.__nativeBuffers__,t)for(let r=0;r<t.length;r++){let n=t[r];if(n){let o;n.value?o=n.value:n.base64&&(o=Oo(n.base64)),typeof o!="undefined"&&o instanceof ArrayBuffer&&(e[n.key]=o)}}return e}function vr(e={},t=!1){let r=e,n=[];for(let[o,s]of Object.entries(r))if(s!==void 0&&s instanceof ArrayBuffer&&s.byteLength!==void 0){let i=t?{value:s,key:o}:{base64:Fo(s),key:o};n.push(i),delete r[o]}return n.length>0&&(r.__nativeBuffers__=n),r}var Oo,Fo,_t=f(()=>{"use strict";Oo=e=>{let t=atob(e),r=t.length,n=new Uint8Array(r);for(let o=0;o<r;o++)n[o]=t.charCodeAt(o);return n.buffer};Fo=e=>{let t="",r=new Uint8Array(e),n=r.byteLength;for(let o=0;o<n;o++)t+=String.fromCharCode(r[o]);return btoa(t)}});function Mo(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}function le(e){return typeof e=="string"}function B(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function Er(e){return typeof e=="object"&&Array.isArray(e)}function Ie(e){return e===!0||e===!1}function Lo(e){return typeof e>"u"}function Bo(e){return Lo(e)||e===null}function Sr(e){return typeof e=="function"}function wr(e){return B(e)&&Sr(e.then)}function Ir(e){let t=e,r=null,n=function(...o){return r||(r=new t(...o)),r};return n.prototype=t.prototype,n}function _r(e,t,r){if(typeof r!="function")throw new Error("[Jolibox SDK]Customizer must be a function");function n(o,s){for(let i in s)if(Object.prototype.hasOwnProperty.call(s,i)){let a=o[i],c=s[i],l=r(a,c,i,o,s);l!==void 0?o[i]=l:br(c)&&br(a)?o[i]=n(h({},a),c):Array.isArray(c)&&Array.isArray(a)?o[i]=[...a,...c]:o[i]=c}return o}return n(e,t)}function br(e){return e&&typeof e=="object"&&e.constructor===Object}function Rr(e,t){if(Array.isArray(e))return e.concat(t)}function _e(e,t,r={}){let n=null,o,s,i,{leading:a=!1,trailing:c=!0}=r,l=()=>(i=e.apply(s,o),o=void 0,s=void 0,i),u=function(...m){o=m,s=this;let p=a&&!n;if(n&&clearTimeout(n),n=setTimeout(()=>{n=null,c&&!p&&l()},t),p)return l()};return u.cancel=()=>{n&&clearTimeout(n),n=null,o=s=void 0},u.flush=()=>{if(n)return clearTimeout(n),n=null,l()},u}function Jo(e,t){return(...r)=>t(e,...r)}function Me(e){return t=>Jo(t,function(r,...n){if(typeof r=="function")try{return r.apply(this,n)}catch(o){e(new Re(`${o}`))}})}function Se(e){return(...t)=>{var r,n;((n=(r=globalThis.VConsole)==null?void 0:r[e])!=null?n:globalThis.console[e])(...t)}}function ts(e){return new Promise(t=>Lr(e)(t))}function Lr(e){return(t,r=null)=>{let n=!1;return e(o=>{if(!n)return n=!0,t.call(r,o)},null)}}function rs(e,t){return(r=>{let n,o={onWillAddFirstListener(){n=r(s.fire,s)}},s=new we(o);return s.event})((r,n=null)=>e(o=>t(o)&&r.call(n,o),null))}function os(e,t){let r=Math.min(e.length,t.length);for(let n=0;n<r;n++)ss(e[n],t[n])}function ss(e,t){if(le(t)){if(typeof e!==t)throw new Error(`argument does not match constraint: typeof ${t}`)}else if(Sr(t)){try{if(e instanceof t)return}catch(r){}if(!Bo(e)&&e.constructor===t||t.length===1&&t.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")}}function O(){if(globalThis[At])return globalThis[At];let e=new De,t=new Pt,r={registerCommand(n,o,s){e.registerCommand({id:n,handler:o,metadata:s})},executeCommand(n,...o){return t.executeCommand(n,...o)},excuteCommandSync(n,...o){return t.executeCommandThowErr(n,...o)}};return globalThis[At]=r,r}var Tr,Do,Uo,kr,Q,jo,Ct,de,Ar,xr,Re,Pr,Cr,Nr,Or,Fr,Ae,Ue,Nt,H,Dr,$o,Ot,Ho,Ft,Vo,Ko,Oe,qo,Go,zo,Ur,Dt,Wo,Qo,Yo,Mr,te,C,Xo,Zo,Fe,we,q,xt,es,Rt,ns,re,De,Pt,At,E=f(()=>{"use strict";Tr=Object.defineProperty,Do=Object.getOwnPropertyDescriptor,Uo=(e,t)=>{for(var r in t)Tr(e,r,{get:t[r],enumerable:!0})},kr=(e,t,r,n)=>{for(var o=n>1?void 0:n?Do(t,r):t,s=e.length-1,i;s>=0;s--)(i=e[s])&&(o=(n?i(t,r,o):i(o))||o);return n&&o&&Tr(t,r,o),o};Q=class{constructor(){this.state="pending",this.promise=new Promise((e,t)=>{this.resolve=r=>{this.state==="pending"&&(this.state="fulfilled",e(r))},this.reject=r=>{this.state==="pending"&&(this.state="rejected",t(r))}})}};jo=(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))(jo||{}),Ct=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}},de=class extends Ct{constructor(){super(...arguments),this.kind="INTERNAL_ERROR"}},Ar=class extends Ct{constructor(){super(...arguments),this.kind="USER_ERROR"}},xr=class extends Ar{constructor(){super(...arguments),this.name="USER_VALIDATE_ERROR"}},Re=class extends Ar{constructor(e,t,r){super(e),this.message=e,this.errNo=t,this.name="USER_CUSTOM_ERROR",this.errMsg=e,r&&(this.extra=Object.assign({},this.extra,r))}},Pr=class extends de{constructor(){super(...arguments),this.name="INTERNAL_SCHEMA_PARSE_ERROR",this.priority="P0"}},Cr=class extends de{constructor(){super(...arguments),this.name="INTERNAL_INVOKE_NATIVE_ERROR"}},Nr=class extends de{constructor(e,t,r,n){super(e),this.errNo=t,this.name="INTERNAL_APPLY_NATIVE_ERROR",this.errorType=r,this.errorCode=n}},Or=class extends de{constructor(){super(...arguments),this.name="INTERNAL_JSCORE_ERROR",this.priority="P0"}},Fr=class extends de{constructor(){super(...arguments),this.name="INTERNAL_GLOBAL_JS_ERROR",this.priority="P1"}},Ae=class extends Ct{constructor(e,t,r,n,o){super(e),this.message=e,this.code=t,this.kind="API_ERROR",this.name="API_ERROR",r&&(this.errorType=r),n!==void 0&&(this.stack=n),o&&(this.priority=o)}toJSON(){return{message:this.message,stack:this.stack,name:this.name,code:this.code,errorType:this.errorType}}},Ue=class extends de{constructor(){super(...arguments),this.name="INTERNAL_METRIC_REPORT_ERROR"}},Nt=class extends de{constructor(){super(...arguments),this.name="INTERNAL_REPORTER_ERROR"}};H={log:Se("log"),warn:Se("warn"),info:Se("info"),error:Se("error"),debug:Se("debug")};Object.assign(globalThis,{logger:H});Dr=Symbol.for("Jolibox.canIUseMap"),$o={};globalThis[Dr]=$o;Ot={get config(){return globalThis[Dr]}},Ho=(e=>(e[e.System=1e3]="System",e[e.ErrorTrace=1001]="ErrorTrace",e[e.UserDefined=1002]="UserDefined",e))(Ho||{}),Ft=(e=>(e.MiniGame="mini-game",e.MiniDrama="mini-drama",e.App="app",e.WebSDK="web-sdk",e.AppSDK="app-sdk",e))(Ft||{}),Vo=(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))(Vo||{}),Ko=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)}),Oe={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")},qo=()=>Oe.isiOS?"iOS":Oe.isAndroid?"Android":Oe.isMac?"Mac":Oe.isFacebook?"Facebook":"PC",Go="device_id",zo="advertising_id",Ur=e=>(localStorage.getItem(e)||localStorage.setItem(e,Ko()),localStorage.getItem(e)),Dt=()=>Ur(Go),Wo=()=>Ur(zo),Qo=e=>e.charAt(0).toUpperCase()+e.slice(1),Yo=()=>{var t;let e=new URLSearchParams(window.location.search);return Qo((t=e.get("utm_source"))!=null?t:"")||"JoliboxSDK"},Mr=e=>{let t="JoliboxWebSDK",r=qo(),n=navigator.language,o=Dt(),s=Wo();return`${t} (${Yo()}${r}; UnknownModel; UnknownSystemVersion; ${n}) uuid/${o} adid/${s} version/${e||""}`},C=(te=class{constructor(t){this.element=t,this.next=te.Undefined,this.prev=te.Undefined}},te.Undefined=new te(void 0),te),Xo=class{constructor(){this._first=C.Undefined,this._last=C.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===C.Undefined}clear(){let e=this._first;for(;e!==C.Undefined;){let t=e.next;e.prev=C.Undefined,e.next=C.Undefined,e=t}this._first=C.Undefined,this._last=C.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){let r=new C(e);if(this._first===C.Undefined)this._first=r,this._last=r;else if(t){let o=this._last;this._last=r,r.prev=o,o.next=r}else{let o=this._first;this._first=r,r.next=o,o.prev=r}this._size+=1;let n=!1;return()=>{n||(n=!0,this._remove(r))}}shift(){if(this._first!==C.Undefined){let e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==C.Undefined){let e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==C.Undefined&&e.next!==C.Undefined){let t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===C.Undefined&&e.next===C.Undefined?(this._first=C.Undefined,this._last=C.Undefined):e.next===C.Undefined?(this._last=this._last.prev,this._last.next=C.Undefined):e.prev===C.Undefined&&(this._first=this._first.next,this._first.prev=C.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==C.Undefined;)yield e.element,e=e.next}},Zo=0,Fe=class{constructor(e){this.value=e,this.id=Zo++}},we=class{constructor(e){this.options=e,this._size=0}dispose(e){var t,r;this._disposed||(this._disposed=!0,this._listeners&&(e?(this._listeners instanceof Fe&&(this._listeners=[this._listeners]),this._listeners=this._listeners.filter(n=>(n==null?void 0:n.value)===e)):(this._listeners=void 0,this._size=0)),(r=(t=this.options)==null?void 0:t.onDidRemoveLastListener)==null||r.call(t))}get event(){var e;return(e=this._event)!=null||(this._event=(t,r)=>{var o,s,i,a,c,l;if(this._disposed)return()=>{console.info("[Jolibox SDK] Emitter is _disposed")};r&&(t=t.bind(r));let n=new Fe(t);this._listeners?this._listeners instanceof Fe?this._listeners=[this._listeners,n]:this._listeners.push(n):((s=(o=this.options)==null?void 0:o.onWillAddFirstListener)==null||s.call(o,this),this._listeners=n,(a=(i=this.options)==null?void 0:i.onDidFirstListener)==null||a.call(i,this)),(l=(c=this.options)==null?void 0:c.onDidAddListener)==null||l.call(c,this),this._size++}),this._event}_deliver(e,t){var n;if(!e)return;let r=((n=this.options)==null?void 0:n.onListenerError)||Error.constructor;if(!r){e.value(t);return}try{e.value(t)}catch(o){r(o)}}fire(e){this._listeners&&(this._listeners instanceof Fe?this._deliver(this._listeners,e):this._listeners.forEach(t=>this._deliver(t,e)))}hasListeners(){return this._size>0}},q=class{constructor(){this.listeners=new Map,this.listerHandlerMap=new WeakMap,this.cachedEventQueue=new Map}on(e,t){var s;let r=(s=this.listeners.get(e))!=null?s:new we,n=i=>t(...i.args);this.listerHandlerMap.set(t,n),r.event(n),this.listeners.set(e,r);let o=this.cachedEventQueue.get(e);if(o)for(;o.size>0;)r.fire(h({event:e},o.shift()))}off(e,t){let r=this.listeners.get(e);if(r){let n=this.listerHandlerMap.get(t);r.dispose(n)}}emit(e,...t){let r=this.listeners.get(e);if(r)r.fire({event:e,args:t});else{let n=this.cachedEventQueue.get(e);n||(n=new Xo,this.cachedEventQueue.set(e,n)),n.push({args:t})}}},xt={};Uo(xt,{None:()=>es,filter:()=>rs,once:()=>Lr,toPromise:()=>ts});es=()=>{console.log("[Jolibox SDK] None Event")};Rt=Symbol.for("Jolibox.hostEmitter"),ns=()=>{let e=new q;return globalThis[Rt]||(globalThis[Rt]={on:e.on.bind(e),off:e.off.bind(e),emit:e.emit.bind(e)}),globalThis[Rt]},re=ns();De=class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new we,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 r=[];for(let o of e.metadata.args)r.push(o.constraint);let n=e.handler;e.handler=function(...o){return os(o,r),n(...o)}}let{id:t}=e;this._commands.get(t)&&console.info(`[Jolibox SDK] duplicated command is registered ${t}`),this._commands.set(t,e),this._onDidRegisterCommand.fire(t)}getCommand(e){return this._commands.get(e)}getCommands(){let e=new Map;for(let t of this._commands.keys()){let r=this.getCommand(t);r&&e.set(t,r)}return e}};De=kr([Ir],De);Pt=class{constructor(){this._onWillExecuteCommand=new we,this.onWillExecuteCommand=this._onWillExecuteCommand.event,this._onDidExecuteCommand=new we,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this.registry=new De,this._starActivation=null}_activateStar(){return this._starActivation||(this._starActivation=Mo(3e4)),this._starActivation}executeCommand(e,...t){return y(this,null,function*(){return this.registry.getCommand(e)?this._tryExecuteCommand(e,t):(yield Promise.all([Promise.race([this._activateStar(),xt.toPromise(xt.filter(this.registry.onDidRegisterCommand,r=>r===e))])]),this._tryExecuteCommand(e,t))})}executeCommandThowErr(e,...t){if(!this.registry.getCommand(e))throw new Error(`command '${e}' not found`);let r=this.registry.getCommand(e);this._onWillExecuteCommand.fire({commandId:e,args:t});let n=this.invokeFunction(r.handler,...t);return this._onDidExecuteCommand.fire({commandId:e,args:t}),n}_tryExecuteCommand(e,t){let r=this.registry.getCommand(e);if(!r)return Promise.reject(new Error(`command '${e}' not found`));try{this._onWillExecuteCommand.fire({commandId:e,args:t});let n=this.invokeFunction(r.handler,...t);return this._onDidExecuteCommand.fire({commandId:e,args:t}),Promise.resolve(n)}catch(n){return Promise.reject(n)}}invokeFunction(e,...t){let r=!1;try{return e(...t)}finally{r=!0}}};Pt=kr([Ir],Pt);At=Symbol.for("Jolibox.commands")});function M(e,t={}){Ut.emit("ERROR_REPORT",{error:e,options:t})}var Ut,ue,G=f(()=>{"use strict";E();E();Ut=new q,ue=new q;M.debounce=_e(M,50,{leading:!0})});function Le(e,t){return`[${e}]:${t}`}var me,Mt,se=f(()=>{"use strict";G();E();G();me=(e,t)=>{var r,n;return new Ae((n=(r=t==null?void 0:t.errMsg)!=null?r:e.msg)!=null?n:"",e.code,e.type)},Mt=e=>new xr(e)});var pe,Br,jr,Jr,Be,je=f(()=>{"use strict";pe="custom_event_",Br=[],jr=[],Jr=["env","createRequestTask","login"],Be="__batch_event__"});function Hr(e,t){$r||(Lt=new fe({eventName:"jolibox_invoke",tagNameOrder:["status","method","errNo","errMsg","isForeground"],metricName:"duration",reporter(o){e.invoke("track",JSON.stringify({event:"reportMetrics",data:o}),-1)}}),Bt=new fe({eventName:"jolibox_invoke_js2native",tagNameOrder:["status","method","isForeground"],metricName:"duration",reporter(o){e.invoke("track",JSON.stringify({event:"reportMetrics",data:o}),-1)}}),jt=new fe({eventName:"jolibox_invoke_native2js",tagNameOrder:["status","method","isForeground"],metricName:"duration",reporter(o){e.invoke("track",JSON.stringify({event:"reportMetrics",data:o}),-1)}}),t("onJoliboxEnterBackground",()=>{Lt.flush(),Bt.flush(),jt.flush()}),$r=!0);function r(o){var T,v;let{method:s,args:i,startTime:a,isForeground:c,errMsg:l=`${s}:fail no errMsg`,errNo:u=0,__timing:m={receiveJSInvoke:0,invokeCallback:0}}=o,{receiveJSInvoke:p,invokeCallback:b}=m,R=(v=(T=l.match(/\S:(\S+)\s?/))==null?void 0:T[1])!=null?v:"fail";Lt.report({status:R,method:n(s,i),errNo:`${u}`,errMsg:l,isForeground:c,duration:Date.now()-a}),a&&p&&b&&(Bt.report({status:R,method:s,isForeground:c,duration:Number((p-a).toFixed(3))}),jt.report({status:R,method:s,isForeground:c,duration:Number((Date.now()-b).toFixed(3))}))}function n(o,s){return(o==="callHostMethod"||o==="callHostMethodSync")&&s!=null&&s.method?`${o}-${s.method}`:o}return r}var is,fe,$r,Lt,Bt,jt,Jt=f(()=>{"use strict";E();is=e=>e==="pv"?e:"default",fe=class{constructor(t){this.interval=30;this.lastReportTime=0;this.cache={};let{reporter:r,interval:n=30,eventName:o,tagNameOrder:s,metricName:i,type:a}=t;this.reporter=r,this.interval=n,this.eventName=o,this.tagNameOrder=s,this.metricName=i,this.type=is(a)}report(t){this.type==="pv"?this.addPVPoint(t):this.addPoint(t),this.tryReport(!1)}flush(){this.tryReport(!0)}tryReport(t){if(Object.keys(this.cache).length){if(t){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(t){let r=(n,o,s,i)=>{let a=o.shift();if(a){let c=i[a];n[c]||(n[c]={}),r(n[c],o,s,i)}else n[s]||(n[s]=[]),n[s].push(i[s])};r(this.cache,[...this.tagNameOrder],this.metricName,t)}addPVPoint(t){let r=(o,s,i,a)=>{let c=s.shift();if(!c&&B(a))throw new Ue(`report value failed to match tagNameOrder, ${JSON.stringify(n)}`);if(c){let l=[];if(B(a))l.push(...Object.keys(a));else if(le(a)){if(s.length>0)throw new Ue(`report value failed to match tagNameOrder, ${JSON.stringify(n)}`);l.push(a)}else throw new Ue(`expected metric value to be a string, but got a(n) ${typeof a}, ${JSON.stringify(n)}`);l.forEach(u=>{o[u]||(o[u]={});let m=B(a)?a[u]:a;r(o[u],[...s],i,m)})}else o[i]?o[i]++:o[i]=1},n={point:t,metricName:this.metricName,tagNameOrder:this.tagNameOrder};r(this.cache,[...this.tagNameOrder],this.metricName,t)}processPoints(t){return{eventName:this.eventName,tagNameOrder:this.tagNameOrder,metricName:this.metricName,metricAggregateType:this.type==="pv"?"itoa":"arr",data:t}}clearPoints(){this.cache={}}},$r=!1});function Kr(e,t){let r=0,n=!0,o=new Map,s=Hr(e,t);t("onJoliboxEnterBackground",()=>{n=!1}),t("onJoliboxEnterForeground",()=>{n=!0,$t.forEach(p=>y(this,[p],function*({method:l,args:u,resolve:m}){let b=yield a(l,u);m(b)})),$t.length=0});let i=(l,u)=>{let m=o.get(Number(l));if(!m)return;let p=Ee(u);m(p),o.delete(Number(l))},a=(l,u)=>{var U,I;let m=Date.now(),p=`${n}`;r+=1;let b=new Q;if(o.set(r,b.resolve),!n&&jr.includes(l))return new Promise(A=>{$t.push({method:l,args:u,resolve:A})});let T=P(h({},{method:l,startTime:m,args:u,isForeground:p}),{invokeType:"js-bridge"}),v=!as&&Br.includes(l),S=vr(u,v),x=v?S:JSON.stringify(S),w;if(l.endsWith("Sync")||Jr.includes(l)?w=(U=e.call)==null?void 0:U.call(e,l,S,r):typeof x=="string"?w=e.invoke(l,x,r):w=(I=e.call)==null?void 0:I.call(e,l,x,r),w){try{typeof w=="string"&&(w=JSON.parse(w)),w=Ee(w)}catch(A){H.error(A)}return o.delete(r),w.errorCode&&(w.errorCode=Le(l,w.errorCode)),s(h(h({},T),w)),w}return l.endsWith("Sync")&&o.delete(r),b.promise.then(A=>(A.errorCode&&(A.errorCode=Le(l,A.errorCode)),s(h(h({},T),A)),A))};return{invokeNative:a,applyNative:(l,u)=>{let m=a(l,u);return wr(m)?m.then(p=>Vr(l,p)):Vr(l,m)},invokeHandler:i}}function Vr(e,t){if(!B(t)){H.warn(`[Jolibox SDK]${e} no response value`);return}let a=t,{errMsg:r,errNo:n,errorType:o,errorCode:s}=a,i=ce(a,["errMsg","errNo","errorType","errorCode"]);if(r&&r!==`${e}:ok`)throw new Nr(r,n,o,s);return i}var $t,as,qr=f(()=>{"use strict";_t();E();se();je();Jt();$t=[],as=!1});function Gr(e){let t=new q,r=new q,n=new fe({eventName:"jolibox_publish",tagNameOrder:["type","event"],metricName:"duration",reporter(o){e.invoke("track",JSON.stringify({event:"reportMetrics",data:o}),-1)}});return t.on("onJoliboxEnterBackground",()=>{n.flush()}),{onNative:t.on.bind(t),offNative:t.off.bind(t),subscribe:r.on.bind(r),unsubscribe:r.off.bind(r),subscribeHandler(o,s,i){let a=Ee(s),c;if(a.__extra){c=a.params;let{type:l,startTime:u}=a.__extra;n.report({type:l,event:o,duration:Date.now()-u})}else c=a;if(o===Be){c.forEach(u=>{let[m,p]=u;try{r.emit(m.slice(pe.length),p,i)}catch(b){}});return}if(o.startsWith(pe)){r.emit(o.slice(pe.length),c,i);return}t.emit(o,c,i)}}}var zr=f(()=>{"use strict";E();_t();Jt();je()});function Wr(e){let t=new Map,r;return(o,s,i,a)=>{if(a){let l=i?[i]:"*";e.publish(`${pe}${o}`,s,l);return}r||(r=Promise.resolve().then(()=>{t.forEach((l,u)=>{try{let m=u?[u]:"*";e.publish(Be,l,m)}catch(m){}}),r=void 0,t.clear()}));let c=t.get(i);c||(c=[],t.set(i,c)),c.push([`${pe}${o}`,s])}}var Qr=f(()=>{"use strict";je()});function Ht(e){let{subscribeHandler:t,onNative:r,offNative:n,subscribe:o,unsubscribe:s}=Gr(e),{invokeNative:i,invokeHandler:a,applyNative:c}=Kr(e,r),l=Wr(e);return{invokeHandler:a,subscribeHandler:t,applyNative:c,invokeNative:i,onNative:r,offNative:n,publish:l,subscribe:o,unsubscribe:s}}var Yr=f(()=>{"use strict";qr();zr();Qr()});var Xr=f(()=>{"use strict"});var Zr=f(()=>{"use strict";Yr();Xr()});function ge(e,t){return{params:e,__extra:{startTime:Date.now(),type:t}}}var Je=f(()=>{"use strict"});var ie,z,en,tn=f(()=>{"use strict";E();Je();G();z={trigger(){},exit(){return Promise.resolve(!1)},onReady(e){z.trigger=e},doExit(e){z.exit=e}},en=()=>{let e=window.prompt("invoke",JSON.stringify({event:"envSync",paramsString:JSON.stringify({})}));if(!e)M(new Cr("native env failed"));else{let{data:t}=JSON.parse(e);return t!=null?t:void 0}};if(window.webkit){let e=window.webkit.messageHandlers,t=(o="")=>{z.trigger(),e.onDocumentReady.postMessage({path:o})};ie={onDocumentReady:t,doExit:o=>y(void 0,null,function*(){let s=yield z.exit();e.doExit.postMessage({uuid:o,shouldInterrupt:s})}),invoke(o,s,i){e.invoke.postMessage({event:o,paramsString:s,callbackId:i})},publish(o,s,i){let a=ge(s,"joliboxJSCore");window.prompt("publish",JSON.stringify({event:o,paramsString:JSON.stringify(a),webviewIds:i}))},call(o,s,i){let a=window.prompt("invoke",JSON.stringify({event:o,paramsString:JSON.stringify(s),callbackId:i}));if(a)return JSON.parse(a)}};let n={onDocumentReady:t,env:en};globalThis.joliboxJSCore=h({},n)}if(window.JoliAndroidSDKBridge){let e=window.JoliAndroidSDKBridge,t=(o="")=>{z.trigger(),e.onDocumentReady(JSON.stringify({path:o}))};ie={onDocumentReady:t,invoke(o,s,i){e.invoke(JSON.stringify({event:o,paramsString:s,callbackId:i}))},doExit:o=>y(void 0,null,function*(){let s=yield z.exit();e.doExit(JSON.stringify({uuid:o,shouldInterrupt:s}))}),publish(o,s,i){let a=ge(s,"joliboxJSCore");e.publish({event:o,paramsString:JSON.stringify(a),webviewIds:i})},call(o,s,i){let a=window.prompt("invoke",JSON.stringify({event:o,paramsString:JSON.stringify(s),callbackId:i}));if(a)return JSON.parse(a)}};let n={onDocumentReady:t,env:en};globalThis.joliboxJSCore=h({},n)}});function Vt(){globalThis.onmessage=function(e){e.data==="msg:setup"&&([ye]=e.ports,ye.onmessage=function(t){let r=JSON.parse(t.data);r[0]==="publish"?globalThis.ttJSBridge.subscribeHandler(r[1],r[2]):r[0]==="invoke"&&globalThis.ttJSBridge.invokeHandler(r[1],r[2])},ye.publish=function(t,r){let n=ge(r,"messagePort");ye.postMessage(JSON.stringify(["publish",t,JSON.stringify(n)]))},ye.postMessage("msg:setup:ok"))}}var ye,rn=f(()=>{"use strict";Je()});var $e=f(()=>{"use strict";tn();rn();Je()});var on,cs,sn,nn,V,_,Y,Ba,ls,an,cn,ja,j=f(()=>{"use strict";Zr();$e();se();E();$e();on=ie;if(!on)throw new Or("No joliboxJScore is found, native bridge not found.");Vt();cs=h({},on),sn=Ht(cs),{invokeHandler:nn}=sn,{applyNative:V,invokeNative:_,onNative:Y,offNative:Ba,subscribeHandler:ls,publish:an,subscribe:cn,unsubscribe:ja}=sn;globalThis.joliboxJSBridge={callHandler:nn,invokeHandler:nn,subscribeHandler:ls}});var Kt,qt,ln,dn,un=f(()=>{"use strict";E();G();Kt=e=>{let t=e.replace(/-/g,"+").replace(/_/g,"/"),r=t.length%4===0?"":"=".repeat(4-t.length%4),n=atob(t+r);try{return JSON.parse(n)}catch(o){return{}}},qt=e=>{let t=JSON.stringify(e);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")},ln=e=>{var t;try{let o=(t=new URL(e).searchParams.get("joliSource"))==null?void 0:t.split(".");if(o!=null&&o.length){let[s,i,a]=o;return{headerJson:Kt(s),payloadJson:Kt(i),signature:Kt(a)}}else throw"joli_source is missing"}catch(r){return M(new Pr(`${e} not a valid schema: ${r}`)),{headerJson:{},payloadJson:{},signature:{}}}},dn=e=>{let{headerJson:t,payloadJson:r,signature:n}=e,o=qt(t),s=qt(r),i=qt(n);return`${o}.${s}.${i}`}});var ds,He,mn,Gt=f(()=>{"use strict";E();ds="1.1.11-beta.3",He=()=>ds,mn=()=>{let e=He();return`${Mr(e)}`}});var us,pn,zt,fn,L,ms,g,J=f(()=>{"use strict";E();un();Gt();E();us={deviceInfo:{brand:"UnknownBrand",model:"UnknownModel",did:Dt(),pixelRatio:window.devicePixelRatio||1,platform:"h5",system:"UnknownSystemVersion",lang:"zh"},sdkInfo:{nativeSDKVersion:"",jssdkVersion:He()},schema:window.location.href,platform:"h5"},zt=(pn=globalThis.joliboxJSCore)==null?void 0:pn.env,L=Object.assign({},(fn=zt==null?void 0:zt())!=null?fn:us),ms=()=>{var p,b,R,T,v,S,x,w,U;let{payloadJson:e,headerJson:t,signature:r}=L.schema.length?ln(L.schema):{},n=`${L.deviceInfo.did}-${new Date().getTime()}`,s=new URL(L.schema.length?L.schema:window.location.href).searchParams,i=(R=(b=(p=s.get("mpId"))!=null?p:s.get("appId"))!=null?b:s.get("gameId"))!=null?R:"",a=(S=(v=(T=L.clientSessionId)!=null?T:e==null?void 0:e.sessionId)!=null?v:s.get("sessionId"))!=null?S:n,c=!!((x=e==null?void 0:e.testAdsMode)!=null?x:s.get("testAdsMode")==="true"),l=(U=(w=e==null?void 0:e.joliboxEnv)!=null?w:s.get("joliboxEnv"))!=null?U:"production",u=l==="staging",m=t==null?void 0:t.channel;return{get testMode(){return u},get testAdsMode(){return c},get joliboxEnv(){return l},get joliSource(){var I;return(I=s.get("joliSource"))!=null?I:null},get mpId(){var I;return(I=i!=null?i:e==null?void 0:e.id)!=null?I:""},get mpVersion(){var I;return(I=t==null?void 0:t.ver)!=null?I:He()},get mpType(){var I,A;return(A=(I=t==null?void 0:t.__mpType)!=null?I:e==null?void 0:e.__mpType)!=null?A:"game"},get platform(){var I;return(I=L.platform)!=null?I:L.deviceInfo.platform},get deviceInfo(){return L.deviceInfo},get sdkInfo(){return L.sdkInfo},get hostInfo(){return L.hostInfo},get hostUserInfo(){return L.hostUserInfo},get sessionId(){var I,A;return(A=(I=L.clientSessionId)!=null?I:a)!=null?A:n},get channel(){return m},get webviewId(){var I;return(I=L.webviewId)!=null?I:-1},get shouldInterupt(){return e==null?void 0:e.__shouldInterupt},get from(){return e==null?void 0:e.__from},onEnvConfigChanged:I=>{_r(L,I,Rr)},encodeJoliSourceQuery:I=>{var A;return t&&r?dn({headerJson:t,payloadJson:h(h({},e),I),signature:r}):(A=s.get("joliSource"))!=null?A:""}}},g=ms()});var Wt,gn,ps,fs,hn,hs,yn=f(()=>{"use strict";E();G();J();E();Wt=!1,gn=(e,t)=>e==null?!1:t in e,ps=e=>gn(e,"kind"),fs=e=>{let t=e.toLowerCase().split("_");return t[0]+t.slice(1).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join("")},hn=(e,t={},r)=>{var s,i,a;let n={user_id:(i=(s=g.hostUserInfo)==null?void 0:s.uid)!=null?i:"",device_id:(a=g.deviceInfo.did)!=null?a:"",timestamp:Date.now(),tag:fs(e.name)},o=P(h({},n),{env:t.environment,isFromUser:r});r?ue.emit("GLOBAL_USER_ERROR",e,o):ue.emit("GLOBAL_ERROR",e,o)},hs=e=>gn(e,"kind")&&e.kind==="USER_ERROR";Ut.on("ERROR_REPORT",({error:e,options:t})=>{if(Wt)return;Wt=!0;let r=ps(e)&&e.raw?e.raw:e;try{let n=hs(e);hn(e,t,n)}catch(n){let o=n instanceof Error?n.message:String(n),s=new Nt(`${o}, origin error: ${r.message}`);H.error(s),hn(new Nt(s.message),{environment:t.environment},!1)}finally{Wt=!1}})});var vn=f(()=>{"use strict";yn();se();E();j();ue.on("GLOBAL_ERROR",(e,t)=>{var n;let r={message:e.message,stack:(n=e.stack)!=null?n:"",errorType:e.name,source:0};_("trackAsync",{event:"reportJsError",data:r})});ue.on("GLOBAL_USER_ERROR",(e,t)=>{H.log("UserError",e,t)})});var Qt=f(()=>{"use strict"});function bn(e,t){let r=(n,o,s)=>{let i=P(h({tag:n},t),{extra:h({},o)});n=="globalJsError"?M(new Fr(JSON.stringify(i))):e("systemLog",i,s)};return r.debounce=_e(r,500,{leading:!0}),r}function Tn(e){let t=(r,n,o)=>{var a;let s=(a=o&&JSON.stringify(o))!=null?a:0,i={speed_value_type:r,total_duration:n};s&&Object.assign(i,{extra:s}),e("joliboxSpeedAnalysis",i)};return t.debounce=_e(t,500,{leading:!0}),t}var kn=f(()=>{"use strict";E();E();G()});function En(e,t){let r=bn(e,t),n=Tn(r);return{track:r,trackPerformance:n}}var Sn=f(()=>{"use strict";kn()});var wn=f(()=>{"use strict";J();E();E()});var In=f(()=>{"use strict";Sn();Qt();wn()});var Ve,_n=f(()=>{"use strict";Ve=class{constructor(t,r){this.eventEmitter=t;this.lastReportTime=0;this.visible=!0;this.timer=this.createRAFTimer(t=>{this.reporter({event:"PLAY_GAME",params:{duration:t}}),this.tracker("PlayGame",{duration:t})});this.interval=r!=null?r:5*1e3,t.on("visible",n=>{this.visible=n})}start(t){this.reporter({event:"OPEN_GAME",params:{timestamp:Date.now(),duration:t!=null?t:0}}),this.tracker("OpenGame",{duration:t!=null?t:0}),this.timer.start()}close(t){this.reporter({event:"CLOSE_GAME",params:{timestamp:Date.now(),duration:t}}),this.tracker("CloseGame",{duration:t}),this.timer.stop()}createRAFTimer(t){let r=Date.now(),n,o,s=!1,i=0,a=()=>{if(!s)return;let b=Date.now(),R=b-r;R>=this.interval&&(this.visible&&(i+=R,t(i)),r=b),n=requestAnimationFrame(a)},c=()=>{u(),r=Date.now(),o=window.setInterval(()=>{if(!s)return;let b=Date.now();b-r>=this.interval&&(r=b)},this.interval)},l=()=>{m(),r=Date.now(),n=requestAnimationFrame(a)},u=()=>{n&&(cancelAnimationFrame(n),n=0)},m=()=>{o&&(clearInterval(o),o=0)};this.eventEmitter.on("visible",b=>{s&&(console.log("visible",b),b?l():c())});let p=this.visible;return{start(){s||(s=!0,p?l():c())},stop(){s=!1,u(),m()}}}}});var Yt=f(()=>{"use strict"});function An(e,t,r){let{response:n,startTime:o,endTime:s,requestFrom:i}=r,{errMsg:a="",profile:c={}}=n,u={duration:s-o,request_type:e,url:t.split("?")[0],result:r.state,error_msg:r.state==="fail"?a:"",socket_reused:c.socketReused?1:0,request_from:i};(i==="public"&&Rn<ys||i==="inner")&&(u.joli_request_number=Rn++,setTimeout(()=>{K("joliboxNetRequestResult",u)},500))}var Rn,ys,xn=f(()=>{"use strict";Yt();ae();Rn=0,ys=10});function Ke(e,t,r){var c,l,u;let n=new Map,o=(c=r==null?void 0:r.baseUrl)!=null?c:"https://api.jolibox.com",s=(l=r==null?void 0:r.type)!=null?l:"public",i=(u=r==null?void 0:r.defaultHeaders)!=null?u:{};return Y("onRequestTaskStateChange",m=>{if(typeof m.requestTaskId!="string")return;let p=n.get(m.requestTaskId);if(p)if(m.state==="success"){let b=m,{requestTaskId:T,state:v}=b,S=ce(b,["requestTaskId","state"]);p.resolve(S),n.delete(T)}else if(m.state==="fail"){let R=m,{requestTaskId:T,state:v}=R,S=ce(R,["requestTaskId","state"]);p.reject(S),n.delete(T)}else H.warn("onRequestTaskStateChange unknown event",m)}),re.on("onLoginComplete",({isLogin:m,token:p})=>{m&&p&&(i["X-JOLI-TOKEN"]=p)}),(b,...R)=>y(this,[b,...R],function*(m,p={}){let T=Date.now(),v=vs(m,P(h({},p),{baseUrl:o})),{method:S="GET",responseType:x="text",dataType:w="json",timeout:U,enableCache:I=!1,appendHostCookie:A=!0}=p,ke=Object.assign({"content-type":"application/json"},i,p.header),oe={url:v,method:S,header:ke,enableCache:I,responseType:x,appendHostCookie:A};if(S=="POST"||S=="PUT"){let W=Ts(p.data,ke["content-type"]);oe.data=W}U&&Object.assign(oe,{timeout:U});let{data:{requestTaskId:wt}}=_(e,oe);if(typeof wt!="string")throw me({code:-1,msg:"requestTaskId is not a string"});let mr=(W,ee)=>{An("request",v,{state:W,startTime:T,endTime:Date.now(),params:oe,response:ee,requestId:wt,requestFrom:s=="public"?"public":"inner"})},{resolve:bo,reject:To,promise:ko}=new Q;n.set(wt,{resolve:bo,reject:To});try{let W=yield ko;mr("success",W);let{data:ee}=W;return w==="json"&&typeof ee=="string"&&(ee=bs(ee)),{url:v,timeout:U,method:S,response:P(h({},W),{data:ee})}}catch(W){let ee=W;if(B(ee)){let{errMsg:Pe,prefetchDetail:Eo,isPrefetch:So,errNo:wo}=ee;le(Pe)&&(mr("fail",{errMsg:Pe,isPrefetch:So,prefetchDetail:Eo}),M(me({code:-1,msg:Pe},{errNo:wo,errMsg:Pe})))}throw W}})}function bs(e){try{return JSON.parse(e.trim())}catch(t){return e}}function Ts(e,t="application/json"){let r=t.toLowerCase();return e===void 0?"":typeof e=="string"||e instanceof ArrayBuffer?e:r.includes("application/x-www-form-urlencoded")||r.includes("application/json")||typeof e=="object"?JSON.stringify(e):String(e)}var vs,Xt=f(()=>{"use strict";E();xn();Yt();j();G();se();vs=(e,t)=>{if(/^https?:\/\//.test(e))return e;let r=t==null?void 0:t.query,o=new URLSearchParams(r).toString();return t!=null&&t.baseUrl?`${t.baseUrl}${e}${o?`?${o}`:""}`:`${e}${o?`?${o}`:""}`}});var Zt,Pn,X,qe=f(()=>{"use strict";Gt();Xt();J();Zt={"x-user-agent":mn()};(Pn=g.hostUserInfo)!=null&&Pn.token&&(Zt["x-joli-token"]=g.hostUserInfo.token);g.joliSource&&(Zt["x-joli-source"]=g.joliSource);X=Ke("createRequestTaskSync","operateRequestTaskSync",{type:"inner",baseUrl:g.testMode?"https://stg-api.jolibox.com":"https://api.jolibox.com",defaultHeaders:Zt})});var Ge,Cn=f(()=>{"use strict";J();_n();qe();j();Ge=class extends Ve{constructor(t,r,n){super(r,n),this.gameId=g.mpId,this.sessionId=g.sessionId,this.track=t}reporter(t){return y(this,null,function*(){let{event:r,params:n}=t,o=[];o.push(X("/api/base/app-event",{method:"POST",data:{eventType:r,gameInfo:h({gameId:this.gameId,sessionId:this.sessionId},n)}})),yield Promise.all(o)})}reportToNative(t){return y(this,null,function*(){let{event:r,params:n}=t;yield V("userTrackAsync",{event:r,params:h({},n),gameId:this.gameId})})}tracker(t,r=null){this.track(t,r)}}});var Un={};gr(Un,{nativeTaskEmitter:()=>xe,taskTracker:()=>$,track:()=>K,trackPerformance:()=>Fn});var ks,Nn,On,K,Fn,Dn,xe,$,ae=f(()=>{"use strict";vn();E();Qt();In();J();Cn();j();ks=(e,t,r)=>{var i,a;let n=t,o=B(n.extra)?n.extra:le(n.extra)?JSON.parse(n.extra):{},s=P(h({},o),{mp_id:(i=n.mp_id)!=null?i:"",mp_version:(a=n.mp_version)!=null?a:""});_("trackAsync",{event:e,data:s,webviewId:r})},{track:K,trackPerformance:Fn}=En(ks,{type:Ft.AppSDK,platform:"native",jssdk_version:(On=(Nn=g.sdkInfo)==null?void 0:Nn.jssdkVersion)!=null?On:"1.0.0",mp_id:g.mpId,mp_version:g.mpVersion}),Dn=O();Dn.registerCommand("ReportSDK.traceSystemTimeline",({event:e,duration:t,extra:r})=>{Fn(e,t,r)});Dn.registerCommand("ReportSDK.traceSystem",({event:e,info:t})=>{K(e,t)});xe=new q,$=new Ge(K,xe)});function Mn(){let e=null,t=window.fetch,r=()=>{e=document.createElement("style"),e.setAttribute("data-jolibox-sdk","default-styles");let s=`
|
|
2
2
|
html[data-jolibox-root] {
|
|
3
3
|
height: 100%;
|
|
4
4
|
margin: 0;
|
|
@@ -16,6 +16,6 @@ var Ts=Object.create;var Ce=Object.defineProperty,ks=Object.defineProperties,Es=
|
|
|
16
16
|
min-height: 100dvh;
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
`;e.textContent=o;let i=document.head||document.getElementsByTagName("head")[0];i.insertBefore(e,i.firstChild),document.documentElement.setAttribute("data-jolibox-root","")},n=()=>{function o(a){return g(this,null,function*(){let c=a instanceof URL?a.href:a,l=new Promise((u,m)=>{let p=new XMLHttpRequest;p.open("GET",c),p.responseType="arraybuffer",p.addEventListener("load",()=>u(p.response)),p.addEventListener("error",m),p.send()});try{let u=yield l;return new Response(u,{headers:new Headers([["Content-Type","application/wasm"]])}).clone()}catch(u){throw console.error("Failed to load wasm:",u),u}})}let i=window.fetch;window.fetch=(a,c)=>{let l=a instanceof URL?a.href:a.toString();return l.endsWith(".wasm")?o(l):i(a,c)}},s=()=>{e!=null&&e.parentNode&&(e.parentNode.removeChild(e),e=null),document.documentElement.removeAttribute("data-jolibox-root"),window.fetch=t};return r(),n(),s}var Un=f(()=>{"use strict"});var Ge,Mn=f(()=>{"use strict";Ge=class{constructor(t){this.track=t;this.adBreakIsShowing=!1;this.reportPageJumpOut=()=>{this.track("AdBreakJumpOut",{context:"AdsActionDetection"})};this.reportPageHide=()=>{this.track("AdBreakHide",{context:"AdsActionDetection"})};window.addEventListener("visibilitychange",()=>{document.hidden&&this.adBreakIsShowing&&this.reportPageHide()}),window.addEventListener("beforeunload",r=>{this.adBreakIsShowing&&this.reportPageJumpOut()})}}});var Ln,ze,Bn=f(()=>{"use strict";Ln="jolibox-sdk-ads-callbreak-timestamps",ze=class{constructor(t,r){this.checkNetwork=t;this.maxAllowedAdsForTime=8;this.bannedForTimeThreshold=6e4;this.bannedReleaseTime=6e4;this.isBanningForTime=!1;this.releaseBannedForTimeTimeout=null;this.maxAllowedAdsForSession=200;this.bannedForSessionThreshold=6e5;this.isBanningForSession=!1;this.initialThreshold=2e3;this._callAdsTimestampsForTime=[];this.callAdsTimestampsForSession=[];this.initTimestamp=0;this.initCallAdsTimestampsForTime=()=>{var t;try{let r=JSON.parse((t=window.localStorage.getItem(Ln))!=null?t:"[]");Array.isArray(r)?this._callAdsTimestampsForTime=r:this._callAdsTimestampsForTime=[]}catch(r){this._callAdsTimestampsForTime=[]}};this.setReleaseBannedForTime=()=>{this.releaseBannedForTimeTimeout&&(window.clearTimeout(this.releaseBannedForTimeTimeout),this.releaseBannedForTimeTimeout=null),this.releaseBannedForTimeTimeout=window.setTimeout(()=>{this.isBanningForTime=!1,this.releaseBannedForTimeTimeout=null},this.bannedReleaseTime)};this.checkShouldBannedInitial=()=>{if(Date.now()-this.initTimestamp<=this.initialThreshold)return"BLOCK_INITIAL"};this.checkShouldBannedForSession=t=>{if(this.isBanningForSession)return"BANNED_FOR_SESSION";let r=Date.now();if(this.callAdsTimestampsForSession=this.callAdsTimestampsForSession.concat({timestamp:r,type:t}),this.callAdsTimestampsForSession.length!==1&&(this.callAdsTimestampsForSession.length>this.maxAllowedAdsForSession&&(this.callAdsTimestampsForSession=this.callAdsTimestampsForSession.slice(-this.maxAllowedAdsForSession)),this.callAdsTimestampsForSession.length===this.maxAllowedAdsForSession&&r-this.callAdsTimestampsForSession[0].timestamp<=this.bannedForSessionThreshold))return this.isBanningForSession=!0,"BANNED_FOR_SESSION"};this.checkShouldBannedForTime=t=>{if(this.isBanningForTime)return"WAITING_BANNED_RELEASE";let r=Date.now();if(this.callAdsTimestampsForTime=this.callAdsTimestampsForTime.concat({timestamp:r,type:t}),this.callAdsTimestampsForTime.length!==1&&(this.callAdsTimestampsForTime.length>this.maxAllowedAdsForTime&&(this.callAdsTimestampsForTime=this.callAdsTimestampsForTime.slice(-this.maxAllowedAdsForTime)),this.callAdsTimestampsForTime.length===this.maxAllowedAdsForTime&&r-this.callAdsTimestampsForTime[0].timestamp<=this.bannedForTimeThreshold))return this.isBanningForTime=!0,this.setReleaseBannedForTime(),"BANNED_FOR_TIME"};this.checkAdsDisplayPermission=t=>{if(!this.checkNetwork())return"NETWORK_NOT_OK";let r=this.checkShouldBannedInitial();if(r)return r;let n=this.checkShouldBannedForSession(t);if(n)return n;let s=this.checkShouldBannedForTime(t);return s||"ALLOWED"};var n,s,o,i,a,c;if(this.maxAllowedAdsForTime=(n=r==null?void 0:r.maxAllowedAdsForTime)!=null?n:8,this.bannedForTimeThreshold=(s=r==null?void 0:r.bannedForTimeThreshold)!=null?s:6e4,this.bannedReleaseTime=(o=r==null?void 0:r.bannedReleaseTime)!=null?o:6e4,this.maxAllowedAdsForSession=(i=r==null?void 0:r.maxAllowedAdsForSession)!=null?i:200,this.bannedForSessionThreshold=(a=r==null?void 0:r.bannedForSessionThreshold)!=null?a:6e5,this.initialThreshold=(c=r==null?void 0:r.initialThreshold)!=null?c:2e3,this.maxAllowedAdsForTime<=1)throw new Error("maxAllowedAdsForTime must be greater than 1");if(this.bannedForTimeThreshold<0)throw new Error("bannedForTimeThreshold must be greater than or equal to 0");if(this.bannedReleaseTime<this.bannedForTimeThreshold)throw new Error("bannedReleaseTime must be greater than or equal to bannedForTimeThreshold");if(this.initialThreshold<0)throw new Error("initialThreshold must be greater than or equal to 0");this.initCallAdsTimestampsForTime(),this.initTimestamp=Date.now()}get callAdsTimestampsForTime(){return this._callAdsTimestampsForTime}set callAdsTimestampsForTime(t){try{window.localStorage.setItem(Ln,JSON.stringify(t))}catch(r){console.error("Failed to save timestamps")}this._callAdsTimestampsForTime=t}}});var We,jn=f(()=>{"use strict";K();We=class{constructor(t){this.httpClient=t;this.configs=null;this.firstRun=!0;this.init()}init(){return g(this,null,function*(){try{this.configs=yield this.httpClient.get("/api/fe-configs/js-sdk/ads-channel-config")}catch(t){}})}shouldBypassCallingInterstitial(){var r,n;let t;if(!this.configs)this.init(),t=!this.firstRun;else{let s=(r=v.channel)!=null?r:"",o=this.configs[s],i=(n=o==null?void 0:o.interstitialRate)!=null?n:1;t=Math.random()<i}return this.firstRun=!1,t}}});var ve,Qe,er=f(()=>{"use strict";Mn();Bn();K();jn();E();ve=new q,Qe=class{constructor(t,r,n){this.track=t;this.httpClient=r;this.checkNetwork=n;this.configured=!1;this.config={};this.getGameId=()=>v.mpId;this.getTestAdsMode=()=>v.testAdsMode;this.asyncLoad=()=>g(this,null,function*(){var i,a,c,l,u;let t="ca-pub-7171363994453626",r,n,s=window.encodeURIComponent(window.btoa((i=this.getGameId())!=null?i:"")),o=(a=this.getTestAdsMode())!=null?a:!1;try{let m=yield this.httpClient.get("/public/ads",{query:{objectId:s,testAdsMode:`${o}`}});t=(c=m.data)==null?void 0:c.clientId,r=(l=m.data)==null?void 0:l.channelId,n=(u=m.data)==null?void 0:u.unitId}catch(m){console.error("Failed to fetch client info",m)}this.clientId=t,this.channelId=r,this.unitId=n});this.asyncInit=t=>g(this,null,function*(){var s;if(typeof window=="undefined")return;yield this.asyncLoad();let r="google-adsense",n=(s=this.getTestAdsMode())!=null?s:!1;if(!document.getElementById(r)&&this.clientId){let o=document.createElement("script");o.id=r,o.async=!0,o.crossOrigin="anonymous",o.src=`https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=${this.clientId}`,n&&o.setAttribute("data-adbreak-test","on"),this.channelId&&o.setAttribute("data-ad-channel",this.channelId),document.head.appendChild(o),this.track("LoadAdsenseCompleted",null)}});this.push=(t={})=>{window.adsbygoogle.push(t)};this.wrapAdBreakParams=t=>{if((n=>n.type==="preroll")(t)){ve.emit("isAdShowing",!0);let n=t.adBreakDone,s=o=>{ve.emit("isAdShowing",!1),n&&n(o)};return C(h({},t),{adBreakDone:s})}else{let n=t.beforeAd,s=t.afterAd,o=()=>{ve.emit("isAdShowing",!0),this.track("CallBeforeAd",{}),n&&n()},i=()=>{ve.emit("isAdShowing",!1),this.track("CallAfterAd",{}),s&&s()};return C(h({},t),{beforeAd:o,afterAd:i})}};this.adConfig=t=>{let s=t,{onReady:r}=s,n=ce(s,["onReady"]);this.track("CallAdConfig",n),this.configured?console.warn("Ad config already set, skipping"):(this.configured=!0,this.push(t))};this.adBreak=t=>{var c,l,u,m;if(!this.getGameId()){console.warn("Game ID is not set, skip calling adBreak");return}if(t.type!=="reward"&&!this.channelPolicy.shouldBypassCallingInterstitial()){(c=t.adBreakDone)==null||c.call(t,{breakType:t.type,breakName:"skipInterstitials",breakFormat:"interstitial",breakStatus:"viewed"});return}let r=this.antiCheating.checkAdsDisplayPermission(t.type==="reward"?"reward":"interstitial");switch(r){case"NETWORK_NOT_OK":case"BANNED_FOR_SESSION":console.warn("Ads not allowed",r),(l=t.adBreakDone)==null||l.call(t,{breakType:t.type,breakName:r,breakFormat:t.type==="reward"?"reward":"interstitial",breakStatus:"noAdPreloaded"}),this.track("PreventAdsCheating",{reason:r});return;case"BLOCK_INITIAL":case"BANNED_FOR_TIME":case"WAITING_BANNED_RELEASE":console.warn("Ads not allowed",r),(u=t.adBreakDone)==null||u.call(t,{breakType:t.type,breakFormat:t.type==="reward"?"reward":"interstitial",breakStatus:"viewed"}),this.track("PreventAdsCheating",{reason:r});return;default:break}let n=t.type,s=t.adBreakDone,o=p=>{var b;this.adsActionDetection.adBreakIsShowing=!1,this.track("CallAdBreakDone",{breakType:p.breakType,breakName:(b=p.breakName)!=null?b:"",breakFormat:p.breakFormat,breakStatus:p.breakStatus}),s&&s(p)};if(t.adBreakDone=o,t.type==="reward"){let p=t.beforeReward,b=T=>()=>{this.track("CallShowAdFn",null),T()},_=T=>{p&&p(b(T))};t.beforeReward=_}let i;switch(n){case"preroll":i={type:n};break;case"start":case"pause":case"next":case"browse":case"reward":i={type:n,name:(m=t.name)!=null?m:""};break}this.adsActionDetection.adBreakIsShowing=!0,this.track("CallAdBreak",i);let a=this.wrapAdBreakParams(t);this.push(a),window.JoliTesterBridge&&console.log("joli-fullscreen-ad-show")};this.adUnit=t=>g(this,null,function*(){var p,b,_,T;if(this.track("CallAdUnit",{adFormat:(b=(p=t.adFormat)==null?void 0:p.toString())!=null?b:null,fullWidthResponsive:(_=t.fullWidthResponsive)!=null?_:null}),this.clientId||(yield this.asyncLoad()),document.querySelector("#jolibox-ads")){console.warn("Ad unit already set, skipping");return}let{el:r,slot:n,adFormat:s,fullWidthResponsive:o,style:i}=t,a;if(!r)throw new Error("targeting element is required");if(typeof r=="string"?a=document.querySelector(r):a=r,!a)throw new Error("targeting element not found");let c=n;if(c||(c=this.unitId),!c)throw new Error("slot is required");let l=typeof s=="object"&&Array.isArray(s)?s.join(", "):s,u=document.createElement("ins");if(u.className="adsbygoogle",u.id="jolibox-ads",u.style.display="block",u.setAttribute("data-ad-client",this.clientId),u.setAttribute("data-ad-slot",c),l&&u.setAttribute("data-ad-format",l),o&&u.setAttribute("data-full-width-responsive",o),i&&u.setAttribute("style",i),(T=this.getTestAdsMode())!=null?T:!1){let y=document.createElement("div");y.style.position="absolute",y.style.top="0",y.style.left="0",y.style.width="100%",y.style.height="100%",y.style.display="flex",y.style.justifyContent="center",y.style.alignItems="center",y.style.backgroundColor="rgba(0, 0, 0, 0.5)",y.style.color="white",y.innerHTML="Test Ad",u.style.position="relative",a.appendChild(u),u.appendChild(y)}else a.appendChild(u),new MutationObserver(S=>{S.forEach(R=>{if(R.type==="attributes"&&R.attributeName==="data-ad-status"){let w=u.getAttribute("data-ad-status");this.track("AdSenseUnitStatusChanged",{status:w!=null?w:"null"})}})}).observe(u,{attributes:!0,attributeFilter:["data-ad-status"]}),this.push({})});this.antiCheating=new ze(n),this.adsActionDetection=new Ge(this.track),this.channelPolicy=new We(r)}init(t){this.track("CallAdsInit",null),typeof window!="undefined"&&(this.config=t!=null?t:{},window.adsbygoogle=window.adsbygoogle||[],this.asyncInit(t))}}});var $n={};hr($n,{config:()=>ko});function vo(){ee.on("onDocumentReady",()=>{var e;(e=ie)==null||e.onDocumentReady(window.location.href),V("onDocumentReady",{start_timestamp:Ze,timestamp:Date.now()})})}function bo(e){v.mpType==="game"&&j.start(e)}function To(){Q("onJoliboxServiceReady",({runtimeInfo:e,loadDuration:t})=>{e&&v.onEnvConfigChanged({hostUserInfo:e}),ee.emit("LifecycleEvent.onReady",h({},v.hostUserInfo?v.hostUserInfo:{isLogin:!1})),V("joliboxServiceReady",{start_timestamp:Ze,timestamp:Date.now()}),bo(t)}),Q("onBeforeExit",({uuid:e})=>{var t;(t=ie)==null||t.doExit(e)})}function ko(){Ze=Date.now(),To(),vo(),Ye=Dn()}var Ye,Jn,Xe,Ze,Hn=f(()=>{"use strict";H();Je();K();E();ae();Un();er();z.onReady(()=>{});Jn=()=>{V("onBeforeExit",{timestamp:Date.now()}),Ye==null||Ye(),j.close(Date.now()-Ze)};z.doExit(()=>g(void 0,null,function*(){return Xe?!0:Ie(v.shouldInterupt)?(v.shouldInterupt||Jn(),v.shouldInterupt):(Jn(),!1)}));Xe=!1;ve.on("isAdShowing",e=>{Xe=e,Ie(Xe)&&P("updateContainerConfigSync",{displayCapsuleButton:!Xe,webviewId:v.webviewId})})});function Vn(e){let t=Ot.config[e];return t||(t={},Ot.config[e]=t),(r,n)=>{if(t[r]){J.warn(`[can i use] ${r} already registered`);return}t[r]=h({},n)}}var Kn=f(()=>{"use strict";E()});function tr(e){qn=e}function et(e){return e===null||typeof e!="object"?e:Array.isArray(e)?e.map(t=>et(t)):Object.keys(e).reduce((t,r)=>(t[r]=et(e[r]),t),{})}function re(e){return typeof e=="number"}function rr(e){let t=nr(e);switch(t){case"string":return`"${e}"`;case"number":case"boolean":case"null":case"undefined":return String(e);default:return`a(n) ${t}`}}function nr(e){return typeof e=="function"?"function":Object.prototype.toString.call(e).slice(8).slice(0,-1).toLowerCase()}var qn,O,tt,rt,nt,st,be,ot,it,at,ct,lt,dt,ut,mt,pt,ft,ht,gt,sr=f(()=>{"use strict";qn=!1;O=class{constructor(){this.errors=[];this.hasFallback=!1;this.hasDefault=!1;this._optional=!1}fail(t){if(qn)if(typeof t=="string")this.errors.push(t);else{let r=`${this.path} should be ${t.expect}`;this._optional&&t.expect!=="undefined"?r+=" or undefined, ":r+=", ",r+=`but got ${rr(t.actual)}`,this.errors.push(r)}return!1}fallback(t){return this.hasFallback=!0,this._fallback=t,this}get fallbackValue(){return et(this._fallback)}default(t){return this.hasDefault=!0,this._default=t,this}get defaultValue(){return typeof this._default=="function"?this._default:et(this._default)}optional(){return this._optional=!0,this}};tt=class extends O{validate(t){return this._optional&&t===void 0?!0:re(t)?re(this._min)&&t<this._min?this.fail(`the value of ${this.path} should be greater than or equal to ${this._min}`):re(this._max)&&t>this._max?this.fail(`the value of ${this.path} should be less than or equal to ${this._max}`):re(this._greater)&&t<=this._greater?this.fail(`the value of ${this.path} should be greater than ${this._greater}`):this._isInt&&t!==Math.floor(t)?this.fail(`the value of ${this.path} should be integer but got ${t}`):!0:this.fail({expect:"number",actual:t})}min(t){return this._min=t,this}max(t){return this._max=t,this}isInt(t){return this._isInt=t,this}greater(t){return this._greater=t,this}},rt=class extends O{validate(t){return this._optional&&t===void 0?!0:typeof t!="boolean"?this.fail({expect:"boolean",actual:t}):!0}},nt=class extends O{validate(t){if(this._optional&&t===void 0)return!0;if(typeof t!="string")return this.fail({expect:"string",actual:t});if(re(this._maxLength)&&t.length>this._maxLength)return this.fail(`the length of ${this.path} should be less than or equal to ${this._maxLength}`);if(re(this._minLength)&&t.length<this._minLength)return this.fail(`the length of ${this.path} should be greater than or equal to ${this._minLength}`);if(typeof this._pattern=="string"){if(!new RegExp(this._pattern).test(t))return this.fail(`${this.path} should match pattern "${this._pattern}"`)}else if(this._pattern&&!this._pattern.test(t))return this.fail(`${this.path} should match pattern "${this._pattern.toString()}"`);return!0}minLength(t){return this._minLength=t,this}maxLength(t){return this._maxLength=t,this}pattern(t){return this._pattern=t,this}},st=class extends O{validate(t){return this._optional&&t===void 0?!0:typeof t!="symbol"?this.fail({expect:"symbol",actual:t}):!0}},be=class extends O{validate(t){return!0}},ot=class extends O{validate(t){return t!==void 0?this.fail({expect:"undefined",actual:t}):!0}},it=class extends O{validate(t){return this._optional&&t===void 0?!0:t!==null?this.fail({expect:"null",actual:t}):!0}},at=class extends O{validate(t){return this._optional&&t===void 0?!0:typeof t!="function"?this.fail({expect:"function",actual:t}):!0}},ct=class extends O{constructor(...t){super(),this._items=t}validate(t){if(this._optional&&t===void 0)return!0;if(!this._items.includes(t)){let r=this._items.map(n=>JSON.stringify(n)).join(", ");return this.fail(`expect ${this.path} to be one of ${r}, but got ${rr(t)}`)}return!0}},lt=class extends O{constructor(r){super();this._item=r}validate(r){if(this._optional&&r===void 0)return!0;if(!Array.isArray(r))return this.fail({expect:"array",actual:r});if(re(this._minItems)&&r.length<this._minItems)return this.fail(`the length of ${this.path} should be greater than or equal to ${this._minItems}`);if(re(this._maxItems)&&r.length>this._maxItems)return this.fail(`the length of ${this.path} should be less than or equal to ${this._maxItems}`);if(re(this._length)&&r.length!==this._length)return this.fail(`the length of ${this.path} should be equal to ${this._length}`);let n=this._item;if(!n)return!0;let s=!0;if(r.forEach((o,i)=>{if(n.path=`${this.path}[${i}]`,n.errors=this.errors,o===void 0&&n.hasDefault){r[i]=n.defaultValue;return}n.validate(o)||(n.hasFallback?r[i]=n.fallbackValue:s=!1)}),this._uniqueItems){let o=new Map;for(let i in r)o.has(r[i])?s=this.fail(`${this.path} should NOT have duplicate items (${this.path}[${o.get(r[i])}] and ${this.path}[${i}] are identical)`):o.set(r[i],i)}return s}minItems(r){return this._minItems=r,this}maxItems(r){return this._maxItems=r,this}uniqueItems(){return this._uniqueItems=!0,this}length(r){return this._length=r,this}},dt=class extends O{constructor(r){super();this._value=r}validate(r){if(this._optional&&r===void 0)return!0;if(nr(r)!=="object")return this.fail({expect:"object",actual:r});let s=r,o=this._value;o.errors=this.errors;let i=!0;for(let a in s){let c=s[a];if(/^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/.test(a)?o.path=`${this.path}.${a}`:o.path=`${this.path}["${a}"]`,!(c===void 0&&o._optional)){if(c===void 0&&o.hasDefault){s[a]=o.defaultValue;continue}o.validate(c)||(o.hasFallback?s[a]=o.fallbackValue:i=!1)}}return i}},ut=class extends O{constructor(r={}){super();this._object=r}validate(r){if(this._optional&&r===void 0)return!0;if(nr(r)!=="object")return this.fail({expect:"object",actual:r});let n=r,s=!0;for(let o in this._object){let i=n[o],a=this._object[o];if(a.errors=this.errors,/^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/.test(o)?a.path=`${this.path}.${o}`:a.path=`${this.path}["${o}"]`,!(a._optional&&i===void 0)){if(i===void 0&&a.hasDefault){n[o]=a.defaultValue;continue}a.validate(i)||(a.hasFallback?n[o]=a.fallbackValue:s=!1)}}return s}},mt=class extends O{constructor(r){super();this.value=r}validate(r){return r===void 0&&this._optional?!0:r!==this.value?this.fail({expect:rr(this.value),actual:r}):!0}},pt=class extends O{constructor(...t){super(),this._items=t}validate(t){if(t===void 0&&this._optional)return!0;let r=[],n=!1,s=this._items.length;for(let o=0;o<s;o++){let i=this._items[o];if(i.errors=[],i.path=this.path,!i.validate(t))r.push(i.errors.join("; "));else if(!n){n=!0;break}}if(!n){let o=r.join(`
|
|
20
|
-
or `);this.errors.push(
|
|
21
|
-
`);throw e.errors.length=0,tr(!1),new TypeError(n)}}var d,ir=f(()=>{"use strict";sr();sr();d={object(e){return new ut(e)},array(e){return new lt(e)},tuple(...e){return new ft(...e)},literal(e){return new mt(e)},or(...e){return new pt(...e)},symbol(){return new st},record(e){return new dt(e)},function(){return new at},boolean(){return new rt},string(){return new nt},number(){return new tt},undefined(){return new ot},null(){return new it},unknown(){return new be},any(){return new be},as(){return new be},arraybuffer(){return new ht},enum(...e){return new ct(...e)},typedarray(e){return new gt(e)}}});var yt,Gn,zn=f(()=>{"use strict";E();G();ir();oe();yt=1,Gn=e=>{function t(n,s){return(...o)=>{var m,p,b,_;let i=Date.now(),a={method:n,trace_id:yt};yt+=1;let c="SUCCESS",l=`${n}:ok`,u=0;try{if(s.paramsSchema)try{or(s.paramsSchema,o,"params")}catch(R){throw Mt(`${n}:fail ${R.message}`)}let T=s.implement(...o),y=T,S=`${n}:ok`;if(T&&"code"in T){let{code:R,data:w,message:U}=T;c=R,y=w,S=U}return{code:c,message:S,data:y}}catch(T){let y=T;u=(p=(m=y.code)!=null?m:y.errNo)!=null?p:2e3,c="FAILURE";let S=(_=(b=y.message)!=null?b:y.errMsg)!=null?_:`${T}`;return l=`${n}:${c} ${S.replace(/^\S+:(fail|cancel)\s?/,"")}`,M(new Ae(l,u)),{code:c,message:l}}finally{let T=Date.now()-i;e("apiInvoked",C(h({},a),{duration:T,status:c}))}}}function r(n,s){return(...o)=>g(this,null,function*(){var p,b,_,T;let i=kr(o)?o:[o],a=Date.now(),c={method:n,trace_id:yt};yt+=1;let l=`${n}:ok`,u="SUCCESS",m={code:u,message:l};try{if(s.paramsSchema)try{or(s.paramsSchema,i,"params")}catch(R){throw Mt(R.message)}let S=yield s.implement(...i);if(S&&"code"in S){let{code:R,data:w,message:U}=S;u=R,l=U,S=w}return Object.assign(m,{code:u,message:l,data:S}),m}catch(y){let S=y,R=(b=(p=S.code)!=null?p:S.errNo)!=null?b:2e3;u="FAILURE";let w=(T=(_=S.message)!=null?_:S.errMsg)!=null?T:`${y}`,U=`${n}:${u} ${w.replace(/^\S+:(fail|cancel)\s?/,"")}`;return Object.assign(m,{code:u,message:U}),M(new Ae(U,R)),m}finally{let y=Date.now()-a;e("apiInvoked",C(h({},c),{duration:y,status:u}))}})}return{createAPI:r,createSyncAPI:t}}});var F,D,k,Y=f(()=>{"use strict";Kn();ae();zn();ir();({createAPI:F,createSyncAPI:D}=Gn(V)),k=Vn("native")});var Wn,So,wo,Io,_o,Qn=f(()=>{"use strict";E();Y();H();Wn=N(),So="env",wo="getSystemInfoSync",Io=D(wo,{implement:()=>{var r;let e=P("envSync"),{data:t}=e;return{system:t.deviceInfo.system,platform:t.deviceInfo.platform,version:t.sdkInfo.jssdkVersion,pixelRatio:t.deviceInfo.pixelRatio,language:t.deviceInfo.lang,brand:t.deviceInfo.brand,appName:(r=t.hostInfo)==null?void 0:r.appName,SDKVersion:t.sdkInfo.jssdkVersion}}}),_o=D(So,{implement:()=>{var t;let e=P("envSync");return(t=e==null?void 0:e.data)!=null?t:void 0}});Wn.registerCommand("API.getSystemInfoSync",Io);Wn.registerCommand("API.env",_o);k("env",{version:"1.0.0"});k("getSystemInfoSync",{version:"1.0.0"})});var Yn=fr(ar=>{"use strict";E();Y();G();H();ae();K();var Ao="exitGame",Ro="onReady",xo="onJoliboxShow",Po="onJoliboxHide",vt=N(),bt=Ue(M),Co=F(Ao,{paramsSchema:d.tuple(d.function(),d.boolean().optional().default(!1)),implement:(e,t=!1)=>g(ar,null,function*(){bt(e).call(ar),Ie(v.shouldInterupt)&&!v.shouldInterupt&&v.from&&on("onRetentionResult",{shouldStay:t},v.from,!0),yield $("exitAppAsync")})}),No=D(xo,{paramsSchema:d.tuple(d.function()),implement(e){let t=bt(e);Q("onJoliboxEnterForeground",()=>{t.call(this),Re.emit("visible",!0)})}}),Oo=D(Po,{paramsSchema:d.tuple(d.function()),implement(e){let t=bt(e);Q("onJoliboxEnterBackground",()=>{t.call(this),Re.emit("visible",!1)})}}),Fo=D(Ro,{paramsSchema:d.tuple(d.function()),implement(e){let t=bt(e);ee.on("LifecycleEvent.onReady",r=>{t(r)})}});vt.registerCommand("LifecycleSDK.exit",Co);vt.registerCommand("LifecycleSDK.onReady",Fo);vt.registerCommand("LifecycleSDK.onJoliboxShow",No);vt.registerCommand("LifecycleSDK.onJoliboxHide",Oo);k("lifeCycle.exit",{version:"1.0.0"});k("lifeCycle.onReady",{version:"1.0.0"});k("lifeCycle.onJoliboxShow",{version:"1.0.0"});k("lifeCycle.onJoliboxHide",{version:"1.0.0"})});function Xn(e){let t={};if(!B(e))return t;for(let[r,n]of Object.entries(e)){let s=r.toLocaleLowerCase();n?typeof n=="object"?t[s]=Object.prototype.toString.call(n):t[s]=String(n):t[s]=""}return t}function Zn(e="GET"){if(e==="")return"POST";let t=e.toUpperCase();return["GET","OPTIONS","HEAD","POST","PUT","DELETE","TRACE","CONNECT","PATCH"].includes(t)?t:"GET"}function es(e,t=!1){if(e)return t||e>0&&e<=6e4?Math.ceil(e):6e4}function ts(e,t,r){if(["POST","PUT","PATCH"].includes(t)||!B(r))return e;let[n,s=""]=e.split("?"),o=JSON.stringify(h(h({},JSON.parse(s)),r));return`${n}?${o}`}var rs=f(()=>{"use strict";E()});var Do,Uo,cr,lr,ns,Mo,Lo,Bo,ss=f(()=>{"use strict";oe();Xt();Y();rs();E();G();Do=15,Uo=Ve("createRequestTaskSync","operateRequestTaskSync",{type:"public"}),cr=0,lr=[],ns=Ue(M),Mo=(e,t)=>{let r=e.filter(t),n=e.filter(s=>!t(s));return e.length=0,e.push(...n),r},Lo=e=>{let t=new se,r=()=>{};return F("request",{paramsSchema:d.tuple(d.object({url:d.string(),method:d.string(),header:d.object(),data:d.object().optional(),query:d.object().optional(),dataType:d.string().default("json"),responseType:d.string().default("text"),enableCache:d.boolean().default(!1),appendHostCookie:d.boolean().default(!0),timeout:d.number().default(3e4),success:d.function(),fail:d.function()})),implement(s){let o=()=>g(this,null,function*(){var a,c;let i=ns(s.fail);try{if(cr+=1,t.state!=="pending")return;let{data:l,dataType:u,responseType:m,enableCache:p,appendHostCookie:b}=s,_=Xn(s.header),T=Zn(s.method),y=es(s.timeout),S=ts(s.url,T,l),R=ns(s.success),w=Object.assign({},s,{method:T,header:_,data:T==="GET"||T==="HEAD"?void 0:l,enableCache:p,query:(a=s.query)!=null?a:{},dataType:u,responseType:m,appendHostCookie:b});y&&(w.timeout=y);let U=Uo(S,w);{let{response:I}=yield U,{code:A,data:ke,message:ne}=I;t.resolve({code:A!=null?A:"SUCCESS",data:ke,message:ne!=null?ne:"request:ok"}),R({code:"SUCCESS",message:"request:ok",data:ke})}}catch(l){t.reject(l),i({code:"FAILURE",message:"httpRequst: failed"})}finally{cr-=1,(c=lr.shift())==null||c()}});return cr>=Do?(r=()=>{Mo(lr,i=>i===o)},lr.push(o)):o(),t.promise}})(e),{abort(){t.reject(me({code:-1,msg:"request:fail abort"})),r()}}},Bo=N();Bo.registerCommand("HttpSDK.request",Lo);k("request",{version:"1.0.0"})});function Ko(e){let t=Object.prototype.toString.call(e).split(" ")[1].split("]")[0].toLocaleLowerCase();return Vo.includes(t)?t:""}function qo(e,t){try{switch(t){case"string":return e;case"object":return JSON.parse(e);case"number":return parseFloat(e);case"boolean":return e==="true";default:return""}}catch(r){return""}}function Go(e,t){try{switch(t){case"string":case"number":case"boolean":return`${e}`;case"object":return JSON.stringify(e);default:return""}}catch(r){return""}}var Tt,jo,Jo,$o,Ho,Cd,Nd,Vo,os=f(()=>{"use strict";Y();H();E();Ke();K();Tt=N(),jo=F("getLocalStorage",{paramsSchema:d.tuple(d.string()),implement(e){return g(this,null,function*(){let{response:t}=yield te(`/api/games/user-storage/${v.mpId}`,{method:"GET",responseType:"json",appendHostCookie:!0,query:{key:e}}),{data:{code:r,message:n,data:s}}=yield t;if(r==="SUCCESS")return{code:r,message:n,data:s==null?void 0:s.value};try{let{data:{data:o,dataType:i}}=yield $("getLocalStorageAsync",{key:e}),a=qo(o,i);return{code:r,message:`${n}. fallback to native`,data:a}}catch(o){return{code:"INTERNAL_ERROR",message:"[Jolibox SDK] get local storage failed",data:null}}})}});Tt.registerCommand("StorageSDK.getItem",jo);k("storage.getItem",{version:"1.0.0",properties:{key:"1.0.0",value:"1.0.0"}});Jo=F("setStorage",{paramsSchema:d.tuple(d.string(),d.or(d.string(),d.boolean(),d.number())),implement(e,t){return g(this,null,function*(){let r=v.mpId,n=typeof t=="string"?t:String(t),{response:s}=yield te(`/api/games/user-storage/${r}`,{method:"POST",responseType:"json",appendHostCookie:!0,data:{key:e,value:n}}),{data:{code:o,message:i}}=s,a=Ko(t),c=Go(t,a);return yield $("setLocalStorageAsync",{key:e,data:c,dataType:a}),o=="SUCCESS"?{code:o,message:i}:{code:o,message:`${i}. fallback to native`}})}});Tt.registerCommand("StorageSDK.setItem",Jo);k("storage.setItem",{version:"1.0.0",properties:{key:"1.0.0",value:"1.0.0"}});$o=F("removeStorage",{paramsSchema:d.tuple(d.string()),implement(e){return g(this,null,function*(){let t=v.mpId,{response:r}=yield te(`/api/games/user-storage/${t}/remove`,{method:"POST",responseType:"json",appendHostCookie:!0,data:{key:e}}),{data:{code:n,message:s}}=r;return yield $("removeLocalStorageAsync",{key:e}),n==="SUCCESS"?{code:n,message:s}:{code:n,message:"[Jolibox SDK] remove item succ"}})}});Tt.registerCommand("StorageSDK.removeItem",$o);k("storage.removeItem",{version:"1.0.0",properties:{key:"1.0.0"}});Ho=F("clearStorage",{implement(){return g(this,null,function*(){let e=v.mpId,{response:t}=yield te(`/api/games/user-storage/${e}/clear`,{method:"POST",appendHostCookie:!0});$("clearLocalStorageAsync");let{data:{code:r,message:n}}=t;return r==="SUCCESS"?{code:r,message:n}:{code:r,message:`${n}.fallback to native`}})}});Tt.registerCommand("StorageSDK.clear",Ho);k("storage.clear",{version:"1.0.0"});Cd=F("getStorageInfo",{implement(){return g(this,null,function*(){let{data:e}=yield $("getStorageInfoAsync");return e})}});k("getStorageInfo",{version:"1.0.0",success:{keys:"1.0.0",currentSize:"1.0.0",limitSize:"1.0.0"}});Nd=D("getStorageInfoSync",{implement(){return P("getStorageInfoSync")}}),Vo=["string","number","boolean","object",""]});var zo,Wo,Qo,dr,is=f(()=>{"use strict";E();H();Y();zo=D("showKeyboard",{paramsSchema:d.tuple(d.object({defaultValue:d.string().optional().default(""),multiple:d.boolean().optional().default(!1),maxLength:d.unknown().optional().default(1e5)})),implement(e){var n;let t=Math.floor((n=Number(e.maxLength))!=null?n:1e5),{defaultValue:r}=e;r&&t&&(r=r.slice(0,t)),P("showKeyboardSync",C(h({},e),{defaultValue:r,maxLength:t}))}});k("keyboard.showKeyboard",{version:"1.0.0",properties:{params:{defaultValue:"1.0.0",multiple:"1.0.0",confirmHold:"1.0.0",confirmType:"1.0.0",maxLength:"1.0.0"}},success:{errMsg:"1.0.0"}});Wo=D("updateKeyboard",{paramsSchema:d.tuple(d.object({value:d.string()})),implement(e){P("updateKeyboardSync",e)}});k("keyboard.updateKeyboard",{version:"1.0.0",properties:{params:{value:"1.0.0"}}});Qo=D("hideKeyboard",{implement(){P("hideKeyboardSync")}});k("keyboard.hideKeyboard",{version:"1.0.0"});dr=N();dr.registerCommand("KeyboardSDK.showKeyboard",zo);dr.registerCommand("KeyboardSDK.updateKeyboard",Wo);dr.registerCommand("KeyboardSDK.hideKeyboard",Qo)});var as=fr(he=>{"use strict";E();Y();ae();var Te=N(),Yo=F("levelFinished",{paramsSchema:d.tuple(d.string(),d.object({result:d.boolean(),duration:d.number()})),implement:(e,t)=>g(he,null,function*(){let{result:r,duration:n}=t,s=[];s.push(j.tracker("LevelFinished",{levelId:e,result:r,duration:n})),s.push(j.reporter({event:"COMPLETE_GAME_LEVEL"})),yield Promise.all(s)})}),Xo=F("taskFinished",{paramsSchema:d.tuple(d.string(),d.object({duration:d.number()})),implement:(e,t)=>g(he,null,function*(){let{duration:r}=t;return yield j.reportToNative({event:"TaskFinished",params:{duration:r,taskId:e}})})}),Zo=F("levelUpgrade",{paramsSchema:d.tuple(d.string(),d.string()),implement:(e,t)=>g(he,null,function*(){let r=[];r.push(j.reportToNative({event:"LevelUpgrade",params:{name:t,levelId:e}})),yield Promise.all(r)})}),ei=F("onHistoryUserLevel",{paramsSchema:d.tuple(d.number()),implement:e=>g(he,null,function*(){return yield j.reportToNative({event:"HistoryUserLevel",params:{level:e}})})}),ti=F("onHistoryUserScore",{paramsSchema:d.tuple(d.number()),implement:e=>g(he,null,function*(){return yield j.reportToNative({event:"HistoryUserScore",params:{score:e}})})}),ri=F("taskEvent",{paramsSchema:d.tuple(d.string(),d.object({tools:d.array(d.object({id:d.string(),name:d.string(),count:d.number(),description:d.string().optional(),price:d.object({amount:d.number(),unit:d.string()}).optional()})).optional(),awards:d.array(d.object({id:d.string(),name:d.string()})).optional()})),implement:(e,t)=>g(he,null,function*(){var n,s;let r=[];r.push(j.reportToNative({event:"TaskEvent",params:h({taskId:e},t)})),(s=(n=t.tools)==null?void 0:n.length)!=null&&s&&(r.push(j.reporter({event:"USE_GAME_ITEM"})),r.push(j.reportToNative({event:"UseGameItem",params:h({taskId:e},t)}))),yield Promise.all(r)})});Te.registerCommand("TaskTrackerSDK.levelFinished",Yo);Te.registerCommand("TaskTrackerSDK.taskFinished",Xo);Te.registerCommand("TaskTrackerSDK.levelUpgrade",Zo);Te.registerCommand("TaskTrackerSDK.historyUserLevel",ei);Te.registerCommand("TaskTrackerSDK.historyUserScore",ti);Te.registerCommand("TaskTrackerSDK.taskEvent",ri);k("TaskTrackerSDK.onLevelFinished",{version:"1.0.0",properties:{levelId:"1.0.0",params:{result:"1.0.0",duration:"1.0.0"}}});k("TaskTrackerSDK.onTaskFinished",{version:"1.0.0",properties:{taskId:"1.0.0",duration:"1.0.0"}});k("TaskTrackerSDK.onLevelUpgrade",{version:"1.0.0",properties:{levelId:"1.0.0",name:"1.0.0"}});k("TaskTrackerSDK.onHistoryUserLevel",{version:"1.0.0",properties:{level:"1.0.0"}});k("TaskTrackerSDK.onHistoryUserScore",{version:"1.0.0",properties:{score:"1.0.0"}});k("TaskTrackerSDK.onTaskEvent",{version:"1.0.0",properties:{taskId:"1.0.0",params:{tools:{id:"1.0.0",name:"1.0.0",count:"1.0.0",description:"1.0.0",price:{amount:"1.0.0",unit:"1.0.0"}},awards:{id:"1.0.0",name:"1.0.0"}}}})});var ni,si,cs,ls=f(()=>{"use strict";K();H();Y();E();oe();k("login",{version:"1.0.0",properties:{force:"1.0.0"},success:{errMsg:"1.0.0",code:"1.0.0",token:"1.0.0",isLogin:"1.0.0"}});k("checkSession",{version:"1.0.0",success:{errMsg:"1.0.0"}});ni=F("login",{implement(){return g(this,null,function*(){var i;let{data:{isLogin:e}}=yield $("checkLoginAsync");if(e)return{isLogin:!0,token:(i=v.hostUserInfo)==null?void 0:i.token};Q("onLoginStateChange",({isLogin:a,token:c,uuid:l})=>{l==r&&s({isLogin:a,token:c})});let t=P("loginSync"),{data:{uuid:r}}=t;if(!r)throw me({code:-1,msg:"login failed"});let{promise:n,resolve:s}=new se,o=yield n;return v.onEnvConfigChanged({hostUserInfo:o}),ee.emit("onLoginComplete",o),o})}}),si=F("checkSession",{implement(){return g(this,null,function*(){let{data:{isLogin:e}}=yield $("checkLoginAsync");return{isLogin:e}})}}),cs=N();cs.registerCommand("API.login",ni);cs.registerCommand("API.checkSession",si)});var kt,oi,Et,ii,ai,ci,li,ds=f(()=>{"use strict";E();Y();er();ae();Ke();H();kt=N(),oi=()=>{let{data:e}=P("getNetworkStatusSync");return!!(e!=null&&e.isConnected)},Et=new Qe(V,{get:(e,t)=>te(e,h({method:"GET",responseType:"json",appendHostCookie:!0},t)).then(r=>r.response.data)},oi),ii=D("adInit",{implement:e=>{Et.init(e)}}),ai=D("adConfig",{implement:e=>{Et.adConfig(e)}}),ci=D("adBreak",{implement:e=>{Et.adBreak(e)}}),li=D("adUnit",{implement:e=>{Et.adUnit(e)}});kt.registerCommand("AdsSDK.init",ii);kt.registerCommand("AdsSDK.adConfig",ai);kt.registerCommand("AdsSDK.adBreak",ci);kt.registerCommand("AdsSDK.adUnit",li);k("AdsSDK.init",{version:"1.0.0"});k("AdsSDK.adConfig",{version:"1.0.0"});k("AdsSDK.adBreak",{version:"1.0.0"});k("AdsSDK.adUnit",{version:"1.0.0"})});var di,ui,us=f(()=>{"use strict";E();H();Y();di=N(),ui=D("openSchemaSync",{paramsSchema:d.tuple(d.string()),implement:e=>{let t=P("openSchemaSync",{schema:e});if(t.errNo!==0)throw new Ct(t.errMsg,t.errNo)}});di.registerCommand("API.openSchemaSync",ui);k("openSchemaSync",{version:"1.1.9"})});var mi={};var fu,vu,ms=f(()=>{"use strict";Qn();fu=gr(Yn());ss();os();is();vu=gr(as());ls();ds();us()});var ps=Symbol.for("JOLIBOX_IMPLEMENT_INIT");if(window[ps])throw console.info("Jolibox Implement Already Initialized"),new Error("Jolibox Implement Already Initialized");window[ps]=!0;g(void 0,null,function*(){let[{config:e}]=yield Promise.all([Promise.resolve().then(()=>(Hn(),$n)),Promise.resolve().then(()=>(ms(),mi)),Promise.resolve().then(()=>(ae(),Fn))]);e()});
|
|
19
|
+
`;e.textContent=s;let i=document.head||document.getElementsByTagName("head")[0];i.insertBefore(e,i.firstChild),document.documentElement.setAttribute("data-jolibox-root","")},n=()=>{function s(a){return y(this,null,function*(){let c=a instanceof URL?a.href:a,l=new Promise((u,m)=>{let p=new XMLHttpRequest;p.open("GET",c),p.responseType="arraybuffer",p.addEventListener("load",()=>u(p.response)),p.addEventListener("error",m),p.send()});try{let u=yield l;return new Response(u,{headers:new Headers([["Content-Type","application/wasm"]])}).clone()}catch(u){throw console.error("Failed to load wasm:",u),u}})}let i=window.fetch;window.fetch=(a,c)=>{let l=a instanceof URL?a.href:a.toString();return l.endsWith(".wasm")?s(l):i(a,c)}},o=()=>{e!=null&&e.parentNode&&(e.parentNode.removeChild(e),e=null),document.documentElement.removeAttribute("data-jolibox-root"),window.fetch=t};return r(),n(),o}var Ln=f(()=>{"use strict"});var ze,Bn=f(()=>{"use strict";ze=class{constructor(t){this.track=t;this.adBreakIsShowing=!1;this.reportPageJumpOut=()=>{this.track("AdBreakJumpOut",{context:"AdsActionDetection"})};this.reportPageHide=()=>{this.track("AdBreakHide",{context:"AdsActionDetection"})};window.addEventListener("visibilitychange",()=>{document.hidden&&this.adBreakIsShowing&&this.reportPageHide()}),window.addEventListener("beforeunload",r=>{this.adBreakIsShowing&&this.reportPageJumpOut()})}}});var jn,We,Jn=f(()=>{"use strict";jn="jolibox-sdk-ads-callbreak-timestamps",We=class{constructor(t,r,n,o){this.track=t;this.httpClient=r;this.checkNetwork=n;this.maxAllowedAdsForTime=8;this.bannedForTimeThreshold=6e4;this.bannedReleaseTime=6e4;this.isBanningForTime=!1;this.releaseBannedForTimeTimeout=null;this.maxAllowedAdsForSession=200;this.bannedForSessionThreshold=6e5;this.isBanningForSession=!1;this.initialThreshold=2e3;this._callAdsTimestampsForTime=[];this.callAdsTimestampsForSession=[];this.initTimestamp=0;this.initCallAdsTimestampsForTime=()=>{var t;try{let r=JSON.parse((t=window.localStorage.getItem(jn))!=null?t:"[]");Array.isArray(r)?this._callAdsTimestampsForTime=r:this._callAdsTimestampsForTime=[]}catch(r){this._callAdsTimestampsForTime=[]}};this.setReleaseBannedForTime=()=>{this.releaseBannedForTimeTimeout&&(window.clearTimeout(this.releaseBannedForTimeTimeout),this.releaseBannedForTimeTimeout=null),this.releaseBannedForTimeTimeout=window.setTimeout(()=>{this.isBanningForTime=!1,this.releaseBannedForTimeTimeout=null},this.bannedReleaseTime)};this.checkShouldBannedInitial=()=>{if(Date.now()-this.initTimestamp<=this.initialThreshold)return"BLOCK_INITIAL"};this.checkShouldBannedForSession=t=>{if(this.isBanningForSession)return"BANNED_FOR_SESSION";let r=Date.now();if(this.callAdsTimestampsForSession=this.callAdsTimestampsForSession.concat({timestamp:r,type:t}),this.callAdsTimestampsForSession.length!==1&&(this.callAdsTimestampsForSession.length>this.maxAllowedAdsForSession&&(this.callAdsTimestampsForSession=this.callAdsTimestampsForSession.slice(-this.maxAllowedAdsForSession)),this.callAdsTimestampsForSession.length===this.maxAllowedAdsForSession&&r-this.callAdsTimestampsForSession[0].timestamp<=this.bannedForSessionThreshold))return this.isBanningForSession=!0,"BANNED_FOR_SESSION"};this.checkShouldBannedForTime=t=>{if(this.isBanningForTime)return"WAITING_BANNED_RELEASE";let r=Date.now();if(this.callAdsTimestampsForTime=this.callAdsTimestampsForTime.concat({timestamp:r,type:t}),this.callAdsTimestampsForTime.length!==1&&(this.callAdsTimestampsForTime.length>this.maxAllowedAdsForTime&&(this.callAdsTimestampsForTime=this.callAdsTimestampsForTime.slice(-this.maxAllowedAdsForTime)),this.callAdsTimestampsForTime.length===this.maxAllowedAdsForTime&&r-this.callAdsTimestampsForTime[0].timestamp<=this.bannedForTimeThreshold))return this.isBanningForTime=!0,this.setReleaseBannedForTime(),"BANNED_FOR_TIME"};this.checkAdsDisplayPermission=t=>{if(!this.checkNetwork())return"NETWORK_NOT_OK";let r=this.checkShouldBannedInitial();if(r)return r;let n=this.checkShouldBannedForSession(t);if(n)return n;let o=this.checkShouldBannedForTime(t);return o||"ALLOWED"};var s,i,a,c,l,u;if(this.maxAllowedAdsForTime=(s=o==null?void 0:o.maxAllowedAdsForTime)!=null?s:8,this.bannedForTimeThreshold=(i=o==null?void 0:o.bannedForTimeThreshold)!=null?i:6e4,this.bannedReleaseTime=(a=o==null?void 0:o.bannedReleaseTime)!=null?a:6e4,this.maxAllowedAdsForSession=(c=o==null?void 0:o.maxAllowedAdsForSession)!=null?c:200,this.bannedForSessionThreshold=(l=o==null?void 0:o.bannedForSessionThreshold)!=null?l:6e5,this.initialThreshold=(u=o==null?void 0:o.initialThreshold)!=null?u:2e3,this.maxAllowedAdsForTime<=1)throw new Error("maxAllowedAdsForTime must be greater than 1");if(this.bannedForTimeThreshold<0)throw new Error("bannedForTimeThreshold must be greater than or equal to 0");if(this.bannedReleaseTime<this.bannedForTimeThreshold)throw new Error("bannedReleaseTime must be greater than or equal to bannedForTimeThreshold");if(this.initialThreshold<0)throw new Error("initialThreshold must be greater than or equal to 0");this.initCallAdsTimestampsForTime(),this.initTimestamp=Date.now()}get callAdsTimestampsForTime(){return this._callAdsTimestampsForTime}set callAdsTimestampsForTime(t){try{window.localStorage.setItem(jn,JSON.stringify(t))}catch(r){console.error("Failed to save timestamps")}this._callAdsTimestampsForTime=t}report(t){this.track("PreventAdsCheating",{reason:t}),this.httpClient.post("/api/base/app-event",{data:{eventType:"PREVENT_ADS_CHEATING",adsInfo:{reason:t}}})}}});var Qe,$n=f(()=>{"use strict";J();Qe=class{constructor(t){this.httpClient=t;this.configs=null;this.firstRun=!0;this.init()}init(){return y(this,null,function*(){try{this.configs=yield this.httpClient.get("/api/fe-configs/js-sdk/ads-channel-config")}catch(t){}})}shouldBypassCallingInterstitial(){var r,n;let t;if(!this.configs)this.init(),t=!this.firstRun;else{let o=(r=g.channel)!=null?r:"",s=this.configs[o],i=(n=s==null?void 0:s.interstitialRate)!=null?n:1;t=Math.random()<i}return this.firstRun=!1,t}}});var ve,Ye,er=f(()=>{"use strict";Bn();Jn();J();$n();E();ve=new q,Ye=class{constructor(t,r,n){this.track=t;this.httpClient=r;this.checkNetwork=n;this.configured=!1;this.config={};this.getGameId=()=>g.mpId;this.getTestAdsMode=()=>g.testAdsMode;this.asyncLoad=()=>y(this,null,function*(){var i,a,c,l,u;let t="ca-pub-7171363994453626",r,n,o=window.encodeURIComponent(window.btoa((i=this.getGameId())!=null?i:"")),s=(a=this.getTestAdsMode())!=null?a:!1;try{let m=yield this.httpClient.get("/public/ads",{query:{objectId:o,testAdsMode:`${s}`}});t=(c=m.data)==null?void 0:c.clientId,r=(l=m.data)==null?void 0:l.channelId,n=(u=m.data)==null?void 0:u.unitId}catch(m){console.error("Failed to fetch client info",m)}this.clientId=t,this.channelId=r,this.unitId=n});this.asyncInit=t=>y(this,null,function*(){var o;if(typeof window=="undefined")return;yield this.asyncLoad();let r="google-adsense",n=(o=this.getTestAdsMode())!=null?o:!1;if(!document.getElementById(r)&&this.clientId){let s=document.createElement("script");s.id=r,s.async=!0,s.crossOrigin="anonymous",s.src=`https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=${this.clientId}`,n&&s.setAttribute("data-adbreak-test","on"),this.channelId&&s.setAttribute("data-ad-channel",this.channelId),document.head.appendChild(s),this.track("LoadAdsenseCompleted",null)}});this.push=(t={})=>{window.adsbygoogle.push(t)};this.wrapAdBreakParams=t=>{if((n=>n.type==="preroll")(t)){ve.emit("isAdShowing",!0);let n=t.adBreakDone,o=s=>{ve.emit("isAdShowing",!1),n&&n(s)};return P(h({},t),{adBreakDone:o})}else{let n=t.beforeAd,o=t.afterAd,s=()=>{var a;ve.emit("isAdShowing",!0),this.track("CallBeforeAd",{type:t.type,name:(a=t.name)!=null?a:""}),n&&n()},i=()=>{var a;ve.emit("isAdShowing",!1),this.track("CallAfterAd",{type:t.type,name:(a=t.name)!=null?a:""}),o&&o()};return P(h({},t),{beforeAd:s,afterAd:i})}};this.adConfig=t=>{let o=t,{onReady:r}=o,n=ce(o,["onReady"]);this.track("CallAdConfig",n),this.configured?console.warn("Ad config already set, skipping"):(this.configured=!0,this.push(t))};this.adBreak=t=>{var c,l,u,m;if(!this.getGameId()){console.warn("Game ID is not set, skip calling adBreak");return}if(t.type!=="reward"&&!this.channelPolicy.shouldBypassCallingInterstitial()){(c=t.adBreakDone)==null||c.call(t,{breakType:t.type,breakName:"skipInterstitials",breakFormat:"interstitial",breakStatus:"viewed"});return}let r=this.antiCheating.checkAdsDisplayPermission(t.type==="reward"?"reward":"interstitial");switch(r){case"NETWORK_NOT_OK":case"BANNED_FOR_SESSION":console.warn("Ads not allowed",r),(l=t.adBreakDone)==null||l.call(t,{breakType:t.type,breakName:r,breakFormat:t.type==="reward"?"reward":"interstitial",breakStatus:"noAdPreloaded"}),this.antiCheating.report(r);return;case"BLOCK_INITIAL":case"BANNED_FOR_TIME":case"WAITING_BANNED_RELEASE":console.warn("Ads not allowed",r),(u=t.adBreakDone)==null||u.call(t,{breakType:t.type,breakFormat:t.type==="reward"?"reward":"interstitial",breakStatus:"frequencyCapped"}),this.antiCheating.report(r);return;default:break}let n=t.type,o=t.adBreakDone,s=p=>{var b;this.adsActionDetection.adBreakIsShowing=!1,this.track("CallAdBreakDone",{breakType:p.breakType,breakName:(b=p.breakName)!=null?b:"",breakFormat:p.breakFormat,breakStatus:p.breakStatus}),o&&o(p)};if(t.adBreakDone=s,t.type==="reward"){let p=t.beforeReward,b=T=>()=>{this.track("CallShowAdFn",null),T()},R=T=>{p&&p(b(T))};t.beforeReward=R}let i;switch(n){case"preroll":i={type:n};break;case"start":case"pause":case"next":case"browse":case"reward":i={type:n,name:(m=t.name)!=null?m:""};break}this.adsActionDetection.adBreakIsShowing=!0,this.track("CallAdBreak",i);let a=this.wrapAdBreakParams(t);this.push(a),window.JoliTesterBridge&&console.log("joli-fullscreen-ad-show")};this.adUnit=t=>y(this,null,function*(){var p,b,R,T;if(this.track("CallAdUnit",{adFormat:(b=(p=t.adFormat)==null?void 0:p.toString())!=null?b:null,fullWidthResponsive:(R=t.fullWidthResponsive)!=null?R:null}),this.clientId||(yield this.asyncLoad()),document.querySelector("#jolibox-ads")){console.warn("Ad unit already set, skipping");return}let{el:r,slot:n,adFormat:o,fullWidthResponsive:s,style:i}=t,a;if(!r)throw new Error("targeting element is required");if(typeof r=="string"?a=document.querySelector(r):a=r,!a)throw new Error("targeting element not found");let c=n;if(c||(c=this.unitId),!c)throw new Error("slot is required");let l=typeof o=="object"&&Array.isArray(o)?o.join(", "):o,u=document.createElement("ins");if(u.className="adsbygoogle",u.id="jolibox-ads",u.style.display="block",u.setAttribute("data-ad-client",this.clientId),u.setAttribute("data-ad-slot",c),l&&u.setAttribute("data-ad-format",l),s&&u.setAttribute("data-full-width-responsive",s),i&&u.setAttribute("style",i),(T=this.getTestAdsMode())!=null?T:!1){let v=document.createElement("div");v.style.position="absolute",v.style.top="0",v.style.left="0",v.style.width="100%",v.style.height="100%",v.style.display="flex",v.style.justifyContent="center",v.style.alignItems="center",v.style.backgroundColor="rgba(0, 0, 0, 0.5)",v.style.color="white",v.innerHTML="Test Ad",u.style.position="relative",a.appendChild(u),u.appendChild(v)}else a.appendChild(u),new MutationObserver(S=>{S.forEach(x=>{if(x.type==="attributes"&&x.attributeName==="data-ad-status"){let w=u.getAttribute("data-ad-status");this.track("AdSenseUnitStatusChanged",{status:w!=null?w:"null"})}})}).observe(u,{attributes:!0,attributeFilter:["data-ad-status"]}),this.push({})});this.antiCheating=new We(t,r,n),this.adsActionDetection=new ze(this.track),this.channelPolicy=new Qe(r)}init(t){this.track("CallAdsInit",null),typeof window!="undefined"&&(this.config=t!=null?t:{},window.adsbygoogle=window.adsbygoogle||[],this.asyncInit(t))}}});function Hn(){return y(this,null,function*(){let{data:e}=_("envSync"),{orientation:t,webviewId:r}=e,n={__mpType:"miniApp",__transparent:!0,__orientation:t!=null?t:"VERTICAL",__showStatusBar:!1,__shouldInterupt:!1,__showCapsuleButton:!1};r&&(n=P(h({},n),{__from:r}));let o=g.encodeJoliSourceQuery(n),i=`${g.testMode,"https://G32115508989327465281365749294.app.jolibox.com"}/recommended-guide/${g.mpId}?appId=${g.mpId}&joliSource=${o}&navigationStyle=present`,a=new Q;return cn("onRetentionResult",({shouldStay:c})=>{a.resolve(c)}),setTimeout(()=>{_("openSchemaSync",{schema:i})},0),a.promise})}var Vn=f(()=>{"use strict";J();j();E()});var qn={};gr(qn,{config:()=>Is});function Es(){re.on("onDocumentReady",()=>{var e;(e=ie)==null||e.onDocumentReady(window.location.href),K("onDocumentReady",{start_timestamp:et,timestamp:Date.now()})})}function Ss(e){g.mpType==="game"&&$.start(e)}function ws(){Y("onJoliboxServiceReady",({runtimeInfo:e,loadDuration:t})=>{e&&g.onEnvConfigChanged({hostUserInfo:e}),re.emit("LifecycleEvent.onReady",h({},g.hostUserInfo?g.hostUserInfo:{isLogin:!1})),K("joliboxServiceReady",{start_timestamp:et,timestamp:Date.now()}),Ss(t)}),Y("onBeforeExit",({uuid:e})=>{var t;(t=ie)==null||t.doExit(e)})}function Is(){et=Date.now(),ws(),Es(),Xe=Mn()}var Xe,Kn,Ze,et,Gn=f(()=>{"use strict";j();$e();J();E();ae();Ln();er();Vn();z.onReady(()=>{});Kn=()=>{K("onBeforeExit",{timestamp:Date.now()}),Xe==null||Xe(),$.close(Date.now()-et)};z.doExit(()=>y(void 0,null,function*(){return Ze?!0:Ie(g.shouldInterupt)?(g.shouldInterupt||Kn(),g.shouldInterupt):(yield Hn())?!0:(Kn(),!1)}));Ze=!1;ve.on("isAdShowing",e=>{Ze=e,Ie(Ze)&&_("updateContainerConfigSync",{displayCapsuleButton:!Ze,webviewId:g.webviewId})})});function zn(e){let t=Ot.config[e];return t||(t={},Ot.config[e]=t),(r,n)=>{if(t[r]){H.warn(`[can i use] ${r} already registered`);return}t[r]=h({},n)}}var Wn=f(()=>{"use strict";E()});function tr(e){Qn=e}function tt(e){return e===null||typeof e!="object"?e:Array.isArray(e)?e.map(t=>tt(t)):Object.keys(e).reduce((t,r)=>(t[r]=tt(e[r]),t),{})}function ne(e){return typeof e=="number"}function rr(e){let t=nr(e);switch(t){case"string":return`"${e}"`;case"number":case"boolean":case"null":case"undefined":return String(e);default:return`a(n) ${t}`}}function nr(e){return typeof e=="function"?"function":Object.prototype.toString.call(e).slice(8).slice(0,-1).toLowerCase()}var Qn,F,rt,nt,ot,st,be,it,at,ct,lt,dt,ut,mt,pt,ft,ht,gt,yt,or=f(()=>{"use strict";Qn=!1;F=class{constructor(){this.errors=[];this.hasFallback=!1;this.hasDefault=!1;this._optional=!1}fail(t){if(Qn)if(typeof t=="string")this.errors.push(t);else{let r=`${this.path} should be ${t.expect}`;this._optional&&t.expect!=="undefined"?r+=" or undefined, ":r+=", ",r+=`but got ${rr(t.actual)}`,this.errors.push(r)}return!1}fallback(t){return this.hasFallback=!0,this._fallback=t,this}get fallbackValue(){return tt(this._fallback)}default(t){return this.hasDefault=!0,this._default=t,this}get defaultValue(){return typeof this._default=="function"?this._default:tt(this._default)}optional(){return this._optional=!0,this}};rt=class extends F{validate(t){return this._optional&&t===void 0?!0:ne(t)?ne(this._min)&&t<this._min?this.fail(`the value of ${this.path} should be greater than or equal to ${this._min}`):ne(this._max)&&t>this._max?this.fail(`the value of ${this.path} should be less than or equal to ${this._max}`):ne(this._greater)&&t<=this._greater?this.fail(`the value of ${this.path} should be greater than ${this._greater}`):this._isInt&&t!==Math.floor(t)?this.fail(`the value of ${this.path} should be integer but got ${t}`):!0:this.fail({expect:"number",actual:t})}min(t){return this._min=t,this}max(t){return this._max=t,this}isInt(t){return this._isInt=t,this}greater(t){return this._greater=t,this}},nt=class extends F{validate(t){return this._optional&&t===void 0?!0:typeof t!="boolean"?this.fail({expect:"boolean",actual:t}):!0}},ot=class extends F{validate(t){if(this._optional&&t===void 0)return!0;if(typeof t!="string")return this.fail({expect:"string",actual:t});if(ne(this._maxLength)&&t.length>this._maxLength)return this.fail(`the length of ${this.path} should be less than or equal to ${this._maxLength}`);if(ne(this._minLength)&&t.length<this._minLength)return this.fail(`the length of ${this.path} should be greater than or equal to ${this._minLength}`);if(typeof this._pattern=="string"){if(!new RegExp(this._pattern).test(t))return this.fail(`${this.path} should match pattern "${this._pattern}"`)}else if(this._pattern&&!this._pattern.test(t))return this.fail(`${this.path} should match pattern "${this._pattern.toString()}"`);return!0}minLength(t){return this._minLength=t,this}maxLength(t){return this._maxLength=t,this}pattern(t){return this._pattern=t,this}},st=class extends F{validate(t){return this._optional&&t===void 0?!0:typeof t!="symbol"?this.fail({expect:"symbol",actual:t}):!0}},be=class extends F{validate(t){return!0}},it=class extends F{validate(t){return t!==void 0?this.fail({expect:"undefined",actual:t}):!0}},at=class extends F{validate(t){return this._optional&&t===void 0?!0:t!==null?this.fail({expect:"null",actual:t}):!0}},ct=class extends F{validate(t){return this._optional&&t===void 0?!0:typeof t!="function"?this.fail({expect:"function",actual:t}):!0}},lt=class extends F{constructor(...t){super(),this._items=t}validate(t){if(this._optional&&t===void 0)return!0;if(!this._items.includes(t)){let r=this._items.map(n=>JSON.stringify(n)).join(", ");return this.fail(`expect ${this.path} to be one of ${r}, but got ${rr(t)}`)}return!0}},dt=class extends F{constructor(r){super();this._item=r}validate(r){if(this._optional&&r===void 0)return!0;if(!Array.isArray(r))return this.fail({expect:"array",actual:r});if(ne(this._minItems)&&r.length<this._minItems)return this.fail(`the length of ${this.path} should be greater than or equal to ${this._minItems}`);if(ne(this._maxItems)&&r.length>this._maxItems)return this.fail(`the length of ${this.path} should be less than or equal to ${this._maxItems}`);if(ne(this._length)&&r.length!==this._length)return this.fail(`the length of ${this.path} should be equal to ${this._length}`);let n=this._item;if(!n)return!0;let o=!0;if(r.forEach((s,i)=>{if(n.path=`${this.path}[${i}]`,n.errors=this.errors,s===void 0&&n.hasDefault){r[i]=n.defaultValue;return}n.validate(s)||(n.hasFallback?r[i]=n.fallbackValue:o=!1)}),this._uniqueItems){let s=new Map;for(let i in r)s.has(r[i])?o=this.fail(`${this.path} should NOT have duplicate items (${this.path}[${s.get(r[i])}] and ${this.path}[${i}] are identical)`):s.set(r[i],i)}return o}minItems(r){return this._minItems=r,this}maxItems(r){return this._maxItems=r,this}uniqueItems(){return this._uniqueItems=!0,this}length(r){return this._length=r,this}},ut=class extends F{constructor(r){super();this._value=r}validate(r){if(this._optional&&r===void 0)return!0;if(nr(r)!=="object")return this.fail({expect:"object",actual:r});let o=r,s=this._value;s.errors=this.errors;let i=!0;for(let a in o){let c=o[a];if(/^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/.test(a)?s.path=`${this.path}.${a}`:s.path=`${this.path}["${a}"]`,!(c===void 0&&s._optional)){if(c===void 0&&s.hasDefault){o[a]=s.defaultValue;continue}s.validate(c)||(s.hasFallback?o[a]=s.fallbackValue:i=!1)}}return i}},mt=class extends F{constructor(r={}){super();this._object=r}validate(r){if(this._optional&&r===void 0)return!0;if(nr(r)!=="object")return this.fail({expect:"object",actual:r});let n=r,o=!0;for(let s in this._object){let i=n[s],a=this._object[s];if(a.errors=this.errors,/^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/.test(s)?a.path=`${this.path}.${s}`:a.path=`${this.path}["${s}"]`,!(a._optional&&i===void 0)){if(i===void 0&&a.hasDefault){n[s]=a.defaultValue;continue}a.validate(i)||(a.hasFallback?n[s]=a.fallbackValue:o=!1)}}return o}},pt=class extends F{constructor(r){super();this.value=r}validate(r){return r===void 0&&this._optional?!0:r!==this.value?this.fail({expect:rr(this.value),actual:r}):!0}},ft=class extends F{constructor(...t){super(),this._items=t}validate(t){if(t===void 0&&this._optional)return!0;let r=[],n=!1,o=this._items.length;for(let s=0;s<o;s++){let i=this._items[s];if(i.errors=[],i.path=this.path,!i.validate(t))r.push(i.errors.join("; "));else if(!n){n=!0;break}}if(!n){let s=r.join(`
|
|
20
|
+
or `);this.errors.push(s)}return n}},ht=class extends F{constructor(...t){super(),this._items=t;let r=0,n=t.length-1;for(;n>=0;n--){let o=t[n];if(o._optional||o.hasDefault)r+=1;else break}this._minItems=t.length-r}validate(t){if(t===void 0&&this._optional)return!0;if(!Array.isArray(t))return this.fail({expect:"array",actual:t});if(t.length<this._minItems)return this.fail(`the length of ${this.path} should be greater than or equal to ${this._minItems}`);let r=!0;return this._items.forEach((n,o)=>{if(n.path=`${this.path}[${o}]`,n.errors=this.errors,t[o]===void 0&&n.hasDefault){t[o]=n.defaultValue;return}n.validate(t[o])||(n.hasFallback?t[o]=n._fallback:r=!1)}),r}},gt=class extends F{validate(t){return t===void 0&&this._optional||t instanceof ArrayBuffer?!0:this.fail({expect:"arraybuffer",actual:t})}},yt=class extends F{constructor(t){super(),this._ctor=t}validate(t){return t===void 0&&this._optional||t instanceof this._ctor?!0:this.fail({expect:`typedarray of ${this._ctor.name}`,actual:t})}}});function sr(e,t,r="param"){if(e.errors=[],e.path=r,tr(!0),!e.validate(t)){let n=e.errors.join(`
|
|
21
|
+
`);throw e.errors.length=0,tr(!1),new TypeError(n)}}var d,ir=f(()=>{"use strict";or();or();d={object(e){return new mt(e)},array(e){return new dt(e)},tuple(...e){return new ht(...e)},literal(e){return new pt(e)},or(...e){return new ft(...e)},symbol(){return new st},record(e){return new ut(e)},function(){return new ct},boolean(){return new nt},string(){return new ot},number(){return new rt},undefined(){return new it},null(){return new at},unknown(){return new be},any(){return new be},as(){return new be},arraybuffer(){return new gt},enum(...e){return new lt(...e)},typedarray(e){return new yt(e)}}});var vt,Yn,Xn=f(()=>{"use strict";E();G();ir();se();vt=1,Yn=e=>{function t(n,o){return(...s)=>{var m,p,b,R;let i=Date.now(),a={method:n,trace_id:vt};vt+=1;let c="SUCCESS",l=`${n}:ok`,u=0;try{if(o.paramsSchema)try{sr(o.paramsSchema,s,"params")}catch(x){throw Mt(`${n}:fail ${x.message}`)}let T=o.implement(...s),v=T,S=`${n}:ok`;if(T&&"code"in T){let{code:x,data:w,message:U}=T;c=x,v=w,S=U}return{code:c,message:S,data:v}}catch(T){let v=T;u=(p=(m=v.code)!=null?m:v.errNo)!=null?p:2e3,c="FAILURE";let S=(R=(b=v.message)!=null?b:v.errMsg)!=null?R:`${T}`;return l=`${n}:${c} ${S.replace(/^\S+:(fail|cancel)\s?/,"")}`,M(new Ae(l,u)),{code:c,message:l}}finally{let T=Date.now()-i;e("apiInvoked",P(h({},a),{duration:T,status:c}))}}}function r(n,o){return(...s)=>y(this,null,function*(){var p,b,R,T;let i=Er(s)?s:[s],a=Date.now(),c={method:n,trace_id:vt};vt+=1;let l=`${n}:ok`,u="SUCCESS",m={code:u,message:l};try{if(o.paramsSchema)try{sr(o.paramsSchema,i,"params")}catch(x){throw Mt(x.message)}let S=yield o.implement(...i);if(S&&"code"in S){let{code:x,data:w,message:U}=S;u=x,l=U,S=w}return Object.assign(m,{code:u,message:l,data:S}),m}catch(v){let S=v,x=(b=(p=S.code)!=null?p:S.errNo)!=null?b:2e3;u="FAILURE";let w=(T=(R=S.message)!=null?R:S.errMsg)!=null?T:`${v}`,U=`${n}:${u} ${w.replace(/^\S+:(fail|cancel)\s?/,"")}`;return Object.assign(m,{code:u,message:U}),M(new Ae(U,x)),m}finally{let v=Date.now()-a;e("apiInvoked",P(h({},c),{duration:v,status:u}))}})}return{createAPI:r,createSyncAPI:t}}});var D,N,k,Z=f(()=>{"use strict";Wn();ae();Xn();ir();({createAPI:D,createSyncAPI:N}=Yn(K)),k=zn("native")});var Zn,Rs,As,xs,Ps,eo=f(()=>{"use strict";E();Z();j();Zn=O(),Rs="env",As="getSystemInfoSync",xs=N(As,{implement:()=>{var r;let e=_("envSync"),{data:t}=e;return{system:t.deviceInfo.system,platform:t.deviceInfo.platform,version:t.sdkInfo.jssdkVersion,pixelRatio:t.deviceInfo.pixelRatio,language:t.deviceInfo.lang,brand:t.deviceInfo.brand,appName:(r=t.hostInfo)==null?void 0:r.appName,SDKVersion:t.sdkInfo.jssdkVersion}}}),Ps=N(Rs,{implement:()=>{var t;let e=_("envSync");return(t=e==null?void 0:e.data)!=null?t:void 0}});Zn.registerCommand("API.getSystemInfoSync",xs);Zn.registerCommand("API.env",Ps);k("env",{version:"1.0.0"});k("getSystemInfoSync",{version:"1.0.0"})});var to=hr(ar=>{"use strict";E();Z();G();j();ae();J();var Cs="exitGame",Ns="onReady",Os="onJoliboxShow",Fs="onJoliboxHide",bt=O(),Tt=Me(M),Ds=D(Cs,{paramsSchema:d.tuple(d.function(),d.boolean().optional().default(!1)),implement:(e,t=!1)=>y(ar,null,function*(){Tt(e).call(ar),Ie(g.shouldInterupt)&&!g.shouldInterupt&&g.from&&an("onRetentionResult",{shouldStay:t},g.from,!0),yield V("exitAppAsync")})}),Us=N(Os,{paramsSchema:d.tuple(d.function()),implement(e){let t=Tt(e);Y("onJoliboxEnterForeground",()=>{t.call(this),xe.emit("visible",!0)})}}),Ms=N(Fs,{paramsSchema:d.tuple(d.function()),implement(e){let t=Tt(e);Y("onJoliboxEnterBackground",()=>{t.call(this),xe.emit("visible",!1)})}}),Ls=N(Ns,{paramsSchema:d.tuple(d.function()),implement(e){let t=Tt(e);re.on("LifecycleEvent.onReady",r=>{t(r)})}});bt.registerCommand("LifecycleSDK.exit",Ds);bt.registerCommand("LifecycleSDK.onReady",Ls);bt.registerCommand("LifecycleSDK.onJoliboxShow",Us);bt.registerCommand("LifecycleSDK.onJoliboxHide",Ms);k("lifeCycle.exit",{version:"1.0.0"});k("lifeCycle.onReady",{version:"1.0.0"});k("lifeCycle.onJoliboxShow",{version:"1.0.0"});k("lifeCycle.onJoliboxHide",{version:"1.0.0"})});function ro(e){let t={};if(!B(e))return t;for(let[r,n]of Object.entries(e)){let o=r.toLocaleLowerCase();n?typeof n=="object"?t[o]=Object.prototype.toString.call(n):t[o]=String(n):t[o]=""}return t}function no(e="GET"){if(e==="")return"POST";let t=e.toUpperCase();return["GET","OPTIONS","HEAD","POST","PUT","DELETE","TRACE","CONNECT","PATCH"].includes(t)?t:"GET"}function oo(e,t=!1){if(e)return t||e>0&&e<=6e4?Math.ceil(e):6e4}function so(e,t,r){if(["POST","PUT","PATCH"].includes(t)||!B(r))return e;let[n,o=""]=e.split("?"),s=JSON.stringify(h(h({},JSON.parse(o)),r));return`${n}?${s}`}var io=f(()=>{"use strict";E()});var Bs,js,cr,lr,ao,Js,$s,Hs,co=f(()=>{"use strict";se();Xt();Z();io();E();G();Bs=15,js=Ke("createRequestTaskSync","operateRequestTaskSync",{type:"public"}),cr=0,lr=[],ao=Me(M),Js=(e,t)=>{let r=e.filter(t),n=e.filter(o=>!t(o));return e.length=0,e.push(...n),r},$s=e=>{let t=new Q,r=()=>{};return D("request",{paramsSchema:d.tuple(d.object({url:d.string(),method:d.string(),header:d.object(),data:d.object().optional(),query:d.object().optional(),dataType:d.string().default("json"),responseType:d.string().default("text"),enableCache:d.boolean().default(!1),appendHostCookie:d.boolean().default(!0),timeout:d.number().default(3e4),success:d.function(),fail:d.function()})),implement(o){let s=()=>y(this,null,function*(){var a,c;let i=ao(o.fail);try{if(cr+=1,t.state!=="pending")return;let{data:l,dataType:u,responseType:m,enableCache:p,appendHostCookie:b}=o,R=ro(o.header),T=no(o.method),v=oo(o.timeout),S=so(o.url,T,l),x=ao(o.success),w=Object.assign({},o,{method:T,header:R,data:T==="GET"||T==="HEAD"?void 0:l,enableCache:p,query:(a=o.query)!=null?a:{},dataType:u,responseType:m,appendHostCookie:b});v&&(w.timeout=v);let U=js(S,w);{let{response:I}=yield U,{code:A,data:ke,message:oe}=I;t.resolve({code:A!=null?A:"SUCCESS",data:ke,message:oe!=null?oe:"request:ok"}),x({code:"SUCCESS",message:"request:ok",data:ke})}}catch(l){t.reject(l),i({code:"FAILURE",message:"httpRequst: failed"})}finally{cr-=1,(c=lr.shift())==null||c()}});return cr>=Bs?(r=()=>{Js(lr,i=>i===s)},lr.push(s)):s(),t.promise}})(e),{abort(){t.reject(me({code:-1,msg:"request:fail abort"})),r()}}},Hs=O();Hs.registerCommand("HttpSDK.request",$s);k("request",{version:"1.0.0"})});function Ws(e){let t=Object.prototype.toString.call(e).split(" ")[1].split("]")[0].toLocaleLowerCase();return zs.includes(t)?t:""}function Qs(e,t){try{switch(t){case"string":return e;case"object":return JSON.parse(e);case"number":return parseFloat(e);case"boolean":return e==="true";default:return""}}catch(r){return""}}function Ys(e,t){try{switch(t){case"string":case"number":case"boolean":return`${e}`;case"object":return JSON.stringify(e);default:return""}}catch(r){return""}}var kt,Vs,Ks,qs,Gs,Jd,$d,zs,lo=f(()=>{"use strict";Z();j();E();qe();J();kt=O(),Vs=D("getLocalStorage",{paramsSchema:d.tuple(d.string()),implement(e){return y(this,null,function*(){let{response:t}=yield X(`/api/games/user-storage/${g.mpId}`,{method:"GET",responseType:"json",appendHostCookie:!0,query:{key:e}}),{data:{code:r,message:n,data:o}}=yield t;if(r==="SUCCESS")return{code:r,message:n,data:o==null?void 0:o.value};try{let{data:{data:s,dataType:i}}=yield V("getLocalStorageAsync",{key:e}),a=Qs(s,i);return{code:r,message:`${n}. fallback to native`,data:a}}catch(s){return{code:"INTERNAL_ERROR",message:"[Jolibox SDK] get local storage failed",data:null}}})}});kt.registerCommand("StorageSDK.getItem",Vs);k("storage.getItem",{version:"1.0.0",properties:{key:"1.0.0",value:"1.0.0"}});Ks=D("setStorage",{paramsSchema:d.tuple(d.string(),d.or(d.string(),d.boolean(),d.number())),implement(e,t){return y(this,null,function*(){let r=g.mpId,n=typeof t=="string"?t:String(t),{response:o}=yield X(`/api/games/user-storage/${r}`,{method:"POST",responseType:"json",appendHostCookie:!0,data:{key:e,value:n}}),{data:{code:s,message:i}}=o,a=Ws(t),c=Ys(t,a);return yield V("setLocalStorageAsync",{key:e,data:c,dataType:a}),s=="SUCCESS"?{code:s,message:i}:{code:s,message:`${i}. fallback to native`}})}});kt.registerCommand("StorageSDK.setItem",Ks);k("storage.setItem",{version:"1.0.0",properties:{key:"1.0.0",value:"1.0.0"}});qs=D("removeStorage",{paramsSchema:d.tuple(d.string()),implement(e){return y(this,null,function*(){let t=g.mpId,{response:r}=yield X(`/api/games/user-storage/${t}/remove`,{method:"POST",responseType:"json",appendHostCookie:!0,data:{key:e}}),{data:{code:n,message:o}}=r;return yield V("removeLocalStorageAsync",{key:e}),n==="SUCCESS"?{code:n,message:o}:{code:n,message:"[Jolibox SDK] remove item succ"}})}});kt.registerCommand("StorageSDK.removeItem",qs);k("storage.removeItem",{version:"1.0.0",properties:{key:"1.0.0"}});Gs=D("clearStorage",{implement(){return y(this,null,function*(){let e=g.mpId,{response:t}=yield X(`/api/games/user-storage/${e}/clear`,{method:"POST",appendHostCookie:!0});V("clearLocalStorageAsync");let{data:{code:r,message:n}}=t;return r==="SUCCESS"?{code:r,message:n}:{code:r,message:`${n}.fallback to native`}})}});kt.registerCommand("StorageSDK.clear",Gs);k("storage.clear",{version:"1.0.0"});Jd=D("getStorageInfo",{implement(){return y(this,null,function*(){let{data:e}=yield V("getStorageInfoAsync");return e})}});k("getStorageInfo",{version:"1.0.0",success:{keys:"1.0.0",currentSize:"1.0.0",limitSize:"1.0.0"}});$d=N("getStorageInfoSync",{implement(){return _("getStorageInfoSync")}}),zs=["string","number","boolean","object",""]});var Xs,Zs,ei,dr,uo=f(()=>{"use strict";E();j();Z();Xs=N("showKeyboard",{paramsSchema:d.tuple(d.object({defaultValue:d.string().optional().default(""),multiple:d.boolean().optional().default(!1),maxLength:d.unknown().optional().default(1e5)})),implement(e){var n;let t=Math.floor((n=Number(e.maxLength))!=null?n:1e5),{defaultValue:r}=e;r&&t&&(r=r.slice(0,t)),_("showKeyboardSync",P(h({},e),{defaultValue:r,maxLength:t}))}});k("keyboard.showKeyboard",{version:"1.0.0",properties:{params:{defaultValue:"1.0.0",multiple:"1.0.0",confirmHold:"1.0.0",confirmType:"1.0.0",maxLength:"1.0.0"}},success:{errMsg:"1.0.0"}});Zs=N("updateKeyboard",{paramsSchema:d.tuple(d.object({value:d.string()})),implement(e){_("updateKeyboardSync",e)}});k("keyboard.updateKeyboard",{version:"1.0.0",properties:{params:{value:"1.0.0"}}});ei=N("hideKeyboard",{implement(){_("hideKeyboardSync")}});k("keyboard.hideKeyboard",{version:"1.0.0"});dr=O();dr.registerCommand("KeyboardSDK.showKeyboard",Xs);dr.registerCommand("KeyboardSDK.updateKeyboard",Zs);dr.registerCommand("KeyboardSDK.hideKeyboard",ei)});var mo=hr(he=>{"use strict";E();Z();ae();var Te=O(),ti=D("levelFinished",{paramsSchema:d.tuple(d.string(),d.object({result:d.boolean(),duration:d.number()})),implement:(e,t)=>y(he,null,function*(){let{result:r,duration:n}=t,o=[];o.push($.tracker("LevelFinished",{levelId:e,result:r,duration:n})),o.push($.reporter({event:"COMPLETE_GAME_LEVEL"})),yield Promise.all(o)})}),ri=D("taskFinished",{paramsSchema:d.tuple(d.string(),d.object({duration:d.number()})),implement:(e,t)=>y(he,null,function*(){let{duration:r}=t;return yield $.reportToNative({event:"TaskFinished",params:{duration:r,taskId:e}})})}),ni=D("levelUpgrade",{paramsSchema:d.tuple(d.string(),d.string()),implement:(e,t)=>y(he,null,function*(){let r=[];r.push($.reportToNative({event:"LevelUpgrade",params:{name:t,levelId:e}})),yield Promise.all(r)})}),oi=D("onHistoryUserLevel",{paramsSchema:d.tuple(d.number()),implement:e=>y(he,null,function*(){return yield $.reportToNative({event:"HistoryUserLevel",params:{level:e}})})}),si=D("onHistoryUserScore",{paramsSchema:d.tuple(d.number()),implement:e=>y(he,null,function*(){return yield $.reportToNative({event:"HistoryUserScore",params:{score:e}})})}),ii=D("taskEvent",{paramsSchema:d.tuple(d.string(),d.object({tools:d.array(d.object({id:d.string(),name:d.string(),count:d.number(),description:d.string().optional(),price:d.object({amount:d.number(),unit:d.string()}).optional()})).optional(),awards:d.array(d.object({id:d.string(),name:d.string()})).optional()})),implement:(e,t)=>y(he,null,function*(){var n,o;let r=[];r.push($.reportToNative({event:"TaskEvent",params:h({taskId:e},t)})),(o=(n=t.tools)==null?void 0:n.length)!=null&&o&&(r.push($.reporter({event:"USE_GAME_ITEM"})),r.push($.reportToNative({event:"UseGameItem",params:h({taskId:e},t)}))),yield Promise.all(r)})});Te.registerCommand("TaskTrackerSDK.levelFinished",ti);Te.registerCommand("TaskTrackerSDK.taskFinished",ri);Te.registerCommand("TaskTrackerSDK.levelUpgrade",ni);Te.registerCommand("TaskTrackerSDK.historyUserLevel",oi);Te.registerCommand("TaskTrackerSDK.historyUserScore",si);Te.registerCommand("TaskTrackerSDK.taskEvent",ii);k("TaskTrackerSDK.onLevelFinished",{version:"1.0.0",properties:{levelId:"1.0.0",params:{result:"1.0.0",duration:"1.0.0"}}});k("TaskTrackerSDK.onTaskFinished",{version:"1.0.0",properties:{taskId:"1.0.0",duration:"1.0.0"}});k("TaskTrackerSDK.onLevelUpgrade",{version:"1.0.0",properties:{levelId:"1.0.0",name:"1.0.0"}});k("TaskTrackerSDK.onHistoryUserLevel",{version:"1.0.0",properties:{level:"1.0.0"}});k("TaskTrackerSDK.onHistoryUserScore",{version:"1.0.0",properties:{score:"1.0.0"}});k("TaskTrackerSDK.onTaskEvent",{version:"1.0.0",properties:{taskId:"1.0.0",params:{tools:{id:"1.0.0",name:"1.0.0",count:"1.0.0",description:"1.0.0",price:{amount:"1.0.0",unit:"1.0.0"}},awards:{id:"1.0.0",name:"1.0.0"}}}})});var ai,ci,po,fo=f(()=>{"use strict";J();j();Z();E();se();k("login",{version:"1.0.0",properties:{force:"1.0.0"},success:{errMsg:"1.0.0",code:"1.0.0",token:"1.0.0",isLogin:"1.0.0"}});k("checkSession",{version:"1.0.0",success:{errMsg:"1.0.0"}});ai=D("login",{implement(){return y(this,null,function*(){var i;let{data:{isLogin:e}}=yield V("checkLoginAsync");if(e)return{isLogin:!0,token:(i=g.hostUserInfo)==null?void 0:i.token};Y("onLoginStateChange",({isLogin:a,token:c,uuid:l})=>{l==r&&o({isLogin:a,token:c})});let t=_("loginSync"),{data:{uuid:r}}=t;if(!r)throw me({code:-1,msg:"login failed"});let{promise:n,resolve:o}=new Q,s=yield n;return g.onEnvConfigChanged({hostUserInfo:s}),re.emit("onLoginComplete",s),s})}}),ci=D("checkSession",{implement(){return y(this,null,function*(){let{data:{isLogin:e}}=yield V("checkLoginAsync");return{isLogin:e}})}}),po=O();po.registerCommand("API.login",ai);po.registerCommand("API.checkSession",ci)});var Et,li,St,di,ui,mi,pi,ho=f(()=>{"use strict";E();Z();er();ae();qe();j();Et=O(),li=()=>{let{data:e}=_("getNetworkStatusSync");return!!(e!=null&&e.isConnected)},St=new Ye(K,{get:(e,t)=>X(e,h({method:"GET",responseType:"json",appendHostCookie:!0},t)).then(r=>r.response.data),post:(e,t,r)=>X(e,h({method:"POST",responseType:"json",appendHostCookie:!0},r)).then(n=>n.response.data)},li),di=N("adInit",{implement:e=>{St.init(e)}}),ui=N("adConfig",{implement:e=>{St.adConfig(e)}}),mi=N("adBreak",{implement:e=>{St.adBreak(e)}}),pi=N("adUnit",{implement:e=>{St.adUnit(e)}});Et.registerCommand("AdsSDK.init",di);Et.registerCommand("AdsSDK.adConfig",ui);Et.registerCommand("AdsSDK.adBreak",mi);Et.registerCommand("AdsSDK.adUnit",pi);k("AdsSDK.init",{version:"1.0.0"});k("AdsSDK.adConfig",{version:"1.0.0"});k("AdsSDK.adBreak",{version:"1.0.0"});k("AdsSDK.adUnit",{version:"1.0.0"})});var ur,fi,hi,gi,go=f(()=>{"use strict";E();j();Z();J();ur=O(),fi=N("openSchemaSync",{paramsSchema:d.tuple(d.string()),implement:e=>{let t=e;e.match(/^https?:\/\//)||(t=`https://${g.mpId}.app.jolibox.com${e.startsWith("/")?"":"/"}${e}`);let r=_("openSchemaSync",{schema:t});if(r.errNo!==0)throw new Re(r.errMsg,r.errNo)}}),hi=N("openPageSync",{paramsSchema:d.tuple(d.string()),implement:e=>{let{errNo:t,errMsg:r,data:n}=_("openPageSync",{url:e});if(t!==0||!n)throw new Re(r,t);return{webviewId:n.webviewId}}}),gi=N("closePageSync",{paramsSchema:d.tuple(d.number()),implement:e=>{let{errNo:t,errMsg:r}=_("closePageSync",{webviewId:e});if(t!==0)throw new Re(r,t)}});ur.registerCommand("RouterSDK.openSchema",fi);ur.registerCommand("RouterSDK.openPage",hi);ur.registerCommand("RouterSDK.closePage",gi);k("router.openSchema",{version:"1.1.10"});k("router.openPage",{version:"1.1.10"});k("router.closePage",{version:"1.1.10"})});var yi={};var Iu,xu,yo=f(()=>{"use strict";eo();Iu=yr(to());co();lo();uo();xu=yr(mo());fo();ho();go()});var vo=Symbol.for("JOLIBOX_IMPLEMENT_INIT");if(window[vo])throw console.info("Jolibox Implement Already Initialized"),new Error("Jolibox Implement Already Initialized");window[vo]=!0;y(void 0,null,function*(){let[{config:e}]=yield Promise.all([Promise.resolve().then(()=>(Gn(),qn)),Promise.resolve().then(()=>(yo(),yi)),Promise.resolve().then(()=>(ae(),Un))]);e()});
|
package/implement.build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Invoking: npm run clean && npm run build:esm && tsc
|
|
2
2
|
|
|
3
|
-
> @jolibox/implement@1.1.11-beta.
|
|
3
|
+
> @jolibox/implement@1.1.11-beta.3 clean
|
|
4
4
|
> rimraf ./dist
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
> @jolibox/implement@1.1.11-beta.
|
|
7
|
+
> @jolibox/implement@1.1.11-beta.3 build:esm
|
|
8
8
|
> BUILD_VERSION=$(node -p "require('./package.json').version") node esbuild.config.js --format=esm
|
|
9
9
|
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jolibox/implement",
|
|
3
3
|
"description": "This project is Jolibox JS-SDk implement for Native && H5",
|
|
4
|
-
"version": "1.1.11-beta.
|
|
4
|
+
"version": "1.1.11-beta.3",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@jolibox/common": "1.1.11-beta.
|
|
10
|
-
"@jolibox/types": "1.1.11-beta.
|
|
9
|
+
"@jolibox/common": "1.1.11-beta.3",
|
|
10
|
+
"@jolibox/types": "1.1.11-beta.3",
|
|
11
11
|
"localforage": "1.10.0",
|
|
12
12
|
"web-vitals": "4.2.4"
|
|
13
13
|
},
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import type { IHttpClient } from '../http';
|
|
2
|
+
import type { Track } from '../report';
|
|
3
|
+
|
|
1
4
|
export type AdsDisplayPermission =
|
|
2
5
|
| 'BLOCK_INITIAL'
|
|
3
6
|
| 'BANNED_FOR_SESSION'
|
|
@@ -41,7 +44,8 @@ export class AdsAntiCheating {
|
|
|
41
44
|
// private context: JoliboxSDKPipeExecutor;
|
|
42
45
|
|
|
43
46
|
constructor(
|
|
44
|
-
|
|
47
|
+
readonly track: Track,
|
|
48
|
+
readonly httpClient: IHttpClient,
|
|
45
49
|
readonly checkNetwork: () => boolean,
|
|
46
50
|
config?: IAdsAntiCheatingConfig
|
|
47
51
|
) {
|
|
@@ -239,4 +243,23 @@ export class AdsAntiCheating {
|
|
|
239
243
|
|
|
240
244
|
return 'ALLOWED';
|
|
241
245
|
};
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Report an ad display permission issue.
|
|
249
|
+
* Report to both event tracking system and the business backend system.
|
|
250
|
+
* @param reason
|
|
251
|
+
*/
|
|
252
|
+
public report(reason: AdsDisplayPermission) {
|
|
253
|
+
this.track('PreventAdsCheating', {
|
|
254
|
+
reason
|
|
255
|
+
});
|
|
256
|
+
this.httpClient.post('/api/base/app-event', {
|
|
257
|
+
data: {
|
|
258
|
+
eventType: 'PREVENT_ADS_CHEATING',
|
|
259
|
+
adsInfo: {
|
|
260
|
+
reason
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
}
|
|
242
265
|
}
|
package/src/common/ads/index.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { AdsActionDetection } from './ads-action-detection';
|
|
2
2
|
import { AdsAntiCheating } from './anti-cheating';
|
|
3
|
-
import { Track } from '../report';
|
|
4
3
|
import { context } from '../context';
|
|
5
4
|
import { ChannelPolicy } from './channel-policy';
|
|
6
5
|
import { EventEmitter } from '@jolibox/common';
|
|
6
|
+
import type { Track } from '../report';
|
|
7
|
+
import type { IHttpClient } from '../http';
|
|
7
8
|
|
|
8
9
|
declare global {
|
|
9
10
|
interface Window {
|
|
@@ -254,10 +255,6 @@ interface IJoliboxAdsResponse {
|
|
|
254
255
|
};
|
|
255
256
|
}
|
|
256
257
|
|
|
257
|
-
interface HttpClient {
|
|
258
|
-
get<T>(url: string, options?: { query?: Record<string, string> }): Promise<T>;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
258
|
export const adEventEmitter = new EventEmitter<{
|
|
262
259
|
isAdShowing: [boolean];
|
|
263
260
|
}>();
|
|
@@ -278,8 +275,8 @@ export class JoliboxAdsImpl {
|
|
|
278
275
|
/**
|
|
279
276
|
* Internal constructor, should not be called directly
|
|
280
277
|
*/
|
|
281
|
-
constructor(readonly track: Track, readonly httpClient:
|
|
282
|
-
this.antiCheating = new AdsAntiCheating(checkNetwork);
|
|
278
|
+
constructor(readonly track: Track, readonly httpClient: IHttpClient, readonly checkNetwork: () => boolean) {
|
|
279
|
+
this.antiCheating = new AdsAntiCheating(track, httpClient, checkNetwork);
|
|
283
280
|
this.adsActionDetection = new AdsActionDetection(this.track);
|
|
284
281
|
this.channelPolicy = new ChannelPolicy(httpClient);
|
|
285
282
|
}
|
|
@@ -400,7 +397,10 @@ export class JoliboxAdsImpl {
|
|
|
400
397
|
|
|
401
398
|
const beforeAd = () => {
|
|
402
399
|
adEventEmitter.emit('isAdShowing', true);
|
|
403
|
-
this.track('CallBeforeAd', {
|
|
400
|
+
this.track('CallBeforeAd', {
|
|
401
|
+
type: params.type,
|
|
402
|
+
name: params.name ?? ''
|
|
403
|
+
});
|
|
404
404
|
if (originBeforeAd) {
|
|
405
405
|
originBeforeAd();
|
|
406
406
|
}
|
|
@@ -408,7 +408,10 @@ export class JoliboxAdsImpl {
|
|
|
408
408
|
|
|
409
409
|
const afterAd = () => {
|
|
410
410
|
adEventEmitter.emit('isAdShowing', false);
|
|
411
|
-
this.track('CallAfterAd', {
|
|
411
|
+
this.track('CallAfterAd', {
|
|
412
|
+
type: params.type,
|
|
413
|
+
name: params.name ?? ''
|
|
414
|
+
});
|
|
412
415
|
if (originAfterAd) {
|
|
413
416
|
originAfterAd();
|
|
414
417
|
}
|
|
@@ -492,9 +495,7 @@ export class JoliboxAdsImpl {
|
|
|
492
495
|
breakFormat: params.type === 'reward' ? 'reward' : 'interstitial',
|
|
493
496
|
breakStatus: 'noAdPreloaded'
|
|
494
497
|
});
|
|
495
|
-
this.
|
|
496
|
-
reason: adsDisplayPermission
|
|
497
|
-
});
|
|
498
|
+
this.antiCheating.report(adsDisplayPermission);
|
|
498
499
|
return;
|
|
499
500
|
case 'BLOCK_INITIAL':
|
|
500
501
|
case 'BANNED_FOR_TIME':
|
|
@@ -503,11 +504,9 @@ export class JoliboxAdsImpl {
|
|
|
503
504
|
params.adBreakDone?.({
|
|
504
505
|
breakType: params.type,
|
|
505
506
|
breakFormat: params.type === 'reward' ? 'reward' : 'interstitial',
|
|
506
|
-
breakStatus: '
|
|
507
|
-
});
|
|
508
|
-
this.track('PreventAdsCheating', {
|
|
509
|
-
reason: adsDisplayPermission
|
|
507
|
+
breakStatus: 'frequencyCapped'
|
|
510
508
|
});
|
|
509
|
+
this.antiCheating.report(adsDisplayPermission);
|
|
511
510
|
return;
|
|
512
511
|
default:
|
|
513
512
|
// allowed
|
package/src/native/api/ads.ts
CHANGED
|
@@ -22,6 +22,13 @@ const ads = new JoliboxAdsImpl(
|
|
|
22
22
|
responseType: 'json',
|
|
23
23
|
appendHostCookie: true,
|
|
24
24
|
...options
|
|
25
|
+
}).then((res) => res.response.data as T),
|
|
26
|
+
post: <T>(url: string, data: any, options?: any) =>
|
|
27
|
+
fetch<T>(url, {
|
|
28
|
+
method: 'POST',
|
|
29
|
+
responseType: 'json',
|
|
30
|
+
appendHostCookie: true,
|
|
31
|
+
...options
|
|
25
32
|
}).then((res) => res.response.data as T)
|
|
26
33
|
},
|
|
27
34
|
checkNetworkStatus
|