@jolibox/sdk 1.1.4-beta.1 → 1.1.4-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.rush/temp/package-deps_build.json +18 -13
- package/dist/api/get-system-info.d.ts +0 -1
- package/dist/api/index.d.ts +1 -0
- package/dist/api/login.d.ts +7 -0
- package/dist/{errors.d.ts → events.d.ts} +3 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +12 -3
- package/dist/index.esm.js +1 -0
- package/dist/index.iife.js +1 -1
- package/dist/loader/index.d.ts +1 -0
- package/dist/sdks/lifecycle.d.ts +7 -4
- package/dist/sdks/sdk.d.ts +5 -0
- package/dist/sdks/task.d.ts +25 -0
- package/dist/utils/env.d.ts +1 -0
- package/dist/utils/event-tracker.d.ts +5 -0
- package/esbuild.config.js +65 -0
- package/package.json +7 -7
- package/sdk.build.log +7 -7
- package/src/api/__tests__/canIUse.test.ts +6 -6
- package/src/api/can-i-use.ts +1 -1
- package/src/api/get-system-info.ts +0 -3
- package/src/api/index.ts +1 -0
- package/src/api/login.ts +24 -0
- package/src/events.ts +82 -0
- package/src/index.ts +15 -3
- package/src/loader/h5.ts +12 -10
- package/src/loader/index.ts +30 -16
- package/src/loader/native.ts +3 -2
- package/src/sdks/keyboard.ts +10 -20
- package/src/sdks/lifecycle.ts +10 -6
- package/src/sdks/sdk.ts +10 -0
- package/src/sdks/task.ts +65 -0
- package/src/utils/env.ts +1 -0
- package/src/utils/event-tracker.ts +126 -0
- package/dist/index.es.js +0 -1
- package/src/errors.ts +0 -42
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 兜底上报
|
|
3
|
+
*/
|
|
4
|
+
import {
|
|
5
|
+
serializeEventPackage,
|
|
6
|
+
IEvent,
|
|
7
|
+
EProject,
|
|
8
|
+
IEventPackage,
|
|
9
|
+
IPage,
|
|
10
|
+
IDevice,
|
|
11
|
+
EPlatform,
|
|
12
|
+
EventType,
|
|
13
|
+
timeout,
|
|
14
|
+
xUserAgent
|
|
15
|
+
} from '@jolibox/common';
|
|
16
|
+
import { testMode } from './env';
|
|
17
|
+
|
|
18
|
+
function getLocation(): IPage {
|
|
19
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
20
|
+
const params: Record<string, any> = {};
|
|
21
|
+
urlParams.forEach((value, key) => {
|
|
22
|
+
params[key] = value;
|
|
23
|
+
});
|
|
24
|
+
return {
|
|
25
|
+
name: 'GamePage',
|
|
26
|
+
params
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function getDevice(): IDevice {
|
|
31
|
+
return {
|
|
32
|
+
platform: 1000,
|
|
33
|
+
os: 'h5',
|
|
34
|
+
appVersion: '__JOLIBOX_LOCAL_SDK_VERSION__', // mock
|
|
35
|
+
appId: '1',
|
|
36
|
+
model: 'UnknownModel',
|
|
37
|
+
brand: 'UnknownBrand',
|
|
38
|
+
uuid: '1',
|
|
39
|
+
jsSdkVersion: '__JOLIBOX_LOCAL_SDK_VERSION__', // mock
|
|
40
|
+
extra: {}
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const hostToApiMap: Record<string | 'default', { test: string; prod: string }> = {
|
|
45
|
+
default: {
|
|
46
|
+
test: 'https://stg-collect.jolibox.com',
|
|
47
|
+
prod: 'https://collect.jolibox.com'
|
|
48
|
+
},
|
|
49
|
+
'oss.jolibox.com': {
|
|
50
|
+
test: 'https://stg-collect.jolibox.com',
|
|
51
|
+
prod: 'https://collect.jolibox.com'
|
|
52
|
+
},
|
|
53
|
+
'oss.pico-game.com': {
|
|
54
|
+
test: 'https://stg-collect.pico-game.com',
|
|
55
|
+
prod: 'https://collect.pico-game.com'
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const apiBaseURL = () => {
|
|
60
|
+
const api = hostToApiMap[window.location.host] ?? hostToApiMap.default;
|
|
61
|
+
return testMode ? api.test : api.prod;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const API_BASE_URL = apiBaseURL();
|
|
65
|
+
|
|
66
|
+
const timeoutFn = (ms: number) => {
|
|
67
|
+
const ctrl = new AbortController();
|
|
68
|
+
setTimeout(() => ctrl.abort(), ms);
|
|
69
|
+
return ctrl.signal;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
(AbortSignal as any).timeout ??= timeoutFn;
|
|
73
|
+
|
|
74
|
+
const getJoliSource = () => {
|
|
75
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
76
|
+
return urlParams.get('joliSource') ?? null;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
const JOLI_SOURCE = getJoliSource();
|
|
80
|
+
|
|
81
|
+
const postToReporter = async (data: unknown) => {
|
|
82
|
+
const reporterHost = API_BASE_URL;
|
|
83
|
+
const url = `${reporterHost}/report`;
|
|
84
|
+
const xua = xUserAgent('__JOLIBOX_LOCAL_SDK_VERSION__');
|
|
85
|
+
const joliSource = JOLI_SOURCE;
|
|
86
|
+
const headers: Record<string, string> = {
|
|
87
|
+
'Content-Type': 'application/json'
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
if (xua) headers['x-user-agent'] = xua;
|
|
91
|
+
if (joliSource) headers['x-joli-source'] = joliSource;
|
|
92
|
+
|
|
93
|
+
const response = await fetch(url, {
|
|
94
|
+
method: 'POST',
|
|
95
|
+
headers,
|
|
96
|
+
body: JSON.stringify(data),
|
|
97
|
+
signal: timeoutFn(5000)
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
// return text
|
|
101
|
+
return response;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
export async function trackError(eventName: string, errorData: Record<string, string>, project: EProject) {
|
|
105
|
+
const errEvent: IEvent = {
|
|
106
|
+
name: eventName,
|
|
107
|
+
type: EventType.ErrorTrace,
|
|
108
|
+
location: getLocation(),
|
|
109
|
+
target: null,
|
|
110
|
+
extra: errorData,
|
|
111
|
+
timestamp: Date.now(),
|
|
112
|
+
userId: null
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
const device = getDevice();
|
|
116
|
+
const events: IEvent[] = [errEvent];
|
|
117
|
+
const eventPackage: IEventPackage = {
|
|
118
|
+
protocolVersion: '1.0.0',
|
|
119
|
+
events,
|
|
120
|
+
device,
|
|
121
|
+
project
|
|
122
|
+
};
|
|
123
|
+
const serializedEventPackage = serializeEventPackage(eventPackage);
|
|
124
|
+
|
|
125
|
+
postToReporter(serializedEventPackage);
|
|
126
|
+
}
|
package/dist/index.es.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var W=Object.defineProperty,Ie=Object.getOwnPropertyDescriptor,Ue=(e,t)=>{for(var r in t)W(e,r,{get:t[r],enumerable:!0})},Q=(e,t,r,n)=>{for(var s=n>1?void 0:n?Ie(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&&W(t,r,s),s};function Ae(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}function k(e){return typeof e=="string"}function Y(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function Le(e){return typeof e>"u"}function we(e){return Le(e)||e===null}function Ce(e){return typeof e=="function"}function X(e){let t=e,r=null,n=function(...s){return r||(r=new t(...s)),r};return n.prototype=t.prototype,n}var Te=(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))(Te||{}),De=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}},q=class extends De{constructor(){super(...arguments),this.kind="INTERNAL_ERROR"}};var Z=class extends q{constructor(){super(...arguments),this.name="INTERNAL_JS_MODULE_FETCH_ERROR",this.priority="P0"}},y=class extends q{constructor(){super(...arguments),this.name="INTERNAL_JS_MODULE_EVAL_ERROR",this.priority="P0"}};function R(e){return(...t)=>{(globalThis.VConsole?.[e]??globalThis.console[e])(...t)}}var Oe={log:R("log"),warn:R("warn"),info:R("info"),error:R("error"),debug:R("debug")};Object.assign(globalThis,{logger:Oe});var ee=Symbol.for("Jolibox.canIUseMap"),Ne={};globalThis[ee]=Ne;var te={get config(){return globalThis[ee]}};function j(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 l=0;l<i;l++){let _=parseInt(s[l],10)||0,c=parseInt(o[l],10)||0;if(_>c){n=1;break}else if(_<c){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 a=class U{static{this.Undefined=new U(void 0)}constructor(t){this.element=t,this.next=U.Undefined,this.prev=U.Undefined}},Ke=class{constructor(){this._first=a.Undefined,this._last=a.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===a.Undefined}clear(){let e=this._first;for(;e!==a.Undefined;){let t=e.next;e.prev=a.Undefined,e.next=a.Undefined,e=t}this._first=a.Undefined,this._last=a.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){let r=new a(e);if(this._first===a.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!==a.Undefined){let e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==a.Undefined){let e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==a.Undefined&&e.next!==a.Undefined){let t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===a.Undefined&&e.next===a.Undefined?(this._first=a.Undefined,this._last=a.Undefined):e.next===a.Undefined?(this._last=this._last.prev,this._last.next=a.Undefined):e.prev===a.Undefined&&(this._first=this._first.next,this._first.prev=a.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==a.Undefined;)yield e.element,e=e.next}},Pe=0,I=class{constructor(e){this.value=e,this.id=Pe++}},v=class{constructor(e){this.options=e,this._size=0}dispose(e){this._disposed||(this._disposed=!0,this._listeners&&(e?(this._listeners instanceof I&&(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 I(e);this._listeners?this._listeners instanceof I?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 I?this._deliver(this._listeners,e):this._listeners.forEach(t=>this._deliver(t,e)))}hasListeners(){return this._size>0}},J=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 Ke,this.cachedEventQueue.set(e,n)),n.push({args:t})}}},P={};Ue(P,{None:()=>Me,filter:()=>je,once:()=>re,toPromise:()=>ke});var Me=()=>{console.log("[Jolibox SDK] None Event")};function ke(e){return new Promise(t=>re(e)(t))}function re(e){return(t,r=null)=>{let n=!1;return e(s=>{if(!n)return n=!0,t.call(r,s)},null)}}function je(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 N=Symbol.for("Jolibox.hostEmitter"),Je=()=>{let e=new J;return globalThis[N]||(globalThis[N]={on:e.on.bind(e),off:e.off.bind(e),emit:e.emit.bind(e)}),globalThis[N]},ne=Je();function Fe(e,t){let r=Math.min(e.length,t.length);for(let n=0;n<r;n++)Be(e[n],t[n])}function Be(e,t){if(k(t)){if(typeof e!==t)throw new Error(`argument does not match constraint: typeof ${t}`)}else if(Ce(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 A=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 Fe(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}};A=Q([X],A);var M=class{constructor(){this._onWillExecuteCommand=new v,this.onWillExecuteCommand=this._onWillExecuteCommand.event,this._onDidExecuteCommand=new v,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this.registry=new A,this._starActivation=null}_activateStar(){return this._starActivation||(this._starActivation=Ae(3e4)),this._starActivation}async executeCommand(e,...t){return this.registry.getCommand(e)?this._tryExecuteCommand(e,t):(await Promise.all([Promise.race([this._activateStar(),P.toPromise(P.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}}};M=Q([X],M);var K=Symbol.for("Jolibox.commands");function h(){if(globalThis[K])return globalThis[K];let e=new A,t=new M,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[K]=r,r}document.addEventListener("DOMContentLoaded",()=>ne.emit("onDocumentReady"));var se=h(),F=e=>{se.executeCommand("ReportSDK.traceSystem",{event:"global_js_error",info:{err:JSON.stringify(e)}}).catch(t=>{console.error(`Fallback report: ${t} ${JSON.stringify(e)}`)})},g=F;window.addEventListener("unhandledrejection",F.bind(void 0));window.addEventListener("error",F.bind(void 0));window.onerror=(e,t,r,n,s)=>{se.executeCommand("ReportSDK.traceSystem",{event:"global_js_error",info:{err:JSON.stringify({message:e,source:t,lineno:r,colno:n,error:s})}}).catch(o=>{console.error(`Fallback report: ${o} ${JSON.stringify(e)}`)})};var B=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}},S=e=>parseInt(B(e).major,10),b=(e,t)=>{let{major:r,minor:n,patch:s}=B(e),{major:o,minor:i,patch:l}=B(t);return r!==o?r>o?1:-1:n!==i?n>i?1:-1:s!==l?s>l?1:-1:0};var oe=h(),L=(e,t)=>{oe.executeCommand("ReportSDK.traceSystem",{event:e,info:t})},E=(e,t,r)=>{oe.executeCommand("ReportSDK.traceSystemTimeline",{event:e,duration:t,extra:r})};var ce="jolibox-sdk-loadermeta",x=JSON.parse(localStorage.getItem(ce)??"{}"),V=Date.now(),ie=(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);async function Ve(){let e="https://stg-api.jolibox.com/api/fe-configs/js-sdk/version_metadata";try{let t=await fetch(e,{method:"GET",headers:{"Content-Type":"application/json"}}),{implement_version:r,bootstrap_version:n}=await t.json(),s={...x,timestamp:V};if(n){let{bootstrap_version:o}=x;if(!(o&&b(o,n))){let i=await(await fetch(G(n))).text();ae(i)&&(s={...s,bootstrap_version:n,bootstrap_script:i})}}if(r){let{implement_version:o}=x;if(!(o&&b(o,r))){let i=await(await fetch($(r))).text();ae(i)&&(s={...s,implement_version:r,implement_script:i})}}localStorage.setItem(ce,JSON.stringify(s))}catch(t){console.warn("Failed to fetch loader metadata: ",t)}}var me=e=>{let{currentMajorVersion:t,currentVersion:r,bootstrapUrl:n,implementUrl:s}=e;function o(){let{bootstrap_version:c,bootstrap_script:p,timestamp:d}=x;if(c&&p&&d&&!ie(V,d)&&S(c)==t&&b(c,r)>0)return{script:p,type:"localscript"};try{let m=new XMLHttpRequest;return m.open("GET",n,!1),m.send(),{script:m.responseText,type:"fetch_from_cdn"}}catch(m){g(new Z(`Bootstrap module faile to fetch ${m}`))}}function i(){let c=Date.now();L("js_sdk_begin",{t:c});let{script:p,type:d}=o()??{};if(p){let m=document.createElement("script");m.type="text/javascript",m.innerHTML=p,document.head.appendChild(m),E("bootstrapModuleLoaded",Date.now()-c,{type:d})}}function l(c){(async d=>{try{let m=new Blob([d],{type:"application/javascript"}),f=URL.createObjectURL(m),xe=await import(f);return URL.revokeObjectURL(f),xe}catch(m){g(new y(`implement module evaluate error in h5:${m} `))}})(c)}function _(){let c=Date.now(),{implement_script:p,implement_version:d,timestamp:m}=x;if(p&&d&&m&&!ie(V,m)&&S(d)==t&&b(d,r)>0){l(p),E("implementModuleLoaded",Date.now()-c,{type:"loadscript"});return}let f=document.createElement("script");f.type="module",f.crossOrigin="anonymous",f.src=s,f.onload=()=>{E("bootstrapModuleLoaded",Date.now()-c,{type:"fetch_from_cdn"})},document.head.appendChild(f)}return()=>{try{i(),_(),Ve()}catch(c){g(new y(`module evaluate error: ${c}`))}}};var le=(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 l=new Blob([i],{type:"application/javascript"}),_=URL.createObjectURL(l),c=await import(_);return URL.revokeObjectURL(_),c}catch(l){g(new y(`implement module evaluate error in native:${l} `))}})(s)}return()=>{try{let s=Date.now();L("js_sdk_begin",{t:s});let o=r(t.bootstrapUrl),i=document.createElement("script");i.type="text/javascript",i.innerHTML=o,document.head.appendChild(i),E("implementModuleLoaded",Date.now()-s,{type:"native"});let l=r(t.implementUrl);n(l),E("bootstrapModuleLoaded",Date.now()-s,{type:"native"})}catch(s){console.error(`native load script error: ${s}`),g(new y(`module load failed ${s}`))}}};var Ge="1.0.0",pe=Ge,H=S(pe),fe=window.webkit?e=>window.prompt("loadScript",JSON.stringify(e)):void 0,$e=typeof fe<"u",G=e=>`http://cdn.jsdelivr.net/npm/@jolibox/bootstrap@${e}/dist/index.js`,$=e=>`http://cdn.jsdelivr.net/npm/@jolibox/implementation@${e}/dist/index.js`,de=G(H),ue=$(H);function He(){$e?le(fe,{bootstrapUrl:de,implementUrl:ue})():me({bootstrapUrl:de,implementUrl:ue,currentMajorVersion:H,currentVersion:pe})()}He();var z=h();async function he(){return await z.executeCommand("API.getSystemInfo")}function _e(){return z.excuteCommandSync("API.getSystemInfoSync")}function ge(){return z.excuteCommandSync("API.env")}function Ee(e,t){return te.config[e]?.[t]}function ye(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 ve="1.0.0";function w(e){let r=ge().data?.deviceInfo?.platform;if(!r)return!1;let[n,...s]=e.split(":"),o=Ee(r=="h5"?r:"native",n);if(!o)return!1;let i=o.version;return typeof i!="string"||j(ve,i,"<")?!1:s.length===0?!0:Re(o,s)||Re(o.properties,s)}function Re(e,t){if(!e)return!1;let r=ye(e,t);return r?Y(r)?!0:k(r)?j(ve,r,">="):!1:!1}var Se=window.JoliboxRuntime;var u=class{constructor(){this.commands=h();this._emitter=new J}addEventListener(t,r){this._emitter.on(t,(...n)=>r(n[0]))}triggerEvent(t,r){this._emitter.emit(t,r)}canUse(t){return w(t)}};var ze="LifecycleSDK.onReady",C=class extends u{constructor(){super()}onReady(t){let r=n=>{t.call(this,n),this.triggerEvent(ze,n)};this.commands.executeCommand("LifecycleSDK.onReady",r.bind(this))}exitGame(t){this.commands.executeCommand("LifecycleSDK.exitGame",t.onBeforeExit)}onGameHide(t){this.commands.executeCommand("LifecycleSDK.onGameHide",t.bind(this))}onGameShow(t){this.commands.executeCommand("LifecycleSDK.onGameShow",t.bind(this))}};var T=class extends u{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 D=class extends u{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 O=class extends u{showKeyboard(t){if(!this.canUse("keyboard.showKeyboard"))return{code:"FAILURE",message:"[Jolibox SDK] keyboard.showKeyboard is not supported in this platform"};this.commands.executeCommand("KeyboardSDK.showKeyboard",t)}updateKeyboard(t){if(!this.canUse("keyboard.updateKeyboard"))return{code:"FAILURE",message:"[Jolibox SDK] keyboard.updateKeyboard is not supported in this platform"};this.commands.executeCommand("KeyboardSDK.updateKeyboard",t)}hideKeyboard(){if(!this.canUse("keyboard.hideKeyboard"))return{code:"FAILURE",message:"[Jolibox SDK] keyboard.hideKeyboard is not supported in this platform"};this.commands.executeCommand("KeyboardSDK.hideKeyboard")}};var be=class{constructor(){this.runtime=new Se;this.ads=new D;this.lifecycle=new C;this.storage=new T;this.keyboard=new O;this.getSystemInfo=he.bind(this);this.getSystemInfoSync=_e.bind(this);this.canIUse=w.bind(this)}};export{be as JoliboxSDK};
|
package/src/errors.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { hostEmitter, createCommands, BaseError } from '@jolibox/common';
|
|
2
|
-
document.addEventListener('DOMContentLoaded', () => hostEmitter.emit('onDocumentReady'));
|
|
3
|
-
|
|
4
|
-
const commands = createCommands();
|
|
5
|
-
|
|
6
|
-
const rejectHandler = (event: PromiseRejectionEvent | ErrorEvent | BaseError) => {
|
|
7
|
-
commands
|
|
8
|
-
.executeCommand('ReportSDK.traceSystem', {
|
|
9
|
-
event: 'global_js_error',
|
|
10
|
-
info: {
|
|
11
|
-
err: JSON.stringify(event)
|
|
12
|
-
}
|
|
13
|
-
})
|
|
14
|
-
.catch((e) => {
|
|
15
|
-
// 兜底上报
|
|
16
|
-
console.error(`Fallback report: ${e} ${JSON.stringify(event)}`);
|
|
17
|
-
});
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
export const reportError = rejectHandler;
|
|
21
|
-
|
|
22
|
-
window.addEventListener('unhandledrejection', rejectHandler.bind(this));
|
|
23
|
-
window.addEventListener('error', rejectHandler.bind(this));
|
|
24
|
-
window.onerror = (message, source, lineno, colno, error) => {
|
|
25
|
-
commands
|
|
26
|
-
.executeCommand('ReportSDK.traceSystem', {
|
|
27
|
-
event: 'global_js_error',
|
|
28
|
-
info: {
|
|
29
|
-
err: JSON.stringify({
|
|
30
|
-
message,
|
|
31
|
-
source,
|
|
32
|
-
lineno,
|
|
33
|
-
colno,
|
|
34
|
-
error
|
|
35
|
-
})
|
|
36
|
-
}
|
|
37
|
-
})
|
|
38
|
-
.catch((e) => {
|
|
39
|
-
// 兜底上报
|
|
40
|
-
console.error(`Fallback report: ${e} ${JSON.stringify(message)}`);
|
|
41
|
-
});
|
|
42
|
-
};
|