@jolibox/implement 1.1.11 → 1.1.13-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.rush/temp/package-deps_build.json +24 -20
- package/.rush/temp/shrinkwrap-deps.json +1 -1
- package/dist/common/ads/anti-cheating.d.ts +16 -53
- package/dist/common/ads/anti-cheating.test.d.ts +1 -0
- package/dist/common/context/index.d.ts +5 -0
- package/dist/common/context/url-parse.d.ts +8 -1
- package/dist/index.js +3 -3
- package/dist/index.native.js +110 -4
- package/dist/native/api/index.d.ts +1 -0
- package/dist/native/api/navigate.d.ts +1 -0
- package/dist/native/bootstrap/bridge.d.ts +1 -1
- package/dist/native/js-bridge/const.d.ts +1 -0
- package/dist/native/js-bridge/publish.d.ts +1 -0
- package/dist/native/js-bridge/subscribe.d.ts +2 -0
- package/dist/native/js-bridge/types.d.ts +4 -0
- package/dist/native/js-core/jolibox-js-core.d.ts +8 -3
- package/dist/native/network/create-fetch.d.ts +1 -0
- package/dist/native/ui/retention.d.ts +1 -0
- package/implement.build.log +2 -2
- package/package.json +4 -3
- package/src/common/ads/anti-cheating.test.ts +79 -0
- package/src/common/ads/anti-cheating.ts +222 -156
- package/src/common/ads/index.ts +21 -7
- package/src/common/context/index.ts +22 -3
- package/src/common/context/url-parse.ts +24 -1
- package/src/native/api/index.ts +1 -0
- package/src/native/api/lifecycle.ts +16 -4
- package/src/native/api/navigate.ts +61 -0
- package/src/native/api/request.ts +19 -10
- package/src/native/bootstrap/bridge.ts +10 -1
- package/src/native/bootstrap/index.ts +100 -23
- package/src/native/js-bridge/const.ts +2 -0
- package/src/native/js-bridge/js-bridge.ts +7 -2
- package/src/native/js-bridge/publish.ts +44 -0
- package/src/native/js-bridge/subscribe.ts +25 -1
- package/src/native/js-bridge/types.ts +10 -0
- package/src/native/js-core/jolibox-js-core.ts +30 -26
- package/src/native/network/create-fetch.ts +1 -0
- package/src/native/network/utils.ts +13 -6
- package/src/native/types/global.d.ts +1 -0
- package/src/native/types/native-method-map.d.ts +29 -0
- package/src/native/ui/retention.ts +152 -0
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
|
-
"packages/implement/.rush/temp/shrinkwrap-deps.json": "
|
|
3
|
+
"packages/implement/.rush/temp/shrinkwrap-deps.json": "a4ab156a0df4607a7c45edb42b1d654b1ff20880",
|
|
4
4
|
"packages/implement/.eslintrc.js": "7a3d2747dc887655ca9e2d3ff621f7dfd98500b9",
|
|
5
5
|
"packages/implement/README.md": "5660cd88848b7a5428394cc34d881a35dd402188",
|
|
6
6
|
"packages/implement/esbuild.config.js": "86f1fd21722a2cb05216751578dcca66326e664a",
|
|
7
|
-
"packages/implement/package.json": "
|
|
7
|
+
"packages/implement/package.json": "1114ab8bac30311e13cc1d0a5a0111171d6791d7",
|
|
8
8
|
"packages/implement/src/common/ads/ads-action-detection.ts": "5a7b9f85d7eab9e744f8a9fc7638063f43baa214",
|
|
9
|
-
"packages/implement/src/common/ads/anti-cheating.ts": "
|
|
9
|
+
"packages/implement/src/common/ads/anti-cheating.test.ts": "433eb603b97fd7609f26af1522f309596a790829",
|
|
10
|
+
"packages/implement/src/common/ads/anti-cheating.ts": "888c94ef55ca03849a79b3e0425850a097192816",
|
|
10
11
|
"packages/implement/src/common/ads/channel-policy.ts": "c6d036be5cedf0c5d545fac271c6c8447ca55d8a",
|
|
11
|
-
"packages/implement/src/common/ads/index.ts": "
|
|
12
|
+
"packages/implement/src/common/ads/index.ts": "e3d5b617f7a156583d50905d325c7ed13ecba6fb",
|
|
12
13
|
"packages/implement/src/common/api-factory/index.ts": "a2b60f027384e37492ddde550dd46f3fb3e14cfe",
|
|
13
14
|
"packages/implement/src/common/api-factory/validator/__tests__/validate/any.test.ts": "6e225e09fce401b374221ad2e4fe33bc91df4152",
|
|
14
15
|
"packages/implement/src/common/api-factory/validator/__tests__/validate/array.test.ts": "8a9cc32be03e952f1176a970fea033d597c176cb",
|
|
@@ -30,9 +31,9 @@
|
|
|
30
31
|
"packages/implement/src/common/api-factory/validator/index.ts": "204e86b97c854647d177805e3180d4cfd542b0f8",
|
|
31
32
|
"packages/implement/src/common/api-factory/validator/validate.ts": "5fee8175a9a05a69fe709c7e7899e5372d81efb1",
|
|
32
33
|
"packages/implement/src/common/can-i-use.ts": "9a28562870d92b82ce42ec656c8e9d868dd87528",
|
|
33
|
-
"packages/implement/src/common/context/index.ts": "
|
|
34
|
+
"packages/implement/src/common/context/index.ts": "b08ac6a2021c7e10701f87d88ab3f7e7a2ac90d7",
|
|
34
35
|
"packages/implement/src/common/context/types.ts": "244ff65de52dcbce2457ffee427f5fa102987825",
|
|
35
|
-
"packages/implement/src/common/context/url-parse.ts": "
|
|
36
|
+
"packages/implement/src/common/context/url-parse.ts": "bc25ab4dec5a92f02a8bf99a8e8da4e74f50aba3",
|
|
36
37
|
"packages/implement/src/common/http/index.ts": "5087185d80e1e239262f849b3015eb9b810e2945",
|
|
37
38
|
"packages/implement/src/common/http/uuid.ts": "72e0bcc38976f6d25a55128843c6e3b0dbfd978e",
|
|
38
39
|
"packages/implement/src/common/http/xua.ts": "2ef571b8467fe5e8ecb470c26cb6da99b24be9a8",
|
|
@@ -67,39 +68,42 @@
|
|
|
67
68
|
"packages/implement/src/native/api/ads.ts": "845fc0e95c00444e3f96d7c73318b29840d3bbe2",
|
|
68
69
|
"packages/implement/src/native/api/base.ts": "c4c4d04519cdbc3a08226c620f6314ee3b151435",
|
|
69
70
|
"packages/implement/src/native/api/get-system-info.ts": "d0132211c53425eed4811721ac5d577781b118a7",
|
|
70
|
-
"packages/implement/src/native/api/index.ts": "
|
|
71
|
+
"packages/implement/src/native/api/index.ts": "39c85b6c6d93f91d9ecc4a96a38a39a425d5487a",
|
|
71
72
|
"packages/implement/src/native/api/keyboard.ts": "89703b1d8b0929cd0366fd663fee7690be705b38",
|
|
72
|
-
"packages/implement/src/native/api/lifecycle.ts": "
|
|
73
|
+
"packages/implement/src/native/api/lifecycle.ts": "7bb706370443627607563254a7cda00037c2aa3f",
|
|
73
74
|
"packages/implement/src/native/api/login.ts": "b957d3142462589395aeeee20e75ff6724ac6fbd",
|
|
74
|
-
"packages/implement/src/native/api/
|
|
75
|
+
"packages/implement/src/native/api/navigate.ts": "9a3150581f500135e9707da2c17943762dc5d901",
|
|
76
|
+
"packages/implement/src/native/api/request.ts": "d2b5fb71eff0dfda5f24ca7ddf11fa4704c35eee",
|
|
75
77
|
"packages/implement/src/native/api/storage.ts": "7f56694e3a7f47605512f9cee7fce48ac620c169",
|
|
76
78
|
"packages/implement/src/native/api/task.ts": "26e06a3d6bbeaed34fd704d096e712448296607e",
|
|
77
|
-
"packages/implement/src/native/bootstrap/bridge.ts": "
|
|
78
|
-
"packages/implement/src/native/bootstrap/index.ts": "
|
|
79
|
+
"packages/implement/src/native/bootstrap/bridge.ts": "4fe89e79d7fe43a1411388347c3cb3d6edc50376",
|
|
80
|
+
"packages/implement/src/native/bootstrap/index.ts": "807b084b56130efdde222cc978d4700bc3ab26fe",
|
|
79
81
|
"packages/implement/src/native/bootstrap/init-env.ts": "b7514d5d2db60da990575c1426243777aee57748",
|
|
80
|
-
"packages/implement/src/native/js-bridge/const.ts": "
|
|
82
|
+
"packages/implement/src/native/js-bridge/const.ts": "896b30d0d1996f42e1a1c391db5dc095190e166c",
|
|
81
83
|
"packages/implement/src/native/js-bridge/index.ts": "b65e1e20edcce8ce270381a9c7c79cc981761ad4",
|
|
82
84
|
"packages/implement/src/native/js-bridge/invoke.ts": "f7fd744c9491e4eb21b8d5ec6ef314a602a5adcb",
|
|
83
|
-
"packages/implement/src/native/js-bridge/js-bridge.ts": "
|
|
85
|
+
"packages/implement/src/native/js-bridge/js-bridge.ts": "d06223588faade35cfe56c6dfba94d59297772f0",
|
|
86
|
+
"packages/implement/src/native/js-bridge/publish.ts": "2e884a038141200a6104f7ce24c2666180ded4d5",
|
|
84
87
|
"packages/implement/src/native/js-bridge/report.ts": "056a4b6eea59219d1ea3af08a39fd35a4627abd2",
|
|
85
|
-
"packages/implement/src/native/js-bridge/subscribe.ts": "
|
|
86
|
-
"packages/implement/src/native/js-bridge/types.ts": "
|
|
88
|
+
"packages/implement/src/native/js-bridge/subscribe.ts": "24b9352959c6868ec10f45afa6cda9f930d2b3ac",
|
|
89
|
+
"packages/implement/src/native/js-bridge/types.ts": "df45a621d69ccef3a5ab9d023a0f4fc8d665d645",
|
|
87
90
|
"packages/implement/src/native/js-bridge/utils.ts": "9a444bd1dc499fcdb45561eb06396a04c4d538e1",
|
|
88
91
|
"packages/implement/src/native/js-core/index.ts": "d3fdbad44b2969e0d45d22e8c4da5b8f83782667",
|
|
89
|
-
"packages/implement/src/native/js-core/jolibox-js-core.ts": "
|
|
92
|
+
"packages/implement/src/native/js-core/jolibox-js-core.ts": "78c6b8b3e744f7023f2ec98eb7df544bd9485bb6",
|
|
90
93
|
"packages/implement/src/native/js-core/message-port.ts": "7199fe2e9a89617bfce7853562ac0fd37772bce2",
|
|
91
94
|
"packages/implement/src/native/js-core/utils.ts": "a3639631f50764a5498f17949d3b9204fcc86fbf",
|
|
92
|
-
"packages/implement/src/native/network/create-fetch.ts": "
|
|
95
|
+
"packages/implement/src/native/network/create-fetch.ts": "0670a19f902cd33165c67fdbfd292893185d0648",
|
|
93
96
|
"packages/implement/src/native/network/index.ts": "f57653dfa388545cbe7fb0a3f1eb9603c6208f45",
|
|
94
97
|
"packages/implement/src/native/network/report.ts": "705e9614faeb0611c9c57ced998885bdc3a02d11",
|
|
95
98
|
"packages/implement/src/native/network/types.ts": "4e8eb72bf0b0b26a5298ce42d96855d27769be51",
|
|
96
|
-
"packages/implement/src/native/network/utils.ts": "
|
|
99
|
+
"packages/implement/src/native/network/utils.ts": "53877a6871dc3a6b173daef930872c44589659b9",
|
|
97
100
|
"packages/implement/src/native/report/errors/index.ts": "d2cd492f07c9b98bd8d469d4a5a84bb8520a3dd2",
|
|
98
101
|
"packages/implement/src/native/report/index.ts": "b30ccb9ef8e9124cbf156c6bdc3751465721383a",
|
|
99
102
|
"packages/implement/src/native/report/task-tracker.ts": "09f8bc1dd157fe9a2159c261278bd2a92930cee3",
|
|
100
|
-
"packages/implement/src/native/types/global.d.ts": "
|
|
101
|
-
"packages/implement/src/native/types/native-method-map.d.ts": "
|
|
103
|
+
"packages/implement/src/native/types/global.d.ts": "f4711617013586d0f3c7e2d9bec06f44a86bbc5d",
|
|
104
|
+
"packages/implement/src/native/types/native-method-map.d.ts": "0e7d37d4b4d204c7dd5bb50119f20f9bf8e7106f",
|
|
102
105
|
"packages/implement/src/native/types/native-method.d.ts": "e4e22c921a5b54d4e10fe5ca18158d691fbfe3e7",
|
|
106
|
+
"packages/implement/src/native/ui/retention.ts": "d95410ef87d0cab600a99d54c5f5159f2d727529",
|
|
103
107
|
"packages/implement/tsconfig.json": "b150f4b2ef4eb9d98f92135d481fe530eb7145b5"
|
|
104
108
|
},
|
|
105
109
|
"arguments": "npm run clean && npm run build:esm && tsc "
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"../../packages/implement": "../../packages/implement:
|
|
2
|
+
"../../packages/implement": "../../packages/implement:FJYeACHmWWCrPS8ZA4qR/Kdb5fcP059aU6dHHDR6Y3U=:",
|
|
3
3
|
"/@esbuild/aix-ppc64/0.24.2": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==",
|
|
4
4
|
"/@esbuild/android-arm/0.24.2": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==",
|
|
5
5
|
"/@esbuild/android-arm64/0.24.2": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==",
|
|
@@ -1,71 +1,34 @@
|
|
|
1
1
|
import type { IHttpClient } from '../http';
|
|
2
2
|
import type { Track } from '../report';
|
|
3
|
-
export type AdsDisplayPermission = 'BLOCK_INITIAL' | 'BANNED_FOR_SESSION' | 'NETWORK_NOT_OK' | 'WAITING_BANNED_RELEASE' | 'BANNED_FOR_TIME' | 'ALLOWED';
|
|
4
|
-
interface IAdsAntiCheatingConfig {
|
|
3
|
+
export type AdsDisplayPermission = 'BLOCK_INITIAL' | 'BANNED_FOR_SESSION' | 'HOLDING_HIGH_FREQ' | 'NETWORK_NOT_OK' | 'WAITING_BANNED_RELEASE' | 'BANNED_FOR_TIME' | 'ALLOWED';
|
|
4
|
+
export interface IAdsAntiCheatingConfig {
|
|
5
5
|
maxAllowedAdsForTime?: number;
|
|
6
|
-
|
|
6
|
+
banForTimeThreshold?: number;
|
|
7
7
|
bannedReleaseTime?: number;
|
|
8
8
|
initialThreshold?: number;
|
|
9
9
|
maxAllowedAdsForSession?: number;
|
|
10
|
-
|
|
10
|
+
banForSessionThreshold?: number;
|
|
11
|
+
highFreqThreshold?: number;
|
|
11
12
|
}
|
|
12
13
|
export declare class AdsAntiCheating {
|
|
13
14
|
readonly track: Track;
|
|
14
15
|
readonly httpClient: IHttpClient;
|
|
15
16
|
readonly checkNetwork: () => boolean;
|
|
16
|
-
private
|
|
17
|
-
private
|
|
18
|
-
private
|
|
19
|
-
private
|
|
20
|
-
private releaseBannedForTimeTimeout;
|
|
21
|
-
private maxAllowedAdsForSession;
|
|
22
|
-
private bannedForSessionThreshold;
|
|
23
|
-
private isBanningForSession;
|
|
24
|
-
private initialThreshold;
|
|
25
|
-
private _callAdsTimestampsForTime;
|
|
26
|
-
private callAdsTimestampsForSession;
|
|
27
|
-
private initTimestamp;
|
|
17
|
+
private checkShouldBanInitial;
|
|
18
|
+
private checkShouldBanHighFreq;
|
|
19
|
+
private checkShouldBanForTime;
|
|
20
|
+
private checkShouldBanForSession;
|
|
28
21
|
constructor(track: Track, httpClient: IHttpClient, checkNetwork: () => boolean, config?: IAdsAntiCheatingConfig);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
*/
|
|
36
|
-
private get callAdsTimestampsForTime();
|
|
37
|
-
/**
|
|
38
|
-
* Set call ads timestamps for time, this will also save to local storage
|
|
39
|
-
*/
|
|
40
|
-
private set callAdsTimestampsForTime(value);
|
|
41
|
-
/**
|
|
42
|
-
* Set a timeout to release the banned for time status
|
|
43
|
-
*/
|
|
44
|
-
private setReleaseBannedForTime;
|
|
45
|
-
/**
|
|
46
|
-
* Check if we should ban for initial call. By default, if user makes a call less than 2 seconds after the first call, block.
|
|
47
|
-
* @returns
|
|
48
|
-
*/
|
|
49
|
-
private checkShouldBannedInitial;
|
|
50
|
-
/**
|
|
51
|
-
* Check if we should ban this user for the whole session. By default, if user makes more than 200 calls in 10 minutes, ban for the session.
|
|
52
|
-
* @param type
|
|
53
|
-
* @returns
|
|
54
|
-
*/
|
|
55
|
-
private checkShouldBannedForSession;
|
|
56
|
-
/**
|
|
57
|
-
* Check if we should ban this user for a period of time. By default, if user makes more than 8 calls in 1 minute, ban for 1 minute.
|
|
58
|
-
* After 1 minute, user can make calls again.
|
|
59
|
-
* @param type
|
|
60
|
-
* @returns
|
|
61
|
-
*/
|
|
62
|
-
private checkShouldBannedForTime;
|
|
63
|
-
checkAdsDisplayPermission: (type: 'reward' | 'interstitial') => AdsDisplayPermission;
|
|
22
|
+
checkAdsDisplayPermission: (type: 'reward' | 'interstitial') => {
|
|
23
|
+
reason: AdsDisplayPermission;
|
|
24
|
+
info?: {
|
|
25
|
+
count: number;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
64
28
|
/**
|
|
65
29
|
* Report an ad display permission issue.
|
|
66
30
|
* Report to both event tracking system and the business backend system.
|
|
67
31
|
* @param reason
|
|
68
32
|
*/
|
|
69
|
-
report(reason: AdsDisplayPermission): void;
|
|
33
|
+
report(reason: AdsDisplayPermission, count?: number): void;
|
|
70
34
|
}
|
|
71
|
-
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DeviceInfo, HostInfo, HostUserInfo, SdkInfo } from './types';
|
|
2
2
|
import { Env } from '@jolibox/types';
|
|
3
|
+
import { QueryParams } from './url-parse';
|
|
3
4
|
type MPType = 'game' | 'miniApp';
|
|
4
5
|
export declare const context: {
|
|
5
6
|
readonly testMode: boolean;
|
|
@@ -17,6 +18,10 @@ export declare const context: {
|
|
|
17
18
|
readonly sessionId: string;
|
|
18
19
|
readonly channel: string | undefined;
|
|
19
20
|
readonly webviewId: number;
|
|
21
|
+
readonly shouldInterupt: boolean | undefined;
|
|
22
|
+
readonly from: number | undefined;
|
|
23
|
+
readonly baseApiHost: string;
|
|
20
24
|
onEnvConfigChanged: (newConfig: Partial<Env>) => void;
|
|
25
|
+
encodeJoliSourceQuery: (newPayloadJson: QueryParams["payloadJson"]) => string;
|
|
21
26
|
};
|
|
22
27
|
export {};
|
|
@@ -10,15 +10,22 @@ interface PayloadJson {
|
|
|
10
10
|
joliboxEnv?: 'staging' | 'production';
|
|
11
11
|
sessionId?: string;
|
|
12
12
|
__mpType?: 'game' | 'miniApp';
|
|
13
|
+
__orientation?: 'HORIZONTAL' | 'VERTICAL';
|
|
14
|
+
__transparent?: boolean;
|
|
15
|
+
__entryPath?: string;
|
|
16
|
+
__showStatusBar?: boolean;
|
|
17
|
+
__shouldInterupt?: boolean;
|
|
18
|
+
__from?: number;
|
|
13
19
|
}
|
|
14
20
|
interface Signature {
|
|
15
21
|
headerSig?: string;
|
|
16
22
|
payloadSig?: string;
|
|
17
23
|
}
|
|
18
|
-
interface QueryParams {
|
|
24
|
+
export interface QueryParams {
|
|
19
25
|
headerJson: HeaderJson;
|
|
20
26
|
payloadJson: PayloadJson;
|
|
21
27
|
signature: Signature;
|
|
22
28
|
}
|
|
23
29
|
export declare const parseUrlQuery: (url: string) => QueryParams;
|
|
30
|
+
export declare const encodeJoliSourceQuery: (payloadJson: PayloadJson, originJoliSource: string) => string;
|
|
24
31
|
export {};
|