@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.
Files changed (42) hide show
  1. package/.rush/temp/package-deps_build.json +24 -20
  2. package/.rush/temp/shrinkwrap-deps.json +1 -1
  3. package/dist/common/ads/anti-cheating.d.ts +16 -53
  4. package/dist/common/ads/anti-cheating.test.d.ts +1 -0
  5. package/dist/common/context/index.d.ts +5 -0
  6. package/dist/common/context/url-parse.d.ts +8 -1
  7. package/dist/index.js +3 -3
  8. package/dist/index.native.js +110 -4
  9. package/dist/native/api/index.d.ts +1 -0
  10. package/dist/native/api/navigate.d.ts +1 -0
  11. package/dist/native/bootstrap/bridge.d.ts +1 -1
  12. package/dist/native/js-bridge/const.d.ts +1 -0
  13. package/dist/native/js-bridge/publish.d.ts +1 -0
  14. package/dist/native/js-bridge/subscribe.d.ts +2 -0
  15. package/dist/native/js-bridge/types.d.ts +4 -0
  16. package/dist/native/js-core/jolibox-js-core.d.ts +8 -3
  17. package/dist/native/network/create-fetch.d.ts +1 -0
  18. package/dist/native/ui/retention.d.ts +1 -0
  19. package/implement.build.log +2 -2
  20. package/package.json +4 -3
  21. package/src/common/ads/anti-cheating.test.ts +79 -0
  22. package/src/common/ads/anti-cheating.ts +222 -156
  23. package/src/common/ads/index.ts +21 -7
  24. package/src/common/context/index.ts +22 -3
  25. package/src/common/context/url-parse.ts +24 -1
  26. package/src/native/api/index.ts +1 -0
  27. package/src/native/api/lifecycle.ts +16 -4
  28. package/src/native/api/navigate.ts +61 -0
  29. package/src/native/api/request.ts +19 -10
  30. package/src/native/bootstrap/bridge.ts +10 -1
  31. package/src/native/bootstrap/index.ts +100 -23
  32. package/src/native/js-bridge/const.ts +2 -0
  33. package/src/native/js-bridge/js-bridge.ts +7 -2
  34. package/src/native/js-bridge/publish.ts +44 -0
  35. package/src/native/js-bridge/subscribe.ts +25 -1
  36. package/src/native/js-bridge/types.ts +10 -0
  37. package/src/native/js-core/jolibox-js-core.ts +30 -26
  38. package/src/native/network/create-fetch.ts +1 -0
  39. package/src/native/network/utils.ts +13 -6
  40. package/src/native/types/global.d.ts +1 -0
  41. package/src/native/types/native-method-map.d.ts +29 -0
  42. 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": "4156012fb48a38c7a8ff8830f12630f81c57f7bb",
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": "6c32dcb2bb259e4fe0366681ecc3e0c3c05e050e",
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": "ef5223f92815b93cf5ad0637b12132ea1861d622",
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": "cd626a778a03dbd5f147eed02e7b10233d542315",
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": "c9c05fb395302a12b4306baa339f429e3e82c8e3",
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": "4e7010962db4e0b35c6fbe70e82efa54180d0de0",
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": "137dbcbeda2533a09d417d2b6c5d8dea992df9a6",
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": "1e4b012bdfdfc9eaddf41cb08885c0e4b0addbf3",
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/request.ts": "a749e8ac9bb0bada4bca3008ac0be976621dcaf4",
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": "3dfce00262f240342d7e29ae155ce8c1732a02cd",
78
- "packages/implement/src/native/bootstrap/index.ts": "8b04d68a88b653917bb8ee2d4b6b1d7412cb96f8",
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": "96156a123e89d20b51d59865e21f216ea5a30821",
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": "a4b3c18e243aedf7d4aabc3b3791911bffb7b6ff",
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": "757943dc68dcd8b87815126b2aa4b5fe291fea4f",
86
- "packages/implement/src/native/js-bridge/types.ts": "53d2bcc07e165faf36d969cb0c015822fd34bb7d",
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": "88908550c33392b1bf7f2909a218f9caedb7cab0",
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": "e677cf812494994762afc48ddb8a6eca70a1936d",
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": "cc94ff34d8cda8e8a2a4731185c1d57c7dd04b92",
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": "065076bbecdd9a0ffe7a71c19475356a6f816cee",
101
- "packages/implement/src/native/types/native-method-map.d.ts": "4f852c0331eaabb90849a652de3ea75905d98324",
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:W7XjBp7eadutjHQShLRROYpGOSwiTIW9kh58QX2qNao=:",
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
- bannedForTimeThreshold?: number;
6
+ banForTimeThreshold?: number;
7
7
  bannedReleaseTime?: number;
8
8
  initialThreshold?: number;
9
9
  maxAllowedAdsForSession?: number;
10
- bannedForSessionThreshold?: number;
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 maxAllowedAdsForTime;
17
- private bannedForTimeThreshold;
18
- private bannedReleaseTime;
19
- private isBanningForTime;
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
- * Restore call ads timestamps for time from local storage
31
- */
32
- private initCallAdsTimestampsForTime;
33
- /**
34
- * Get call ads timestamps for time
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 {};