@jolibox/sdk 1.1.7-beta.4 → 1.1.8-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,15 +3,15 @@
3
3
  "packages/sdk/.rush/temp/shrinkwrap-deps.json": "2dae37e4e0434d977846f6598de8fbcb9919efc5",
4
4
  "packages/sdk/.eslintrc.js": "c11c589d14fe58bf4d37d259d8323b193bab6092",
5
5
  "packages/sdk/README.md": "5660cd88848b7a5428394cc34d881a35dd402188",
6
- "packages/sdk/esbuild.config.js": "7eacca35e51bf3e2face4112b3cfa76777e7c0d5",
7
- "packages/sdk/package.json": "f7faabcb3a45c35e87a02adac5fd503e93085d2b",
6
+ "packages/sdk/esbuild.config.js": "7f17ee90c6b8d33d172f5e743a3a97c8fa8a3989",
7
+ "packages/sdk/package.json": "9e453f20d93c5a456189432f81bd16b3777d3557",
8
8
  "packages/sdk/src/api/__tests__/canIUse.test.ts": "300e4de3768f9510e956050d326d4977bc621f34",
9
9
  "packages/sdk/src/api/can-i-use.ts": "4fd7efe21419d39e535584d7ab8e6a3c4e186877",
10
10
  "packages/sdk/src/api/get-system-info.ts": "c73be9f62c7055093effadaf6c48c54d6f383542",
11
11
  "packages/sdk/src/api/index.ts": "3b4493aba6d4d842031040be7ce72607009e0665",
12
12
  "packages/sdk/src/api/login.ts": "747c923c87175b467c17e303a14210bf0ab7a1cb",
13
13
  "packages/sdk/src/events.ts": "fc2df274eeedce36bedfc7d01ec580dba16e4502",
14
- "packages/sdk/src/index.ts": "8a963f17a8900aedf00c26a468a62d7a4cb53740",
14
+ "packages/sdk/src/index.ts": "cd1d62b2af628ea167a7709a48518f486eed856d",
15
15
  "packages/sdk/src/loader/__tests__/version.test.ts": "338ca817bfcb672d1065d6f32872b57bc43951b5",
16
16
  "packages/sdk/src/loader/h5.ts": "dadad15256c17d6aa1a6bbee71217140ae77d7fe",
17
17
  "packages/sdk/src/loader/index.ts": "0aca9623e99c9829ad68f03ad86deed389e1b57f",
