update
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@kevisual/api",
|
"name": "@kevisual/api",
|
||||||
"version": "0.0.5",
|
"version": "0.0.6",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "mod.ts",
|
"main": "mod.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -18,11 +18,12 @@
|
|||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "abearxiong <xiongxiao@xiongxiao.me> (https://www.xiongxiao.me)",
|
"author": "abearxiong <xiongxiao@xiongxiao.me> (https://www.xiongxiao.me)",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"packageManager": "pnpm@10.26.1",
|
"packageManager": "pnpm@10.26.2",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@kevisual/cache": "^0.0.4",
|
||||||
"@kevisual/query": "^0.0.33",
|
"@kevisual/query": "^0.0.33",
|
||||||
"@kevisual/router": "^0.0.41",
|
"@kevisual/router": "^0.0.51",
|
||||||
"@kevisual/types": "^0.0.10",
|
"@kevisual/types": "^0.0.10",
|
||||||
"@kevisual/use-config": "^1.0.21",
|
"@kevisual/use-config": "^1.0.21",
|
||||||
"@types/bun": "^1.3.5",
|
"@types/bun": "^1.3.5",
|
||||||
@@ -31,6 +32,7 @@
|
|||||||
"fast-glob": "^3.3.3"
|
"fast-glob": "^3.3.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@kevisual/load": "^0.0.6",
|
||||||
"es-toolkit": "^1.43.0",
|
"es-toolkit": "^1.43.0",
|
||||||
"nanoid": "^5.1.6"
|
"nanoid": "^5.1.6"
|
||||||
}
|
}
|
||||||
|
|||||||
32
pnpm-lock.yaml
generated
32
pnpm-lock.yaml
generated
@@ -8,9 +8,9 @@ importers:
|
|||||||
|
|
||||||
.:
|
.:
|
||||||
dependencies:
|
dependencies:
|
||||||
dotenv:
|
'@kevisual/load':
|
||||||
specifier: ^17.2.3
|
specifier: ^0.0.6
|
||||||
version: 17.2.3
|
version: 0.0.6
|
||||||
es-toolkit:
|
es-toolkit:
|
||||||
specifier: ^1.43.0
|
specifier: ^1.43.0
|
||||||
version: 1.43.0
|
version: 1.43.0
|
||||||
@@ -18,6 +18,9 @@ importers:
|
|||||||
specifier: ^5.1.6
|
specifier: ^5.1.6
|
||||||
version: 5.1.6
|
version: 5.1.6
|
||||||
devDependencies:
|
devDependencies:
|
||||||
|
'@kevisual/cache':
|
||||||
|
specifier: ^0.0.4
|
||||||
|
version: 0.0.4
|
||||||
'@kevisual/query':
|
'@kevisual/query':
|
||||||
specifier: ^0.0.33
|
specifier: ^0.0.33
|
||||||
version: 0.0.33
|
version: 0.0.33
|
||||||
@@ -36,6 +39,9 @@ importers:
|
|||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: ^25.0.3
|
specifier: ^25.0.3
|
||||||
version: 25.0.3
|
version: 25.0.3
|
||||||
|
dotenv:
|
||||||
|
specifier: ^17.2.3
|
||||||
|
version: 17.2.3
|
||||||
fast-glob:
|
fast-glob:
|
||||||
specifier: ^3.3.3
|
specifier: ^3.3.3
|
||||||
version: 3.3.3
|
version: 3.3.3
|
||||||
@@ -62,6 +68,9 @@ importers:
|
|||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
|
||||||
|
'@kevisual/cache@0.0.4':
|
||||||
|
resolution: {integrity: sha512-NlyriJ9fC27TgQhWYbEH9hG84R2k0lIofOxo/+nVHN6a6LJSLnVbpDIysRcnH8MI52n/XHfWwLSjeDDL3D1/cQ==}
|
||||||
|
|
||||||
'@kevisual/load@0.0.6':
|
'@kevisual/load@0.0.6':
|
||||||
resolution: {integrity: sha512-+3YTFehRcZ1haGel5DKYMUwmi5i6f2psyaPZlfkKU/cOXgkpwoG9/BEqPCnPjicKqqnksEpixVRkyHJ+5bjLVA==}
|
resolution: {integrity: sha512-+3YTFehRcZ1haGel5DKYMUwmi5i6f2psyaPZlfkKU/cOXgkpwoG9/BEqPCnPjicKqqnksEpixVRkyHJ+5bjLVA==}
|
||||||
|
|
||||||
@@ -316,6 +325,9 @@ packages:
|
|||||||
humanize-ms@1.2.1:
|
humanize-ms@1.2.1:
|
||||||
resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
|
resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
|
||||||
|
|
||||||
|
idb-keyval@6.2.2:
|
||||||
|
resolution: {integrity: sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==}
|
||||||
|
|
||||||
inherits@2.0.4:
|
inherits@2.0.4:
|
||||||
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
|
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
|
||||||
|
|
||||||
@@ -331,6 +343,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
|
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
|
||||||
engines: {node: '>=0.12.0'}
|
engines: {node: '>=0.12.0'}
|
||||||
|
|
||||||
|
lru-cache@11.2.4:
|
||||||
|
resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==}
|
||||||
|
engines: {node: 20 || >=22}
|
||||||
|
|
||||||
math-intrinsics@1.1.0:
|
math-intrinsics@1.1.0:
|
||||||
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
|
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
@@ -501,6 +517,12 @@ packages:
|
|||||||
|
|
||||||
snapshots:
|
snapshots:
|
||||||
|
|
||||||
|
'@kevisual/cache@0.0.4':
|
||||||
|
dependencies:
|
||||||
|
idb-keyval: 6.2.2
|
||||||
|
lru-cache: 11.2.4
|
||||||
|
nanoid: 5.1.6
|
||||||
|
|
||||||
'@kevisual/load@0.0.6':
|
'@kevisual/load@0.0.6':
|
||||||
dependencies:
|
dependencies:
|
||||||
eventemitter3: 5.0.1
|
eventemitter3: 5.0.1
|
||||||
@@ -824,6 +846,8 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ms: 2.1.3
|
ms: 2.1.3
|
||||||
|
|
||||||
|
idb-keyval@6.2.2: {}
|
||||||
|
|
||||||
inherits@2.0.4: {}
|
inherits@2.0.4: {}
|
||||||
|
|
||||||
is-extglob@2.1.1: {}
|
is-extglob@2.1.1: {}
|
||||||
@@ -834,6 +858,8 @@ snapshots:
|
|||||||
|
|
||||||
is-number@7.0.0: {}
|
is-number@7.0.0: {}
|
||||||
|
|
||||||
|
lru-cache@11.2.4: {}
|
||||||
|
|
||||||
math-intrinsics@1.1.0: {}
|
math-intrinsics@1.1.0: {}
|
||||||
|
|
||||||
merge2@1.4.1: {}
|
merge2@1.4.1: {}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import type { Result, DataOpts } from '@kevisual/query/query';
|
|||||||
import { setBaseResponse } from '@kevisual/query/query';
|
import { setBaseResponse } from '@kevisual/query/query';
|
||||||
import { LoginCacheStore, CacheStore } from './login-cache.ts';
|
import { LoginCacheStore, CacheStore } from './login-cache.ts';
|
||||||
import { Cache } from './login-cache.ts';
|
import { Cache } from './login-cache.ts';
|
||||||
|
import { BaseLoad } from '@kevisual/load';
|
||||||
export type QueryLoginOpts = {
|
export type QueryLoginOpts = {
|
||||||
query?: Query;
|
query?: Query;
|
||||||
isBrowser?: boolean;
|
isBrowser?: boolean;
|
||||||
@@ -418,6 +418,12 @@ export class QueryLogin extends BaseQuery {
|
|||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 使用web登录,创建url地址, 需要MD5和jsonwebtoken
|
* 使用web登录,创建url地址, 需要MD5和jsonwebtoken
|
||||||
|
*
|
||||||
|
*
|
||||||
|
|
||||||
|
import MD5 from 'crypto-js/md5.js';
|
||||||
|
import jsonwebtoken from 'jsonwebtoken';
|
||||||
|
|
||||||
*/
|
*/
|
||||||
loginWithWeb(baseURL: string, { MD5, jsonwebtoken }: { MD5: any; jsonwebtoken: any }) {
|
loginWithWeb(baseURL: string, { MD5, jsonwebtoken }: { MD5: any; jsonwebtoken: any }) {
|
||||||
const randomId = Math.random().toString(36).substring(2, 15);
|
const randomId = Math.random().toString(36).substring(2, 15);
|
||||||
@@ -431,4 +437,46 @@ export class QueryLogin extends BaseQuery {
|
|||||||
const url = `${baseURL}/api/router?path=user&key=webLogin&p&loginToken=${token}&sign=${sign}&randomId=${randomId}`;
|
const url = `${baseURL}/api/router?path=user&key=webLogin&p&loginToken=${token}&sign=${sign}&randomId=${randomId}`;
|
||||||
return { url, token, tokenSecret };
|
return { url, token, tokenSecret };
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
*轮询登录状态
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
const res = queryLogin.loginWithWeb(baseURL, { MD5, jsonwebtoken });
|
||||||
|
await pollLoginStatus(res.token, { tokenSecret: res.tokenSecret });
|
||||||
|
* 轮询登录状态
|
||||||
|
*/
|
||||||
|
async pollLoginStatus(data: { token: string; tokenSecret: string }) {
|
||||||
|
const token = data.token;
|
||||||
|
const load = new BaseLoad();
|
||||||
|
load.load(
|
||||||
|
async () => {
|
||||||
|
const res = await this.checkLoginStatus(token);
|
||||||
|
if (res.code === 500) {
|
||||||
|
load.cancel('check-login-status');
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'check-login-status',
|
||||||
|
isReRun: true,
|
||||||
|
checkSuccess: (data) => {
|
||||||
|
return data?.code === 200;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
);
|
||||||
|
const res = await load.hasLoaded('check-login-status', {
|
||||||
|
timeout: 60 * 3 * 1000, // 3分钟超时
|
||||||
|
});
|
||||||
|
if (res.code === 200 && res.data?.code === 200) {
|
||||||
|
try {
|
||||||
|
console.log('网页登录成功');
|
||||||
|
return;
|
||||||
|
} catch (error) {
|
||||||
|
console.log('登录失败', error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log('登录失败', res);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user