@jolibox/implement 1.2.4 → 1.2.5
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 -18
- package/dist/common/cache/__tests__/request-cache-service.test.d.ts +1 -0
- package/dist/common/cache/request-cache-service.d.ts +111 -0
- package/dist/common/report/base-tracker.d.ts +2 -1
- package/dist/common/rewards/cached-fetch-reward.d.ts +46 -0
- package/dist/common/rewards/cached-reward-service.d.ts +24 -0
- package/dist/common/rewards/fetch-reward.d.ts +2 -3
- package/dist/common/rewards/index.d.ts +2 -0
- package/dist/common/rewards/registers/utils/coins/jolicoin/cached-fetch-balance.d.ts +34 -0
- package/dist/common/rewards/registers/utils/coins/jolicoin/fetch-balance.d.ts +2 -1
- package/dist/common/rewards/registers/utils/coins/joligem/cached-fetch-gem-balance.d.ts +34 -0
- package/dist/common/rewards/registers/utils/coins/joligem/fetch-gem-balance.d.ts +2 -1
- package/dist/index.js +9 -9
- package/dist/index.native.js +33 -33
- package/dist/native/payment/payment-service.d.ts +36 -30
- package/implement.build.log +2 -2
- package/package.json +5 -5
- package/src/common/cache/__tests__/request-cache-service.test.ts +686 -0
- package/src/common/cache/request-cache-service.ts +393 -0
- package/src/common/report/base-tracker.ts +2 -2
- package/src/common/rewards/cached-fetch-reward.ts +241 -0
- package/src/common/rewards/cached-reward-service.ts +255 -0
- package/src/common/rewards/fetch-reward.ts +17 -93
- package/src/common/rewards/index.ts +3 -0
- package/src/common/rewards/registers/utils/coins/commands/use-payment.ts +8 -0
- package/src/common/rewards/registers/utils/coins/jolicoin/cached-fetch-balance.ts +177 -0
- package/src/common/rewards/registers/utils/coins/jolicoin/fetch-balance.ts +13 -1
- package/src/common/rewards/registers/utils/coins/jolicoin/jolicoin-handler.ts +2 -0
- package/src/common/rewards/registers/utils/coins/joligem/cached-fetch-gem-balance.ts +181 -0
- package/src/common/rewards/registers/utils/coins/joligem/fetch-gem-balance.ts +13 -1
- package/src/common/rewards/registers/utils/coins/joligem/gem-handler.ts +2 -0
- package/src/h5/api/ads.ts +5 -0
- package/src/h5/api/storage.ts +2 -2
- package/src/h5/http/index.ts +2 -2
- package/src/h5/report/event-tracker.ts +2 -2
- package/src/native/api/ads.ts +7 -1
- package/src/native/api/payment.ts +4 -4
- package/src/native/payment/__tests__/payment-service-simple.test.ts +97 -31
- package/src/native/payment/payment-service.ts +224 -210
- package/src/native/rewards/ui/payment-modal.ts +14 -7
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"packages/implement/.eslintrc.js": "7a3d2747dc887655ca9e2d3ff621f7dfd98500b9",
|
|
5
5
|
"packages/implement/README.md": "5660cd88848b7a5428394cc34d881a35dd402188",
|
|
6
6
|
"packages/implement/esbuild.config.js": "876db4e384d8543b66a0b61d8f7b277a36dfb4e0",
|
|
7
|
-
"packages/implement/package.json": "
|
|
7
|
+
"packages/implement/package.json": "9a706b05cadecf24f182b2cddc7d1bcb57c092a4",
|
|
8
8
|
"packages/implement/src/common/ads/ads-action-detection.ts": "5a7b9f85d7eab9e744f8a9fc7638063f43baa214",
|
|
9
9
|
"packages/implement/src/common/ads/anti-cheating.test.ts": "e2ff3dc6760cfd28d0f8c15703d7fb20d43df583",
|
|
10
10
|
"packages/implement/src/common/ads/anti-cheating.ts": "a3ffb6a78e289e1c0ce45c7f7c0cee000e75e541",
|
|
@@ -30,6 +30,8 @@
|
|
|
30
30
|
"packages/implement/src/common/api-factory/validator/__tests__/validate/utils.test.ts": "a0304e6984e1d9ec2a61d5a9db5c896f06970b48",
|
|
31
31
|
"packages/implement/src/common/api-factory/validator/index.ts": "204e86b97c854647d177805e3180d4cfd542b0f8",
|
|
32
32
|
"packages/implement/src/common/api-factory/validator/validate.ts": "5fee8175a9a05a69fe709c7e7899e5372d81efb1",
|
|
33
|
+
"packages/implement/src/common/cache/__tests__/request-cache-service.test.ts": "fac49a211e18e07932fbe279fda36017ad5fe3aa",
|
|
34
|
+
"packages/implement/src/common/cache/request-cache-service.ts": "ba7616f870e970847f5367f4efe31b658c001d96",
|
|
33
35
|
"packages/implement/src/common/can-i-use.ts": "9a28562870d92b82ce42ec656c8e9d868dd87528",
|
|
34
36
|
"packages/implement/src/common/context/index.ts": "7c6b61d1ac581cdb945314fb48090d4f01209b13",
|
|
35
37
|
"packages/implement/src/common/context/types.ts": "244ff65de52dcbce2457ffee427f5fa102987825",
|
|
@@ -37,7 +39,7 @@
|
|
|
37
39
|
"packages/implement/src/common/http/index.ts": "5087185d80e1e239262f849b3015eb9b810e2945",
|
|
38
40
|
"packages/implement/src/common/http/uuid.ts": "72e0bcc38976f6d25a55128843c6e3b0dbfd978e",
|
|
39
41
|
"packages/implement/src/common/http/xua.ts": "2ef571b8467fe5e8ecb470c26cb6da99b24be9a8",
|
|
40
|
-
"packages/implement/src/common/report/base-tracker.ts": "
|
|
42
|
+
"packages/implement/src/common/report/base-tracker.ts": "7e39031901ed133e1bedf1073d6e64e161a07c94",
|
|
41
43
|
"packages/implement/src/common/report/create-trace.ts": "38f54dbbf2e3aa55553395dbe2bb93dbdb9e07df",
|
|
42
44
|
"packages/implement/src/common/report/errors/index.ts": "346132103c1f6b2a7c1324bea0c78896b5c6fca8",
|
|
43
45
|
"packages/implement/src/common/report/errors/report/index.ts": "bee6f5f324ebddcc423c3549916a0eee04e880cf",
|
|
@@ -47,8 +49,10 @@
|
|
|
47
49
|
"packages/implement/src/common/report/track.ts": "4072dee69ace09d8099e1131507b35f0cb6bd92e",
|
|
48
50
|
"packages/implement/src/common/report/types.ts": "9c25c62b85b9ac5dbde674601924703f7df33773",
|
|
49
51
|
"packages/implement/src/common/rewards/__tests__/can-use-jolicoin.test.ts": "aac9c78779f1d8de33918cff9961326a5054ef3d",
|
|
50
|
-
"packages/implement/src/common/rewards/fetch-reward.ts": "
|
|
51
|
-
"packages/implement/src/common/rewards/
|
|
52
|
+
"packages/implement/src/common/rewards/cached-fetch-reward.ts": "47872a627d818a7a0678589b584d1149862cadaa",
|
|
53
|
+
"packages/implement/src/common/rewards/cached-reward-service.ts": "172026c54e4f2084682151d78dc967ce8525c0eb",
|
|
54
|
+
"packages/implement/src/common/rewards/fetch-reward.ts": "23f40af40ca4c3a594f7bc3ef6ea96a593648e35",
|
|
55
|
+
"packages/implement/src/common/rewards/index.ts": "91ccbe57668af9f964337202a8453aefab8734a4",
|
|
52
56
|
"packages/implement/src/common/rewards/registers/use-ads.ts": "77c887f0e2065a8f3eec31cb5b62e1752d07298b",
|
|
53
57
|
"packages/implement/src/common/rewards/registers/use-gem-only.ts": "944f012b2d7e6a786b0c1b8eb139db6b09fc309f",
|
|
54
58
|
"packages/implement/src/common/rewards/registers/use-gem.ts": "4ec6e2e3888763b1e1ab63b6694eed95460f0684",
|
|
@@ -57,14 +61,16 @@
|
|
|
57
61
|
"packages/implement/src/common/rewards/registers/utils/coins/commands/currency-handlers.ts": "77219e8ce3b7cfe8c26880f6c619d41e2cccf8cb",
|
|
58
62
|
"packages/implement/src/common/rewards/registers/utils/coins/commands/index.ts": "1d5700642bf3bddb8eb598b6018cfd55bd7b3308",
|
|
59
63
|
"packages/implement/src/common/rewards/registers/utils/coins/commands/use-jolicoin.ts": "1d4eca1b189d67db138b0ac93144c9d8b33f22bb",
|
|
60
|
-
"packages/implement/src/common/rewards/registers/utils/coins/commands/use-payment.ts": "
|
|
64
|
+
"packages/implement/src/common/rewards/registers/utils/coins/commands/use-payment.ts": "0be30357165807e77b4b48abddf8b068dca66c93",
|
|
61
65
|
"packages/implement/src/common/rewards/registers/utils/coins/commands/use-unlogin.ts": "359ec6f2bfbf865ad1b03f3f7515e14fa438da8f",
|
|
62
66
|
"packages/implement/src/common/rewards/registers/utils/coins/currency-config.ts": "e8c1c5c9280fcc24df95d1aad60d0ae795042198",
|
|
63
67
|
"packages/implement/src/common/rewards/registers/utils/coins/index.ts": "454c807a24a64a0a7c2c8ce0f11539d3e08c9ebe",
|
|
64
|
-
"packages/implement/src/common/rewards/registers/utils/coins/jolicoin/fetch-balance.ts": "
|
|
65
|
-
"packages/implement/src/common/rewards/registers/utils/coins/jolicoin/
|
|
66
|
-
"packages/implement/src/common/rewards/registers/utils/coins/
|
|
67
|
-
"packages/implement/src/common/rewards/registers/utils/coins/joligem/gem-
|
|
68
|
+
"packages/implement/src/common/rewards/registers/utils/coins/jolicoin/cached-fetch-balance.ts": "a2ae4c8be3764c60b2bad7d8f6f06c2e66741c0a",
|
|
69
|
+
"packages/implement/src/common/rewards/registers/utils/coins/jolicoin/fetch-balance.ts": "cb54beec6a430d42ff81410198adf892f7e11182",
|
|
70
|
+
"packages/implement/src/common/rewards/registers/utils/coins/jolicoin/jolicoin-handler.ts": "b52f2e2caef6d86512a41a5004a88dff1ce45496",
|
|
71
|
+
"packages/implement/src/common/rewards/registers/utils/coins/joligem/cached-fetch-gem-balance.ts": "4c473df9c8bee0ea688c5eb5a2d82cdd450c30a7",
|
|
72
|
+
"packages/implement/src/common/rewards/registers/utils/coins/joligem/fetch-gem-balance.ts": "78efdd85ea2b0141f2ff7614ef563a62e56efbfa",
|
|
73
|
+
"packages/implement/src/common/rewards/registers/utils/coins/joligem/gem-handler.ts": "fb056fe4155506c25a1ce335086b2e6d75d0a6fa",
|
|
68
74
|
"packages/implement/src/common/rewards/registers/utils/coins/rewards-command.ts": "b7a5309a43869f5024022158e3c95b505ecb55df",
|
|
69
75
|
"packages/implement/src/common/rewards/registers/utils/common.ts": "45f813bf8f1655d0533bc04e5d947f7e8b2262ec",
|
|
70
76
|
"packages/implement/src/common/rewards/registers/utils/event-listener.ts": "cd6a393d4771833cc37e38d9fb8af1900c8b0487",
|
|
@@ -73,7 +79,7 @@
|
|
|
73
79
|
"packages/implement/src/common/rewards/reward-helper.ts": "b4813747f0da4fbd05fb23758c504ae1bc6c0e87",
|
|
74
80
|
"packages/implement/src/common/rewards/type.ts": "80b082ce5193447ccf6c85151cb849f488f68cf9",
|
|
75
81
|
"packages/implement/src/common/utils/index.ts": "54bfc80c8c20bc71504f997e445d3e8019bb762d",
|
|
76
|
-
"packages/implement/src/h5/api/ads.ts": "
|
|
82
|
+
"packages/implement/src/h5/api/ads.ts": "ce7a7cd9201c27adbfb96e278be19ed3c9f35588",
|
|
77
83
|
"packages/implement/src/h5/api/base.ts": "ead2c3cdcbe174b0e725c31a3885c7985bd8f667",
|
|
78
84
|
"packages/implement/src/h5/api/get-system-info.ts": "158d66156c720446457318b7eaa9112452114dbb",
|
|
79
85
|
"packages/implement/src/h5/api/index.ts": "59b4a8a83134e52de589f77bf3a6591cbf3a0e11",
|
|
@@ -84,22 +90,22 @@
|
|
|
84
90
|
"packages/implement/src/h5/api/platformAdsHandle/HuaweiQuickAdsHandler.ts": "fc2b9b91a4f18ccfb70539fba5b993c1e7d941cd",
|
|
85
91
|
"packages/implement/src/h5/api/platformAdsHandle/JoliboxAdsHandler.ts": "c386afe11f21d1b67b42793514632b29afc6d2ca",
|
|
86
92
|
"packages/implement/src/h5/api/runtime.ts": "25e72f2af156fe2abaf0f25e34681511995ab22a",
|
|
87
|
-
"packages/implement/src/h5/api/storage.ts": "
|
|
93
|
+
"packages/implement/src/h5/api/storage.ts": "d16fe40e39f1e04f5f527c0878edba6d618b5a05",
|
|
88
94
|
"packages/implement/src/h5/api/task.ts": "c501814d9dc01a564b716fdcefa4a86427717a08",
|
|
89
95
|
"packages/implement/src/h5/bootstrap/index.ts": "437392387e685d50134f4530db01ced21a92a396",
|
|
90
|
-
"packages/implement/src/h5/http/index.ts": "
|
|
96
|
+
"packages/implement/src/h5/http/index.ts": "1e3118ffc31a5e93d673c703d637b082f2420c15",
|
|
91
97
|
"packages/implement/src/h5/http/utils/__tests__/xua.test.ts": "4345cfd10cae6f94cef673f04a5155b70123c048",
|
|
92
98
|
"packages/implement/src/h5/http/utils/index.ts": "05f4d94be09b9bfdcbb1365b31a5559e44a74991",
|
|
93
99
|
"packages/implement/src/h5/http/utils/session.ts": "4762a6a56762484f91ca5f2a456ab2cff3107659",
|
|
94
100
|
"packages/implement/src/h5/report/errors/index.ts": "22ef4184d6a6d272a5fefc1453a4a6d78ae8f2ff",
|
|
95
|
-
"packages/implement/src/h5/report/event-tracker.ts": "
|
|
101
|
+
"packages/implement/src/h5/report/event-tracker.ts": "146ff1f9e154e40f3b26679955a9b8dfe01d5462",
|
|
96
102
|
"packages/implement/src/h5/report/index.ts": "7154000726a72f477183d069eea5de87d12ceb7d",
|
|
97
103
|
"packages/implement/src/h5/report/task-tracker.ts": "07ffd3b6316221652528c7172869068cf4df0a15",
|
|
98
104
|
"packages/implement/src/h5/rewards/index.ts": "b4e917c76972b6b79e24bd68180317185d971caa",
|
|
99
105
|
"packages/implement/src/index.native.ts": "96cc46c8919ba2333600e9c3ee100f47c511a79a",
|
|
100
106
|
"packages/implement/src/index.ts": "d0ca7b5312b0a258ae8887e725440c70190442f7",
|
|
101
107
|
"packages/implement/src/native/api/__tests__/convertVersionCodeToVString.test.ts": "5f948265725f8ca48851de4bd41b24a10d754982",
|
|
102
|
-
"packages/implement/src/native/api/ads.ts": "
|
|
108
|
+
"packages/implement/src/native/api/ads.ts": "1aff329e7233e35241d8ee6a023d3ef0a8e369af",
|
|
103
109
|
"packages/implement/src/native/api/base.ts": "0ebf7c92ef5154ca1d321172e4f94a65e2d91b41",
|
|
104
110
|
"packages/implement/src/native/api/call-host-method.ts": "4e922aade867f88970a78bc8ad60664ef4ef504e",
|
|
105
111
|
"packages/implement/src/native/api/get-system-info.ts": "33aa88b7f4d6c4204bc7e81ee9cce05296587691",
|
|
@@ -109,7 +115,7 @@
|
|
|
109
115
|
"packages/implement/src/native/api/lifecycle.ts": "af0f376f1283ed0e80062d1568225a334c7d22f9",
|
|
110
116
|
"packages/implement/src/native/api/login.ts": "4e6a40ad7ed1e4dc5d328cafb449aff7a4f4469b",
|
|
111
117
|
"packages/implement/src/native/api/navigate.ts": "278f1bc5d48b72a72c38762e47bac528e5138fec",
|
|
112
|
-
"packages/implement/src/native/api/payment.ts": "
|
|
118
|
+
"packages/implement/src/native/api/payment.ts": "fc9b24e160ee73dc85465f1f88ce2ae5223f6cad",
|
|
113
119
|
"packages/implement/src/native/api/request.ts": "c02ca1163d13a17bc5e74e27a21f7fd204ec34d1",
|
|
114
120
|
"packages/implement/src/native/api/runtime.ts": "3c66cc58685e3ed3b25554aca8979c1650ac9241",
|
|
115
121
|
"packages/implement/src/native/api/storage.ts": "d395e86a04060a1e734f12c1b9c2e7b56eba392b",
|
|
@@ -122,10 +128,10 @@
|
|
|
122
128
|
"packages/implement/src/native/network/report.ts": "705e9614faeb0611c9c57ced998885bdc3a02d11",
|
|
123
129
|
"packages/implement/src/native/network/types.ts": "4e8eb72bf0b0b26a5298ce42d96855d27769be51",
|
|
124
130
|
"packages/implement/src/native/network/utils.ts": "53877a6871dc3a6b173daef930872c44589659b9",
|
|
125
|
-
"packages/implement/src/native/payment/__tests__/payment-service-simple.test.ts": "
|
|
131
|
+
"packages/implement/src/native/payment/__tests__/payment-service-simple.test.ts": "65779c1a2032979aca0c90db012af52182f47d67",
|
|
126
132
|
"packages/implement/src/native/payment/index.ts": "6ead1fc6e7261ba851f926afb315f6988639e74a",
|
|
127
133
|
"packages/implement/src/native/payment/payment-helper.ts": "8ba410780450897fc9ee8f93cb38c67ae3dd7291",
|
|
128
|
-
"packages/implement/src/native/payment/payment-service.ts": "
|
|
134
|
+
"packages/implement/src/native/payment/payment-service.ts": "bbc20557f8714b346bd4dee087feb8fdab6f88cd",
|
|
129
135
|
"packages/implement/src/native/payment/registers/base.ts": "63973fe618cfaa5bc0baa88c7f1d271638c65c1a",
|
|
130
136
|
"packages/implement/src/native/payment/registers/const.ts": "cba0087bccbd01349acc46f69adaeed80f4d16a0",
|
|
131
137
|
"packages/implement/src/native/payment/registers/joli-coin.ts": "caa3bd121e2159091dbe7cc3f58c2fba67d337a4",
|
|
@@ -136,7 +142,7 @@
|
|
|
136
142
|
"packages/implement/src/native/report/task-tracker.ts": "f119c115ec3310b5eea53414587b263b18594bf6",
|
|
137
143
|
"packages/implement/src/native/rewards/check-frequency.ts": "9216ec863acd9ae1a2ae7a8c144721fb262fda37",
|
|
138
144
|
"packages/implement/src/native/rewards/index.ts": "543b4631fb8952aaf19e10863463a0e3a4f0b34e",
|
|
139
|
-
"packages/implement/src/native/rewards/ui/payment-modal.ts": "
|
|
145
|
+
"packages/implement/src/native/rewards/ui/payment-modal.ts": "25322b421087db3b5b77450fed64543cbfb79240",
|
|
140
146
|
"packages/implement/src/native/rewards/ui/unlogin-modal.ts": "da6f18bd2cc575592e216fed584d09f6765f1e96",
|
|
141
147
|
"packages/implement/src/native/rewards/ui/use-modal.ts": "7ec80b389daac9660c20c46979e875fc00ebd0ac",
|
|
142
148
|
"packages/implement/src/native/rewards/ui/utils.ts": "4ac58033bd35757b9519c1490abb70c4e6af66af",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 通用请求缓存服务基类
|
|
3
|
+
* 支持部分数据缓存,部分数据实时获取的混合模式
|
|
4
|
+
*/
|
|
5
|
+
export interface CacheConfig<TCacheData, TServerData> {
|
|
6
|
+
/** 缓存持续时间,默认10分钟 */
|
|
7
|
+
duration?: number;
|
|
8
|
+
/** 请求超时时间,默认3秒 */
|
|
9
|
+
timeout?: number;
|
|
10
|
+
/** 缓存键生成函数 */
|
|
11
|
+
keyGenerator?: <TRequest>(endpoint: string, params?: TRequest) => string;
|
|
12
|
+
/** 数据一致性校验函数 */
|
|
13
|
+
consistencyChecker?: (cached: TCacheData, serverData: TServerData) => boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface CacheEntry<T> {
|
|
16
|
+
data: T;
|
|
17
|
+
timestamp: number;
|
|
18
|
+
expiresAt: number;
|
|
19
|
+
key: string;
|
|
20
|
+
sequence: number;
|
|
21
|
+
metadata?: Record<string, unknown>;
|
|
22
|
+
}
|
|
23
|
+
export interface CacheStats {
|
|
24
|
+
cacheCount: number;
|
|
25
|
+
validCount: number;
|
|
26
|
+
expiredCount: number;
|
|
27
|
+
}
|
|
28
|
+
export interface RequestAdapter<TRequest, TResponse, TCacheData, TRealTimeData> {
|
|
29
|
+
/** 执行实际的网络请求 */
|
|
30
|
+
execute(endpoint: string, options?: TRequest): Promise<TResponse>;
|
|
31
|
+
/** 从响应中提取需要缓存的部分(不变数据) */
|
|
32
|
+
extractCacheableData?(response: TResponse): TCacheData;
|
|
33
|
+
/** 从响应中提取实时数据部分(变化数据) */
|
|
34
|
+
extractRealTimeData?(response: TResponse): TRealTimeData;
|
|
35
|
+
/** 合并缓存数据和实时数据 */
|
|
36
|
+
mergeData?(cached: TCacheData, realTime: TRealTimeData): TResponse;
|
|
37
|
+
/** 处理纯缓存场景的数据,当没有新的网络请求时 */
|
|
38
|
+
processCachedData?(cached: TCacheData): TResponse;
|
|
39
|
+
}
|
|
40
|
+
export declare abstract class RequestCacheService<TRequest, TResponse, TCacheData, TRealTimeData> {
|
|
41
|
+
protected requestAdapter: RequestAdapter<TRequest, TResponse, TCacheData, TRealTimeData>;
|
|
42
|
+
private cache;
|
|
43
|
+
private readonly config;
|
|
44
|
+
private pendingRequests;
|
|
45
|
+
private requestSequence;
|
|
46
|
+
private cacheSequences;
|
|
47
|
+
constructor(requestAdapter: RequestAdapter<TRequest, TResponse, TCacheData, TRealTimeData>, config?: Partial<CacheConfig<TCacheData, TCacheData>>);
|
|
48
|
+
/**
|
|
49
|
+
* 带缓存的请求方法 - 缓存优先 + 实时数据混合模式 + 请求去重
|
|
50
|
+
*/
|
|
51
|
+
request(endpoint: string, options?: TRequest): Promise<TResponse>;
|
|
52
|
+
private requestInternal;
|
|
53
|
+
/**
|
|
54
|
+
* timeout
|
|
55
|
+
*/
|
|
56
|
+
private createTimeoutPromise;
|
|
57
|
+
/**
|
|
58
|
+
* get valid cached data
|
|
59
|
+
*/
|
|
60
|
+
private getValidCachedData;
|
|
61
|
+
/**
|
|
62
|
+
* 设置缓存数据 (带序列号检查)
|
|
63
|
+
*/
|
|
64
|
+
private setCachedDataWithSequence;
|
|
65
|
+
/**
|
|
66
|
+
* refresh cache
|
|
67
|
+
*/
|
|
68
|
+
refreshCache(endpoint: string, options?: TRequest): Promise<TResponse>;
|
|
69
|
+
/**
|
|
70
|
+
* force request and update cache
|
|
71
|
+
*/
|
|
72
|
+
forceRequest(endpoint: string, options?: TRequest): Promise<TResponse>;
|
|
73
|
+
/**
|
|
74
|
+
* warmup cache - 避免与正在进行的请求冲突
|
|
75
|
+
*/
|
|
76
|
+
warmupCache(endpoint: string, options?: TRequest): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* clear cache with target key
|
|
79
|
+
*/
|
|
80
|
+
clearCache(key?: string): void;
|
|
81
|
+
/**
|
|
82
|
+
* clear expired cache
|
|
83
|
+
*/
|
|
84
|
+
clearExpiredCache(): void;
|
|
85
|
+
/**
|
|
86
|
+
* get cache stats
|
|
87
|
+
*/
|
|
88
|
+
getCacheStats(): CacheStats & {
|
|
89
|
+
pendingRequestCount: number;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* get all cache keys
|
|
93
|
+
*/
|
|
94
|
+
getCacheKeys(): string[];
|
|
95
|
+
/**
|
|
96
|
+
* check if the target key has valid cache
|
|
97
|
+
*/
|
|
98
|
+
hasValidCache(key: string): boolean;
|
|
99
|
+
/**
|
|
100
|
+
* get pending request keys for debugging
|
|
101
|
+
*/
|
|
102
|
+
getPendingRequestKeys(): string[];
|
|
103
|
+
/**
|
|
104
|
+
* check if a request is currently pending
|
|
105
|
+
*/
|
|
106
|
+
hasPendingRequest(key: string): boolean;
|
|
107
|
+
/**
|
|
108
|
+
* get cache sequence for a specific key
|
|
109
|
+
*/
|
|
110
|
+
getCacheSequence(key: string): number | undefined;
|
|
111
|
+
}
|
|
@@ -5,12 +5,13 @@ import { IDevice, IPage, IEvent, EProject } from '@jolibox/common';
|
|
|
5
5
|
* @abstract
|
|
6
6
|
*/
|
|
7
7
|
export declare abstract class EventTracker {
|
|
8
|
+
readonly apiHost: string;
|
|
8
9
|
deviceInfo: IDevice | null;
|
|
9
10
|
abstract doReport(event: unknown[]): void;
|
|
10
11
|
abstract doReport<T extends Record<string, unknown>>(event: unknown[], extra: T): void;
|
|
11
12
|
abstract doReport<T extends Record<string, unknown>>(event: unknown[], extra?: T): void;
|
|
12
13
|
private samplesConfig;
|
|
13
|
-
constructor();
|
|
14
|
+
constructor(apiHost: string);
|
|
14
15
|
private fetchSamplesConfig;
|
|
15
16
|
private checkIsSampled;
|
|
16
17
|
getDevice(): IDevice;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { IHttpClient } from '../http';
|
|
2
|
+
import { RewardsHelper } from './reward-helper';
|
|
3
|
+
import { CachedRewardService } from './cached-reward-service';
|
|
4
|
+
/**
|
|
5
|
+
* 使用缓存的奖励获取器
|
|
6
|
+
* 优化版本:unlockOptions 使用缓存,余额信息实时获取
|
|
7
|
+
*/
|
|
8
|
+
export declare const createCachedRewardFetcher: (rewardsHelper: RewardsHelper) => void;
|
|
9
|
+
/**
|
|
10
|
+
* 使用缓存的频率配置获取器
|
|
11
|
+
* 优化版本:全局配置使用纯缓存
|
|
12
|
+
*/
|
|
13
|
+
export declare const createCachedRewardFrequencyConfigFetcher: (rewardsHelper: RewardsHelper) => void;
|
|
14
|
+
/**
|
|
15
|
+
* 获取缓存服务实例(用于手动管理缓存)
|
|
16
|
+
*/
|
|
17
|
+
export declare const getRewardCacheService: (httpClient: IHttpClient) => CachedRewardService;
|
|
18
|
+
/**
|
|
19
|
+
* 强制刷新奖励数据缓存
|
|
20
|
+
*/
|
|
21
|
+
export declare const refreshRewardCache: (httpClient: IHttpClient) => Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* 强制刷新全局配置缓存
|
|
24
|
+
*/
|
|
25
|
+
export declare const refreshGlobalConfigCache: (httpClient: IHttpClient) => Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* 预热所有缓存
|
|
28
|
+
*/
|
|
29
|
+
export declare const warmupRewardCache: (httpClient: IHttpClient) => Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* 清除所有奖励相关缓存
|
|
32
|
+
*/
|
|
33
|
+
export declare const clearRewardCache: (httpClient: IHttpClient) => void;
|
|
34
|
+
/**
|
|
35
|
+
* 获取缓存统计信息
|
|
36
|
+
*/
|
|
37
|
+
export declare const getRewardCacheStats: (httpClient: IHttpClient) => {
|
|
38
|
+
unlockOptions: import("../cache/request-cache-service").CacheStats & {
|
|
39
|
+
pendingRequestCount: number;
|
|
40
|
+
};
|
|
41
|
+
globalConfig: import("../cache/request-cache-service").CacheStats & {
|
|
42
|
+
pendingRequestCount: number;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
export declare const createRewardFetcher: (rewardsHelper: RewardsHelper) => void;
|
|
46
|
+
export declare const createRewardFrequencyConfigFetcher: (rewardsHelper: RewardsHelper) => void;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { IHttpClient } from '../http';
|
|
2
|
+
import { StandardResponse, GlobalConfig } from '@jolibox/types';
|
|
3
|
+
import { IJolicoinRewardOption } from './type';
|
|
4
|
+
import { IUseModalFrequencyConfig } from './reward-emitter';
|
|
5
|
+
export declare class CachedRewardService {
|
|
6
|
+
private unlockOptionsService;
|
|
7
|
+
private globalConfigService;
|
|
8
|
+
constructor(httpClient: IHttpClient);
|
|
9
|
+
getUnlockOptions(body?: Record<string, unknown>): Promise<IJolicoinRewardOption>;
|
|
10
|
+
getGlobalConfig(): Promise<StandardResponse<GlobalConfig & IUseModalFrequencyConfig>>;
|
|
11
|
+
refreshUnlockOptions(body?: Record<string, unknown>): Promise<IJolicoinRewardOption>;
|
|
12
|
+
refreshGlobalConfig(): Promise<StandardResponse<GlobalConfig & IUseModalFrequencyConfig>>;
|
|
13
|
+
warmupCache(): Promise<void>;
|
|
14
|
+
clearAllCache(): void;
|
|
15
|
+
getCacheStats(): {
|
|
16
|
+
unlockOptions: import("../cache/request-cache-service").CacheStats & {
|
|
17
|
+
pendingRequestCount: number;
|
|
18
|
+
};
|
|
19
|
+
globalConfig: import("../cache/request-cache-service").CacheStats & {
|
|
20
|
+
pendingRequestCount: number;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
clearExpiredCache(): void;
|
|
24
|
+
}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export declare const createRewardFrequencyConfigFetcher: (rewardsHelper: RewardsHelper) => void;
|
|
1
|
+
export { createCachedRewardFetcher as createRewardFetcher, createCachedRewardFrequencyConfigFetcher as createRewardFrequencyConfigFetcher, getRewardCacheService, refreshRewardCache, refreshGlobalConfigCache, warmupRewardCache, clearRewardCache, getRewardCacheStats } from './cached-fetch-reward';
|
|
2
|
+
export { createRewardFetcher as createRewardFetcherNonCached, createRewardFrequencyConfigFetcher as createRewardFrequencyConfigFetcherNonCached } from './cached-fetch-reward';
|
|
@@ -11,3 +11,5 @@ export * from './registers/use-jolicoin';
|
|
|
11
11
|
export * from './registers/use-jolicoin-only';
|
|
12
12
|
export * from './registers/use-gem';
|
|
13
13
|
export * from './registers/use-gem-only';
|
|
14
|
+
export { warmupBalanceCache } from './registers/utils/coins/jolicoin/cached-fetch-balance';
|
|
15
|
+
export { warmupGemBalanceCache } from './registers/utils/coins/joligem/cached-fetch-gem-balance';
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { IHttpClient } from '@/common/http';
|
|
2
|
+
interface BalanceResponse {
|
|
3
|
+
balance: number;
|
|
4
|
+
}
|
|
5
|
+
export declare class CachedBalanceService {
|
|
6
|
+
private balanceService;
|
|
7
|
+
constructor(httpClient: IHttpClient);
|
|
8
|
+
getBalance(type?: string): Promise<BalanceResponse | undefined>;
|
|
9
|
+
refreshBalance(type?: string): Promise<BalanceResponse | undefined>;
|
|
10
|
+
warmupBalance(type?: string): Promise<void>;
|
|
11
|
+
clearBalanceCache(): void;
|
|
12
|
+
getBalanceCacheStats(): import("@/common/cache/request-cache-service").CacheStats & {
|
|
13
|
+
pendingRequestCount: number;
|
|
14
|
+
};
|
|
15
|
+
clearExpiredCache(): void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 缓存版本的 fetchBalance 函数
|
|
19
|
+
*/
|
|
20
|
+
export declare const fetchBalanceCached: (httpClient: IHttpClient, type?: string) => Promise<BalanceResponse | undefined>;
|
|
21
|
+
/**
|
|
22
|
+
* 强制刷新余额缓存
|
|
23
|
+
*/
|
|
24
|
+
export declare const refreshBalanceCache: (httpClient: IHttpClient, type?: string) => Promise<BalanceResponse | undefined>;
|
|
25
|
+
/**
|
|
26
|
+
* 预热余额缓存
|
|
27
|
+
*/
|
|
28
|
+
export declare const warmupBalanceCache: (httpClient: IHttpClient, type?: string) => Promise<void>;
|
|
29
|
+
export declare const clearBalanceCache: (httpClient: IHttpClient) => void;
|
|
30
|
+
export declare const getBalanceCacheStats: (httpClient: IHttpClient) => import("@/common/cache/request-cache-service").CacheStats & {
|
|
31
|
+
pendingRequestCount: number;
|
|
32
|
+
};
|
|
33
|
+
export declare const getBalanceCacheService: (httpClient: IHttpClient) => CachedBalanceService;
|
|
34
|
+
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IHttpClient } from '@/common/http';
|
|
2
|
-
export
|
|
2
|
+
export { fetchBalanceCached as fetchBalance, refreshBalanceCache, warmupBalanceCache, clearBalanceCache, getBalanceCacheStats, getBalanceCacheService } from './cached-fetch-balance';
|
|
3
|
+
export declare const fetchBalanceNonCached: (httpClient: IHttpClient) => Promise<{
|
|
3
4
|
balance: number;
|
|
4
5
|
} | undefined>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { IHttpClient } from '@/common/http';
|
|
2
|
+
interface GemBalanceResponse {
|
|
3
|
+
balance: number;
|
|
4
|
+
}
|
|
5
|
+
export declare class CachedGemBalanceService {
|
|
6
|
+
private gemBalanceService;
|
|
7
|
+
constructor(httpClient: IHttpClient);
|
|
8
|
+
getGemBalance(type?: string): Promise<GemBalanceResponse | undefined>;
|
|
9
|
+
refreshGemBalance(type?: string): Promise<GemBalanceResponse | undefined>;
|
|
10
|
+
warmupGemBalance(type?: string): Promise<void>;
|
|
11
|
+
clearGemBalanceCache(): void;
|
|
12
|
+
getGemBalanceCacheStats(): import("@/common/cache/request-cache-service").CacheStats & {
|
|
13
|
+
pendingRequestCount: number;
|
|
14
|
+
};
|
|
15
|
+
clearExpiredCache(): void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 缓存版本的 fetchGemBalance 函数
|
|
19
|
+
*/
|
|
20
|
+
export declare const fetchGemBalanceCached: (httpClient: IHttpClient, type?: string) => Promise<GemBalanceResponse | undefined>;
|
|
21
|
+
/**
|
|
22
|
+
* 强制刷新宝石余额缓存
|
|
23
|
+
*/
|
|
24
|
+
export declare const refreshGemBalanceCache: (httpClient: IHttpClient, type?: string) => Promise<GemBalanceResponse | undefined>;
|
|
25
|
+
/**
|
|
26
|
+
* 预热宝石余额缓存
|
|
27
|
+
*/
|
|
28
|
+
export declare const warmupGemBalanceCache: (httpClient: IHttpClient, type?: string) => Promise<void>;
|
|
29
|
+
export declare const clearGemBalanceCache: (httpClient: IHttpClient) => void;
|
|
30
|
+
export declare const getGemBalanceCacheStats: (httpClient: IHttpClient) => import("@/common/cache/request-cache-service").CacheStats & {
|
|
31
|
+
pendingRequestCount: number;
|
|
32
|
+
};
|
|
33
|
+
export declare const getGemBalanceCacheService: (httpClient: IHttpClient) => CachedGemBalanceService;
|
|
34
|
+
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IHttpClient } from '@/common/http';
|
|
2
|
-
export
|
|
2
|
+
export { fetchGemBalanceCached as fetchGemBalance, refreshGemBalanceCache, warmupGemBalanceCache, clearGemBalanceCache, getGemBalanceCacheStats, getGemBalanceCacheService } from './cached-fetch-gem-balance';
|
|
3
|
+
export declare const fetchGemBalanceNonCached: (httpClient: IHttpClient) => Promise<{
|
|
3
4
|
balance: number;
|
|
4
5
|
} | undefined>;
|