@kevisual/api 0.0.55 → 0.0.56

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.
@@ -81,7 +81,8 @@ type CacheStore<T extends Cache = Cache> = {
81
81
  getValue(): Promise<CacheLogin>;
82
82
  setValue(value: CacheLogin): Promise<CacheLogin>;
83
83
  delValue(): Promise<void>;
84
- init(): Promise<any>;
84
+ init(): Promise<CacheLogin>;
85
+ getIsExpired(): Promise<boolean>;
85
86
  };
86
87
 
87
88
  type QueryLoginOpts<T extends Cache = Cache> = {
@@ -228,6 +229,7 @@ declare class QueryLogin<T extends Cache = Cache> extends BaseQuery {
228
229
  * @returns
229
230
  */
230
231
  checkLocalToken(): Promise<boolean>;
232
+ checkTokenValid(): Promise<boolean>;
231
233
  /**
232
234
  * 检查本地用户列表
233
235
  * @returns
@@ -337,6 +337,13 @@ class LoginCacheStore {
337
337
  }
338
338
  async delValue() {
339
339
  await this.cache.del();
340
+ this.cacheData = {
341
+ loginUsers: [],
342
+ user: undefined,
343
+ id: undefined,
344
+ accessToken: undefined,
345
+ refreshToken: undefined
346
+ };
340
347
  }
341
348
  getValue() {
342
349
  return this.cache.get(this.name);
@@ -344,10 +351,12 @@ class LoginCacheStore {
344
351
  async init() {
345
352
  const defaultData = {
346
353
  loginUsers: [],
347
- user: null,
348
- id: null,
349
- accessToken: null,
350
- refreshToken: null
354
+ user: undefined,
355
+ id: undefined,
356
+ accessToken: undefined,
357
+ refreshToken: undefined,
358
+ accessTokenExpiresIn: undefined,
359
+ createdAt: undefined
351
360
  };
352
361
  if (this.cache.init) {
353
362
  try {
@@ -359,6 +368,7 @@ class LoginCacheStore {
359
368
  } else {
360
369
  this.cacheData = await this.getValue() || defaultData;
361
370
  }
371
+ return this.cacheData;
362
372
  }
363
373
  async setLoginUser(user) {
364
374
  const has = this.cacheData.loginUsers.find((u) => u.id === user.id);
@@ -389,6 +399,18 @@ class LoginCacheStore {
389
399
  const cacheData = this.cacheData;
390
400
  return Promise.resolve(cacheData.accessToken || "");
391
401
  }
402
+ getIsExpired() {
403
+ const cacheData = this.cacheData;
404
+ if (!cacheData.accessToken) {
405
+ return Promise.resolve(true);
406
+ }
407
+ if (!cacheData.createdAt || !cacheData.accessTokenExpiresIn) {
408
+ return Promise.resolve(false);
409
+ }
410
+ const now = Date.now();
411
+ const expiresIn = cacheData.createdAt + cacheData.accessTokenExpiresIn * 1000;
412
+ return Promise.resolve(now >= expiresIn);
413
+ }
392
414
  async clearCurrentUser() {
393
415
  const user = await this.getCurrentUser();
394
416
  const has = this.cacheData.loginUsers.find((u) => u.id === user.id);
@@ -399,6 +421,8 @@ class LoginCacheStore {
399
421
  this.cacheData.id = undefined;
400
422
  this.cacheData.accessToken = undefined;
401
423
  this.cacheData.refreshToken = undefined;
424
+ this.cacheData.accessTokenExpiresIn = undefined;
425
+ this.cacheData.createdAt = undefined;
402
426
  await this.setValue(this.cacheData);
403
427
  }
404
428
  async clearAll() {
@@ -407,6 +431,8 @@ class LoginCacheStore {
407
431
  this.cacheData.id = undefined;
408
432
  this.cacheData.accessToken = undefined;
409
433
  this.cacheData.refreshToken = undefined;
434
+ this.cacheData.accessTokenExpiresIn = undefined;
435
+ this.cacheData.createdAt = undefined;
410
436
  await this.setValue(this.cacheData);
411
437
  }
412
438
  }
@@ -1063,6 +1089,9 @@ class QueryLogin extends BaseQuery {
1063
1089
  const token = this.storage.getItem("token");
1064
1090
  return !!token;
1065
1091
  }
1092
+ async checkTokenValid() {
1093
+ return this.cacheStore.getIsExpired();
1094
+ }
1066
1095
  async getToken() {
1067
1096
  const token = this.storage.getItem("token");
1068
1097
  return token || "";
@@ -81,7 +81,8 @@ type CacheStore<T extends Cache = Cache> = {
81
81
  getValue(): Promise<CacheLogin>;
82
82
  setValue(value: CacheLogin): Promise<CacheLogin>;
83
83
  delValue(): Promise<void>;
84
- init(): Promise<any>;
84
+ init(): Promise<CacheLogin>;
85
+ getIsExpired(): Promise<boolean>;
85
86
  };
86
87
 
87
88
  type QueryLoginOpts<T extends Cache = Cache> = {
@@ -228,6 +229,7 @@ declare class QueryLogin<T extends Cache = Cache> extends BaseQuery {
228
229
  * @returns
229
230
  */
230
231
  checkLocalToken(): Promise<boolean>;
232
+ checkTokenValid(): Promise<boolean>;
231
233
  /**
232
234
  * 检查本地用户列表
233
235
  * @returns
@@ -337,6 +337,13 @@ class LoginCacheStore {
337
337
  }
338
338
  async delValue() {
339
339
  await this.cache.del();
340
+ this.cacheData = {
341
+ loginUsers: [],
342
+ user: undefined,
343
+ id: undefined,
344
+ accessToken: undefined,
345
+ refreshToken: undefined
346
+ };
340
347
  }
341
348
  getValue() {
342
349
  return this.cache.get(this.name);
@@ -344,10 +351,12 @@ class LoginCacheStore {
344
351
  async init() {
345
352
  const defaultData = {
346
353
  loginUsers: [],
347
- user: null,
348
- id: null,
349
- accessToken: null,
350
- refreshToken: null
354
+ user: undefined,
355
+ id: undefined,
356
+ accessToken: undefined,
357
+ refreshToken: undefined,
358
+ accessTokenExpiresIn: undefined,
359
+ createdAt: undefined
351
360
  };
352
361
  if (this.cache.init) {
353
362
  try {
@@ -359,6 +368,7 @@ class LoginCacheStore {
359
368
  } else {
360
369
  this.cacheData = await this.getValue() || defaultData;
361
370
  }
371
+ return this.cacheData;
362
372
  }
363
373
  async setLoginUser(user) {
364
374
  const has = this.cacheData.loginUsers.find((u) => u.id === user.id);
@@ -389,6 +399,18 @@ class LoginCacheStore {
389
399
  const cacheData = this.cacheData;
390
400
  return Promise.resolve(cacheData.accessToken || "");
391
401
  }
402
+ getIsExpired() {
403
+ const cacheData = this.cacheData;
404
+ if (!cacheData.accessToken) {
405
+ return Promise.resolve(true);
406
+ }
407
+ if (!cacheData.createdAt || !cacheData.accessTokenExpiresIn) {
408
+ return Promise.resolve(false);
409
+ }
410
+ const now = Date.now();
411
+ const expiresIn = cacheData.createdAt + cacheData.accessTokenExpiresIn * 1000;
412
+ return Promise.resolve(now >= expiresIn);
413
+ }
392
414
  async clearCurrentUser() {
393
415
  const user = await this.getCurrentUser();
394
416
  const has = this.cacheData.loginUsers.find((u) => u.id === user.id);
@@ -399,6 +421,8 @@ class LoginCacheStore {
399
421
  this.cacheData.id = undefined;
400
422
  this.cacheData.accessToken = undefined;
401
423
  this.cacheData.refreshToken = undefined;
424
+ this.cacheData.accessTokenExpiresIn = undefined;
425
+ this.cacheData.createdAt = undefined;
402
426
  await this.setValue(this.cacheData);
403
427
  }
404
428
  async clearAll() {
@@ -407,6 +431,8 @@ class LoginCacheStore {
407
431
  this.cacheData.id = undefined;
408
432
  this.cacheData.accessToken = undefined;
409
433
  this.cacheData.refreshToken = undefined;
434
+ this.cacheData.accessTokenExpiresIn = undefined;
435
+ this.cacheData.createdAt = undefined;
410
436
  await this.setValue(this.cacheData);
411
437
  }
412
438
  }
@@ -1063,6 +1089,9 @@ class QueryLogin extends BaseQuery {
1063
1089
  const token = this.storage.getItem("token");
1064
1090
  return !!token;
1065
1091
  }
1092
+ async checkTokenValid() {
1093
+ return this.cacheStore.getIsExpired();
1094
+ }
1066
1095
  async getToken() {
1067
1096
  const token = this.storage.getItem("token");
1068
1097
  return token || "";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kevisual/api",
3
- "version": "0.0.55",
3
+ "version": "0.0.56",
4
4
  "description": "",
5
5
  "main": "mod.ts",
6
6
  "scripts": {
@@ -82,7 +82,8 @@ export type CacheStore<T extends Cache = Cache> = {
82
82
  getValue(): Promise<CacheLogin>;
83
83
  setValue(value: CacheLogin): Promise<CacheLogin>;
84
84
  delValue(): Promise<void>;
85
- init(): Promise<any>;
85
+ init(): Promise<CacheLogin>;
86
+ getIsExpired(): Promise<boolean>;
86
87
  };
87
88
 
88
89
  export type LoginCacheStoreOpts<T extends Cache = Cache> = {
@@ -124,6 +125,13 @@ export class LoginCacheStore<T extends Cache = Cache> implements CacheStore<T> {
124
125
  */
125
126
  async delValue() {
126
127
  await this.cache.del();
128
+ this.cacheData = {
129
+ loginUsers: [],
130
+ user: undefined,
131
+ id: undefined,
132
+ accessToken: undefined,
133
+ refreshToken: undefined,
134
+ };
127
135
  }
128
136
  getValue(): Promise<CacheLogin> {
129
137
  return this.cache.get(this.name);
@@ -132,12 +140,14 @@ export class LoginCacheStore<T extends Cache = Cache> implements CacheStore<T> {
132
140
  * 初始化,设置默认值
133
141
  */
134
142
  async init() {
135
- const defaultData = {
143
+ const defaultData: CacheLogin = {
136
144
  loginUsers: [],
137
- user: null,
138
- id: null,
139
- accessToken: null,
140
- refreshToken: null,
145
+ user: undefined,
146
+ id: undefined,
147
+ accessToken: undefined,
148
+ refreshToken: undefined,
149
+ accessTokenExpiresIn: undefined,
150
+ createdAt: undefined,
141
151
  };
142
152
  if (this.cache.init) {
143
153
  try {
@@ -149,6 +159,7 @@ export class LoginCacheStore<T extends Cache = Cache> implements CacheStore<T> {
149
159
  } else {
150
160
  this.cacheData = (await this.getValue()) || defaultData;
151
161
  }
162
+ return this.cacheData;
152
163
  }
153
164
  /**
154
165
  * 设置当前用户
@@ -184,6 +195,18 @@ export class LoginCacheStore<T extends Cache = Cache> implements CacheStore<T> {
184
195
  const cacheData = this.cacheData;
185
196
  return Promise.resolve(cacheData.accessToken || '');
186
197
  }
198
+ getIsExpired(): Promise<boolean> {
199
+ const cacheData = this.cacheData;
200
+ if (!cacheData.accessToken) {
201
+ return Promise.resolve(true);
202
+ }
203
+ if (!cacheData.createdAt || !cacheData.accessTokenExpiresIn) {
204
+ return Promise.resolve(false);
205
+ }
206
+ const now = Date.now();
207
+ const expiresIn = cacheData.createdAt + cacheData.accessTokenExpiresIn * 1000;
208
+ return Promise.resolve(now >= expiresIn);
209
+ }
187
210
 
188
211
  async clearCurrentUser() {
189
212
  const user = await this.getCurrentUser();
@@ -195,6 +218,8 @@ export class LoginCacheStore<T extends Cache = Cache> implements CacheStore<T> {
195
218
  this.cacheData.id = undefined;
196
219
  this.cacheData.accessToken = undefined;
197
220
  this.cacheData.refreshToken = undefined;
221
+ this.cacheData.accessTokenExpiresIn = undefined;
222
+ this.cacheData.createdAt = undefined;
198
223
  await this.setValue(this.cacheData);
199
224
  }
200
225
  async clearAll() {
@@ -203,6 +228,8 @@ export class LoginCacheStore<T extends Cache = Cache> implements CacheStore<T> {
203
228
  this.cacheData.id = undefined;
204
229
  this.cacheData.accessToken = undefined;
205
230
  this.cacheData.refreshToken = undefined;
231
+ this.cacheData.accessTokenExpiresIn = undefined;
232
+ this.cacheData.createdAt = undefined;
206
233
  await this.setValue(this.cacheData);
207
234
  }
208
235
  }
@@ -305,6 +305,9 @@ export class QueryLogin<T extends Cache = Cache> extends BaseQuery {
305
305
  const token = this.storage.getItem('token');
306
306
  return !!token;
307
307
  }
308
+ async checkTokenValid() {
309
+ return this.cacheStore.getIsExpired();
310
+ }
308
311
  /**
309
312
  * 检查本地用户列表
310
313
  * @returns
@@ -313,6 +316,7 @@ export class QueryLogin<T extends Cache = Cache> extends BaseQuery {
313
316
  const token = this.storage.getItem('token');
314
317
  return token || '';
315
318
  }
319
+
316
320
  async beforeRequest(opts: any = {}) {
317
321
  const token = this.storage.getItem('token');
318
322
  if (token) {