package/dist/index.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";var F=Object.defineProperty;var $e=Object.getOwnPropertyDescriptor;var Ge=Object.getOwnPropertyNames;var He=Object.prototype.hasOwnProperty;var We=(e,t)=>{for(var r in t)F(e,r,{get:t[r],enumerable:!0})},ze=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Ge(t))!He.call(e,s)&&s!==r&&F(e,s,{get:()=>t[s],enumerable:!(n=$e(t,s))||n.enumerable});return e};var Ye=e=>ze(F({},"__esModule",{value:!0}),e);var Jt={};We(Jt,{JoliboxSDK:()=>J});module.exports=Ye(Jt);var oe=Object.defineProperty,Qe=Object.getOwnPropertyDescriptor,Xe=(e,t)=>{for(var r in t)oe(e,r,{get:t[r],enumerable:!0})},ie=(e,t,r,n)=>{for(var s=n>1?void 0:n?Qe(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&&oe(t,r,s),s};function qe(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}function H(e){return typeof e=="string"}function ae(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function Ze(e){return typeof e>"u"}function et(e){return Ze(e)||e===null}function tt(e){return typeof e=="function"}function ce(e){let t=e,r=null,n=function(...s){return r||(r=new t(...s)),r};return n.prototype=t.prototype,n}var rt=(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))(rt||{}),nt=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}},me=class extends nt{constructor(){super(...arguments),this.kind="INTERNAL_ERROR"}};var le=class extends me{constructor(){super(...arguments),this.name="INTERNAL_JS_MODULE_FETCH_ERROR",this.priority="P0"}},S=class extends me{constructor(){super(...arguments),this.name="INTERNAL_JS_MODULE_EVAL_ERROR",this.priority="P0"}};function x(e){return(...t)=>{(globalThis.VConsole?.[e]??globalThis.console[e])(...t)}}var st={log:x("log"),warn:x("warn"),info:x("info"),error:x("error"),debug:x("debug")};Object.assign(globalThis,{logger:st});var de=Symbol.for("Jolibox.canIUseMap"),ot={};globalThis[de]=ot;var ue={get config(){return globalThis[de]}};function W(e,t,r){let n=0;if(e!==t){let s=e.split("."),o=t.split("."),i=Math.max(s.length,o.length);for(let m=0;m<i;m++){let d=parseInt(s[m],10)||0,a=parseInt(o[m],10)||0;if(d>a){n=1;break}else if(d<a){n=-1;break}}}if(!r)return n;switch(r){case">":return n>0;case"<":return n<0;case"=":return n===0;case">=":return n>=0;case"<=":return n<=0;default:return!1}}var z=(e=>(e[e.System=1e3]="System",e[e.ErrorTrace=1001]="ErrorTrace",e[e.UserDefined=1002]="UserDefined",e))(z||{}),Y=(e=>(e.MiniGame="mini-game",e.MiniDrama="mini-drama",e.App="app",e.WebSDK="web-sdk",e.AppSDK="app-sdk",e))(Y||{}),it=(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))(it||{}),se=["name","params"],at=["name","type","location","target","extra","timestamp","userId"],ct=["platform","os","appVersion","appId","model","brand","uuid","jsSdkVersion","extra"];function D(e,t){return t.map(r=>{if(r==="params"&&e[r]){let n=e[r];return Object.keys(n).reduce((s,o)=>(s[o]=String(n[o]),s),{})}return e[r]})}function mt(e){let t=e.location?D(e.location,se):null,r=e.target?D(e.target,se):null;return D({...e,location:t,target:r},at)}function pe(e){let t=e.events.map(n=>mt(n)),r=D(e.device,ct);return[e.protocolVersion,t,r,e.project]}var lt=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)});var A={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")},dt=()=>A.isiOS?"iOS":A.isAndroid?"Android":A.isMac?"Mac":A.isFacebook?"Facebook":"PC",ut="device_id",pt="advertising_id",fe=e=>(localStorage.getItem(e)||localStorage.setItem(e,lt()),localStorage.getItem(e)),ft=()=>fe(ut),ht=()=>fe(pt),gt=e=>e.charAt(0).toUpperCase()+e.slice(1),Et=()=>{let e=new URLSearchParams(window.location.search);return gt(e.get("utm_source")??"")||"JoliboxSDK"},he=e=>{let t="JoliboxWebSDK",r=dt(),n=navigator.language,s=ft(),o=ht();return`${t} (${Et()}${r}; UnknownModel; UnknownSystemVersion; ${n}) uuid/${s} adid/${o} version/${e||""}`},c=class U{static{this.Undefined=new U(void 0)}constructor(t){this.element=t,this.next=U.Undefined,this.prev=U.Undefined}},_t=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 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!==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}},yt=0,w=class{constructor(e){this.value=e,this.id=yt++}},v=class{constructor(e){this.options=e,this._size=0}dispose(e){this._disposed||(this._disposed=!0,this._listeners&&(e?(this._listeners instanceof w&&(this._listeners=[this._listeners]),this._listeners=this._listeners.filter(t=>t?.value===e)):(this._listeners=void 0,this._size=0)),this.options?.onDidRemoveLastListener?.())}get event(){return this._event??=(e,t)=>{if(this._disposed)return()=>{console.info("[Jolibox SDK] Emitter is _disposed")};t&&(e=e.bind(t));let r=new w(e);this._listeners?this._listeners instanceof w?this._listeners=[this._listeners,r]:this._listeners.push(r):(this.options?.onWillAddFirstListener?.(this),this._listeners=r,this.options?.onDidFirstListener?.(this)),this.options?.onDidAddListener?.(this),this._size++},this._event}_deliver(e,t){if(!e)return;let r=this.options?.onListenerError||Error.constructor;if(!r){e.value(t);return}try{e.value(t)}catch(n){r(n)}}fire(e){this._listeners&&(this._listeners instanceof w?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){let r=this.listeners.get(e)??new v,n=o=>t(...o.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({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 _t,this.cachedEventQueue.set(e,n)),n.push({args:t})}}},$={};Xe($,{None:()=>St,filter:()=>vt,once:()=>ge,toPromise:()=>xt});var St=()=>{console.log("[Jolibox SDK] None Event")};function xt(e){return new Promise(t=>ge(e)(t))}function ge(e){return(t,r=null)=>{let n=!1;return e(s=>{if(!n)return n=!0,t.call(r,s)},null)}}function vt(e,t){return(r=>{let n,s={onWillAddFirstListener(){n=r(o.fire,o)}},o=new v(s);return o.event})((r,n=null)=>e(s=>t(s)&&r.call(n,s),null))}var B=Symbol.for("Jolibox.hostEmitter"),Rt=()=>{let e=new Q;return globalThis[B]||(globalThis[B]={on:e.on.bind(e),off:e.off.bind(e),emit:e.emit.bind(e)}),globalThis[B]},Ee=Rt();function bt(e,t){let r=Math.min(e.length,t.length);for(let n=0;n<r;n++)It(e[n],t[n])}function It(e,t){if(H(t)){if(typeof e!==t)throw new Error(`argument does not match constraint: typeof ${t}`)}else if(tt(t)){try{if(e instanceof t)return}catch{}if(!et(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")}}var L=class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new v,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 bt(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}};L=ie([ce],L);var G=class{constructor(){this._onWillExecuteCommand=new v,this.onWillExecuteCommand=this._onWillExecuteCommand.event,this._onDidExecuteCommand=new v,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this.registry=new L,this._starActivation=null}_activateStar(){return this._starActivation||(this._starActivation=qe(3e4)),this._starActivation}async executeCommand(e,...t){return this.registry.getCommand(e)?this._tryExecuteCommand(e,t):(await Promise.all([Promise.race([this._activateStar(),$.toPromise($.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}}};G=ie([ce],G);var V=Symbol.for("Jolibox.commands");function g(){if(globalThis[V])return globalThis[V];let e=new L,t=new G,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[V]=r,r}var k=new URLSearchParams(window.location.search).get("joliboxEnv")==="staging";function Tt(){let e=new URLSearchParams(window.location.search),t={};return e.forEach((r,n)=>{t[n]=r}),{name:"GamePage",params:t}}function At(){return{platform:1e3,os:"h5",appVersion:"1.1.7-beta.4",appId:"1",model:"UnknownModel",brand:"UnknownBrand",uuid:"1",jsSdkVersion:"1.1.7-beta.4",extra:{}}}var _e={default:{test:"https://stg-collect.jolibox.com",prod:"https://collect.jolibox.com"},"oss.jolibox.com":{test:"https://stg-collect.jolibox.com",prod:"https://collect.jolibox.com"},"oss.pico-game.com":{test:"https://stg-collect.pico-game.com",prod:"https://collect.pico-game.com"}},wt=()=>{let e=_e[window.location.host]??_e.default;return k?e.test:e.prod},Dt=wt(),ye=e=>{let t=new AbortController;return setTimeout(()=>t.abort(),e),t.signal};AbortSignal.timeout??=ye;var Ut=()=>new URLSearchParams(window.location.search).get("joliSource")??null,Lt=Ut(),kt=async e=>{let r=`${Dt}/report`,n=he("1.1.7-beta.4"),s=Lt,o={"Content-Type":"application/json"};return n&&(o["x-user-agent"]=n),s&&(o["x-joli-source"]=s),await fetch(r,{method:"POST",headers:o,body:JSON.stringify(e),signal:ye(5e3)})};async function E(e){let t={name:"globalJsError",type:z.ErrorTrace,location:Tt(),target:null,extra:e,timestamp:Date.now(),userId:null},r=At(),s={protocolVersion:"1.0.0",events:[t],device:r,project:Y.WebSDK},o=pe(s);kt(o)}document.addEventListener("DOMContentLoaded",()=>Ee.emit("onDocumentReady",R.startTime));var Ot=()=>{let e=0;return{set startTime(t){e=t},get startTime(){return e}}},R=Ot(),Se=g(),X=e=>{Se.executeCommand("ReportSDK.traceSystem",{event:"globalJsError",info:{err:JSON.stringify(e)}}).catch(t=>{console.error(`Fallback report: ${t} ${JSON.stringify(e)}`),E({err:JSON.stringify({message:t.message,source:t.source,lineno:t.lineno,colno:t.colno,error:t.error})})})},q=X;window.addEventListener("unhandledrejection",X.bind(void 0));window.addEventListener("error",X.bind(void 0));window.onerror=(e,t,r,n,s)=>{Se.executeCommand("ReportSDK.traceSystem",{event:"globalJsError",info:{err:JSON.stringify({message:e,source:t,lineno:r,colno:n,error:s})}}).catch(o=>{E({err:JSON.stringify({message:e,source:t,lineno:r,colno:n,error:s})})})};var Z=e=>{let t=e.split("-")[1];t&&(e=e.replace(`-${t}`,""));let r=e.split("+")[1];r&&(e=e.replace(`+${r}`,""));let n=e.split(".").slice(0,3),[s,o,i]=[n[0]??"0",n[1]??"0",n[2]??"0"];return{major:s,minor:o,patch:i,prerelease:t,build:r}},b=e=>parseInt(Z(e).major,10),I=(e,t)=>{let{major:r,minor:n,patch:s,prerelease:o}=Z(e),{major:i,minor:m,patch:d,prerelease:a}=Z(t);return r!==i?r>i?1:-1:n!==m?n>m?1:-1:s!==d?s>d?1:-1:o&&!a?-1:!o&&a?1:o&&a?o>a?1:o<a?-1:0:0};var xe=g(),O=(e,t)=>{xe.executeCommand("ReportSDK.traceSystem",{event:e,info:t})},_=(e,t,r)=>{xe.executeCommand("ReportSDK.traceSystemTimeline",{event:e,duration:t,extra:r})};var be="jolibox-sdk-loadermeta",T=JSON.parse(localStorage.getItem(be)??"{}"),ee=Date.now(),ve=(e,t)=>e>t&&Math.abs(e-t)/(1e3*60*60*24)>=7,Re=e=>!/^(Failed to fetch version|Couldn't find the requested file)/.test(e);async function Ct(){let t=`${k?"https://stg-api.jolibox.com":"https://api.jolibox.com"}/api/fe-configs/js-sdk/version-metadata`;try{let r=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json"}}),{implement_version:n,bootstrap_version:s}=await r.json(),o={...T,timestamp:ee};if(s){let{bootstrap_version:i}=T;if(!(i&&I(i,s)>=0)){let m=await(await fetch(te(s))).text();Re(m)&&(o={...o,bootstrap_version:s,bootstrap_script:m})}}if(n){let{implement_version:i}=T;if(!(i&&I(i,n)>=0)){let m=await(await fetch(re(n))).text();Re(m)&&(o={...o,implement_version:n,implement_script:m})}}localStorage.setItem(be,JSON.stringify(o))}catch(r){console.warn("Failed to fetch loader metadata: ",r)}}var Ie=e=>{let{currentMajorVersion:t,currentVersion:r,bootstrapUrl:n,implementUrl:s}=e;function o(){let{bootstrap_version:a,bootstrap_script:f,timestamp:h}=T;if(a&&f&&h&&!ve(ee,h)&&b(a)==t&&I(a,r)>=0)return{script:f,type:"localscript"};try{let l=new XMLHttpRequest;return l.open("GET",n,!1),l.send(),{script:l.responseText,type:"fetch_from_cdn"}}catch(l){let u=new le(`Bootstrap module faile to fetch ${l}`);E({err:`${u}`})}}function i(){let a=Date.now();O("jsSdkBegin",{t:a}),R.startTime=a;let{script:f,type:h}=o()??{};if(f){let l=document.createElement("script");l.type="text/javascript",l.innerHTML=f,document.head.appendChild(l),_("bootstrapModuleLoaded",Date.now()-a,{type:h})}}function m(a){(async h=>{try{let l=new Blob([h],{type:"application/javascript"}),u=URL.createObjectURL(l),Ve=await import(u);return URL.revokeObjectURL(u),Ve}catch(l){let u=new S(`implement module evaluate error in h5:${l} `);E({err:`${u}`})}})(a)}function d(){let a=Date.now(),{implement_script:f,implement_version:h,timestamp:l}=T;if(f&&h&&l&&!ve(ee,l)&&b(h)==t&&I(h,r)>=0){m(f),_("implementModuleLoaded",Date.now()-a,{type:"loadscript"});return}let u=document.createElement("script");u.type="module",u.crossOrigin="anonymous",u.src=s,u.onload=()=>{_("implementModuleLoaded",Date.now()-a,{type:"fetch_from_cdn"})},document.head.appendChild(u)}return()=>{try{i(),d(),Ct()}catch(a){let f=new S(`module evaluate error: ${a}`);E({err:`${f}`})}}};var Te=(e,t)=>{let r=s=>{let o=e({path:s});if(!o)throw`module ${s} load failed ${o}`;return o};function n(s){(async i=>{try{let m=new Blob([i],{type:"application/javascript"}),d=URL.createObjectURL(m),a=await import(d);return URL.revokeObjectURL(d),a}catch(m){q(new S(`implement module evaluate error in native:${m} `))}})(s)}return()=>{try{let s=Date.now();O("jsSdkBegin",{t:s}),R.startTime=s;let o=r(t.bootstrapUrl),i=document.createElement("script");i.type="text/javascript",i.innerHTML=o,document.head.appendChild(i),_("bootstrapModuleLoaded",Date.now()-s,{type:"native"});let m=Date.now(),d=r(t.implementUrl);n(d),_("implementModuleLoaded",Date.now()-m,{type:"native"})}catch(s){console.error(`native load script error: ${s}`),q(new S(`module load failed ${s}`))}}};var Pt="1.1.7-beta.4",C=Pt,De=b(C),Ue=!!(navigator.userAgent||"").includes("JoliboxPlatformSDK"),Kt=Ue?e=>{let t=window.prompt("invoke",JSON.stringify({event:"loadScriptSync",paramsString:JSON.stringify(e)}));if(t){let{data:r}=JSON.parse(t);return r}}:void 0,te=e=>`https://cdn.jsdelivr.net/npm/@jolibox/bootstrap@${e}/dist/index.js`,re=e=>`https://cdn.jsdelivr.net/npm/@jolibox/implement@${e}/dist/index.js`,Mt=e=>/^\d+\.\d+\.\d+$/.test(e),Le=Mt(C)?De:C,Ae=te(Le),we=re(Le);function Nt(){Ue?Te(Kt,{bootstrapUrl:Ae,implementUrl:we})():Ie({bootstrapUrl:Ae,implementUrl:we,currentMajorVersion:De,currentVersion:C})()}Nt();var ke=g();function Oe(){return ke.excuteCommandSync("API.getSystemInfoSync")}function Ce(){return ke.excuteCommandSync("API.env")}function Pe(e,t){return ue.config[e]?.[t]}function Ke(e,t,r){let n=Array.isArray(t)?t:t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let o of n)if(s&&(typeof s=="object"||Array.isArray(s)))s=s[o];else return r;return s===void 0?r:s}var Ne="1.1.7-beta.4";function y(e){let r=Ce().data?.deviceInfo?.platform;if(!r)return!1;let[n,...s]=e.split(":"),o=Pe(r=="h5"?r:"native",n);if(!o)return!1;let i=o.version;return typeof i!="string"||W(Ne,i,"<")?!1:s.length===0?!0:Me(o,s)||Me(o.properties,s)}function Me(e,t){if(!e)return!1;let r=Ke(e,t);return r?ae(r)?!0:H(r)?W(Ne,r,">="):!1:!1}var je=g();async function Je(){return y("login")?await je.executeCommand("API.login"):{code:"FAILURE",message:"[Jolibox SDK]login is not supported in this platform"}}async function Fe(){return y("checkSession")?await je.executeCommand("API.checkSession"):{code:"FAILURE",message:"[Jolibox SDK]checkSession is not supported in this platform"}}var ne=class{constructor(){this.loadFinished=()=>{let t=new Event("JOLIBOX_RUNTIME_LOAD_FINISHED");window.dispatchEvent(t)};this.notifyLoadProgress=t=>{let r=Math.ceil(t),n=new CustomEvent("JOLIBOX_RUNTIME_LOAD_PROGRESS",{detail:r});window.dispatchEvent(n)}}},Be=window.JoliboxRuntime||ne;var p=class{constructor(){this.commands=g();this._emitter=new Q}addEventListener(t,r){this._emitter.on(t,(...n)=>r(n[0]))}triggerEvent(t,r){this._emitter.emit(t,r)}canUse(t){return y(t)}canIUseIfThrow(t){if(!this.canUse(t))return{code:"FAILURE",message:`[Jolibox SDK] ${t} is not supported in this platform`}}};var jt="LifecycleSDK.onReady",P=class extends p{constructor(){super()}onReady(t){let r=n=>{t.call(this,n),this.triggerEvent(jt,n)};this.commands.executeCommand("LifecycleSDK.onReady",r.bind(this))}exit(t){let r=this.canIUseIfThrow("lifeCycle.exit");if(r)return r;this.commands.executeCommand("LifecycleSDK.exit",t.onBeforeExit)}onJoliboxHide(t){this.commands.executeCommand("LifecycleSDK.onJoliboxHide",t.bind(this))}onJoliboxShow(t){this.commands.executeCommand("LifecycleSDK.onJoliboxShow",t.bind(this))}};var K=class extends p{async getItem(t){return await this.commands.executeCommand("StorageSDK.getItem",t)}async setItem(t,r){if(t.length>128)return{code:"PARAMETER_ERROR",message:"[SDK] cloud storage setItem error: length of key should be less than 128"};let n=typeof r=="string"?r:String(r);return t.length+n.length>1024?{code:"PARAMETER_ERROR",message:"[SDK] cloud storage setItem error: length of key and value should be less than 1024"}:await this.commands.executeCommand("StorageSDK.setItem",t,r)}async removeItem(t){return this.commands.executeCommand("StorageSDK.removeItem",t)}async clear(){return this.commands.executeCommand("StorageSDK.clear")}};var M=class extends p{constructor(){super();this.init=r=>{this.commands.executeCommand("AdsSDK.init",r)};this.adConfig=r=>{this.commands.executeCommand("AdsSDK.adConfig",r)};this.adBreak=r=>{this.commands.executeCommand("AdsSDK.adBreak",r)};this.adUnit=r=>{this.commands.executeCommand("AdsSDK.adUnit",r)}}};var N=class extends p{showKeyboard(t){let r=this.canIUseIfThrow("keyboard.showKeyboard");if(r)return r;this.commands.executeCommand("KeyboardSDK.showKeyboard",t)}updateKeyboard(t){let r=this.canIUseIfThrow("keyboard.updateKeyboard");if(r)return r;this.commands.executeCommand("KeyboardSDK.updateKeyboard",{value:t})}hideKeyboard(){let t=this.canIUseIfThrow("keyboard.hideKeyboard");if(t)return t;this.commands.executeCommand("KeyboardSDK.hideKeyboard")}};var j=class extends p{async onLevelFinished(t,r,n){let s=this.canIUseIfThrow("TaskTrackerSDK.onLevelFinished");return s?Promise.resolve(s):await this.commands.executeCommand("TaskTrackerSDK.levelFinished",t,{result:r,duration:n})}async onTaskFinished(t,r){let n=this.canIUseIfThrow("TaskTrackerSDK.onTaskFinished");return n||await this.commands.executeCommand("TaskTrackerSDK.taskFinished",t,{duration:r})}async onTaskEvent(t,r){let n=this.canIUseIfThrow("TaskTrackerSDK.onTaskEvent");return n||await this.commands.executeCommand("TaskTrackerSDK.taskEvent",t,r)}async onLevelUpgrade(t,r){let n=this.canIUseIfThrow("TaskTrackerSDK.onLevelUpgrade");return n||await this.commands.executeCommand("TaskTrackerSDK.levelUpgrade",t,r)}async onHistoryUserLevel(t){let r=this.canIUseIfThrow("TaskTrackerSDK.onHistoryUserLevel");return r||await this.commands.executeCommand("TaskTrackerSDK.historyUserLevel",t)}async onHistoryUserScore(t){let r=this.canIUseIfThrow("TaskTrackerSDK.onHistoryUserScore");return r||await this.commands.executeCommand("TaskTrackerSDK.historyUserScore",t)}};var J=class{constructor(){this.jssdkVersion="1.1.7-beta.4";this.runtime=new Be;this.ads=new M;this.lifecycle=new P;this.storage=new K;this.keyboard=new N;this.task=new j;this.getSystemInfoSync=Oe.bind(this);this.canIUse=y.bind(this);this.login=Je.bind(this);this.checkSession=Fe.bind(this);window.joliboxsdk={runtime:this.runtime,ads:this.ads,lifecycle:this.lifecycle,storage:this.storage,keyboard:this.keyboard,task:this.task}}};window.JoliboxSDK=J;
1
+ "use strict";var L=Object.defineProperty,Ze=Object.defineProperties,et=Object.getOwnPropertyDescriptor,tt=Object.getOwnPropertyDescriptors,rt=Object.getOwnPropertyNames,ae=Object.getOwnPropertySymbols;var me=Object.prototype.hasOwnProperty,nt=Object.prototype.propertyIsEnumerable;var ce=(e,t,r)=>t in e?L(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,y=(e,t)=>{for(var r in t||(t={}))me.call(t,r)&&ce(e,r,t[r]);if(ae)for(var r of ae(t))nt.call(t,r)&&ce(e,r,t[r]);return e},I=(e,t)=>Ze(e,tt(t));var st=(e,t)=>{for(var r in t)L(e,r,{get:t[r],enumerable:!0})},ot=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of rt(t))!me.call(e,s)&&s!==r&&L(e,s,{get:()=>t[s],enumerable:!(n=et(t,s))||n.enumerable});return e};var it=e=>ot(L({},"__esModule",{value:!0}),e);var l=(e,t,r)=>new Promise((n,s)=>{var o=m=>{try{c(r.next(m))}catch(a){s(a)}},i=m=>{try{c(r.throw(m))}catch(a){s(a)}},c=m=>m.done?n(m.value):Promise.resolve(m.value).then(o,i);c((r=r.apply(e,t)).next())});var Qt={};st(Qt,{JoliboxSDK:()=>$});module.exports=it(Qt);var de=Object.defineProperty,at=Object.getOwnPropertyDescriptor,ct=(e,t)=>{for(var r in t)de(e,r,{get:t[r],enumerable:!0})},ue=(e,t,r,n)=>{for(var s=n>1?void 0:n?at(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&&de(t,r,s),s};function mt(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}function Y(e){return typeof e=="string"}function pe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function lt(e){return typeof e>"u"}function dt(e){return lt(e)||e===null}function ut(e){return typeof e=="function"}function fe(e){let t=e,r=null,n=function(...s){return r||(r=new t(...s)),r};return n.prototype=t.prototype,n}var pt=(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))(pt||{}),ft=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}},he=class extends ft{constructor(){super(...arguments),this.kind="INTERNAL_ERROR"}};var ge=class extends he{constructor(){super(...arguments),this.name="INTERNAL_JS_MODULE_FETCH_ERROR",this.priority="P0"}},R=class extends he{constructor(){super(...arguments),this.name="INTERNAL_JS_MODULE_EVAL_ERROR",this.priority="P0"}};function b(e){return(...t)=>{var r,n;((n=(r=globalThis.VConsole)==null?void 0:r[e])!=null?n:globalThis.console[e])(...t)}}var ht={log:b("log"),warn:b("warn"),info:b("info"),error:b("error"),debug:b("debug")};Object.assign(globalThis,{logger:ht});var Ee=Symbol.for("Jolibox.canIUseMap"),gt={};globalThis[Ee]=gt;var _e={get config(){return globalThis[Ee]}};function X(e,t,r){let n=0;if(e!==t){let s=e.split("."),o=t.split("."),i=Math.max(s.length,o.length);for(let c=0;c<i;c++){let m=parseInt(s[c],10)||0,a=parseInt(o[c],10)||0;if(m>a){n=1;break}else if(m<a){n=-1;break}}}if(!r)return n;switch(r){case">":return n>0;case"<":return n<0;case"=":return n===0;case">=":return n>=0;case"<=":return n<=0;default:return!1}}var Q=(e=>(e[e.System=1e3]="System",e[e.ErrorTrace=1001]="ErrorTrace",e[e.UserDefined=1002]="UserDefined",e))(Q||{}),q=(e=>(e.MiniGame="mini-game",e.MiniDrama="mini-drama",e.App="app",e.WebSDK="web-sdk",e.AppSDK="app-sdk",e))(q||{}),Et=(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))(Et||{}),le=["name","params"],_t=["name","type","location","target","extra","timestamp","userId"],yt=["platform","os","appVersion","appId","model","brand","uuid","jsSdkVersion","extra"];function C(e,t){return t.map(r=>{if(r==="params"&&e[r]){let n=e[r];return Object.keys(n).reduce((s,o)=>(s[o]=String(n[o]),s),{})}return e[r]})}function St(e){let t=e.location?C(e.location,le):null,r=e.target?C(e.target,le):null;return C(I(y({},e),{location:t,target:r}),_t)}function ye(e){let t=e.events.map(n=>St(n)),r=C(e.device,yt);return[e.protocolVersion,t,r,e.project]}var xt=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)});var k={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")},vt=()=>k.isiOS?"iOS":k.isAndroid?"Android":k.isMac?"Mac":k.isFacebook?"Facebook":"PC",It="device_id",Rt="advertising_id",Se=e=>(localStorage.getItem(e)||localStorage.setItem(e,xt()),localStorage.getItem(e)),bt=()=>Se(It),Tt=()=>Se(Rt),Dt=e=>e.charAt(0).toUpperCase()+e.slice(1),At=()=>{var t;let e=new URLSearchParams(window.location.search);return Dt((t=e.get("utm_source"))!=null?t:"")||"JoliboxSDK"},xe=e=>{let t="JoliboxWebSDK",r=vt(),n=navigator.language,s=bt(),o=Tt();return`${t} (${At()}${r}; UnknownModel; UnknownSystemVersion; ${n}) uuid/${s} adid/${o} version/${e||""}`},_,d=(_=class{constructor(t){this.element=t,this.next=_.Undefined,this.prev=_.Undefined}},_.Undefined=new _(void 0),_),wt=class{constructor(){this._first=d.Undefined,this._last=d.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===d.Undefined}clear(){let e=this._first;for(;e!==d.Undefined;){let t=e.next;e.prev=d.Undefined,e.next=d.Undefined,e=t}this._first=d.Undefined,this._last=d.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){let r=new d(e);if(this._first===d.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!==d.Undefined){let e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==d.Undefined){let e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==d.Undefined&&e.next!==d.Undefined){let t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===d.Undefined&&e.next===d.Undefined?(this._first=d.Undefined,this._last=d.Undefined):e.next===d.Undefined?(this._last=this._last.prev,this._last.next=d.Undefined):e.prev===d.Undefined&&(this._first=this._first.next,this._first.prev=d.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==d.Undefined;)yield e.element,e=e.next}},Ut=0,O=class{constructor(e){this.value=e,this.id=Ut++}},T=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 O&&(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,c,m,a;if(this._disposed)return()=>{console.info("[Jolibox SDK] Emitter is _disposed")};r&&(t=t.bind(r));let n=new O(t);this._listeners?this._listeners instanceof O?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,(c=(i=this.options)==null?void 0:i.onDidFirstListener)==null||c.call(i,this)),(a=(m=this.options)==null?void 0:m.onDidAddListener)==null||a.call(m,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 O?this._deliver(this._listeners,e):this._listeners.forEach(t=>this._deliver(t,e)))}hasListeners(){return this._size>0}},Z=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 T,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(y({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 wt,this.cachedEventQueue.set(e,n)),n.push({args:t})}}},W={};ct(W,{None:()=>Lt,filter:()=>Ot,once:()=>ve,toPromise:()=>kt});var Lt=()=>{console.log("[Jolibox SDK] None Event")};function kt(e){return new Promise(t=>ve(e)(t))}function ve(e){return(t,r=null)=>{let n=!1;return e(s=>{if(!n)return n=!0,t.call(r,s)},null)}}function Ot(e,t){return(r=>{let n,s={onWillAddFirstListener(){n=r(o.fire,o)}},o=new T(s);return o.event})((r,n=null)=>e(s=>t(s)&&r.call(n,s),null))}var G=Symbol.for("Jolibox.hostEmitter"),Ct=()=>{let e=new Z;return globalThis[G]||(globalThis[G]={on:e.on.bind(e),off:e.off.bind(e),emit:e.emit.bind(e)}),globalThis[G]},Ie=Ct();function Pt(e,t){let r=Math.min(e.length,t.length);for(let n=0;n<r;n++)Kt(e[n],t[n])}function Kt(e,t){if(Y(t)){if(typeof e!==t)throw new Error(`argument does not match constraint: typeof ${t}`)}else if(ut(t)){try{if(e instanceof t)return}catch(r){}if(!dt(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")}}var P=class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new T,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 Pt(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}};P=ue([fe],P);var z=class{constructor(){this._onWillExecuteCommand=new T,this.onWillExecuteCommand=this._onWillExecuteCommand.event,this._onDidExecuteCommand=new T,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this.registry=new P,this._starActivation=null}_activateStar(){return this._starActivation||(this._starActivation=mt(3e4)),this._starActivation}executeCommand(e,...t){return l(this,null,function*(){return this.registry.getCommand(e)?this._tryExecuteCommand(e,t):(yield Promise.all([Promise.race([this._activateStar(),W.toPromise(W.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}}};z=ue([fe],z);var H=Symbol.for("Jolibox.commands");function E(){if(globalThis[H])return globalThis[H];let e=new P,t=new z,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[H]=r,r}var K=new URLSearchParams(window.location.search).get("joliboxEnv")==="staging";function Mt(){let e=new URLSearchParams(window.location.search),t={};return e.forEach((r,n)=>{t[n]=r}),{name:"GamePage",params:t}}function Nt(){return{platform:1e3,os:"h5",appVersion:"1.1.8-beta.1",appId:"1",model:"UnknownModel",brand:"UnknownBrand",uuid:"1",jsSdkVersion:"1.1.8-beta.1",extra:{}}}var Re={default:{test:"https://stg-collect.jolibox.com",prod:"https://collect.jolibox.com"},"oss.jolibox.com":{test:"https://stg-collect.jolibox.com",prod:"https://collect.jolibox.com"},"oss.pico-game.com":{test:"https://stg-collect.pico-game.com",prod:"https://collect.pico-game.com"}},jt=()=>{var t;let e=(t=Re[window.location.host])!=null?t:Re.default;return K?e.test:e.prod},Jt=jt(),Te=e=>{let t=new AbortController;return setTimeout(()=>t.abort(),e),t.signal},be;(be=AbortSignal.timeout)!=null||(AbortSignal.timeout=Te);var Ft=()=>{var t;return(t=new URLSearchParams(window.location.search).get("joliSource"))!=null?t:null},Bt=Ft(),Vt=e=>l(void 0,null,function*(){let r=`${Jt}/report`,n=xe("1.1.8-beta.1"),s=Bt,o={"Content-Type":"application/json"};return n&&(o["x-user-agent"]=n),s&&(o["x-joli-source"]=s),yield fetch(r,{method:"POST",headers:o,body:JSON.stringify(e),signal:Te(5e3)})});function S(e){return l(this,null,function*(){let t={name:"globalJsError",type:Q.ErrorTrace,location:Mt(),target:null,extra:e,timestamp:Date.now(),userId:null},r=Nt(),s={protocolVersion:"1.0.0",events:[t],device:r,project:q.WebSDK},o=ye(s);Vt(o)})}document.addEventListener("DOMContentLoaded",()=>Ie.emit("onDocumentReady",D.startTime));var $t=()=>{let e=0;return{set startTime(t){e=t},get startTime(){return e}}},D=$t(),De=E(),ee=e=>{De.executeCommand("ReportSDK.traceSystem",{event:"globalJsError",info:{err:JSON.stringify(e)}}).catch(t=>{console.error(`Fallback report: ${t} ${JSON.stringify(e)}`),S({err:JSON.stringify({message:t.message,source:t.source,lineno:t.lineno,colno:t.colno,error:t.error})})})},te=ee;window.addEventListener("unhandledrejection",ee.bind(void 0));window.addEventListener("error",ee.bind(void 0));window.onerror=(e,t,r,n,s)=>{De.executeCommand("ReportSDK.traceSystem",{event:"globalJsError",info:{err:JSON.stringify({message:e,source:t,lineno:r,colno:n,error:s})}}).catch(o=>{S({err:JSON.stringify({message:e,source:t,lineno:r,colno:n,error:s})})})};var re=e=>{var c,m,a;let t=e.split("-")[1];t&&(e=e.replace(`-${t}`,""));let r=e.split("+")[1];r&&(e=e.replace(`+${r}`,""));let n=e.split(".").slice(0,3),[s,o,i]=[(c=n[0])!=null?c:"0",(m=n[1])!=null?m:"0",(a=n[2])!=null?a:"0"];return{major:s,minor:o,patch:i,prerelease:t,build:r}},A=e=>parseInt(re(e).major,10),w=(e,t)=>{let{major:r,minor:n,patch:s,prerelease:o}=re(e),{major:i,minor:c,patch:m,prerelease:a}=re(t);return r!==i?r>i?1:-1:n!==c?n>c?1:-1:s!==m?s>m?1:-1:o&&!a?-1:!o&&a?1:o&&a?o>a?1:o<a?-1:0:0};var Ae=E(),M=(e,t)=>{Ae.executeCommand("ReportSDK.traceSystem",{event:e,info:t})},x=(e,t,r)=>{Ae.executeCommand("ReportSDK.traceSystemTimeline",{event:e,duration:t,extra:r})};var ke="jolibox-sdk-loadermeta",Le,U=JSON.parse((Le=localStorage.getItem(ke))!=null?Le:"{}"),ne=Date.now(),we=(e,t)=>e>t&&Math.abs(e-t)/(1e3*60*60*24)>=7,Ue=e=>!/^(Failed to fetch version|Couldn't find the requested file)/.test(e);function Gt(){return l(this,null,function*(){let t=`${K?"https://stg-api.jolibox.com":"https://api.jolibox.com"}/api/fe-configs/js-sdk/version-metadata`;try{let r=yield fetch(t,{method:"GET",headers:{"Content-Type":"application/json"}}),{implement_version:n,bootstrap_version:s}=yield r.json(),o=I(y({},U),{timestamp:ne});if(s){let{bootstrap_version:i}=U;if(!(i&&w(i,s)>=0)){let c=yield(yield fetch(se(s))).text();Ue(c)&&(o=I(y({},o),{bootstrap_version:s,bootstrap_script:c}))}}if(n){let{implement_version:i}=U;if(!(i&&w(i,n)>=0)){let c=yield(yield fetch(oe(n))).text();Ue(c)&&(o=I(y({},o),{implement_version:n,implement_script:c}))}}localStorage.setItem(ke,JSON.stringify(o))}catch(r){console.warn("Failed to fetch loader metadata: ",r)}})}var Oe=e=>{let{currentMajorVersion:t,currentVersion:r,bootstrapUrl:n,implementUrl:s}=e;function o(){let{bootstrap_version:a,bootstrap_script:h,timestamp:g}=U;if(a&&h&&g&&!we(ne,g)&&A(a)==t&&w(a,r)>=0)return{script:h,type:"localscript"};try{let p=new XMLHttpRequest;return p.open("GET",n,!1),p.send(),{script:p.responseText,type:"fetch_from_cdn"}}catch(p){let u=new ge(`Bootstrap module faile to fetch ${p}`);S({err:`${u}`})}}function i(){var p;let a=Date.now();M("jsSdkBegin",{t:a}),D.startTime=a;let{script:h,type:g}=(p=o())!=null?p:{};if(h){let u=document.createElement("script");u.type="text/javascript",u.innerHTML=h,document.head.appendChild(u),x("bootstrapModuleLoaded",Date.now()-a,{type:g})}}function c(a){(g=>l(this,null,function*(){try{let p=new Blob([g],{type:"application/javascript"}),u=URL.createObjectURL(p),qe=yield import(u);return URL.revokeObjectURL(u),qe}catch(p){let u=new R(`implement module evaluate error in h5:${p} `);S({err:`${u}`})}}))(a)}function m(){let a=Date.now(),{implement_script:h,implement_version:g,timestamp:p}=U;if(h&&g&&p&&!we(ne,p)&&A(g)==t&&w(g,r)>=0){c(h),x("implementModuleLoaded",Date.now()-a,{type:"loadscript"});return}let u=document.createElement("script");u.type="module",u.crossOrigin="anonymous",u.src=s,u.onload=()=>{x("implementModuleLoaded",Date.now()-a,{type:"fetch_from_cdn"})},document.head.appendChild(u)}return()=>{try{i(),m(),Gt()}catch(a){let h=new R(`module evaluate error: ${a}`);S({err:`${h}`})}}};var Ce=(e,t)=>{let r=s=>{let o=e({path:s});if(!o)throw`module ${s} load failed ${o}`;return o};function n(s){(i=>l(this,null,function*(){try{let c=new Blob([i],{type:"application/javascript"}),m=URL.createObjectURL(c),a=yield import(m);return URL.revokeObjectURL(m),a}catch(c){te(new R(`implement module evaluate error in native:${c} `))}}))(s)}return()=>{try{let s=Date.now();M("jsSdkBegin",{t:s}),D.startTime=s;let o=r(t.bootstrapUrl),i=document.createElement("script");i.type="text/javascript",i.innerHTML=o,document.head.appendChild(i),x("bootstrapModuleLoaded",Date.now()-s,{type:"native"});let c=Date.now(),m=r(t.implementUrl);n(m),x("implementModuleLoaded",Date.now()-c,{type:"native"})}catch(s){console.error(`native load script error: ${s}`),te(new R(`module load failed ${s}`))}}};var Ht="1.1.8-beta.1",N=Ht,Me=A(N),Ne=!!(navigator.userAgent||"").includes("JoliboxPlatformSDK"),Wt=Ne?e=>{let t=window.prompt("invoke",JSON.stringify({event:"loadScriptSync",paramsString:JSON.stringify(e)}));if(t){let{data:r}=JSON.parse(t);return r}}:void 0,se=e=>`https://cdn.jsdelivr.net/npm/@jolibox/bootstrap@${e}/dist/index.js`,oe=e=>`https://cdn.jsdelivr.net/npm/@jolibox/implement@${e}/dist/index.js`,zt=e=>/^\d+\.\d+\.\d+$/.test(e),je=zt(N)?Me:N,Pe=se(je),Ke=oe(je);function Yt(){Ne?Ce(Wt,{bootstrapUrl:Pe,implementUrl:Ke})():Oe({bootstrapUrl:Pe,implementUrl:Ke,currentMajorVersion:Me,currentVersion:N})()}Yt();var Je=E();function Fe(){return Je.excuteCommandSync("API.getSystemInfoSync")}function Be(){return Je.excuteCommandSync("API.env")}function Ve(e,t){var r;return(r=_e.config[e])==null?void 0:r[t]}function $e(e,t,r){let n=Array.isArray(t)?t:t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let o of n)if(s&&(typeof s=="object"||Array.isArray(s)))s=s[o];else return r;return s===void 0?r:s}var He="1.1.8-beta.1";function v(e){var c,m;let r=(m=(c=Be().data)==null?void 0:c.deviceInfo)==null?void 0:m.platform;if(!r)return!1;let[n,...s]=e.split(":"),o=Ve(r=="h5"?r:"native",n);if(!o)return!1;let i=o.version;return typeof i!="string"||X(He,i,"<")?!1:s.length===0?!0:Ge(o,s)||Ge(o.properties,s)}function Ge(e,t){if(!e)return!1;let r=$e(e,t);return r?pe(r)?!0:Y(r)?X(He,r,">="):!1:!1}var We=E();function ze(){return l(this,null,function*(){return v("login")?yield We.executeCommand("API.login"):{code:"FAILURE",message:"[Jolibox SDK]login is not supported in this platform"}})}function Ye(){return l(this,null,function*(){return v("checkSession")?yield We.executeCommand("API.checkSession"):{code:"FAILURE",message:"[Jolibox SDK]checkSession is not supported in this platform"}})}var ie=class{constructor(){this.loadFinished=()=>{let t=new Event("JOLIBOX_RUNTIME_LOAD_FINISHED");window.dispatchEvent(t)};this.notifyLoadProgress=t=>{let r=Math.ceil(t),n=new CustomEvent("JOLIBOX_RUNTIME_LOAD_PROGRESS",{detail:r});window.dispatchEvent(n)}}},Xe=window.JoliboxRuntime||ie;var f=class{constructor(){this.commands=E();this._emitter=new Z}addEventListener(t,r){this._emitter.on(t,(...n)=>r(n[0]))}triggerEvent(t,r){this._emitter.emit(t,r)}canUse(t){return v(t)}canIUseIfThrow(t){if(!this.canUse(t))return{code:"FAILURE",message:`[Jolibox SDK] ${t} is not supported in this platform`}}};var Xt="LifecycleSDK.onReady",j=class extends f{constructor(){super()}onReady(t){let r=n=>{t.call(this,n),this.triggerEvent(Xt,n)};this.commands.executeCommand("LifecycleSDK.onReady",r.bind(this))}exit(t){let r=this.canIUseIfThrow("lifeCycle.exit");if(r)return r;this.commands.executeCommand("LifecycleSDK.exit",t.onBeforeExit)}onJoliboxHide(t){this.commands.executeCommand("LifecycleSDK.onJoliboxHide",t.bind(this))}onJoliboxShow(t){this.commands.executeCommand("LifecycleSDK.onJoliboxShow",t.bind(this))}};var J=class extends f{getItem(t){return l(this,null,function*(){return yield this.commands.executeCommand("StorageSDK.getItem",t)})}setItem(t,r){return l(this,null,function*(){if(t.length>128)return{code:"PARAMETER_ERROR",message:"[SDK] cloud storage setItem error: length of key should be less than 128"};let n=typeof r=="string"?r:String(r);return t.length+n.length>1024?{code:"PARAMETER_ERROR",message:"[SDK] cloud storage setItem error: length of key and value should be less than 1024"}:yield this.commands.executeCommand("StorageSDK.setItem",t,r)})}removeItem(t){return l(this,null,function*(){return this.commands.executeCommand("StorageSDK.removeItem",t)})}clear(){return l(this,null,function*(){return this.commands.executeCommand("StorageSDK.clear")})}};var F=class extends f{constructor(){super();this.init=r=>{this.commands.executeCommand("AdsSDK.init",r)};this.adConfig=r=>{this.commands.executeCommand("AdsSDK.adConfig",r)};this.adBreak=r=>{this.commands.executeCommand("AdsSDK.adBreak",r)};this.adUnit=r=>{this.commands.executeCommand("AdsSDK.adUnit",r)}}};var B=class extends f{showKeyboard(t){let r=this.canIUseIfThrow("keyboard.showKeyboard");if(r)return r;this.commands.executeCommand("KeyboardSDK.showKeyboard",t)}updateKeyboard(t){let r=this.canIUseIfThrow("keyboard.updateKeyboard");if(r)return r;this.commands.executeCommand("KeyboardSDK.updateKeyboard",{value:t})}hideKeyboard(){let t=this.canIUseIfThrow("keyboard.hideKeyboard");if(t)return t;this.commands.executeCommand("KeyboardSDK.hideKeyboard")}};var V=class extends f{onLevelFinished(t,r,n){return l(this,null,function*(){let s=this.canIUseIfThrow("TaskTrackerSDK.onLevelFinished");return s?Promise.resolve(s):yield this.commands.executeCommand("TaskTrackerSDK.levelFinished",t,{result:r,duration:n})})}onTaskFinished(t,r){return l(this,null,function*(){let n=this.canIUseIfThrow("TaskTrackerSDK.onTaskFinished");return n||(yield this.commands.executeCommand("TaskTrackerSDK.taskFinished",t,{duration:r}))})}onTaskEvent(t,r){return l(this,null,function*(){let n=this.canIUseIfThrow("TaskTrackerSDK.onTaskEvent");return n||(yield this.commands.executeCommand("TaskTrackerSDK.taskEvent",t,r))})}onLevelUpgrade(t,r){return l(this,null,function*(){let n=this.canIUseIfThrow("TaskTrackerSDK.onLevelUpgrade");return n||(yield this.commands.executeCommand("TaskTrackerSDK.levelUpgrade",t,r))})}onHistoryUserLevel(t){return l(this,null,function*(){let r=this.canIUseIfThrow("TaskTrackerSDK.onHistoryUserLevel");return r||(yield this.commands.executeCommand("TaskTrackerSDK.historyUserLevel",t))})}onHistoryUserScore(t){return l(this,null,function*(){let r=this.canIUseIfThrow("TaskTrackerSDK.onHistoryUserScore");return r||(yield this.commands.executeCommand("TaskTrackerSDK.historyUserScore",t))})}};var Qe=Symbol("__JOLIBOX_SDK_INITIALIZED__");(()=>{if(window[Qe]){console.warn("JoliboxSDK already initialized, skipping...");return}})();window[Qe]=!0;var $=class{constructor(){this.jssdkVersion="1.1.8-beta.1";this.runtime=new Xe;this.ads=new F;this.lifecycle=new j;this.storage=new J;this.keyboard=new B;this.task=new V;this.getSystemInfoSync=Fe.bind(this);this.canIUse=v.bind(this);this.login=ze.bind(this);this.checkSession=Ye.bind(this);window.joliboxsdk={runtime:this.runtime,ads:this.ads,lifecycle:this.lifecycle,storage:this.storage,keyboard:this.keyboard,task:this.task}}};window.JoliboxSDK=$;
package/dist/index.d.ts CHANGED
@@ -1,3 +1,10 @@
1
+ declare const SDK_INITIALIZED: unique symbol;
2
+ declare global {
3
+ interface Window {
4
+ JoliboxSDK: typeof JoliboxSDK;
5
+ [SDK_INITIALIZED]?: boolean;
6
+ }
7
+ }
1
8
  /** load implement at very first time */
2
9
  /**
3
10
  * global error catch
@@ -44,3 +51,4 @@ export declare class JoliboxSDK {
44
51
  checkSession: typeof checkSession;
45
52
  constructor();
46
53
  }
54
+ export {};
package/dist/index.esm.js CHANGED
@@ -1 +1 @@
1
- var se=Object.defineProperty,Ve=Object.getOwnPropertyDescriptor,$e=(e,t)=>{for(var r in t)se(e,r,{get:t[r],enumerable:!0})},oe=(e,t,r,n)=>{for(var s=n>1?void 0:n?Ve(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&&se(t,r,s),s};function Ge(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}function $(e){return typeof e=="string"}function ie(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function He(e){return typeof e>"u"}function We(e){return He(e)||e===null}function ze(e){return typeof e=="function"}function ae(e){let t=e,r=null,n=function(...s){return r||(r=new t(...s)),r};return n.prototype=t.prototype,n}var Ye=(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))(Ye||{}),Qe=class extends Error{constructor(e){if(typeof e=="string"){super(e),this.priority="P1";return}super(e.message),this.priority="P1",this.stack=e.stack,this.raw=e}},ce=class extends Qe{constructor(){super(...arguments),this.kind="INTERNAL_ERROR"}};var me=class extends ce{constructor(){super(...arguments),this.name="INTERNAL_JS_MODULE_FETCH_ERROR",this.priority="P0"}},S=class extends ce{constructor(){super(...arguments),this.name="INTERNAL_JS_MODULE_EVAL_ERROR",this.priority="P0"}};function x(e){return(...t)=>{(globalThis.VConsole?.[e]??globalThis.console[e])(...t)}}var Xe={log:x("log"),warn:x("warn"),info:x("info"),error:x("error"),debug:x("debug")};Object.assign(globalThis,{logger:Xe});var le=Symbol.for("Jolibox.canIUseMap"),qe={};globalThis[le]=qe;var de={get config(){return globalThis[le]}};function G(e,t,r){let n=0;if(e!==t){let s=e.split("."),o=t.split("."),i=Math.max(s.length,o.length);for(let m=0;m<i;m++){let d=parseInt(s[m],10)||0,a=parseInt(o[m],10)||0;if(d>a){n=1;break}else if(d<a){n=-1;break}}}if(!r)return n;switch(r){case">":return n>0;case"<":return n<0;case"=":return n===0;case">=":return n>=0;case"<=":return n<=0;default:return!1}}var H=(e=>(e[e.System=1e3]="System",e[e.ErrorTrace=1001]="ErrorTrace",e[e.UserDefined=1002]="UserDefined",e))(H||{}),W=(e=>(e.MiniGame="mini-game",e.MiniDrama="mini-drama",e.App="app",e.WebSDK="web-sdk",e.AppSDK="app-sdk",e))(W||{}),Ze=(e=>(e[e.App=0]="App",e[e.H5=1]="H5",e[e.Weapp=2]="Weapp",e[e.Alipay=3]="Alipay",e[e.Gcash=4]="Gcash",e[e.Dana=5]="Dana",e[e.Umma=6]="Umma",e[e.WebSDK=1e3]="WebSDK",e[e.AppSDK=1001]="AppSDK",e[e.Other=9999]="Other",e))(Ze||{}),ne=["name","params"],et=["name","type","location","target","extra","timestamp","userId"],tt=["platform","os","appVersion","appId","model","brand","uuid","jsSdkVersion","extra"];function D(e,t){return t.map(r=>{if(r==="params"&&e[r]){let n=e[r];return Object.keys(n).reduce((s,o)=>(s[o]=String(n[o]),s),{})}return e[r]})}function rt(e){let t=e.location?D(e.location,ne):null,r=e.target?D(e.target,ne):null;return D({...e,location:t,target:r},et)}function ue(e){let t=e.events.map(n=>rt(n)),r=D(e.device,tt);return[e.protocolVersion,t,r,e.project]}var nt=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)});var A={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")},st=()=>A.isiOS?"iOS":A.isAndroid?"Android":A.isMac?"Mac":A.isFacebook?"Facebook":"PC",ot="device_id",it="advertising_id",pe=e=>(localStorage.getItem(e)||localStorage.setItem(e,nt()),localStorage.getItem(e)),at=()=>pe(ot),ct=()=>pe(it),mt=e=>e.charAt(0).toUpperCase()+e.slice(1),lt=()=>{let e=new URLSearchParams(window.location.search);return mt(e.get("utm_source")??"")||"JoliboxSDK"},fe=e=>{let t="JoliboxWebSDK",r=st(),n=navigator.language,s=at(),o=ct();return`${t} (${lt()}${r}; UnknownModel; UnknownSystemVersion; ${n}) uuid/${s} adid/${o} version/${e||""}`},c=class U{static{this.Undefined=new U(void 0)}constructor(t){this.element=t,this.next=U.Undefined,this.prev=U.Undefined}},dt=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 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!==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}},ut=0,w=class{constructor(e){this.value=e,this.id=ut++}},v=class{constructor(e){this.options=e,this._size=0}dispose(e){this._disposed||(this._disposed=!0,this._listeners&&(e?(this._listeners instanceof w&&(this._listeners=[this._listeners]),this._listeners=this._listeners.filter(t=>t?.value===e)):(this._listeners=void 0,this._size=0)),this.options?.onDidRemoveLastListener?.())}get event(){return this._event??=(e,t)=>{if(this._disposed)return()=>{console.info("[Jolibox SDK] Emitter is _disposed")};t&&(e=e.bind(t));let r=new w(e);this._listeners?this._listeners instanceof w?this._listeners=[this._listeners,r]:this._listeners.push(r):(this.options?.onWillAddFirstListener?.(this),this._listeners=r,this.options?.onDidFirstListener?.(this)),this.options?.onDidAddListener?.(this),this._size++},this._event}_deliver(e,t){if(!e)return;let r=this.options?.onListenerError||Error.constructor;if(!r){e.value(t);return}try{e.value(t)}catch(n){r(n)}}fire(e){this._listeners&&(this._listeners instanceof w?this._deliver(this._listeners,e):this._listeners.forEach(t=>this._deliver(t,e)))}hasListeners(){return this._size>0}},z=class{constructor(){this.listeners=new Map,this.listerHandlerMap=new WeakMap,this.cachedEventQueue=new Map}on(e,t){let r=this.listeners.get(e)??new v,n=o=>t(...o.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({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 dt,this.cachedEventQueue.set(e,n)),n.push({args:t})}}},B={};$e(B,{None:()=>pt,filter:()=>ht,once:()=>he,toPromise:()=>ft});var pt=()=>{console.log("[Jolibox SDK] None Event")};function ft(e){return new Promise(t=>he(e)(t))}function he(e){return(t,r=null)=>{let n=!1;return e(s=>{if(!n)return n=!0,t.call(r,s)},null)}}function ht(e,t){return(r=>{let n,s={onWillAddFirstListener(){n=r(o.fire,o)}},o=new v(s);return o.event})((r,n=null)=>e(s=>t(s)&&r.call(n,s),null))}var J=Symbol.for("Jolibox.hostEmitter"),gt=()=>{let e=new z;return globalThis[J]||(globalThis[J]={on:e.on.bind(e),off:e.off.bind(e),emit:e.emit.bind(e)}),globalThis[J]},ge=gt();function Et(e,t){let r=Math.min(e.length,t.length);for(let n=0;n<r;n++)_t(e[n],t[n])}function _t(e,t){if($(t)){if(typeof e!==t)throw new Error(`argument does not match constraint: typeof ${t}`)}else if(ze(t)){try{if(e instanceof t)return}catch{}if(!We(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")}}var L=class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new v,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 Et(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}};L=oe([ae],L);var V=class{constructor(){this._onWillExecuteCommand=new v,this.onWillExecuteCommand=this._onWillExecuteCommand.event,this._onDidExecuteCommand=new v,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this.registry=new L,this._starActivation=null}_activateStar(){return this._starActivation||(this._starActivation=Ge(3e4)),this._starActivation}async executeCommand(e,...t){return this.registry.getCommand(e)?this._tryExecuteCommand(e,t):(await Promise.all([Promise.race([this._activateStar(),B.toPromise(B.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}}};V=oe([ae],V);var F=Symbol.for("Jolibox.commands");function g(){if(globalThis[F])return globalThis[F];let e=new L,t=new V,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[F]=r,r}var k=new URLSearchParams(window.location.search).get("joliboxEnv")==="staging";function yt(){let e=new URLSearchParams(window.location.search),t={};return e.forEach((r,n)=>{t[n]=r}),{name:"GamePage",params:t}}function St(){return{platform:1e3,os:"h5",appVersion:"1.1.7-beta.4",appId:"1",model:"UnknownModel",brand:"UnknownBrand",uuid:"1",jsSdkVersion:"1.1.7-beta.4",extra:{}}}var Ee={default:{test:"https://stg-collect.jolibox.com",prod:"https://collect.jolibox.com"},"oss.jolibox.com":{test:"https://stg-collect.jolibox.com",prod:"https://collect.jolibox.com"},"oss.pico-game.com":{test:"https://stg-collect.pico-game.com",prod:"https://collect.pico-game.com"}},xt=()=>{let e=Ee[window.location.host]??Ee.default;return k?e.test:e.prod},vt=xt(),_e=e=>{let t=new AbortController;return setTimeout(()=>t.abort(),e),t.signal};AbortSignal.timeout??=_e;var Rt=()=>new URLSearchParams(window.location.search).get("joliSource")??null,bt=Rt(),It=async e=>{let r=`${vt}/report`,n=fe("1.1.7-beta.4"),s=bt,o={"Content-Type":"application/json"};return n&&(o["x-user-agent"]=n),s&&(o["x-joli-source"]=s),await fetch(r,{method:"POST",headers:o,body:JSON.stringify(e),signal:_e(5e3)})};async function E(e){let t={name:"globalJsError",type:H.ErrorTrace,location:yt(),target:null,extra:e,timestamp:Date.now(),userId:null},r=St(),s={protocolVersion:"1.0.0",events:[t],device:r,project:W.WebSDK},o=ue(s);It(o)}document.addEventListener("DOMContentLoaded",()=>ge.emit("onDocumentReady",R.startTime));var Tt=()=>{let e=0;return{set startTime(t){e=t},get startTime(){return e}}},R=Tt(),ye=g(),Y=e=>{ye.executeCommand("ReportSDK.traceSystem",{event:"globalJsError",info:{err:JSON.stringify(e)}}).catch(t=>{console.error(`Fallback report: ${t} ${JSON.stringify(e)}`),E({err:JSON.stringify({message:t.message,source:t.source,lineno:t.lineno,colno:t.colno,error:t.error})})})},Q=Y;window.addEventListener("unhandledrejection",Y.bind(void 0));window.addEventListener("error",Y.bind(void 0));window.onerror=(e,t,r,n,s)=>{ye.executeCommand("ReportSDK.traceSystem",{event:"globalJsError",info:{err:JSON.stringify({message:e,source:t,lineno:r,colno:n,error:s})}}).catch(o=>{E({err:JSON.stringify({message:e,source:t,lineno:r,colno:n,error:s})})})};var X=e=>{let t=e.split("-")[1];t&&(e=e.replace(`-${t}`,""));let r=e.split("+")[1];r&&(e=e.replace(`+${r}`,""));let n=e.split(".").slice(0,3),[s,o,i]=[n[0]??"0",n[1]??"0",n[2]??"0"];return{major:s,minor:o,patch:i,prerelease:t,build:r}},b=e=>parseInt(X(e).major,10),I=(e,t)=>{let{major:r,minor:n,patch:s,prerelease:o}=X(e),{major:i,minor:m,patch:d,prerelease:a}=X(t);return r!==i?r>i?1:-1:n!==m?n>m?1:-1:s!==d?s>d?1:-1:o&&!a?-1:!o&&a?1:o&&a?o>a?1:o<a?-1:0:0};var Se=g(),O=(e,t)=>{Se.executeCommand("ReportSDK.traceSystem",{event:e,info:t})},_=(e,t,r)=>{Se.executeCommand("ReportSDK.traceSystemTimeline",{event:e,duration:t,extra:r})};var Re="jolibox-sdk-loadermeta",T=JSON.parse(localStorage.getItem(Re)??"{}"),q=Date.now(),xe=(e,t)=>e>t&&Math.abs(e-t)/(1e3*60*60*24)>=7,ve=e=>!/^(Failed to fetch version|Couldn't find the requested file)/.test(e);async function At(){let t=`${k?"https://stg-api.jolibox.com":"https://api.jolibox.com"}/api/fe-configs/js-sdk/version-metadata`;try{let r=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json"}}),{implement_version:n,bootstrap_version:s}=await r.json(),o={...T,timestamp:q};if(s){let{bootstrap_version:i}=T;if(!(i&&I(i,s)>=0)){let m=await(await fetch(Z(s))).text();ve(m)&&(o={...o,bootstrap_version:s,bootstrap_script:m})}}if(n){let{implement_version:i}=T;if(!(i&&I(i,n)>=0)){let m=await(await fetch(ee(n))).text();ve(m)&&(o={...o,implement_version:n,implement_script:m})}}localStorage.setItem(Re,JSON.stringify(o))}catch(r){console.warn("Failed to fetch loader metadata: ",r)}}var be=e=>{let{currentMajorVersion:t,currentVersion:r,bootstrapUrl:n,implementUrl:s}=e;function o(){let{bootstrap_version:a,bootstrap_script:f,timestamp:h}=T;if(a&&f&&h&&!xe(q,h)&&b(a)==t&&I(a,r)>=0)return{script:f,type:"localscript"};try{let l=new XMLHttpRequest;return l.open("GET",n,!1),l.send(),{script:l.responseText,type:"fetch_from_cdn"}}catch(l){let u=new me(`Bootstrap module faile to fetch ${l}`);E({err:`${u}`})}}function i(){let a=Date.now();O("jsSdkBegin",{t:a}),R.startTime=a;let{script:f,type:h}=o()??{};if(f){let l=document.createElement("script");l.type="text/javascript",l.innerHTML=f,document.head.appendChild(l),_("bootstrapModuleLoaded",Date.now()-a,{type:h})}}function m(a){(async h=>{try{let l=new Blob([h],{type:"application/javascript"}),u=URL.createObjectURL(l),Be=await import(u);return URL.revokeObjectURL(u),Be}catch(l){let u=new S(`implement module evaluate error in h5:${l} `);E({err:`${u}`})}})(a)}function d(){let a=Date.now(),{implement_script:f,implement_version:h,timestamp:l}=T;if(f&&h&&l&&!xe(q,l)&&b(h)==t&&I(h,r)>=0){m(f),_("implementModuleLoaded",Date.now()-a,{type:"loadscript"});return}let u=document.createElement("script");u.type="module",u.crossOrigin="anonymous",u.src=s,u.onload=()=>{_("implementModuleLoaded",Date.now()-a,{type:"fetch_from_cdn"})},document.head.appendChild(u)}return()=>{try{i(),d(),At()}catch(a){let f=new S(`module evaluate error: ${a}`);E({err:`${f}`})}}};var Ie=(e,t)=>{let r=s=>{let o=e({path:s});if(!o)throw`module ${s} load failed ${o}`;return o};function n(s){(async i=>{try{let m=new Blob([i],{type:"application/javascript"}),d=URL.createObjectURL(m),a=await import(d);return URL.revokeObjectURL(d),a}catch(m){Q(new S(`implement module evaluate error in native:${m} `))}})(s)}return()=>{try{let s=Date.now();O("jsSdkBegin",{t:s}),R.startTime=s;let o=r(t.bootstrapUrl),i=document.createElement("script");i.type="text/javascript",i.innerHTML=o,document.head.appendChild(i),_("bootstrapModuleLoaded",Date.now()-s,{type:"native"});let m=Date.now(),d=r(t.implementUrl);n(d),_("implementModuleLoaded",Date.now()-m,{type:"native"})}catch(s){console.error(`native load script error: ${s}`),Q(new S(`module load failed ${s}`))}}};var wt="1.1.7-beta.4",C=wt,we=b(C),De=!!(navigator.userAgent||"").includes("JoliboxPlatformSDK"),Dt=De?e=>{let t=window.prompt("invoke",JSON.stringify({event:"loadScriptSync",paramsString:JSON.stringify(e)}));if(t){let{data:r}=JSON.parse(t);return r}}:void 0,Z=e=>`https://cdn.jsdelivr.net/npm/@jolibox/bootstrap@${e}/dist/index.js`,ee=e=>`https://cdn.jsdelivr.net/npm/@jolibox/implement@${e}/dist/index.js`,Ut=e=>/^\d+\.\d+\.\d+$/.test(e),Ue=Ut(C)?we:C,Te=Z(Ue),Ae=ee(Ue);function Lt(){De?Ie(Dt,{bootstrapUrl:Te,implementUrl:Ae})():be({bootstrapUrl:Te,implementUrl:Ae,currentMajorVersion:we,currentVersion:C})()}Lt();var Le=g();function ke(){return Le.excuteCommandSync("API.getSystemInfoSync")}function Oe(){return Le.excuteCommandSync("API.env")}function Ce(e,t){return de.config[e]?.[t]}function Pe(e,t,r){let n=Array.isArray(t)?t:t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let o of n)if(s&&(typeof s=="object"||Array.isArray(s)))s=s[o];else return r;return s===void 0?r:s}var Me="1.1.7-beta.4";function y(e){let r=Oe().data?.deviceInfo?.platform;if(!r)return!1;let[n,...s]=e.split(":"),o=Ce(r=="h5"?r:"native",n);if(!o)return!1;let i=o.version;return typeof i!="string"||G(Me,i,"<")?!1:s.length===0?!0:Ke(o,s)||Ke(o.properties,s)}function Ke(e,t){if(!e)return!1;let r=Pe(e,t);return r?ie(r)?!0:$(r)?G(Me,r,">="):!1:!1}var Ne=g();async function je(){return y("login")?await Ne.executeCommand("API.login"):{code:"FAILURE",message:"[Jolibox SDK]login is not supported in this platform"}}async function Je(){return y("checkSession")?await Ne.executeCommand("API.checkSession"):{code:"FAILURE",message:"[Jolibox SDK]checkSession is not supported in this platform"}}var te=class{constructor(){this.loadFinished=()=>{let t=new Event("JOLIBOX_RUNTIME_LOAD_FINISHED");window.dispatchEvent(t)};this.notifyLoadProgress=t=>{let r=Math.ceil(t),n=new CustomEvent("JOLIBOX_RUNTIME_LOAD_PROGRESS",{detail:r});window.dispatchEvent(n)}}},Fe=window.JoliboxRuntime||te;var p=class{constructor(){this.commands=g();this._emitter=new z}addEventListener(t,r){this._emitter.on(t,(...n)=>r(n[0]))}triggerEvent(t,r){this._emitter.emit(t,r)}canUse(t){return y(t)}canIUseIfThrow(t){if(!this.canUse(t))return{code:"FAILURE",message:`[Jolibox SDK] ${t} is not supported in this platform`}}};var kt="LifecycleSDK.onReady",P=class extends p{constructor(){super()}onReady(t){let r=n=>{t.call(this,n),this.triggerEvent(kt,n)};this.commands.executeCommand("LifecycleSDK.onReady",r.bind(this))}exit(t){let r=this.canIUseIfThrow("lifeCycle.exit");if(r)return r;this.commands.executeCommand("LifecycleSDK.exit",t.onBeforeExit)}onJoliboxHide(t){this.commands.executeCommand("LifecycleSDK.onJoliboxHide",t.bind(this))}onJoliboxShow(t){this.commands.executeCommand("LifecycleSDK.onJoliboxShow",t.bind(this))}};var K=class extends p{async getItem(t){return await this.commands.executeCommand("StorageSDK.getItem",t)}async setItem(t,r){if(t.length>128)return{code:"PARAMETER_ERROR",message:"[SDK] cloud storage setItem error: length of key should be less than 128"};let n=typeof r=="string"?r:String(r);return t.length+n.length>1024?{code:"PARAMETER_ERROR",message:"[SDK] cloud storage setItem error: length of key and value should be less than 1024"}:await this.commands.executeCommand("StorageSDK.setItem",t,r)}async removeItem(t){return this.commands.executeCommand("StorageSDK.removeItem",t)}async clear(){return this.commands.executeCommand("StorageSDK.clear")}};var M=class extends p{constructor(){super();this.init=r=>{this.commands.executeCommand("AdsSDK.init",r)};this.adConfig=r=>{this.commands.executeCommand("AdsSDK.adConfig",r)};this.adBreak=r=>{this.commands.executeCommand("AdsSDK.adBreak",r)};this.adUnit=r=>{this.commands.executeCommand("AdsSDK.adUnit",r)}}};var N=class extends p{showKeyboard(t){let r=this.canIUseIfThrow("keyboard.showKeyboard");if(r)return r;this.commands.executeCommand("KeyboardSDK.showKeyboard",t)}updateKeyboard(t){let r=this.canIUseIfThrow("keyboard.updateKeyboard");if(r)return r;this.commands.executeCommand("KeyboardSDK.updateKeyboard",{value:t})}hideKeyboard(){let t=this.canIUseIfThrow("keyboard.hideKeyboard");if(t)return t;this.commands.executeCommand("KeyboardSDK.hideKeyboard")}};var j=class extends p{async onLevelFinished(t,r,n){let s=this.canIUseIfThrow("TaskTrackerSDK.onLevelFinished");return s?Promise.resolve(s):await this.commands.executeCommand("TaskTrackerSDK.levelFinished",t,{result:r,duration:n})}async onTaskFinished(t,r){let n=this.canIUseIfThrow("TaskTrackerSDK.onTaskFinished");return n||await this.commands.executeCommand("TaskTrackerSDK.taskFinished",t,{duration:r})}async onTaskEvent(t,r){let n=this.canIUseIfThrow("TaskTrackerSDK.onTaskEvent");return n||await this.commands.executeCommand("TaskTrackerSDK.taskEvent",t,r)}async onLevelUpgrade(t,r){let n=this.canIUseIfThrow("TaskTrackerSDK.onLevelUpgrade");return n||await this.commands.executeCommand("TaskTrackerSDK.levelUpgrade",t,r)}async onHistoryUserLevel(t){let r=this.canIUseIfThrow("TaskTrackerSDK.onHistoryUserLevel");return r||await this.commands.executeCommand("TaskTrackerSDK.historyUserLevel",t)}async onHistoryUserScore(t){let r=this.canIUseIfThrow("TaskTrackerSDK.onHistoryUserScore");return r||await this.commands.executeCommand("TaskTrackerSDK.historyUserScore",t)}};var re=class{constructor(){this.jssdkVersion="1.1.7-beta.4";this.runtime=new Fe;this.ads=new M;this.lifecycle=new P;this.storage=new K;this.keyboard=new N;this.task=new j;this.getSystemInfoSync=ke.bind(this);this.canIUse=y.bind(this);this.login=je.bind(this);this.checkSession=Je.bind(this);window.joliboxsdk={runtime:this.runtime,ads:this.ads,lifecycle:this.lifecycle,storage:this.storage,keyboard:this.keyboard,task:this.task}}};window.JoliboxSDK=re;export{re as JoliboxSDK};
1
+ var Qe=Object.defineProperty,qe=Object.defineProperties;var Ze=Object.getOwnPropertyDescriptors;var ie=Object.getOwnPropertySymbols;var et=Object.prototype.hasOwnProperty,tt=Object.prototype.propertyIsEnumerable;var ae=(e,t,r)=>t in e?Qe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,y=(e,t)=>{for(var r in t||(t={}))et.call(t,r)&&ae(e,r,t[r]);if(ie)for(var r of ie(t))tt.call(t,r)&&ae(e,r,t[r]);return e},I=(e,t)=>qe(e,Ze(t));var l=(e,t,r)=>new Promise((n,s)=>{var o=m=>{try{c(r.next(m))}catch(a){s(a)}},i=m=>{try{c(r.throw(m))}catch(a){s(a)}},c=m=>m.done?n(m.value):Promise.resolve(m.value).then(o,i);c((r=r.apply(e,t)).next())});var me=Object.defineProperty,rt=Object.getOwnPropertyDescriptor,nt=(e,t)=>{for(var r in t)me(e,r,{get:t[r],enumerable:!0})},le=(e,t,r,n)=>{for(var s=n>1?void 0:n?rt(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&&me(t,r,s),s};function st(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}function W(e){return typeof e=="string"}function de(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function ot(e){return typeof e>"u"}function it(e){return ot(e)||e===null}function at(e){return typeof e=="function"}function ue(e){let t=e,r=null,n=function(...s){return r||(r=new t(...s)),r};return n.prototype=t.prototype,n}var ct=(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))(ct||{}),mt=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}},pe=class extends mt{constructor(){super(...arguments),this.kind="INTERNAL_ERROR"}};var fe=class extends pe{constructor(){super(...arguments),this.name="INTERNAL_JS_MODULE_FETCH_ERROR",this.priority="P0"}},R=class extends pe{constructor(){super(...arguments),this.name="INTERNAL_JS_MODULE_EVAL_ERROR",this.priority="P0"}};function b(e){return(...t)=>{var r,n;((n=(r=globalThis.VConsole)==null?void 0:r[e])!=null?n:globalThis.console[e])(...t)}}var lt={log:b("log"),warn:b("warn"),info:b("info"),error:b("error"),debug:b("debug")};Object.assign(globalThis,{logger:lt});var he=Symbol.for("Jolibox.canIUseMap"),dt={};globalThis[he]=dt;var ge={get config(){return globalThis[he]}};function z(e,t,r){let n=0;if(e!==t){let s=e.split("."),o=t.split("."),i=Math.max(s.length,o.length);for(let c=0;c<i;c++){let m=parseInt(s[c],10)||0,a=parseInt(o[c],10)||0;if(m>a){n=1;break}else if(m<a){n=-1;break}}}if(!r)return n;switch(r){case">":return n>0;case"<":return n<0;case"=":return n===0;case">=":return n>=0;case"<=":return n<=0;default:return!1}}var Y=(e=>(e[e.System=1e3]="System",e[e.ErrorTrace=1001]="ErrorTrace",e[e.UserDefined=1002]="UserDefined",e))(Y||{}),X=(e=>(e.MiniGame="mini-game",e.MiniDrama="mini-drama",e.App="app",e.WebSDK="web-sdk",e.AppSDK="app-sdk",e))(X||{}),ut=(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))(ut||{}),ce=["name","params"],pt=["name","type","location","target","extra","timestamp","userId"],ft=["platform","os","appVersion","appId","model","brand","uuid","jsSdkVersion","extra"];function O(e,t){return t.map(r=>{if(r==="params"&&e[r]){let n=e[r];return Object.keys(n).reduce((s,o)=>(s[o]=String(n[o]),s),{})}return e[r]})}function ht(e){let t=e.location?O(e.location,ce):null,r=e.target?O(e.target,ce):null;return O(I(y({},e),{location:t,target:r}),pt)}function Ee(e){let t=e.events.map(n=>ht(n)),r=O(e.device,ft);return[e.protocolVersion,t,r,e.project]}var gt=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)});var L={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")},Et=()=>L.isiOS?"iOS":L.isAndroid?"Android":L.isMac?"Mac":L.isFacebook?"Facebook":"PC",_t="device_id",yt="advertising_id",_e=e=>(localStorage.getItem(e)||localStorage.setItem(e,gt()),localStorage.getItem(e)),St=()=>_e(_t),xt=()=>_e(yt),vt=e=>e.charAt(0).toUpperCase()+e.slice(1),It=()=>{var t;let e=new URLSearchParams(window.location.search);return vt((t=e.get("utm_source"))!=null?t:"")||"JoliboxSDK"},ye=e=>{let t="JoliboxWebSDK",r=Et(),n=navigator.language,s=St(),o=xt();return`${t} (${It()}${r}; UnknownModel; UnknownSystemVersion; ${n}) uuid/${s} adid/${o} version/${e||""}`},_,d=(_=class{constructor(t){this.element=t,this.next=_.Undefined,this.prev=_.Undefined}},_.Undefined=new _(void 0),_),Rt=class{constructor(){this._first=d.Undefined,this._last=d.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===d.Undefined}clear(){let e=this._first;for(;e!==d.Undefined;){let t=e.next;e.prev=d.Undefined,e.next=d.Undefined,e=t}this._first=d.Undefined,this._last=d.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){let r=new d(e);if(this._first===d.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!==d.Undefined){let e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==d.Undefined){let e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==d.Undefined&&e.next!==d.Undefined){let t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===d.Undefined&&e.next===d.Undefined?(this._first=d.Undefined,this._last=d.Undefined):e.next===d.Undefined?(this._last=this._last.prev,this._last.next=d.Undefined):e.prev===d.Undefined&&(this._first=this._first.next,this._first.prev=d.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==d.Undefined;)yield e.element,e=e.next}},bt=0,k=class{constructor(e){this.value=e,this.id=bt++}},T=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 k&&(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,c,m,a;if(this._disposed)return()=>{console.info("[Jolibox SDK] Emitter is _disposed")};r&&(t=t.bind(r));let n=new k(t);this._listeners?this._listeners instanceof k?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,(c=(i=this.options)==null?void 0:i.onDidFirstListener)==null||c.call(i,this)),(a=(m=this.options)==null?void 0:m.onDidAddListener)==null||a.call(m,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 k?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 T,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(y({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 Rt,this.cachedEventQueue.set(e,n)),n.push({args:t})}}},G={};nt(G,{None:()=>Tt,filter:()=>At,once:()=>Se,toPromise:()=>Dt});var Tt=()=>{console.log("[Jolibox SDK] None Event")};function Dt(e){return new Promise(t=>Se(e)(t))}function Se(e){return(t,r=null)=>{let n=!1;return e(s=>{if(!n)return n=!0,t.call(r,s)},null)}}function At(e,t){return(r=>{let n,s={onWillAddFirstListener(){n=r(o.fire,o)}},o=new T(s);return o.event})((r,n=null)=>e(s=>t(s)&&r.call(n,s),null))}var V=Symbol.for("Jolibox.hostEmitter"),wt=()=>{let e=new Q;return globalThis[V]||(globalThis[V]={on:e.on.bind(e),off:e.off.bind(e),emit:e.emit.bind(e)}),globalThis[V]},xe=wt();function Ut(e,t){let r=Math.min(e.length,t.length);for(let n=0;n<r;n++)Lt(e[n],t[n])}function Lt(e,t){if(W(t)){if(typeof e!==t)throw new Error(`argument does not match constraint: typeof ${t}`)}else if(at(t)){try{if(e instanceof t)return}catch(r){}if(!it(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")}}var C=class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new T,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 Ut(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}};C=le([ue],C);var H=class{constructor(){this._onWillExecuteCommand=new T,this.onWillExecuteCommand=this._onWillExecuteCommand.event,this._onDidExecuteCommand=new T,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this.registry=new C,this._starActivation=null}_activateStar(){return this._starActivation||(this._starActivation=st(3e4)),this._starActivation}executeCommand(e,...t){return l(this,null,function*(){return this.registry.getCommand(e)?this._tryExecuteCommand(e,t):(yield Promise.all([Promise.race([this._activateStar(),G.toPromise(G.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}}};H=le([ue],H);var $=Symbol.for("Jolibox.commands");function E(){if(globalThis[$])return globalThis[$];let e=new C,t=new H,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[$]=r,r}var P=new URLSearchParams(window.location.search).get("joliboxEnv")==="staging";function kt(){let e=new URLSearchParams(window.location.search),t={};return e.forEach((r,n)=>{t[n]=r}),{name:"GamePage",params:t}}function Ot(){return{platform:1e3,os:"h5",appVersion:"1.1.8-beta.1",appId:"1",model:"UnknownModel",brand:"UnknownBrand",uuid:"1",jsSdkVersion:"1.1.8-beta.1",extra:{}}}var ve={default:{test:"https://stg-collect.jolibox.com",prod:"https://collect.jolibox.com"},"oss.jolibox.com":{test:"https://stg-collect.jolibox.com",prod:"https://collect.jolibox.com"},"oss.pico-game.com":{test:"https://stg-collect.pico-game.com",prod:"https://collect.pico-game.com"}},Ct=()=>{var t;let e=(t=ve[window.location.host])!=null?t:ve.default;return P?e.test:e.prod},Pt=Ct(),Re=e=>{let t=new AbortController;return setTimeout(()=>t.abort(),e),t.signal},Ie;(Ie=AbortSignal.timeout)!=null||(AbortSignal.timeout=Re);var Kt=()=>{var t;return(t=new URLSearchParams(window.location.search).get("joliSource"))!=null?t:null},Mt=Kt(),Nt=e=>l(void 0,null,function*(){let r=`${Pt}/report`,n=ye("1.1.8-beta.1"),s=Mt,o={"Content-Type":"application/json"};return n&&(o["x-user-agent"]=n),s&&(o["x-joli-source"]=s),yield fetch(r,{method:"POST",headers:o,body:JSON.stringify(e),signal:Re(5e3)})});function S(e){return l(this,null,function*(){let t={name:"globalJsError",type:Y.ErrorTrace,location:kt(),target:null,extra:e,timestamp:Date.now(),userId:null},r=Ot(),s={protocolVersion:"1.0.0",events:[t],device:r,project:X.WebSDK},o=Ee(s);Nt(o)})}document.addEventListener("DOMContentLoaded",()=>xe.emit("onDocumentReady",D.startTime));var jt=()=>{let e=0;return{set startTime(t){e=t},get startTime(){return e}}},D=jt(),be=E(),q=e=>{be.executeCommand("ReportSDK.traceSystem",{event:"globalJsError",info:{err:JSON.stringify(e)}}).catch(t=>{console.error(`Fallback report: ${t} ${JSON.stringify(e)}`),S({err:JSON.stringify({message:t.message,source:t.source,lineno:t.lineno,colno:t.colno,error:t.error})})})},Z=q;window.addEventListener("unhandledrejection",q.bind(void 0));window.addEventListener("error",q.bind(void 0));window.onerror=(e,t,r,n,s)=>{be.executeCommand("ReportSDK.traceSystem",{event:"globalJsError",info:{err:JSON.stringify({message:e,source:t,lineno:r,colno:n,error:s})}}).catch(o=>{S({err:JSON.stringify({message:e,source:t,lineno:r,colno:n,error:s})})})};var ee=e=>{var c,m,a;let t=e.split("-")[1];t&&(e=e.replace(`-${t}`,""));let r=e.split("+")[1];r&&(e=e.replace(`+${r}`,""));let n=e.split(".").slice(0,3),[s,o,i]=[(c=n[0])!=null?c:"0",(m=n[1])!=null?m:"0",(a=n[2])!=null?a:"0"];return{major:s,minor:o,patch:i,prerelease:t,build:r}},A=e=>parseInt(ee(e).major,10),w=(e,t)=>{let{major:r,minor:n,patch:s,prerelease:o}=ee(e),{major:i,minor:c,patch:m,prerelease:a}=ee(t);return r!==i?r>i?1:-1:n!==c?n>c?1:-1:s!==m?s>m?1:-1:o&&!a?-1:!o&&a?1:o&&a?o>a?1:o<a?-1:0:0};var Te=E(),K=(e,t)=>{Te.executeCommand("ReportSDK.traceSystem",{event:e,info:t})},x=(e,t,r)=>{Te.executeCommand("ReportSDK.traceSystemTimeline",{event:e,duration:t,extra:r})};var Ue="jolibox-sdk-loadermeta",we,U=JSON.parse((we=localStorage.getItem(Ue))!=null?we:"{}"),te=Date.now(),De=(e,t)=>e>t&&Math.abs(e-t)/(1e3*60*60*24)>=7,Ae=e=>!/^(Failed to fetch version|Couldn't find the requested file)/.test(e);function Jt(){return l(this,null,function*(){let t=`${P?"https://stg-api.jolibox.com":"https://api.jolibox.com"}/api/fe-configs/js-sdk/version-metadata`;try{let r=yield fetch(t,{method:"GET",headers:{"Content-Type":"application/json"}}),{implement_version:n,bootstrap_version:s}=yield r.json(),o=I(y({},U),{timestamp:te});if(s){let{bootstrap_version:i}=U;if(!(i&&w(i,s)>=0)){let c=yield(yield fetch(re(s))).text();Ae(c)&&(o=I(y({},o),{bootstrap_version:s,bootstrap_script:c}))}}if(n){let{implement_version:i}=U;if(!(i&&w(i,n)>=0)){let c=yield(yield fetch(ne(n))).text();Ae(c)&&(o=I(y({},o),{implement_version:n,implement_script:c}))}}localStorage.setItem(Ue,JSON.stringify(o))}catch(r){console.warn("Failed to fetch loader metadata: ",r)}})}var Le=e=>{let{currentMajorVersion:t,currentVersion:r,bootstrapUrl:n,implementUrl:s}=e;function o(){let{bootstrap_version:a,bootstrap_script:h,timestamp:g}=U;if(a&&h&&g&&!De(te,g)&&A(a)==t&&w(a,r)>=0)return{script:h,type:"localscript"};try{let p=new XMLHttpRequest;return p.open("GET",n,!1),p.send(),{script:p.responseText,type:"fetch_from_cdn"}}catch(p){let u=new fe(`Bootstrap module faile to fetch ${p}`);S({err:`${u}`})}}function i(){var p;let a=Date.now();K("jsSdkBegin",{t:a}),D.startTime=a;let{script:h,type:g}=(p=o())!=null?p:{};if(h){let u=document.createElement("script");u.type="text/javascript",u.innerHTML=h,document.head.appendChild(u),x("bootstrapModuleLoaded",Date.now()-a,{type:g})}}function c(a){(g=>l(this,null,function*(){try{let p=new Blob([g],{type:"application/javascript"}),u=URL.createObjectURL(p),Xe=yield import(u);return URL.revokeObjectURL(u),Xe}catch(p){let u=new R(`implement module evaluate error in h5:${p} `);S({err:`${u}`})}}))(a)}function m(){let a=Date.now(),{implement_script:h,implement_version:g,timestamp:p}=U;if(h&&g&&p&&!De(te,p)&&A(g)==t&&w(g,r)>=0){c(h),x("implementModuleLoaded",Date.now()-a,{type:"loadscript"});return}let u=document.createElement("script");u.type="module",u.crossOrigin="anonymous",u.src=s,u.onload=()=>{x("implementModuleLoaded",Date.now()-a,{type:"fetch_from_cdn"})},document.head.appendChild(u)}return()=>{try{i(),m(),Jt()}catch(a){let h=new R(`module evaluate error: ${a}`);S({err:`${h}`})}}};var ke=(e,t)=>{let r=s=>{let o=e({path:s});if(!o)throw`module ${s} load failed ${o}`;return o};function n(s){(i=>l(this,null,function*(){try{let c=new Blob([i],{type:"application/javascript"}),m=URL.createObjectURL(c),a=yield import(m);return URL.revokeObjectURL(m),a}catch(c){Z(new R(`implement module evaluate error in native:${c} `))}}))(s)}return()=>{try{let s=Date.now();K("jsSdkBegin",{t:s}),D.startTime=s;let o=r(t.bootstrapUrl),i=document.createElement("script");i.type="text/javascript",i.innerHTML=o,document.head.appendChild(i),x("bootstrapModuleLoaded",Date.now()-s,{type:"native"});let c=Date.now(),m=r(t.implementUrl);n(m),x("implementModuleLoaded",Date.now()-c,{type:"native"})}catch(s){console.error(`native load script error: ${s}`),Z(new R(`module load failed ${s}`))}}};var Ft="1.1.8-beta.1",M=Ft,Pe=A(M),Ke=!!(navigator.userAgent||"").includes("JoliboxPlatformSDK"),Bt=Ke?e=>{let t=window.prompt("invoke",JSON.stringify({event:"loadScriptSync",paramsString:JSON.stringify(e)}));if(t){let{data:r}=JSON.parse(t);return r}}:void 0,re=e=>`https://cdn.jsdelivr.net/npm/@jolibox/bootstrap@${e}/dist/index.js`,ne=e=>`https://cdn.jsdelivr.net/npm/@jolibox/implement@${e}/dist/index.js`,Vt=e=>/^\d+\.\d+\.\d+$/.test(e),Me=Vt(M)?Pe:M,Oe=re(Me),Ce=ne(Me);function $t(){Ke?ke(Bt,{bootstrapUrl:Oe,implementUrl:Ce})():Le({bootstrapUrl:Oe,implementUrl:Ce,currentMajorVersion:Pe,currentVersion:M})()}$t();var Ne=E();function je(){return Ne.excuteCommandSync("API.getSystemInfoSync")}function Je(){return Ne.excuteCommandSync("API.env")}function Fe(e,t){var r;return(r=ge.config[e])==null?void 0:r[t]}function Be(e,t,r){let n=Array.isArray(t)?t:t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let o of n)if(s&&(typeof s=="object"||Array.isArray(s)))s=s[o];else return r;return s===void 0?r:s}var $e="1.1.8-beta.1";function v(e){var c,m;let r=(m=(c=Je().data)==null?void 0:c.deviceInfo)==null?void 0:m.platform;if(!r)return!1;let[n,...s]=e.split(":"),o=Fe(r=="h5"?r:"native",n);if(!o)return!1;let i=o.version;return typeof i!="string"||z($e,i,"<")?!1:s.length===0?!0:Ve(o,s)||Ve(o.properties,s)}function Ve(e,t){if(!e)return!1;let r=Be(e,t);return r?de(r)?!0:W(r)?z($e,r,">="):!1:!1}var Ge=E();function He(){return l(this,null,function*(){return v("login")?yield Ge.executeCommand("API.login"):{code:"FAILURE",message:"[Jolibox SDK]login is not supported in this platform"}})}function We(){return l(this,null,function*(){return v("checkSession")?yield Ge.executeCommand("API.checkSession"):{code:"FAILURE",message:"[Jolibox SDK]checkSession is not supported in this platform"}})}var se=class{constructor(){this.loadFinished=()=>{let t=new Event("JOLIBOX_RUNTIME_LOAD_FINISHED");window.dispatchEvent(t)};this.notifyLoadProgress=t=>{let r=Math.ceil(t),n=new CustomEvent("JOLIBOX_RUNTIME_LOAD_PROGRESS",{detail:r});window.dispatchEvent(n)}}},ze=window.JoliboxRuntime||se;var f=class{constructor(){this.commands=E();this._emitter=new Q}addEventListener(t,r){this._emitter.on(t,(...n)=>r(n[0]))}triggerEvent(t,r){this._emitter.emit(t,r)}canUse(t){return v(t)}canIUseIfThrow(t){if(!this.canUse(t))return{code:"FAILURE",message:`[Jolibox SDK] ${t} is not supported in this platform`}}};var Gt="LifecycleSDK.onReady",N=class extends f{constructor(){super()}onReady(t){let r=n=>{t.call(this,n),this.triggerEvent(Gt,n)};this.commands.executeCommand("LifecycleSDK.onReady",r.bind(this))}exit(t){let r=this.canIUseIfThrow("lifeCycle.exit");if(r)return r;this.commands.executeCommand("LifecycleSDK.exit",t.onBeforeExit)}onJoliboxHide(t){this.commands.executeCommand("LifecycleSDK.onJoliboxHide",t.bind(this))}onJoliboxShow(t){this.commands.executeCommand("LifecycleSDK.onJoliboxShow",t.bind(this))}};var j=class extends f{getItem(t){return l(this,null,function*(){return yield this.commands.executeCommand("StorageSDK.getItem",t)})}setItem(t,r){return l(this,null,function*(){if(t.length>128)return{code:"PARAMETER_ERROR",message:"[SDK] cloud storage setItem error: length of key should be less than 128"};let n=typeof r=="string"?r:String(r);return t.length+n.length>1024?{code:"PARAMETER_ERROR",message:"[SDK] cloud storage setItem error: length of key and value should be less than 1024"}:yield this.commands.executeCommand("StorageSDK.setItem",t,r)})}removeItem(t){return l(this,null,function*(){return this.commands.executeCommand("StorageSDK.removeItem",t)})}clear(){return l(this,null,function*(){return this.commands.executeCommand("StorageSDK.clear")})}};var J=class extends f{constructor(){super();this.init=r=>{this.commands.executeCommand("AdsSDK.init",r)};this.adConfig=r=>{this.commands.executeCommand("AdsSDK.adConfig",r)};this.adBreak=r=>{this.commands.executeCommand("AdsSDK.adBreak",r)};this.adUnit=r=>{this.commands.executeCommand("AdsSDK.adUnit",r)}}};var F=class extends f{showKeyboard(t){let r=this.canIUseIfThrow("keyboard.showKeyboard");if(r)return r;this.commands.executeCommand("KeyboardSDK.showKeyboard",t)}updateKeyboard(t){let r=this.canIUseIfThrow("keyboard.updateKeyboard");if(r)return r;this.commands.executeCommand("KeyboardSDK.updateKeyboard",{value:t})}hideKeyboard(){let t=this.canIUseIfThrow("keyboard.hideKeyboard");if(t)return t;this.commands.executeCommand("KeyboardSDK.hideKeyboard")}};var B=class extends f{onLevelFinished(t,r,n){return l(this,null,function*(){let s=this.canIUseIfThrow("TaskTrackerSDK.onLevelFinished");return s?Promise.resolve(s):yield this.commands.executeCommand("TaskTrackerSDK.levelFinished",t,{result:r,duration:n})})}onTaskFinished(t,r){return l(this,null,function*(){let n=this.canIUseIfThrow("TaskTrackerSDK.onTaskFinished");return n||(yield this.commands.executeCommand("TaskTrackerSDK.taskFinished",t,{duration:r}))})}onTaskEvent(t,r){return l(this,null,function*(){let n=this.canIUseIfThrow("TaskTrackerSDK.onTaskEvent");return n||(yield this.commands.executeCommand("TaskTrackerSDK.taskEvent",t,r))})}onLevelUpgrade(t,r){return l(this,null,function*(){let n=this.canIUseIfThrow("TaskTrackerSDK.onLevelUpgrade");return n||(yield this.commands.executeCommand("TaskTrackerSDK.levelUpgrade",t,r))})}onHistoryUserLevel(t){return l(this,null,function*(){let r=this.canIUseIfThrow("TaskTrackerSDK.onHistoryUserLevel");return r||(yield this.commands.executeCommand("TaskTrackerSDK.historyUserLevel",t))})}onHistoryUserScore(t){return l(this,null,function*(){let r=this.canIUseIfThrow("TaskTrackerSDK.onHistoryUserScore");return r||(yield this.commands.executeCommand("TaskTrackerSDK.historyUserScore",t))})}};var Ye=Symbol("__JOLIBOX_SDK_INITIALIZED__");(()=>{if(window[Ye]){console.warn("JoliboxSDK already initialized, skipping...");return}})();window[Ye]=!0;var oe=class{constructor(){this.jssdkVersion="1.1.8-beta.1";this.runtime=new ze;this.ads=new J;this.lifecycle=new N;this.storage=new j;this.keyboard=new F;this.task=new B;this.getSystemInfoSync=je.bind(this);this.canIUse=v.bind(this);this.login=He.bind(this);this.checkSession=We.bind(this);window.joliboxsdk={runtime:this.runtime,ads:this.ads,lifecycle:this.lifecycle,storage:this.storage,keyboard:this.keyboard,task:this.task}}};window.JoliboxSDK=oe;export{oe as JoliboxSDK};
@@ -1 +1 @@
1
- "use strict";(()=>{var se=Object.defineProperty,Ve=Object.getOwnPropertyDescriptor,$e=(e,t)=>{for(var r in t)se(e,r,{get:t[r],enumerable:!0})},oe=(e,t,r,n)=>{for(var s=n>1?void 0:n?Ve(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&&se(t,r,s),s};function Ge(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}function $(e){return typeof e=="string"}function ie(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function He(e){return typeof e>"u"}function We(e){return He(e)||e===null}function ze(e){return typeof e=="function"}function ae(e){let t=e,r=null,n=function(...s){return r||(r=new t(...s)),r};return n.prototype=t.prototype,n}var Ye=(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))(Ye||{}),Qe=class extends Error{constructor(e){if(typeof e=="string"){super(e),this.priority="P1";return}super(e.message),this.priority="P1",this.stack=e.stack,this.raw=e}},ce=class extends Qe{constructor(){super(...arguments),this.kind="INTERNAL_ERROR"}};var me=class extends ce{constructor(){super(...arguments),this.name="INTERNAL_JS_MODULE_FETCH_ERROR",this.priority="P0"}},S=class extends ce{constructor(){super(...arguments),this.name="INTERNAL_JS_MODULE_EVAL_ERROR",this.priority="P0"}};function x(e){return(...t)=>{(globalThis.VConsole?.[e]??globalThis.console[e])(...t)}}var Xe={log:x("log"),warn:x("warn"),info:x("info"),error:x("error"),debug:x("debug")};Object.assign(globalThis,{logger:Xe});var le=Symbol.for("Jolibox.canIUseMap"),qe={};globalThis[le]=qe;var de={get config(){return globalThis[le]}};function G(e,t,r){let n=0;if(e!==t){let s=e.split("."),o=t.split("."),i=Math.max(s.length,o.length);for(let m=0;m<i;m++){let d=parseInt(s[m],10)||0,a=parseInt(o[m],10)||0;if(d>a){n=1;break}else if(d<a){n=-1;break}}}if(!r)return n;switch(r){case">":return n>0;case"<":return n<0;case"=":return n===0;case">=":return n>=0;case"<=":return n<=0;default:return!1}}var H=(e=>(e[e.System=1e3]="System",e[e.ErrorTrace=1001]="ErrorTrace",e[e.UserDefined=1002]="UserDefined",e))(H||{}),W=(e=>(e.MiniGame="mini-game",e.MiniDrama="mini-drama",e.App="app",e.WebSDK="web-sdk",e.AppSDK="app-sdk",e))(W||{}),Ze=(e=>(e[e.App=0]="App",e[e.H5=1]="H5",e[e.Weapp=2]="Weapp",e[e.Alipay=3]="Alipay",e[e.Gcash=4]="Gcash",e[e.Dana=5]="Dana",e[e.Umma=6]="Umma",e[e.WebSDK=1e3]="WebSDK",e[e.AppSDK=1001]="AppSDK",e[e.Other=9999]="Other",e))(Ze||{}),ne=["name","params"],et=["name","type","location","target","extra","timestamp","userId"],tt=["platform","os","appVersion","appId","model","brand","uuid","jsSdkVersion","extra"];function D(e,t){return t.map(r=>{if(r==="params"&&e[r]){let n=e[r];return Object.keys(n).reduce((s,o)=>(s[o]=String(n[o]),s),{})}return e[r]})}function rt(e){let t=e.location?D(e.location,ne):null,r=e.target?D(e.target,ne):null;return D({...e,location:t,target:r},et)}function ue(e){let t=e.events.map(n=>rt(n)),r=D(e.device,tt);return[e.protocolVersion,t,r,e.project]}var nt=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)});var A={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")},st=()=>A.isiOS?"iOS":A.isAndroid?"Android":A.isMac?"Mac":A.isFacebook?"Facebook":"PC",ot="device_id",it="advertising_id",pe=e=>(localStorage.getItem(e)||localStorage.setItem(e,nt()),localStorage.getItem(e)),at=()=>pe(ot),ct=()=>pe(it),mt=e=>e.charAt(0).toUpperCase()+e.slice(1),lt=()=>{let e=new URLSearchParams(window.location.search);return mt(e.get("utm_source")??"")||"JoliboxSDK"},fe=e=>{let t="JoliboxWebSDK",r=st(),n=navigator.language,s=at(),o=ct();return`${t} (${lt()}${r}; UnknownModel; UnknownSystemVersion; ${n}) uuid/${s} adid/${o} version/${e||""}`},c=class U{static{this.Undefined=new U(void 0)}constructor(t){this.element=t,this.next=U.Undefined,this.prev=U.Undefined}},dt=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 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!==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}},ut=0,w=class{constructor(e){this.value=e,this.id=ut++}},v=class{constructor(e){this.options=e,this._size=0}dispose(e){this._disposed||(this._disposed=!0,this._listeners&&(e?(this._listeners instanceof w&&(this._listeners=[this._listeners]),this._listeners=this._listeners.filter(t=>t?.value===e)):(this._listeners=void 0,this._size=0)),this.options?.onDidRemoveLastListener?.())}get event(){return this._event??=(e,t)=>{if(this._disposed)return()=>{console.info("[Jolibox SDK] Emitter is _disposed")};t&&(e=e.bind(t));let r=new w(e);this._listeners?this._listeners instanceof w?this._listeners=[this._listeners,r]:this._listeners.push(r):(this.options?.onWillAddFirstListener?.(this),this._listeners=r,this.options?.onDidFirstListener?.(this)),this.options?.onDidAddListener?.(this),this._size++},this._event}_deliver(e,t){if(!e)return;let r=this.options?.onListenerError||Error.constructor;if(!r){e.value(t);return}try{e.value(t)}catch(n){r(n)}}fire(e){this._listeners&&(this._listeners instanceof w?this._deliver(this._listeners,e):this._listeners.forEach(t=>this._deliver(t,e)))}hasListeners(){return this._size>0}},z=class{constructor(){this.listeners=new Map,this.listerHandlerMap=new WeakMap,this.cachedEventQueue=new Map}on(e,t){let r=this.listeners.get(e)??new v,n=o=>t(...o.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({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 dt,this.cachedEventQueue.set(e,n)),n.push({args:t})}}},B={};$e(B,{None:()=>pt,filter:()=>ht,once:()=>he,toPromise:()=>ft});var pt=()=>{console.log("[Jolibox SDK] None Event")};function ft(e){return new Promise(t=>he(e)(t))}function he(e){return(t,r=null)=>{let n=!1;return e(s=>{if(!n)return n=!0,t.call(r,s)},null)}}function ht(e,t){return(r=>{let n,s={onWillAddFirstListener(){n=r(o.fire,o)}},o=new v(s);return o.event})((r,n=null)=>e(s=>t(s)&&r.call(n,s),null))}var J=Symbol.for("Jolibox.hostEmitter"),gt=()=>{let e=new z;return globalThis[J]||(globalThis[J]={on:e.on.bind(e),off:e.off.bind(e),emit:e.emit.bind(e)}),globalThis[J]},ge=gt();function Et(e,t){let r=Math.min(e.length,t.length);for(let n=0;n<r;n++)_t(e[n],t[n])}function _t(e,t){if($(t)){if(typeof e!==t)throw new Error(`argument does not match constraint: typeof ${t}`)}else if(ze(t)){try{if(e instanceof t)return}catch{}if(!We(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")}}var L=class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new v,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 Et(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}};L=oe([ae],L);var V=class{constructor(){this._onWillExecuteCommand=new v,this.onWillExecuteCommand=this._onWillExecuteCommand.event,this._onDidExecuteCommand=new v,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this.registry=new L,this._starActivation=null}_activateStar(){return this._starActivation||(this._starActivation=Ge(3e4)),this._starActivation}async executeCommand(e,...t){return this.registry.getCommand(e)?this._tryExecuteCommand(e,t):(await Promise.all([Promise.race([this._activateStar(),B.toPromise(B.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}}};V=oe([ae],V);var F=Symbol.for("Jolibox.commands");function g(){if(globalThis[F])return globalThis[F];let e=new L,t=new V,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[F]=r,r}var k=new URLSearchParams(window.location.search).get("joliboxEnv")==="staging";function yt(){let e=new URLSearchParams(window.location.search),t={};return e.forEach((r,n)=>{t[n]=r}),{name:"GamePage",params:t}}function St(){return{platform:1e3,os:"h5",appVersion:"1.1.7-beta.4",appId:"1",model:"UnknownModel",brand:"UnknownBrand",uuid:"1",jsSdkVersion:"1.1.7-beta.4",extra:{}}}var Ee={default:{test:"https://stg-collect.jolibox.com",prod:"https://collect.jolibox.com"},"oss.jolibox.com":{test:"https://stg-collect.jolibox.com",prod:"https://collect.jolibox.com"},"oss.pico-game.com":{test:"https://stg-collect.pico-game.com",prod:"https://collect.pico-game.com"}},xt=()=>{let e=Ee[window.location.host]??Ee.default;return k?e.test:e.prod},vt=xt(),_e=e=>{let t=new AbortController;return setTimeout(()=>t.abort(),e),t.signal};AbortSignal.timeout??=_e;var Rt=()=>new URLSearchParams(window.location.search).get("joliSource")??null,bt=Rt(),It=async e=>{let r=`${vt}/report`,n=fe("1.1.7-beta.4"),s=bt,o={"Content-Type":"application/json"};return n&&(o["x-user-agent"]=n),s&&(o["x-joli-source"]=s),await fetch(r,{method:"POST",headers:o,body:JSON.stringify(e),signal:_e(5e3)})};async function E(e){let t={name:"globalJsError",type:H.ErrorTrace,location:yt(),target:null,extra:e,timestamp:Date.now(),userId:null},r=St(),s={protocolVersion:"1.0.0",events:[t],device:r,project:W.WebSDK},o=ue(s);It(o)}document.addEventListener("DOMContentLoaded",()=>ge.emit("onDocumentReady",R.startTime));var Tt=()=>{let e=0;return{set startTime(t){e=t},get startTime(){return e}}},R=Tt(),ye=g(),Y=e=>{ye.executeCommand("ReportSDK.traceSystem",{event:"globalJsError",info:{err:JSON.stringify(e)}}).catch(t=>{console.error(`Fallback report: ${t} ${JSON.stringify(e)}`),E({err:JSON.stringify({message:t.message,source:t.source,lineno:t.lineno,colno:t.colno,error:t.error})})})},Q=Y;window.addEventListener("unhandledrejection",Y.bind(void 0));window.addEventListener("error",Y.bind(void 0));window.onerror=(e,t,r,n,s)=>{ye.executeCommand("ReportSDK.traceSystem",{event:"globalJsError",info:{err:JSON.stringify({message:e,source:t,lineno:r,colno:n,error:s})}}).catch(o=>{E({err:JSON.stringify({message:e,source:t,lineno:r,colno:n,error:s})})})};var X=e=>{let t=e.split("-")[1];t&&(e=e.replace(`-${t}`,""));let r=e.split("+")[1];r&&(e=e.replace(`+${r}`,""));let n=e.split(".").slice(0,3),[s,o,i]=[n[0]??"0",n[1]??"0",n[2]??"0"];return{major:s,minor:o,patch:i,prerelease:t,build:r}},b=e=>parseInt(X(e).major,10),I=(e,t)=>{let{major:r,minor:n,patch:s,prerelease:o}=X(e),{major:i,minor:m,patch:d,prerelease:a}=X(t);return r!==i?r>i?1:-1:n!==m?n>m?1:-1:s!==d?s>d?1:-1:o&&!a?-1:!o&&a?1:o&&a?o>a?1:o<a?-1:0:0};var Se=g(),O=(e,t)=>{Se.executeCommand("ReportSDK.traceSystem",{event:e,info:t})},_=(e,t,r)=>{Se.executeCommand("ReportSDK.traceSystemTimeline",{event:e,duration:t,extra:r})};var Re="jolibox-sdk-loadermeta",T=JSON.parse(localStorage.getItem(Re)??"{}"),q=Date.now(),xe=(e,t)=>e>t&&Math.abs(e-t)/(1e3*60*60*24)>=7,ve=e=>!/^(Failed to fetch version|Couldn't find the requested file)/.test(e);async function At(){let t=`${k?"https://stg-api.jolibox.com":"https://api.jolibox.com"}/api/fe-configs/js-sdk/version-metadata`;try{let r=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json"}}),{implement_version:n,bootstrap_version:s}=await r.json(),o={...T,timestamp:q};if(s){let{bootstrap_version:i}=T;if(!(i&&I(i,s)>=0)){let m=await(await fetch(Z(s))).text();ve(m)&&(o={...o,bootstrap_version:s,bootstrap_script:m})}}if(n){let{implement_version:i}=T;if(!(i&&I(i,n)>=0)){let m=await(await fetch(ee(n))).text();ve(m)&&(o={...o,implement_version:n,implement_script:m})}}localStorage.setItem(Re,JSON.stringify(o))}catch(r){console.warn("Failed to fetch loader metadata: ",r)}}var be=e=>{let{currentMajorVersion:t,currentVersion:r,bootstrapUrl:n,implementUrl:s}=e;function o(){let{bootstrap_version:a,bootstrap_script:f,timestamp:h}=T;if(a&&f&&h&&!xe(q,h)&&b(a)==t&&I(a,r)>=0)return{script:f,type:"localscript"};try{let l=new XMLHttpRequest;return l.open("GET",n,!1),l.send(),{script:l.responseText,type:"fetch_from_cdn"}}catch(l){let u=new me(`Bootstrap module faile to fetch ${l}`);E({err:`${u}`})}}function i(){let a=Date.now();O("jsSdkBegin",{t:a}),R.startTime=a;let{script:f,type:h}=o()??{};if(f){let l=document.createElement("script");l.type="text/javascript",l.innerHTML=f,document.head.appendChild(l),_("bootstrapModuleLoaded",Date.now()-a,{type:h})}}function m(a){(async h=>{try{let l=new Blob([h],{type:"application/javascript"}),u=URL.createObjectURL(l),Be=await import(u);return URL.revokeObjectURL(u),Be}catch(l){let u=new S(`implement module evaluate error in h5:${l} `);E({err:`${u}`})}})(a)}function d(){let a=Date.now(),{implement_script:f,implement_version:h,timestamp:l}=T;if(f&&h&&l&&!xe(q,l)&&b(h)==t&&I(h,r)>=0){m(f),_("implementModuleLoaded",Date.now()-a,{type:"loadscript"});return}let u=document.createElement("script");u.type="module",u.crossOrigin="anonymous",u.src=s,u.onload=()=>{_("implementModuleLoaded",Date.now()-a,{type:"fetch_from_cdn"})},document.head.appendChild(u)}return()=>{try{i(),d(),At()}catch(a){let f=new S(`module evaluate error: ${a}`);E({err:`${f}`})}}};var Ie=(e,t)=>{let r=s=>{let o=e({path:s});if(!o)throw`module ${s} load failed ${o}`;return o};function n(s){(async i=>{try{let m=new Blob([i],{type:"application/javascript"}),d=URL.createObjectURL(m),a=await import(d);return URL.revokeObjectURL(d),a}catch(m){Q(new S(`implement module evaluate error in native:${m} `))}})(s)}return()=>{try{let s=Date.now();O("jsSdkBegin",{t:s}),R.startTime=s;let o=r(t.bootstrapUrl),i=document.createElement("script");i.type="text/javascript",i.innerHTML=o,document.head.appendChild(i),_("bootstrapModuleLoaded",Date.now()-s,{type:"native"});let m=Date.now(),d=r(t.implementUrl);n(d),_("implementModuleLoaded",Date.now()-m,{type:"native"})}catch(s){console.error(`native load script error: ${s}`),Q(new S(`module load failed ${s}`))}}};var wt="1.1.7-beta.4",C=wt,we=b(C),De=!!(navigator.userAgent||"").includes("JoliboxPlatformSDK"),Dt=De?e=>{let t=window.prompt("invoke",JSON.stringify({event:"loadScriptSync",paramsString:JSON.stringify(e)}));if(t){let{data:r}=JSON.parse(t);return r}}:void 0,Z=e=>`https://cdn.jsdelivr.net/npm/@jolibox/bootstrap@${e}/dist/index.js`,ee=e=>`https://cdn.jsdelivr.net/npm/@jolibox/implement@${e}/dist/index.js`,Ut=e=>/^\d+\.\d+\.\d+$/.test(e),Ue=Ut(C)?we:C,Te=Z(Ue),Ae=ee(Ue);function Lt(){De?Ie(Dt,{bootstrapUrl:Te,implementUrl:Ae})():be({bootstrapUrl:Te,implementUrl:Ae,currentMajorVersion:we,currentVersion:C})()}Lt();var Le=g();function ke(){return Le.excuteCommandSync("API.getSystemInfoSync")}function Oe(){return Le.excuteCommandSync("API.env")}function Ce(e,t){return de.config[e]?.[t]}function Pe(e,t,r){let n=Array.isArray(t)?t:t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let o of n)if(s&&(typeof s=="object"||Array.isArray(s)))s=s[o];else return r;return s===void 0?r:s}var Me="1.1.7-beta.4";function y(e){let r=Oe().data?.deviceInfo?.platform;if(!r)return!1;let[n,...s]=e.split(":"),o=Ce(r=="h5"?r:"native",n);if(!o)return!1;let i=o.version;return typeof i!="string"||G(Me,i,"<")?!1:s.length===0?!0:Ke(o,s)||Ke(o.properties,s)}function Ke(e,t){if(!e)return!1;let r=Pe(e,t);return r?ie(r)?!0:$(r)?G(Me,r,">="):!1:!1}var Ne=g();async function je(){return y("login")?await Ne.executeCommand("API.login"):{code:"FAILURE",message:"[Jolibox SDK]login is not supported in this platform"}}async function Je(){return y("checkSession")?await Ne.executeCommand("API.checkSession"):{code:"FAILURE",message:"[Jolibox SDK]checkSession is not supported in this platform"}}var te=class{constructor(){this.loadFinished=()=>{let t=new Event("JOLIBOX_RUNTIME_LOAD_FINISHED");window.dispatchEvent(t)};this.notifyLoadProgress=t=>{let r=Math.ceil(t),n=new CustomEvent("JOLIBOX_RUNTIME_LOAD_PROGRESS",{detail:r});window.dispatchEvent(n)}}},Fe=window.JoliboxRuntime||te;var p=class{constructor(){this.commands=g();this._emitter=new z}addEventListener(t,r){this._emitter.on(t,(...n)=>r(n[0]))}triggerEvent(t,r){this._emitter.emit(t,r)}canUse(t){return y(t)}canIUseIfThrow(t){if(!this.canUse(t))return{code:"FAILURE",message:`[Jolibox SDK] ${t} is not supported in this platform`}}};var kt="LifecycleSDK.onReady",P=class extends p{constructor(){super()}onReady(t){let r=n=>{t.call(this,n),this.triggerEvent(kt,n)};this.commands.executeCommand("LifecycleSDK.onReady",r.bind(this))}exit(t){let r=this.canIUseIfThrow("lifeCycle.exit");if(r)return r;this.commands.executeCommand("LifecycleSDK.exit",t.onBeforeExit)}onJoliboxHide(t){this.commands.executeCommand("LifecycleSDK.onJoliboxHide",t.bind(this))}onJoliboxShow(t){this.commands.executeCommand("LifecycleSDK.onJoliboxShow",t.bind(this))}};var K=class extends p{async getItem(t){return await this.commands.executeCommand("StorageSDK.getItem",t)}async setItem(t,r){if(t.length>128)return{code:"PARAMETER_ERROR",message:"[SDK] cloud storage setItem error: length of key should be less than 128"};let n=typeof r=="string"?r:String(r);return t.length+n.length>1024?{code:"PARAMETER_ERROR",message:"[SDK] cloud storage setItem error: length of key and value should be less than 1024"}:await this.commands.executeCommand("StorageSDK.setItem",t,r)}async removeItem(t){return this.commands.executeCommand("StorageSDK.removeItem",t)}async clear(){return this.commands.executeCommand("StorageSDK.clear")}};var M=class extends p{constructor(){super();this.init=r=>{this.commands.executeCommand("AdsSDK.init",r)};this.adConfig=r=>{this.commands.executeCommand("AdsSDK.adConfig",r)};this.adBreak=r=>{this.commands.executeCommand("AdsSDK.adBreak",r)};this.adUnit=r=>{this.commands.executeCommand("AdsSDK.adUnit",r)}}};var N=class extends p{showKeyboard(t){let r=this.canIUseIfThrow("keyboard.showKeyboard");if(r)return r;this.commands.executeCommand("KeyboardSDK.showKeyboard",t)}updateKeyboard(t){let r=this.canIUseIfThrow("keyboard.updateKeyboard");if(r)return r;this.commands.executeCommand("KeyboardSDK.updateKeyboard",{value:t})}hideKeyboard(){let t=this.canIUseIfThrow("keyboard.hideKeyboard");if(t)return t;this.commands.executeCommand("KeyboardSDK.hideKeyboard")}};var j=class extends p{async onLevelFinished(t,r,n){let s=this.canIUseIfThrow("TaskTrackerSDK.onLevelFinished");return s?Promise.resolve(s):await this.commands.executeCommand("TaskTrackerSDK.levelFinished",t,{result:r,duration:n})}async onTaskFinished(t,r){let n=this.canIUseIfThrow("TaskTrackerSDK.onTaskFinished");return n||await this.commands.executeCommand("TaskTrackerSDK.taskFinished",t,{duration:r})}async onTaskEvent(t,r){let n=this.canIUseIfThrow("TaskTrackerSDK.onTaskEvent");return n||await this.commands.executeCommand("TaskTrackerSDK.taskEvent",t,r)}async onLevelUpgrade(t,r){let n=this.canIUseIfThrow("TaskTrackerSDK.onLevelUpgrade");return n||await this.commands.executeCommand("TaskTrackerSDK.levelUpgrade",t,r)}async onHistoryUserLevel(t){let r=this.canIUseIfThrow("TaskTrackerSDK.onHistoryUserLevel");return r||await this.commands.executeCommand("TaskTrackerSDK.historyUserLevel",t)}async onHistoryUserScore(t){let r=this.canIUseIfThrow("TaskTrackerSDK.onHistoryUserScore");return r||await this.commands.executeCommand("TaskTrackerSDK.historyUserScore",t)}};var re=class{constructor(){this.jssdkVersion="1.1.7-beta.4";this.runtime=new Fe;this.ads=new M;this.lifecycle=new P;this.storage=new K;this.keyboard=new N;this.task=new j;this.getSystemInfoSync=ke.bind(this);this.canIUse=y.bind(this);this.login=je.bind(this);this.checkSession=Je.bind(this);window.joliboxsdk={runtime:this.runtime,ads:this.ads,lifecycle:this.lifecycle,storage:this.storage,keyboard:this.keyboard,task:this.task}}};window.JoliboxSDK=re;})();
1
+ "use strict";(()=>{var Qe=Object.defineProperty,qe=Object.defineProperties;var Ze=Object.getOwnPropertyDescriptors;var ie=Object.getOwnPropertySymbols;var et=Object.prototype.hasOwnProperty,tt=Object.prototype.propertyIsEnumerable;var ae=(e,t,r)=>t in e?Qe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,y=(e,t)=>{for(var r in t||(t={}))et.call(t,r)&&ae(e,r,t[r]);if(ie)for(var r of ie(t))tt.call(t,r)&&ae(e,r,t[r]);return e},I=(e,t)=>qe(e,Ze(t));var l=(e,t,r)=>new Promise((n,s)=>{var o=m=>{try{c(r.next(m))}catch(a){s(a)}},i=m=>{try{c(r.throw(m))}catch(a){s(a)}},c=m=>m.done?n(m.value):Promise.resolve(m.value).then(o,i);c((r=r.apply(e,t)).next())});var me=Object.defineProperty,rt=Object.getOwnPropertyDescriptor,nt=(e,t)=>{for(var r in t)me(e,r,{get:t[r],enumerable:!0})},le=(e,t,r,n)=>{for(var s=n>1?void 0:n?rt(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&&me(t,r,s),s};function st(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}function W(e){return typeof e=="string"}function de(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function ot(e){return typeof e>"u"}function it(e){return ot(e)||e===null}function at(e){return typeof e=="function"}function ue(e){let t=e,r=null,n=function(...s){return r||(r=new t(...s)),r};return n.prototype=t.prototype,n}var ct=(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))(ct||{}),mt=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}},pe=class extends mt{constructor(){super(...arguments),this.kind="INTERNAL_ERROR"}};var fe=class extends pe{constructor(){super(...arguments),this.name="INTERNAL_JS_MODULE_FETCH_ERROR",this.priority="P0"}},R=class extends pe{constructor(){super(...arguments),this.name="INTERNAL_JS_MODULE_EVAL_ERROR",this.priority="P0"}};function b(e){return(...t)=>{var r,n;((n=(r=globalThis.VConsole)==null?void 0:r[e])!=null?n:globalThis.console[e])(...t)}}var lt={log:b("log"),warn:b("warn"),info:b("info"),error:b("error"),debug:b("debug")};Object.assign(globalThis,{logger:lt});var he=Symbol.for("Jolibox.canIUseMap"),dt={};globalThis[he]=dt;var ge={get config(){return globalThis[he]}};function z(e,t,r){let n=0;if(e!==t){let s=e.split("."),o=t.split("."),i=Math.max(s.length,o.length);for(let c=0;c<i;c++){let m=parseInt(s[c],10)||0,a=parseInt(o[c],10)||0;if(m>a){n=1;break}else if(m<a){n=-1;break}}}if(!r)return n;switch(r){case">":return n>0;case"<":return n<0;case"=":return n===0;case">=":return n>=0;case"<=":return n<=0;default:return!1}}var Y=(e=>(e[e.System=1e3]="System",e[e.ErrorTrace=1001]="ErrorTrace",e[e.UserDefined=1002]="UserDefined",e))(Y||{}),X=(e=>(e.MiniGame="mini-game",e.MiniDrama="mini-drama",e.App="app",e.WebSDK="web-sdk",e.AppSDK="app-sdk",e))(X||{}),ut=(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))(ut||{}),ce=["name","params"],pt=["name","type","location","target","extra","timestamp","userId"],ft=["platform","os","appVersion","appId","model","brand","uuid","jsSdkVersion","extra"];function O(e,t){return t.map(r=>{if(r==="params"&&e[r]){let n=e[r];return Object.keys(n).reduce((s,o)=>(s[o]=String(n[o]),s),{})}return e[r]})}function ht(e){let t=e.location?O(e.location,ce):null,r=e.target?O(e.target,ce):null;return O(I(y({},e),{location:t,target:r}),pt)}function Ee(e){let t=e.events.map(n=>ht(n)),r=O(e.device,ft);return[e.protocolVersion,t,r,e.project]}var gt=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)});var L={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")},Et=()=>L.isiOS?"iOS":L.isAndroid?"Android":L.isMac?"Mac":L.isFacebook?"Facebook":"PC",_t="device_id",yt="advertising_id",_e=e=>(localStorage.getItem(e)||localStorage.setItem(e,gt()),localStorage.getItem(e)),St=()=>_e(_t),xt=()=>_e(yt),vt=e=>e.charAt(0).toUpperCase()+e.slice(1),It=()=>{var t;let e=new URLSearchParams(window.location.search);return vt((t=e.get("utm_source"))!=null?t:"")||"JoliboxSDK"},ye=e=>{let t="JoliboxWebSDK",r=Et(),n=navigator.language,s=St(),o=xt();return`${t} (${It()}${r}; UnknownModel; UnknownSystemVersion; ${n}) uuid/${s} adid/${o} version/${e||""}`},_,d=(_=class{constructor(t){this.element=t,this.next=_.Undefined,this.prev=_.Undefined}},_.Undefined=new _(void 0),_),Rt=class{constructor(){this._first=d.Undefined,this._last=d.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===d.Undefined}clear(){let e=this._first;for(;e!==d.Undefined;){let t=e.next;e.prev=d.Undefined,e.next=d.Undefined,e=t}this._first=d.Undefined,this._last=d.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){let r=new d(e);if(this._first===d.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!==d.Undefined){let e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==d.Undefined){let e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==d.Undefined&&e.next!==d.Undefined){let t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===d.Undefined&&e.next===d.Undefined?(this._first=d.Undefined,this._last=d.Undefined):e.next===d.Undefined?(this._last=this._last.prev,this._last.next=d.Undefined):e.prev===d.Undefined&&(this._first=this._first.next,this._first.prev=d.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==d.Undefined;)yield e.element,e=e.next}},bt=0,k=class{constructor(e){this.value=e,this.id=bt++}},T=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 k&&(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,c,m,a;if(this._disposed)return()=>{console.info("[Jolibox SDK] Emitter is _disposed")};r&&(t=t.bind(r));let n=new k(t);this._listeners?this._listeners instanceof k?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,(c=(i=this.options)==null?void 0:i.onDidFirstListener)==null||c.call(i,this)),(a=(m=this.options)==null?void 0:m.onDidAddListener)==null||a.call(m,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 k?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 T,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(y({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 Rt,this.cachedEventQueue.set(e,n)),n.push({args:t})}}},G={};nt(G,{None:()=>Tt,filter:()=>At,once:()=>Se,toPromise:()=>Dt});var Tt=()=>{console.log("[Jolibox SDK] None Event")};function Dt(e){return new Promise(t=>Se(e)(t))}function Se(e){return(t,r=null)=>{let n=!1;return e(s=>{if(!n)return n=!0,t.call(r,s)},null)}}function At(e,t){return(r=>{let n,s={onWillAddFirstListener(){n=r(o.fire,o)}},o=new T(s);return o.event})((r,n=null)=>e(s=>t(s)&&r.call(n,s),null))}var V=Symbol.for("Jolibox.hostEmitter"),wt=()=>{let e=new Q;return globalThis[V]||(globalThis[V]={on:e.on.bind(e),off:e.off.bind(e),emit:e.emit.bind(e)}),globalThis[V]},xe=wt();function Ut(e,t){let r=Math.min(e.length,t.length);for(let n=0;n<r;n++)Lt(e[n],t[n])}function Lt(e,t){if(W(t)){if(typeof e!==t)throw new Error(`argument does not match constraint: typeof ${t}`)}else if(at(t)){try{if(e instanceof t)return}catch(r){}if(!it(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")}}var C=class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new T,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 Ut(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}};C=le([ue],C);var H=class{constructor(){this._onWillExecuteCommand=new T,this.onWillExecuteCommand=this._onWillExecuteCommand.event,this._onDidExecuteCommand=new T,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this.registry=new C,this._starActivation=null}_activateStar(){return this._starActivation||(this._starActivation=st(3e4)),this._starActivation}executeCommand(e,...t){return l(this,null,function*(){return this.registry.getCommand(e)?this._tryExecuteCommand(e,t):(yield Promise.all([Promise.race([this._activateStar(),G.toPromise(G.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}}};H=le([ue],H);var $=Symbol.for("Jolibox.commands");function E(){if(globalThis[$])return globalThis[$];let e=new C,t=new H,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[$]=r,r}var P=new URLSearchParams(window.location.search).get("joliboxEnv")==="staging";function kt(){let e=new URLSearchParams(window.location.search),t={};return e.forEach((r,n)=>{t[n]=r}),{name:"GamePage",params:t}}function Ot(){return{platform:1e3,os:"h5",appVersion:"1.1.8-beta.1",appId:"1",model:"UnknownModel",brand:"UnknownBrand",uuid:"1",jsSdkVersion:"1.1.8-beta.1",extra:{}}}var ve={default:{test:"https://stg-collect.jolibox.com",prod:"https://collect.jolibox.com"},"oss.jolibox.com":{test:"https://stg-collect.jolibox.com",prod:"https://collect.jolibox.com"},"oss.pico-game.com":{test:"https://stg-collect.pico-game.com",prod:"https://collect.pico-game.com"}},Ct=()=>{var t;let e=(t=ve[window.location.host])!=null?t:ve.default;return P?e.test:e.prod},Pt=Ct(),Re=e=>{let t=new AbortController;return setTimeout(()=>t.abort(),e),t.signal},Ie;(Ie=AbortSignal.timeout)!=null||(AbortSignal.timeout=Re);var Kt=()=>{var t;return(t=new URLSearchParams(window.location.search).get("joliSource"))!=null?t:null},Mt=Kt(),Nt=e=>l(void 0,null,function*(){let r=`${Pt}/report`,n=ye("1.1.8-beta.1"),s=Mt,o={"Content-Type":"application/json"};return n&&(o["x-user-agent"]=n),s&&(o["x-joli-source"]=s),yield fetch(r,{method:"POST",headers:o,body:JSON.stringify(e),signal:Re(5e3)})});function S(e){return l(this,null,function*(){let t={name:"globalJsError",type:Y.ErrorTrace,location:kt(),target:null,extra:e,timestamp:Date.now(),userId:null},r=Ot(),s={protocolVersion:"1.0.0",events:[t],device:r,project:X.WebSDK},o=Ee(s);Nt(o)})}document.addEventListener("DOMContentLoaded",()=>xe.emit("onDocumentReady",D.startTime));var jt=()=>{let e=0;return{set startTime(t){e=t},get startTime(){return e}}},D=jt(),be=E(),q=e=>{be.executeCommand("ReportSDK.traceSystem",{event:"globalJsError",info:{err:JSON.stringify(e)}}).catch(t=>{console.error(`Fallback report: ${t} ${JSON.stringify(e)}`),S({err:JSON.stringify({message:t.message,source:t.source,lineno:t.lineno,colno:t.colno,error:t.error})})})},Z=q;window.addEventListener("unhandledrejection",q.bind(void 0));window.addEventListener("error",q.bind(void 0));window.onerror=(e,t,r,n,s)=>{be.executeCommand("ReportSDK.traceSystem",{event:"globalJsError",info:{err:JSON.stringify({message:e,source:t,lineno:r,colno:n,error:s})}}).catch(o=>{S({err:JSON.stringify({message:e,source:t,lineno:r,colno:n,error:s})})})};var ee=e=>{var c,m,a;let t=e.split("-")[1];t&&(e=e.replace(`-${t}`,""));let r=e.split("+")[1];r&&(e=e.replace(`+${r}`,""));let n=e.split(".").slice(0,3),[s,o,i]=[(c=n[0])!=null?c:"0",(m=n[1])!=null?m:"0",(a=n[2])!=null?a:"0"];return{major:s,minor:o,patch:i,prerelease:t,build:r}},A=e=>parseInt(ee(e).major,10),w=(e,t)=>{let{major:r,minor:n,patch:s,prerelease:o}=ee(e),{major:i,minor:c,patch:m,prerelease:a}=ee(t);return r!==i?r>i?1:-1:n!==c?n>c?1:-1:s!==m?s>m?1:-1:o&&!a?-1:!o&&a?1:o&&a?o>a?1:o<a?-1:0:0};var Te=E(),K=(e,t)=>{Te.executeCommand("ReportSDK.traceSystem",{event:e,info:t})},x=(e,t,r)=>{Te.executeCommand("ReportSDK.traceSystemTimeline",{event:e,duration:t,extra:r})};var Ue="jolibox-sdk-loadermeta",we,U=JSON.parse((we=localStorage.getItem(Ue))!=null?we:"{}"),te=Date.now(),De=(e,t)=>e>t&&Math.abs(e-t)/(1e3*60*60*24)>=7,Ae=e=>!/^(Failed to fetch version|Couldn't find the requested file)/.test(e);function Jt(){return l(this,null,function*(){let t=`${P?"https://stg-api.jolibox.com":"https://api.jolibox.com"}/api/fe-configs/js-sdk/version-metadata`;try{let r=yield fetch(t,{method:"GET",headers:{"Content-Type":"application/json"}}),{implement_version:n,bootstrap_version:s}=yield r.json(),o=I(y({},U),{timestamp:te});if(s){let{bootstrap_version:i}=U;if(!(i&&w(i,s)>=0)){let c=yield(yield fetch(re(s))).text();Ae(c)&&(o=I(y({},o),{bootstrap_version:s,bootstrap_script:c}))}}if(n){let{implement_version:i}=U;if(!(i&&w(i,n)>=0)){let c=yield(yield fetch(ne(n))).text();Ae(c)&&(o=I(y({},o),{implement_version:n,implement_script:c}))}}localStorage.setItem(Ue,JSON.stringify(o))}catch(r){console.warn("Failed to fetch loader metadata: ",r)}})}var Le=e=>{let{currentMajorVersion:t,currentVersion:r,bootstrapUrl:n,implementUrl:s}=e;function o(){let{bootstrap_version:a,bootstrap_script:h,timestamp:g}=U;if(a&&h&&g&&!De(te,g)&&A(a)==t&&w(a,r)>=0)return{script:h,type:"localscript"};try{let p=new XMLHttpRequest;return p.open("GET",n,!1),p.send(),{script:p.responseText,type:"fetch_from_cdn"}}catch(p){let u=new fe(`Bootstrap module faile to fetch ${p}`);S({err:`${u}`})}}function i(){var p;let a=Date.now();K("jsSdkBegin",{t:a}),D.startTime=a;let{script:h,type:g}=(p=o())!=null?p:{};if(h){let u=document.createElement("script");u.type="text/javascript",u.innerHTML=h,document.head.appendChild(u),x("bootstrapModuleLoaded",Date.now()-a,{type:g})}}function c(a){(g=>l(this,null,function*(){try{let p=new Blob([g],{type:"application/javascript"}),u=URL.createObjectURL(p),Xe=yield import(u);return URL.revokeObjectURL(u),Xe}catch(p){let u=new R(`implement module evaluate error in h5:${p} `);S({err:`${u}`})}}))(a)}function m(){let a=Date.now(),{implement_script:h,implement_version:g,timestamp:p}=U;if(h&&g&&p&&!De(te,p)&&A(g)==t&&w(g,r)>=0){c(h),x("implementModuleLoaded",Date.now()-a,{type:"loadscript"});return}let u=document.createElement("script");u.type="module",u.crossOrigin="anonymous",u.src=s,u.onload=()=>{x("implementModuleLoaded",Date.now()-a,{type:"fetch_from_cdn"})},document.head.appendChild(u)}return()=>{try{i(),m(),Jt()}catch(a){let h=new R(`module evaluate error: ${a}`);S({err:`${h}`})}}};var ke=(e,t)=>{let r=s=>{let o=e({path:s});if(!o)throw`module ${s} load failed ${o}`;return o};function n(s){(i=>l(this,null,function*(){try{let c=new Blob([i],{type:"application/javascript"}),m=URL.createObjectURL(c),a=yield import(m);return URL.revokeObjectURL(m),a}catch(c){Z(new R(`implement module evaluate error in native:${c} `))}}))(s)}return()=>{try{let s=Date.now();K("jsSdkBegin",{t:s}),D.startTime=s;let o=r(t.bootstrapUrl),i=document.createElement("script");i.type="text/javascript",i.innerHTML=o,document.head.appendChild(i),x("bootstrapModuleLoaded",Date.now()-s,{type:"native"});let c=Date.now(),m=r(t.implementUrl);n(m),x("implementModuleLoaded",Date.now()-c,{type:"native"})}catch(s){console.error(`native load script error: ${s}`),Z(new R(`module load failed ${s}`))}}};var Ft="1.1.8-beta.1",M=Ft,Pe=A(M),Ke=!!(navigator.userAgent||"").includes("JoliboxPlatformSDK"),Bt=Ke?e=>{let t=window.prompt("invoke",JSON.stringify({event:"loadScriptSync",paramsString:JSON.stringify(e)}));if(t){let{data:r}=JSON.parse(t);return r}}:void 0,re=e=>`https://cdn.jsdelivr.net/npm/@jolibox/bootstrap@${e}/dist/index.js`,ne=e=>`https://cdn.jsdelivr.net/npm/@jolibox/implement@${e}/dist/index.js`,Vt=e=>/^\d+\.\d+\.\d+$/.test(e),Me=Vt(M)?Pe:M,Oe=re(Me),Ce=ne(Me);function $t(){Ke?ke(Bt,{bootstrapUrl:Oe,implementUrl:Ce})():Le({bootstrapUrl:Oe,implementUrl:Ce,currentMajorVersion:Pe,currentVersion:M})()}$t();var Ne=E();function je(){return Ne.excuteCommandSync("API.getSystemInfoSync")}function Je(){return Ne.excuteCommandSync("API.env")}function Fe(e,t){var r;return(r=ge.config[e])==null?void 0:r[t]}function Be(e,t,r){let n=Array.isArray(t)?t:t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let o of n)if(s&&(typeof s=="object"||Array.isArray(s)))s=s[o];else return r;return s===void 0?r:s}var $e="1.1.8-beta.1";function v(e){var c,m;let r=(m=(c=Je().data)==null?void 0:c.deviceInfo)==null?void 0:m.platform;if(!r)return!1;let[n,...s]=e.split(":"),o=Fe(r=="h5"?r:"native",n);if(!o)return!1;let i=o.version;return typeof i!="string"||z($e,i,"<")?!1:s.length===0?!0:Ve(o,s)||Ve(o.properties,s)}function Ve(e,t){if(!e)return!1;let r=Be(e,t);return r?de(r)?!0:W(r)?z($e,r,">="):!1:!1}var Ge=E();function He(){return l(this,null,function*(){return v("login")?yield Ge.executeCommand("API.login"):{code:"FAILURE",message:"[Jolibox SDK]login is not supported in this platform"}})}function We(){return l(this,null,function*(){return v("checkSession")?yield Ge.executeCommand("API.checkSession"):{code:"FAILURE",message:"[Jolibox SDK]checkSession is not supported in this platform"}})}var se=class{constructor(){this.loadFinished=()=>{let t=new Event("JOLIBOX_RUNTIME_LOAD_FINISHED");window.dispatchEvent(t)};this.notifyLoadProgress=t=>{let r=Math.ceil(t),n=new CustomEvent("JOLIBOX_RUNTIME_LOAD_PROGRESS",{detail:r});window.dispatchEvent(n)}}},ze=window.JoliboxRuntime||se;var f=class{constructor(){this.commands=E();this._emitter=new Q}addEventListener(t,r){this._emitter.on(t,(...n)=>r(n[0]))}triggerEvent(t,r){this._emitter.emit(t,r)}canUse(t){return v(t)}canIUseIfThrow(t){if(!this.canUse(t))return{code:"FAILURE",message:`[Jolibox SDK] ${t} is not supported in this platform`}}};var Gt="LifecycleSDK.onReady",N=class extends f{constructor(){super()}onReady(t){let r=n=>{t.call(this,n),this.triggerEvent(Gt,n)};this.commands.executeCommand("LifecycleSDK.onReady",r.bind(this))}exit(t){let r=this.canIUseIfThrow("lifeCycle.exit");if(r)return r;this.commands.executeCommand("LifecycleSDK.exit",t.onBeforeExit)}onJoliboxHide(t){this.commands.executeCommand("LifecycleSDK.onJoliboxHide",t.bind(this))}onJoliboxShow(t){this.commands.executeCommand("LifecycleSDK.onJoliboxShow",t.bind(this))}};var j=class extends f{getItem(t){return l(this,null,function*(){return yield this.commands.executeCommand("StorageSDK.getItem",t)})}setItem(t,r){return l(this,null,function*(){if(t.length>128)return{code:"PARAMETER_ERROR",message:"[SDK] cloud storage setItem error: length of key should be less than 128"};let n=typeof r=="string"?r:String(r);return t.length+n.length>1024?{code:"PARAMETER_ERROR",message:"[SDK] cloud storage setItem error: length of key and value should be less than 1024"}:yield this.commands.executeCommand("StorageSDK.setItem",t,r)})}removeItem(t){return l(this,null,function*(){return this.commands.executeCommand("StorageSDK.removeItem",t)})}clear(){return l(this,null,function*(){return this.commands.executeCommand("StorageSDK.clear")})}};var J=class extends f{constructor(){super();this.init=r=>{this.commands.executeCommand("AdsSDK.init",r)};this.adConfig=r=>{this.commands.executeCommand("AdsSDK.adConfig",r)};this.adBreak=r=>{this.commands.executeCommand("AdsSDK.adBreak",r)};this.adUnit=r=>{this.commands.executeCommand("AdsSDK.adUnit",r)}}};var F=class extends f{showKeyboard(t){let r=this.canIUseIfThrow("keyboard.showKeyboard");if(r)return r;this.commands.executeCommand("KeyboardSDK.showKeyboard",t)}updateKeyboard(t){let r=this.canIUseIfThrow("keyboard.updateKeyboard");if(r)return r;this.commands.executeCommand("KeyboardSDK.updateKeyboard",{value:t})}hideKeyboard(){let t=this.canIUseIfThrow("keyboard.hideKeyboard");if(t)return t;this.commands.executeCommand("KeyboardSDK.hideKeyboard")}};var B=class extends f{onLevelFinished(t,r,n){return l(this,null,function*(){let s=this.canIUseIfThrow("TaskTrackerSDK.onLevelFinished");return s?Promise.resolve(s):yield this.commands.executeCommand("TaskTrackerSDK.levelFinished",t,{result:r,duration:n})})}onTaskFinished(t,r){return l(this,null,function*(){let n=this.canIUseIfThrow("TaskTrackerSDK.onTaskFinished");return n||(yield this.commands.executeCommand("TaskTrackerSDK.taskFinished",t,{duration:r}))})}onTaskEvent(t,r){return l(this,null,function*(){let n=this.canIUseIfThrow("TaskTrackerSDK.onTaskEvent");return n||(yield this.commands.executeCommand("TaskTrackerSDK.taskEvent",t,r))})}onLevelUpgrade(t,r){return l(this,null,function*(){let n=this.canIUseIfThrow("TaskTrackerSDK.onLevelUpgrade");return n||(yield this.commands.executeCommand("TaskTrackerSDK.levelUpgrade",t,r))})}onHistoryUserLevel(t){return l(this,null,function*(){let r=this.canIUseIfThrow("TaskTrackerSDK.onHistoryUserLevel");return r||(yield this.commands.executeCommand("TaskTrackerSDK.historyUserLevel",t))})}onHistoryUserScore(t){return l(this,null,function*(){let r=this.canIUseIfThrow("TaskTrackerSDK.onHistoryUserScore");return r||(yield this.commands.executeCommand("TaskTrackerSDK.historyUserScore",t))})}};var Ye=Symbol("__JOLIBOX_SDK_INITIALIZED__");(()=>{if(window[Ye]){console.warn("JoliboxSDK already initialized, skipping...");return}})();window[Ye]=!0;var oe=class{constructor(){this.jssdkVersion="1.1.8-beta.1";this.runtime=new ze;this.ads=new J;this.lifecycle=new N;this.storage=new j;this.keyboard=new F;this.task=new B;this.getSystemInfoSync=je.bind(this);this.canIUse=v.bind(this);this.login=He.bind(this);this.checkSession=We.bind(this);window.joliboxsdk={runtime:this.runtime,ads:this.ads,lifecycle:this.lifecycle,storage:this.storage,keyboard:this.keyboard,task:this.task}}};window.JoliboxSDK=oe;})();
package/esbuild.config.js CHANGED
@@ -43,6 +43,7 @@ function build(format) {
43
43
  entryPoints: ['src/index.ts'],
44
44
  bundle: true,
45
45
  outfile: `dist/index.${format}.js`,
46
+ target: ['es2015', 'safari14'],
46
47
  format: format,
47
48
  minify: true,
48
49
  loader: {
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@jolibox/sdk",
3
3
  "description": "This project is common Jolibox JS-SDk interfere",
4
- "version": "1.1.7-beta.4",
4
+ "version": "1.1.8-beta.1",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
7
7
  "typings": "dist/index.d.ts",
8
8
  "license": "MIT",
9
9
  "dependencies": {
10
- "@jolibox/common": "1.1.7-beta.4",
11
- "@jolibox/types": "1.1.7-beta.4"
10
+ "@jolibox/common": "1.1.8-beta.1",
11
+ "@jolibox/types": "1.1.8-beta.1"
12
12
  },
13
13
  "devDependencies": {
14
14
  "typescript": "5.7.3",
package/sdk.build.log CHANGED
@@ -1,17 +1,17 @@
1
1
  Invoking: npm run clean && npm run build:cjs && npm run build:esm && npm run build:iife && tsc
2
2
 
3
- > @jolibox/sdk@1.1.7-beta.4 clean
3
+ > @jolibox/sdk@1.1.8-beta.1 clean
4
4
  > rimraf ./dist
5
5
 
6
6
 
7
- > @jolibox/sdk@1.1.7-beta.4 build:cjs
7
+ > @jolibox/sdk@1.1.8-beta.1 build:cjs
8
8
  > BUILD_VERSION=$(node -p "require('./package.json').version") node esbuild.config.js --format=cjs
9
9
 
10
10
 
11
- > @jolibox/sdk@1.1.7-beta.4 build:esm
11
+ > @jolibox/sdk@1.1.8-beta.1 build:esm
12
12
  > BUILD_VERSION=$(node -p "require('./package.json').version") node esbuild.config.js --format=esm
13
13
 
14
14
 
15
- > @jolibox/sdk@1.1.7-beta.4 build:iife
15
+ > @jolibox/sdk@1.1.8-beta.1 build:iife
16
16
  > BUILD_VERSION=$(node -p "require('./package.json').version") node esbuild.config.js --format=iife
17
17
 
package/src/index.ts CHANGED
@@ -1,3 +1,21 @@
1
+ const SDK_INITIALIZED = Symbol('__JOLIBOX_SDK_INITIALIZED__');
2
+ declare global {
3
+ interface Window {
4
+ JoliboxSDK: typeof JoliboxSDK;
5
+ [SDK_INITIALIZED]?: boolean; // 添加初始化标记
6
+ }
7
+ }
8
+
9
+ // SDK maybe injected into html by npm install or <script>
10
+ // In case sdk initialized multiple times, we need to skip the initialization by checking the initialized flag
11
+ (() => {
12
+ if (window[SDK_INITIALIZED]) {
13
+ console.warn('JoliboxSDK already initialized, skipping...');
14
+ return;
15
+ }
16
+ })();
17
+
18
+ window[SDK_INITIALIZED] = true;
1
19
  /** load implement at very first time */
2
20
  /**
3
21
  * global error catch