sumor 3.0.11 → 3.1.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/README.md +46 -45
- package/dist/server/controllers/oauthCallbackController.d.ts +1 -1
- package/dist/server/controllers/oauthCallbackController.js +1 -1
- package/dist/server/controllers/tokenRefreshController.js +1 -1
- package/dist/server/controllers/tokenRefreshController.js.map +1 -1
- package/dist/server/index.d.ts +11 -14
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +5 -48
- package/dist/server/index.js.map +1 -1
- package/dist/server/models/tokenModel.d.ts +1 -1
- package/dist/server/models/tokenModel.js +5 -5
- package/dist/server/models/tokenModel.js.map +1 -1
- package/dist/server/routes.d.ts +2 -2
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +7 -7
- package/dist/server/routes.js.map +1 -1
- package/dist/server/services/oauthService.js +6 -6
- package/dist/server/services/oauthService.js.map +1 -1
- package/dist/server/types/oauth.d.ts +1 -2
- package/dist/server/types/oauth.d.ts.map +1 -1
- package/dist/server/utils/config.d.ts +3 -10
- package/dist/server/utils/config.d.ts.map +1 -1
- package/dist/server/utils/config.js +25 -36
- package/dist/server/utils/config.js.map +1 -1
- package/dist/server/utils/http.d.ts +1 -1
- package/dist/server/utils/http.js +1 -1
- package/dist/web/Sumor.d.ts +0 -8
- package/dist/web/Sumor.d.ts.map +1 -1
- package/dist/web/Sumor.js +11 -18
- package/dist/web/Sumor.js.map +1 -1
- package/dist/web/index.d.ts +1 -1
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js +1 -1
- package/dist/web/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -26,50 +26,30 @@ npm install sumor
|
|
|
26
26
|
|
|
27
27
|
## 🚀 Quick Start
|
|
28
28
|
|
|
29
|
-
###
|
|
29
|
+
### Server Setup
|
|
30
30
|
|
|
31
31
|
```typescript
|
|
32
|
-
import
|
|
33
|
-
import setupSumor from 'sumor'
|
|
34
|
-
|
|
35
|
-
const app = express()
|
|
32
|
+
import { OAuthService, loadJwtUserMiddleware, oauthRoutes } from 'sumor'
|
|
36
33
|
|
|
37
34
|
// Define permissions for your application
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
const permissions = {
|
|
41
|
-
permissions: [
|
|
42
|
-
'users:view', // View user information
|
|
43
|
-
'users:edit', // Edit users
|
|
44
|
-
'posts:view', // View posts
|
|
45
|
-
'posts:create', // Create posts
|
|
46
|
-
'posts:edit', // Edit posts
|
|
47
|
-
'posts:delete' // Delete posts
|
|
48
|
-
],
|
|
35
|
+
const permissionConfig = {
|
|
36
|
+
permissions: ['posts:view', 'posts:edit', 'posts:delete'],
|
|
49
37
|
permissionLabels: [
|
|
50
|
-
{
|
|
51
|
-
module: 'users',
|
|
52
|
-
zh: '用户管理',
|
|
53
|
-
en: 'User Management'
|
|
54
|
-
},
|
|
55
38
|
{
|
|
56
39
|
module: 'posts',
|
|
57
|
-
zh: '
|
|
40
|
+
zh: '帖子管理',
|
|
58
41
|
en: 'Posts Management'
|
|
59
42
|
}
|
|
60
43
|
]
|
|
61
44
|
}
|
|
62
45
|
|
|
63
|
-
// Initialize
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
// Now your app has:
|
|
67
|
-
// - OAuth routes: /api/oauth/authorize, /api/oauth/callback, etc.
|
|
68
|
-
// - JWT middleware: Automatically validates tokens on protected routes
|
|
69
|
-
// - req.sumor: OAuth service available in all request handlers
|
|
70
|
-
// - req.jwtUser: User info from JWT token
|
|
46
|
+
// Initialize OAuth
|
|
47
|
+
const oauthService = new OAuthService()
|
|
48
|
+
await oauthService.updatePermissions(permissionConfig)
|
|
71
49
|
|
|
72
|
-
|
|
50
|
+
// Register JWT middleware and OAuth routes
|
|
51
|
+
app.use('/api', loadJwtUserMiddleware)
|
|
52
|
+
app.use('/api/oauth', oauthRoutes)
|
|
73
53
|
```
|
|
74
54
|
|
|
75
55
|
### Accessing User Info in Routes
|
|
@@ -101,24 +81,24 @@ app.get('/api/users/:userId', async (req: any, res) => {
|
|
|
101
81
|
|
|
102
82
|
## 📚 API Reference
|
|
103
83
|
|
|
104
|
-
###
|
|
84
|
+
### OAuthService Class
|
|
105
85
|
|
|
106
|
-
|
|
86
|
+
#### updatePermissions(config)
|
|
107
87
|
|
|
108
|
-
|
|
88
|
+
Synchronize permissions to the OAuth provider.
|
|
109
89
|
|
|
110
|
-
|
|
111
|
-
- `permissions` (Object) - Permission configuration:
|
|
112
|
-
- `permissions` (string[]) - List of available permissions
|
|
113
|
-
- `permissionLabels` (Array) - Human-readable labels for permission modules
|
|
90
|
+
**Parameters:**
|
|
114
91
|
|
|
115
|
-
|
|
92
|
+
- `config` (Object):
|
|
93
|
+
- `permissions` (string[]) - List of permission strings in format `<module>:<operation>`
|
|
94
|
+
- `permissionLabels` (Array) - Labels with `module`, `zh`, `en` fields
|
|
116
95
|
|
|
117
96
|
**Example:**
|
|
118
97
|
|
|
119
98
|
```typescript
|
|
120
|
-
const
|
|
121
|
-
|
|
99
|
+
const oauthService = new OAuthService()
|
|
100
|
+
await oauthService.updatePermissions({
|
|
101
|
+
permissions: ['posts:view', 'posts:edit', 'posts:delete'],
|
|
122
102
|
permissionLabels: [
|
|
123
103
|
{
|
|
124
104
|
module: 'posts',
|
|
@@ -126,8 +106,29 @@ const permissions = {
|
|
|
126
106
|
en: 'Posts Management'
|
|
127
107
|
}
|
|
128
108
|
]
|
|
129
|
-
}
|
|
130
|
-
|
|
109
|
+
})
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Middleware & Routes
|
|
113
|
+
|
|
114
|
+
#### loadJwtUserMiddleware
|
|
115
|
+
|
|
116
|
+
Middleware that validates JWT tokens and extracts user information into `req.jwtUser`.
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
app.use('/api', loadJwtUserMiddleware)
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
#### oauthRoutes
|
|
123
|
+
|
|
124
|
+
Pre-configured OAuth routes:
|
|
125
|
+
|
|
126
|
+
- `GET /api/oauth/callback` - Handle OAuth callback (no auth required)
|
|
127
|
+
- `PUT /api/oauth/token` - Refresh token and get user info + authorization URL
|
|
128
|
+
- `POST /api/oauth/logout` - Logout and revoke session
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
app.use('/api/oauth', oauthRoutes)
|
|
131
132
|
```
|
|
132
133
|
|
|
133
134
|
### req.jwtUser
|
|
@@ -602,8 +603,8 @@ const permissions = req.jwtUser.permissions?.split(',').map(p => p.trim()) || []
|
|
|
602
603
|
2. App calls `PUT /api/oauth/token` with refresh token to get OAuth provider URL and user info
|
|
603
604
|
3. User redirected to OAuth provider
|
|
604
605
|
4. OAuth provider authenticates and redirects back to `/api/oauth/callback` with authorization code
|
|
605
|
-
5. Server exchanges code for JWT token via
|
|
606
|
-
6. Server verifies JWT signature using
|
|
606
|
+
5. Server exchanges code for JWT token via OAuth API
|
|
607
|
+
6. Server verifies JWT signature using OAuth JWKS public keys
|
|
607
608
|
7. Subsequent requests include JWT in Authorization header
|
|
608
609
|
8. Middleware validates JWT and extracts user info (userId, roles, permissions)
|
|
609
610
|
9. Routes access user info via `req.jwtUser` and call OAuth service via `req.sumor`
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* OAuth 授权回调处理
|
|
4
4
|
* GET /api/oauth/callback
|
|
5
5
|
*
|
|
6
|
-
* 接收来自
|
|
6
|
+
* 接收来自 OAuth 授权端点的授权码,进行 Token 交换
|
|
7
7
|
* 重定向地址使用配置的 redirectUri 的 origin,确保在 Vite 代理场景下回到 Web 入口(如 21200)而非后端端口(21100)
|
|
8
8
|
*/
|
|
9
9
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
@@ -54,7 +54,7 @@ async function tokenRefreshController(req, res) {
|
|
|
54
54
|
const refreshToken = (0, authUtils_1.getRefreshToken)(req);
|
|
55
55
|
// 如果有有效的 refreshToken,进行刷新
|
|
56
56
|
if (refreshToken) {
|
|
57
|
-
// 使用 OAuthService 调用
|
|
57
|
+
// 使用 OAuthService 调用 OAuth API
|
|
58
58
|
const oauthService = new oauthService_1.default();
|
|
59
59
|
const tokenData = await oauthService.refreshAccessToken(refreshToken);
|
|
60
60
|
// 使用公用的 token 设置函数
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenRefreshController.js","sourceRoot":"","sources":["../../../server/controllers/tokenRefreshController.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAUH,yCAiGC;AAxGD,4EAAmD;AACnD,8DAA8D;AAC9D,qDAAoD;AACpD,4CAAgD;AAChD,kFAA6E;AAC7E,kDAAoE;AAErD,KAAK,UAAU,sBAAsB,CAAC,GAAY,EAAE,GAAa;IAC9E,MAAM,MAAM,GAAG,IAAA,uBAAc,GAAE,CAAA;IAC/B,MAAM,iBAAiB,GAAG,IAAA,oDAAwB,GAAE,CAAA;IAEpD,UAAU;IACV,IAAI,UAAU,GAAG,GAAG,CAAA;IACpB,IAAI,IAAI,GAAG,IAAI,CAAA;IACf,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,IAAI,GAAG,IAAI,CAAA;IAEf,IAAI,CAAC;QACH,oCAAoC;QACpC,MAAM,WAAW,GAAG,IAAA,0BAAc,EAAC,GAAG,CAAC,CAAA;QACvC,MAAM,UAAU,GAAG,IAAA,0BAAa,GAAE,CAAA;QAElC,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,uBAAuB;gBACvB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;gBACnD,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;oBACf,2BAA2B;oBAC3B,IAAI,GAAG;wBACL,EAAE,EAAE,MAAM,CAAC,GAAG;wBACd,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;wBAClC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;wBACzB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;qBACtC,CAAA;oBACD,OAAO,GAAG,YAAY,CAAA;gBACxB,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,+BAA+B;gBAC/B,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,qCAAqC;YACrC,MAAM,YAAY,GAAG,IAAA,2BAAe,EAAC,GAAG,CAAC,CAAA;YAEzC,2BAA2B;YAC3B,IAAI,YAAY,EAAE,CAAC;gBACjB
|
|
1
|
+
{"version":3,"file":"tokenRefreshController.js","sourceRoot":"","sources":["../../../server/controllers/tokenRefreshController.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Sumor OAuth
|
|
3
|
-
*
|
|
2
|
+
* Sumor OAuth 暴露接口
|
|
3
|
+
* 导出所需的中间件、路由和服务供客户端使用
|
|
4
4
|
*/
|
|
5
|
-
import
|
|
5
|
+
import OAuthService from './services/oauthService';
|
|
6
|
+
import oauthRoutes from './routes';
|
|
6
7
|
import { loadJwtUserMiddleware } from './middlewares/loadJwtUserMiddleware';
|
|
7
8
|
import { isLoggedMiddleware } from './middlewares/isLoggedMiddleware';
|
|
8
9
|
import { isVerifiedMiddleware } from './middlewares/isVerifiedMiddleware';
|
|
9
|
-
import type { PermissionConfig } from './types/oauth';
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
11
|
+
* 导出所需接口
|
|
12
|
+
* - OAuthService: OAuth 服务类,用于权限同步和各种 API 调用
|
|
13
|
+
* - loadJwtUserMiddleware: JWT 用户加载中间件
|
|
14
|
+
* - oauthRoutes: OAuth 路由
|
|
15
|
+
* - isLoggedMiddleware: 检查用户是否已登录的中间件
|
|
16
|
+
* - isVerifiedMiddleware: 检查用户是否已通过认证的中间件
|
|
16
17
|
*/
|
|
17
|
-
export
|
|
18
|
-
/**
|
|
19
|
-
* 导出中间件供 client 使用
|
|
20
|
-
*/
|
|
21
|
-
export { loadJwtUserMiddleware, isLoggedMiddleware, isVerifiedMiddleware };
|
|
18
|
+
export { OAuthService, loadJwtUserMiddleware, isLoggedMiddleware, isVerifiedMiddleware, oauthRoutes };
|
|
22
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../server/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../server/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,YAAY,MAAM,yBAAyB,CAAA;AAClD,OAAO,WAAW,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AAEzE;;;;;;;GAOG;AACH,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACZ,CAAA"}
|
package/dist/server/index.js
CHANGED
|
@@ -1,64 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Sumor OAuth
|
|
4
|
-
*
|
|
3
|
+
* Sumor OAuth 暴露接口
|
|
4
|
+
* 导出所需的中间件、路由和服务供客户端使用
|
|
5
5
|
*/
|
|
6
6
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
7
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
8
|
};
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.isVerifiedMiddleware = exports.isLoggedMiddleware = exports.loadJwtUserMiddleware = void 0;
|
|
11
|
-
exports.default = setupSumor;
|
|
10
|
+
exports.oauthRoutes = exports.isVerifiedMiddleware = exports.isLoggedMiddleware = exports.loadJwtUserMiddleware = exports.OAuthService = void 0;
|
|
12
11
|
const oauthService_1 = __importDefault(require("./services/oauthService"));
|
|
12
|
+
exports.OAuthService = oauthService_1.default;
|
|
13
13
|
const routes_1 = __importDefault(require("./routes"));
|
|
14
|
+
exports.oauthRoutes = routes_1.default;
|
|
14
15
|
const loadJwtUserMiddleware_1 = require("./middlewares/loadJwtUserMiddleware");
|
|
15
16
|
Object.defineProperty(exports, "loadJwtUserMiddleware", { enumerable: true, get: function () { return loadJwtUserMiddleware_1.loadJwtUserMiddleware; } });
|
|
16
17
|
const isLoggedMiddleware_1 = require("./middlewares/isLoggedMiddleware");
|
|
17
18
|
Object.defineProperty(exports, "isLoggedMiddleware", { enumerable: true, get: function () { return isLoggedMiddleware_1.isLoggedMiddleware; } });
|
|
18
19
|
const isVerifiedMiddleware_1 = require("./middlewares/isVerifiedMiddleware");
|
|
19
20
|
Object.defineProperty(exports, "isVerifiedMiddleware", { enumerable: true, get: function () { return isVerifiedMiddleware_1.isVerifiedMiddleware; } });
|
|
20
|
-
const config_1 = require("./utils/config");
|
|
21
|
-
/**
|
|
22
|
-
* 初始化 Sumor OAuth 权限同步
|
|
23
|
-
* 将 client 的权限定义同步到 Sumor
|
|
24
|
-
*/
|
|
25
|
-
async function initializeOAuthPermissions(permissionConfig) {
|
|
26
|
-
try {
|
|
27
|
-
const oauthService = new oauthService_1.default();
|
|
28
|
-
// 调用 ITS 的权限更新接口
|
|
29
|
-
await oauthService.updatePermissions(permissionConfig);
|
|
30
|
-
}
|
|
31
|
-
catch (error) {
|
|
32
|
-
// 不抛出错误,允许应用继续启动
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* 初始化 Sumor OAuth 集成
|
|
37
|
-
* 完成权限同步、JWT 用户加载中间件注册和 OAuth 路由注册
|
|
38
|
-
*
|
|
39
|
-
* @param app Express 应用实例
|
|
40
|
-
* @param permissionConfig 权限配置 { permissions, permissionLabels }
|
|
41
|
-
*/
|
|
42
|
-
async function setupSumor(app, permissionConfig) {
|
|
43
|
-
try {
|
|
44
|
-
// 0. 初始化 OAuth 配置(验证环境变量)
|
|
45
|
-
(0, config_1.initializeOAuthConfig)();
|
|
46
|
-
// 1. 挂载 OAuthService 实例到 app 和 req
|
|
47
|
-
app.sumor = new oauthService_1.default();
|
|
48
|
-
// 2. 初始化 OAuth 权限同步
|
|
49
|
-
await initializeOAuthPermissions(permissionConfig);
|
|
50
|
-
// 3. 注册 JWT 用户加载中间件
|
|
51
|
-
app.use('/api', loadJwtUserMiddleware_1.loadJwtUserMiddleware);
|
|
52
|
-
// 3.5. 在 /api 路由上注册 req.sumor 挂载中间件
|
|
53
|
-
app.use('/api', (req, res, next) => {
|
|
54
|
-
req.sumor = app.sumor;
|
|
55
|
-
next();
|
|
56
|
-
});
|
|
57
|
-
// 4. 注册 OAuth 路由
|
|
58
|
-
app.use('/api/oauth', routes_1.default);
|
|
59
|
-
}
|
|
60
|
-
catch (error) {
|
|
61
|
-
throw error;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
21
|
//# sourceMappingURL=index.js.map
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAEH,2EAAkD;AAehD,uBAfK,sBAAY,CAeL;AAdd,sDAAkC;AAkBhC,sBAlBK,gBAAW,CAkBL;AAjBb,+EAA2E;AAczE,sGAdO,6CAAqB,OAcP;AAbvB,yEAAqE;AAcnE,mGAdO,uCAAkB,OAcP;AAbpB,6EAAyE;AAcvE,qGAdO,2CAAoB,OAcP"}
|
|
@@ -23,7 +23,7 @@ class TokenModel {
|
|
|
23
23
|
* 验证步骤:
|
|
24
24
|
* 1. 获取公钥(内部自动缓存)
|
|
25
25
|
* 2. 验证 Token 签名(本地验证,无网络延迟)
|
|
26
|
-
* 3. 检查黑名单(查询
|
|
26
|
+
* 3. 检查黑名单(查询 OAuth 服务器,5秒缓存 + 超时控制)
|
|
27
27
|
*
|
|
28
28
|
* @param token OAuth Token 字符串
|
|
29
29
|
* @returns Token 载荷信息
|
|
@@ -33,17 +33,17 @@ class TokenModel {
|
|
|
33
33
|
// 1. 获取公钥(直接调用 model 方法,内部自动缓存)
|
|
34
34
|
const publicKey = await (0, jwksModel_1.getPublicKey)();
|
|
35
35
|
// 2. 验证 Token 签名(本地验证,无网络延迟)
|
|
36
|
-
// issuer:
|
|
36
|
+
// issuer: OAuth 的域名(不含协议和端口)
|
|
37
37
|
// audience: client 的域名(不含协议和端口)
|
|
38
38
|
const oauthConfig = (0, config_1.getOAuthConfig)();
|
|
39
|
-
const
|
|
39
|
+
const oauthIssuer = new URL(oauthConfig.endpoint).hostname;
|
|
40
40
|
const expectedAudience = new URL(oauthConfig.redirectUri).hostname;
|
|
41
41
|
const payload = (0, jsonwebtoken_1.verify)(token, publicKey, {
|
|
42
42
|
algorithms: ['RS256'],
|
|
43
|
-
issuer:
|
|
43
|
+
issuer: oauthIssuer,
|
|
44
44
|
audience: expectedAudience
|
|
45
45
|
});
|
|
46
|
-
// 3. 检查黑名单(查询
|
|
46
|
+
// 3. 检查黑名单(查询 OAuth 服务器,5秒缓存 + 超时控制)
|
|
47
47
|
// 使用 sessionId 检查会话是否被撤销
|
|
48
48
|
if (!payload.sessionId) {
|
|
49
49
|
// 如果 token 中没有 sessionId,直接作为黑名单处理
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenModel.js","sourceRoot":"","sources":["../../../server/models/tokenModel.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAkEH,sCAMC;AAOD,kCAGC;AAhFD,+CAAqC;AACrC,2CAA0C;AAC1C,qDAAoD;AACpD,4CAAgD;AAGhD;;;GAGG;AACH,MAAa,UAAU;IACrB;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,gCAAgC;QAChC,MAAM,SAAS,GAAG,MAAM,IAAA,wBAAY,GAAE,CAAA;QAEtC,6BAA6B;QAC7B,
|
|
1
|
+
{"version":3,"file":"tokenModel.js","sourceRoot":"","sources":["../../../server/models/tokenModel.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAkEH,sCAMC;AAOD,kCAGC;AAhFD,+CAAqC;AACrC,2CAA0C;AAC1C,qDAAoD;AACpD,4CAAgD;AAGhD;;;GAGG;AACH,MAAa,UAAU;IACrB;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,gCAAgC;QAChC,MAAM,SAAS,GAAG,MAAM,IAAA,wBAAY,GAAE,CAAA;QAEtC,6BAA6B;QAC7B,6BAA6B;QAC7B,gCAAgC;QAChC,MAAM,WAAW,GAAG,IAAA,uBAAc,GAAE,CAAA;QACpC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAA;QAC1D,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAA;QAElE,MAAM,OAAO,GAAG,IAAA,qBAAM,EAAC,KAAK,EAAE,SAAS,EAAE;YACvC,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,gBAAgB;SAC3B,CAAiB,CAAA;QAElB,qCAAqC;QACrC,yBAAyB;QACzB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,mCAAmC;YACnC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC7C,CAAC;QAED,MAAM,cAAc,GAAG,IAAA,kCAAiB,GAAE,CAAA;QAC1C,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAC5E,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC3B,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;CACF;AA9CD,gCA8CC;AAED,KAAK;AACL,IAAI,kBAAkB,GAAsB,IAAI,CAAA;AAEhD;;GAEG;AACH,SAAgB,aAAa;IAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,kBAAkB,GAAG,IAAI,UAAU,EAAE,CAAA;IACvC,CAAC;IAED,OAAO,kBAAkB,CAAA;AAC3B,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,WAAW,CAAC,KAAa;IAC7C,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACjC,CAAC"}
|
package/dist/server/routes.d.ts
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Sumor OAuth 路由
|
|
3
3
|
* 处理与 Sumor OAuth 服务器的交互以及相关操作
|
|
4
4
|
*/
|
|
5
|
-
declare const
|
|
6
|
-
export default
|
|
5
|
+
declare const oauthRoutes: import("express-serve-static-core").Router;
|
|
6
|
+
export default oauthRoutes;
|
|
7
7
|
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../server/routes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,QAAA,MAAM,
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../server/routes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,QAAA,MAAM,WAAW,4CAAmB,CAAA;AA+BpC,eAAe,WAAW,CAAA"}
|
package/dist/server/routes.js
CHANGED
|
@@ -11,7 +11,7 @@ const express_1 = __importDefault(require("express"));
|
|
|
11
11
|
const tokenRefreshController_1 = __importDefault(require("./controllers/tokenRefreshController"));
|
|
12
12
|
const oauthCallbackController_1 = __importDefault(require("./controllers/oauthCallbackController"));
|
|
13
13
|
const logoutController_1 = require("./controllers/logoutController");
|
|
14
|
-
const
|
|
14
|
+
const oauthRoutes = express_1.default.Router();
|
|
15
15
|
/**
|
|
16
16
|
* OAuth 授权相关路由
|
|
17
17
|
*/
|
|
@@ -23,19 +23,19 @@ const itsRoutes = express_1.default.Router();
|
|
|
23
23
|
* 仅支持驼峰格式(refreshToken),不支持下划线(refresh_token)
|
|
24
24
|
* refreshToken 可从请求体或 Cookie 中获取
|
|
25
25
|
*/
|
|
26
|
-
|
|
26
|
+
oauthRoutes.put('/token', tokenRefreshController_1.default);
|
|
27
27
|
/**
|
|
28
28
|
* OAuth 授权回调处理
|
|
29
29
|
* GET /api/oauth/callback
|
|
30
30
|
*
|
|
31
|
-
*
|
|
32
|
-
* 无需认证 -
|
|
31
|
+
* OAuth 重定向用户到这个端点,携带授权码
|
|
32
|
+
* 无需认证 - OAuth 直接调用此端点
|
|
33
33
|
*/
|
|
34
|
-
|
|
34
|
+
oauthRoutes.get('/callback', oauthCallbackController_1.default);
|
|
35
35
|
/**
|
|
36
36
|
* 用户登出 - 需要有效的 Token
|
|
37
37
|
* POST /api/oauth/logout
|
|
38
38
|
*/
|
|
39
|
-
|
|
40
|
-
exports.default =
|
|
39
|
+
oauthRoutes.post('/logout', logoutController_1.logout);
|
|
40
|
+
exports.default = oauthRoutes;
|
|
41
41
|
//# sourceMappingURL=routes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../server/routes.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAEH,sDAA6B;AAC7B,kGAAyE;AACzE,oGAA2E;AAC3E,qEAAuD;AAEvD,MAAM,
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../server/routes.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAEH,sDAA6B;AAC7B,kGAAyE;AACzE,oGAA2E;AAC3E,qEAAuD;AAEvD,MAAM,WAAW,GAAG,iBAAO,CAAC,MAAM,EAAE,CAAA;AAEpC;;GAEG;AAEH;;;;;;;GAOG;AACH,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,gCAAsB,CAAC,CAAA;AAEjD;;;;;;GAMG;AACH,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,iCAAuB,CAAC,CAAA;AAErD;;;GAGG;AACH,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAM,CAAC,CAAA;AAEnC,kBAAe,WAAW,CAAA"}
|
|
@@ -47,7 +47,7 @@ class OAuthService {
|
|
|
47
47
|
code,
|
|
48
48
|
redirectUri
|
|
49
49
|
});
|
|
50
|
-
//
|
|
50
|
+
// OAuth API 标准响应格式:{ code, message, data: { accessToken, refreshToken, tokenType, expiresIn, jti } }
|
|
51
51
|
const body = response.data;
|
|
52
52
|
const tokenData = body?.data ?? response.data;
|
|
53
53
|
return tokenData;
|
|
@@ -68,7 +68,7 @@ class OAuthService {
|
|
|
68
68
|
try {
|
|
69
69
|
const httpClient = (0, http_1.default)();
|
|
70
70
|
const response = await httpClient.get('/jwks');
|
|
71
|
-
//
|
|
71
|
+
// OAuth API 标准响应格式:{ code, message, data: { keys } }
|
|
72
72
|
const body = response.data;
|
|
73
73
|
return body?.data ?? response.data;
|
|
74
74
|
}
|
|
@@ -89,7 +89,7 @@ class OAuthService {
|
|
|
89
89
|
try {
|
|
90
90
|
const httpClient = (0, http_1.default)();
|
|
91
91
|
const response = await httpClient.get(`/sessions/${sessionId}/blacklist`);
|
|
92
|
-
//
|
|
92
|
+
// OAuth API 标准响应格式:{ code, message, data: { sessionId, isBlacklisted } }
|
|
93
93
|
const body = response.data;
|
|
94
94
|
const inner = body?.data;
|
|
95
95
|
if (inner !== undefined) {
|
|
@@ -135,7 +135,7 @@ class OAuthService {
|
|
|
135
135
|
const response = await httpClient.put('/token', {
|
|
136
136
|
refreshToken
|
|
137
137
|
});
|
|
138
|
-
//
|
|
138
|
+
// OAuth API 标准响应格式:{ code, message, data: { accessToken, ... } }
|
|
139
139
|
const body = response.data;
|
|
140
140
|
const tokenData = body?.data ?? response.data;
|
|
141
141
|
return tokenData;
|
|
@@ -322,7 +322,7 @@ class OAuthService {
|
|
|
322
322
|
try {
|
|
323
323
|
const httpClient = (0, http_1.default)();
|
|
324
324
|
const response = await httpClient.get('/permissions');
|
|
325
|
-
//
|
|
325
|
+
// OAuth API 标准响应格式:{ code, message, data: { permissionsTree, clientPermissions } }
|
|
326
326
|
const body = response.data;
|
|
327
327
|
return body?.data ?? response.data;
|
|
328
328
|
}
|
|
@@ -345,7 +345,7 @@ class OAuthService {
|
|
|
345
345
|
try {
|
|
346
346
|
const httpClient = (0, http_1.default)();
|
|
347
347
|
const response = await httpClient.put('/permissions', { ...permissionsConfig });
|
|
348
|
-
//
|
|
348
|
+
// OAuth API 标准响应格式:{ code, message, data: { clientKey, name, permissions, ... } }
|
|
349
349
|
const body = response.data;
|
|
350
350
|
return body?.data ?? response.data;
|
|
351
351
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauthService.js","sourceRoot":"","sources":["../../../server/services/oauthService.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,yDAAyC;AASzC;;GAEG;AACH,MAAa,iBAAkB,SAAQ,KAAK;IAC1C,YACS,IAAY,EACnB,OAAe,EACR,OAAa;QAEpB,KAAK,CAAC,OAAO,CAAC,CAAA;QAJP,SAAI,GAAJ,IAAI,CAAQ;QAEZ,YAAO,GAAP,OAAO,CAAM;QAGpB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAA;IACjC,CAAC;CACF;AATD,8CASC;AAED;;;GAGG;AACH,MAAa,YAAY;IACvB,gBAAe,CAAC;IAEhB;;;;;;;;;;OAUG;IACH,KAAK,CAAC,YAAY,CAChB,SAAiB,EACjB,IAAY,EACZ,WAAmB,EACnB,YAAoB;QAEpB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAA,cAAa,GAAE,CAAA;YAClC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC/C,IAAI;gBACJ,WAAW;aACZ,CAAC,CAAA;YAEF,
|
|
1
|
+
{"version":3,"file":"oauthService.js","sourceRoot":"","sources":["../../../server/services/oauthService.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,6 @@ export interface OAuthConfig {
|
|
|
10
10
|
clientKey: string;
|
|
11
11
|
clientSecret: string;
|
|
12
12
|
redirectUri: string;
|
|
13
|
-
itsEndpoint: string;
|
|
14
13
|
}
|
|
15
14
|
/**
|
|
16
15
|
* OAuth Token 响应
|
|
@@ -54,7 +53,7 @@ export interface PermissionConfig {
|
|
|
54
53
|
}>;
|
|
55
54
|
}
|
|
56
55
|
/**
|
|
57
|
-
* OAuth Token 响应接口(来自
|
|
56
|
+
* OAuth Token 响应接口(来自 OAuth API)
|
|
58
57
|
*/
|
|
59
58
|
export interface ITokenResponse {
|
|
60
59
|
accessToken: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../server/types/oauth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../server/types/oauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,19 +3,12 @@
|
|
|
3
3
|
* 从环境变量读取配置
|
|
4
4
|
*/
|
|
5
5
|
import type { OAuthConfig } from '../types/oauth';
|
|
6
|
-
/**
|
|
7
|
-
* 初始化 OAuth 配置
|
|
8
|
-
* 验证环境变量并创建配置对象
|
|
9
|
-
* 必须在应用启动时调用,且要在 dotenv 加载之后
|
|
10
|
-
*
|
|
11
|
-
* @throws 当缺少必需的环境变量时抛出错误
|
|
12
|
-
*/
|
|
13
|
-
export declare function initializeOAuthConfig(): void;
|
|
14
6
|
/**
|
|
15
7
|
* 获取 OAuth 配置
|
|
16
|
-
*
|
|
8
|
+
* 首次调用时自动从环境变量初始化并验证配置
|
|
9
|
+
* 后续调用返回缓存的配置
|
|
17
10
|
*
|
|
18
|
-
* @throws
|
|
11
|
+
* @throws 当缺少必需的环境变量时抛出错误
|
|
19
12
|
*/
|
|
20
13
|
export declare function getOAuthConfig(): OAuthConfig;
|
|
21
14
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../server/utils/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAqBjD;;;;;;GAMG;AACH,wBAAgB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../server/utils/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAqBjD;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,WAAW,CA+B5C"}
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* 从环境变量读取配置
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.initializeOAuthConfig = initializeOAuthConfig;
|
|
8
7
|
exports.getOAuthConfig = getOAuthConfig;
|
|
9
8
|
function normalizeRedirectUri(uri) {
|
|
10
9
|
const s = uri.trim();
|
|
@@ -24,47 +23,37 @@ function buildBaseUrl(endpoint) {
|
|
|
24
23
|
}
|
|
25
24
|
// 缓存的配置对象
|
|
26
25
|
let oauthConfig = null;
|
|
27
|
-
/**
|
|
28
|
-
* 初始化 OAuth 配置
|
|
29
|
-
* 验证环境变量并创建配置对象
|
|
30
|
-
* 必须在应用启动时调用,且要在 dotenv 加载之后
|
|
31
|
-
*
|
|
32
|
-
* @throws 当缺少必需的环境变量时抛出错误
|
|
33
|
-
*/
|
|
34
|
-
function initializeOAuthConfig() {
|
|
35
|
-
const itsEndpoint = process.env.OAUTH_ENDPOINT;
|
|
36
|
-
const itsClientId = process.env.OAUTH_CLIENT_KEY;
|
|
37
|
-
const itsClientSecret = process.env.OAUTH_CLIENT_SECRET;
|
|
38
|
-
const itsClientCallback = process.env.OAUTH_REDIRECT_URI;
|
|
39
|
-
// 验证必需的环境变量
|
|
40
|
-
if (!itsEndpoint) {
|
|
41
|
-
throw new Error('缺少 OAUTH_ENDPOINT 环境变量配置');
|
|
42
|
-
}
|
|
43
|
-
if (!itsClientId || !itsClientSecret) {
|
|
44
|
-
throw new Error('缺少 OAuth 客户端配置(OAUTH_CLIENT_KEY/OAUTH_CLIENT_SECRET)');
|
|
45
|
-
}
|
|
46
|
-
if (!itsClientCallback) {
|
|
47
|
-
throw new Error('缺少 OAUTH_REDIRECT_URI 环境变量配置(回调地址)');
|
|
48
|
-
}
|
|
49
|
-
const redirectUri = normalizeRedirectUri(itsClientCallback);
|
|
50
|
-
oauthConfig = {
|
|
51
|
-
endpoint: itsEndpoint,
|
|
52
|
-
baseUrl: buildBaseUrl(itsEndpoint),
|
|
53
|
-
clientKey: itsClientId,
|
|
54
|
-
clientSecret: itsClientSecret,
|
|
55
|
-
redirectUri,
|
|
56
|
-
itsEndpoint: itsEndpoint
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
26
|
/**
|
|
60
27
|
* 获取 OAuth 配置
|
|
61
|
-
*
|
|
28
|
+
* 首次调用时自动从环境变量初始化并验证配置
|
|
29
|
+
* 后续调用返回缓存的配置
|
|
62
30
|
*
|
|
63
|
-
* @throws
|
|
31
|
+
* @throws 当缺少必需的环境变量时抛出错误
|
|
64
32
|
*/
|
|
65
33
|
function getOAuthConfig() {
|
|
66
34
|
if (!oauthConfig) {
|
|
67
|
-
|
|
35
|
+
const oauthEndpoint = process.env.OAUTH_ENDPOINT;
|
|
36
|
+
const oauthClientId = process.env.OAUTH_CLIENT_KEY;
|
|
37
|
+
const oauthClientSecret = process.env.OAUTH_CLIENT_SECRET;
|
|
38
|
+
const oauthClientCallback = process.env.OAUTH_REDIRECT_URI;
|
|
39
|
+
// 验证必需的环境变量
|
|
40
|
+
if (!oauthEndpoint) {
|
|
41
|
+
throw new Error('缺少 OAUTH_ENDPOINT 环境变量配置');
|
|
42
|
+
}
|
|
43
|
+
if (!oauthClientId || !oauthClientSecret) {
|
|
44
|
+
throw new Error('缺少 OAuth 客户端配置(OAUTH_CLIENT_KEY/OAUTH_CLIENT_SECRET)');
|
|
45
|
+
}
|
|
46
|
+
if (!oauthClientCallback) {
|
|
47
|
+
throw new Error('缺少 OAUTH_REDIRECT_URI 环境变量配置(回调地址)');
|
|
48
|
+
}
|
|
49
|
+
const redirectUri = normalizeRedirectUri(oauthClientCallback);
|
|
50
|
+
oauthConfig = {
|
|
51
|
+
endpoint: oauthEndpoint,
|
|
52
|
+
baseUrl: buildBaseUrl(oauthEndpoint),
|
|
53
|
+
clientKey: oauthClientId,
|
|
54
|
+
clientSecret: oauthClientSecret,
|
|
55
|
+
redirectUri
|
|
56
|
+
};
|
|
68
57
|
}
|
|
69
58
|
return oauthConfig;
|
|
70
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../server/utils/config.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AA8BH,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../server/utils/config.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AA8BH,wCA+BC;AAzDD,SAAS,oBAAoB,CAAC,GAAW;IACvC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IACpB,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7D,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,QAAgB;IACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAA;IAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,IAAI,QAAQ,CAAA;IACjD,OAAO,GAAG,IAAI,YAAY,CAAA;AAC5B,CAAC;AAED,UAAU;AACV,IAAI,WAAW,GAAuB,IAAI,CAAA;AAE1C;;;;;;GAMG;AACH,SAAgB,cAAc;IAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAA;QAChD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAA;QAClD,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAA;QACzD,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAA;QAE1D,YAAY;QACZ,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC7C,CAAC;QAED,IAAI,CAAC,aAAa,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;QACzE,CAAC;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QACvD,CAAC;QAED,MAAM,WAAW,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,CAAA;QAE7D,WAAW,GAAG;YACZ,QAAQ,EAAE,aAAa;YACvB,OAAO,EAAE,YAAY,CAAC,aAAa,CAAC;YACpC,SAAS,EAAE,aAAa;YACxB,YAAY,EAAE,iBAAiB;YAC/B,WAAW;SACZ,CAAA;IACH,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* 提供配置好的 axios 实例:
|
|
5
5
|
* - 基础 URL: OAUTH_ENDPOINT + /api/oauth
|
|
6
6
|
* - Authorization header: Basic Auth (client_key:client_secret)
|
|
7
|
-
* - 开发环境或 OAUTH_INSECURE_SKIP_TLS_VERIFY=1 时允许自签名证书(请求
|
|
7
|
+
* - 开发环境或 OAUTH_INSECURE_SKIP_TLS_VERIFY=1 时允许自签名证书(请求 OAuth)
|
|
8
8
|
*/
|
|
9
9
|
import { AxiosInstance } from 'axios';
|
|
10
10
|
/**
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* 提供配置好的 axios 实例:
|
|
6
6
|
* - 基础 URL: OAUTH_ENDPOINT + /api/oauth
|
|
7
7
|
* - Authorization header: Basic Auth (client_key:client_secret)
|
|
8
|
-
* - 开发环境或 OAUTH_INSECURE_SKIP_TLS_VERIFY=1 时允许自签名证书(请求
|
|
8
|
+
* - 开发环境或 OAUTH_INSECURE_SKIP_TLS_VERIFY=1 时允许自签名证书(请求 OAuth)
|
|
9
9
|
*/
|
|
10
10
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
11
11
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
package/dist/web/Sumor.d.ts
CHANGED
|
@@ -2,14 +2,6 @@
|
|
|
2
2
|
* Sumor Class - 轻呈云客户端主类
|
|
3
3
|
*/
|
|
4
4
|
import { AxiosInstance, AxiosRequestConfig } from 'axios';
|
|
5
|
-
/**
|
|
6
|
-
* API 错误信息
|
|
7
|
-
*/
|
|
8
|
-
export declare class ApiError extends Error {
|
|
9
|
-
code: string | number;
|
|
10
|
-
status?: number;
|
|
11
|
-
constructor(message: string, code: string | number, status?: number);
|
|
12
|
-
}
|
|
13
5
|
export interface UserInfo {
|
|
14
6
|
id: string;
|
|
15
7
|
isVerified: number;
|
package/dist/web/Sumor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sumor.d.ts","sourceRoot":"","sources":["../../web/Sumor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAc,EAAE,aAAa,EAAE,kBAAkB,EAAc,MAAM,OAAO,CAAA;AAkB5E
|
|
1
|
+
{"version":3,"file":"Sumor.d.ts","sourceRoot":"","sources":["../../web/Sumor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAc,EAAE,aAAa,EAAE,kBAAkB,EAAc,MAAM,OAAO,CAAA;AAkB5E,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;CACpB;AAWD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAA;AAEhE,qBAAa,KAAK;IACT,QAAQ,EAAE,MAAM,CAAK;IACrB,YAAY,EAAE,MAAM,CAAK;IACzB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAO;IAC5B,KAAK,EAAE,aAAa,CAAA;IAC3B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,kBAAkB,CAAwB;IAClD,OAAO,CAAC,qBAAqB,CAAgC;;IAO7D,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,gBAAgB;IAKxB;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAIhD;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4G3B;;OAEG;IACG,OAAO,CAAC,CAAC,GAAG,GAAG,EACnB,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAChC,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAQb;;OAEG;IACG,GAAG,CAAC,CAAC,GAAG,GAAG,EACf,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAIb;;OAEG;IACG,IAAI,CAAC,CAAC,GAAG,GAAG,EAChB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAIb,OAAO,CAAC,YAAY;IAQpB;;;;OAIG;IACG,YAAY,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CzD,YAAY,CAAC,EAAE,EAAE,MAAM;IAIvB,UAAU;IAIV,UAAU;IAIV,UAAU;IAIV,cAAc;IAId;;OAEG;IACH,KAAK;IAQL;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAc7B;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC;;;;;;;;;OASG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,MAAY,GAAG,OAAO;IAiB/D;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAQ/B"}
|
package/dist/web/Sumor.js
CHANGED
|
@@ -2,17 +2,6 @@
|
|
|
2
2
|
* Sumor Class - 轻呈云客户端主类
|
|
3
3
|
*/
|
|
4
4
|
import axios from 'axios';
|
|
5
|
-
/**
|
|
6
|
-
* API 错误信息
|
|
7
|
-
*/
|
|
8
|
-
export class ApiError extends Error {
|
|
9
|
-
constructor(message, code, status) {
|
|
10
|
-
super(message);
|
|
11
|
-
this.code = code;
|
|
12
|
-
this.status = status;
|
|
13
|
-
this.name = 'ApiError';
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
5
|
export class Sumor {
|
|
17
6
|
constructor() {
|
|
18
7
|
this.endpoint = '';
|
|
@@ -80,7 +69,8 @@ export class Sumor {
|
|
|
80
69
|
instance.interceptors.response.use(response => {
|
|
81
70
|
const data = response.data;
|
|
82
71
|
if (data.code !== 'OK') {
|
|
83
|
-
const error = new
|
|
72
|
+
const error = new Error(data.message || '请求失败');
|
|
73
|
+
error.code = data.code;
|
|
84
74
|
return Promise.reject(error);
|
|
85
75
|
}
|
|
86
76
|
return data.data !== undefined ? data.data : true;
|
|
@@ -120,8 +110,9 @@ export class Sumor {
|
|
|
120
110
|
// 清空用户信息,表示已退出登录
|
|
121
111
|
this.user = null;
|
|
122
112
|
this.emitUserChange();
|
|
123
|
-
const
|
|
124
|
-
|
|
113
|
+
const error = new Error('令牌已过期,请重新登录');
|
|
114
|
+
error.code = 'TOKEN_REFRESH_FAILED';
|
|
115
|
+
return Promise.reject(error);
|
|
125
116
|
}
|
|
126
117
|
}
|
|
127
118
|
else {
|
|
@@ -134,11 +125,13 @@ export class Sumor {
|
|
|
134
125
|
}
|
|
135
126
|
if (error.response?.data) {
|
|
136
127
|
const data = error.response.data;
|
|
137
|
-
const
|
|
138
|
-
|
|
128
|
+
const err = new Error(data.message || error.message || '请求失败');
|
|
129
|
+
err.code = data.code || 'REQUEST_FAILED';
|
|
130
|
+
return Promise.reject(err);
|
|
139
131
|
}
|
|
140
|
-
const
|
|
141
|
-
|
|
132
|
+
const err = new Error(error.message || '网络错误');
|
|
133
|
+
err.code = 'NETWORK_ERROR';
|
|
134
|
+
return Promise.reject(err);
|
|
142
135
|
});
|
|
143
136
|
return instance;
|
|
144
137
|
}
|
package/dist/web/Sumor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sumor.js","sourceRoot":"","sources":["../../web/Sumor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAwD,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Sumor.js","sourceRoot":"","sources":["../../web/Sumor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAwD,MAAM,OAAO,CAAA;AAuC5E,MAAM,OAAO,KAAK;IAYhB;QAXO,aAAQ,GAAW,EAAE,CAAA;QACrB,iBAAY,GAAW,EAAE,CAAA;QACzB,SAAI,GAAoB,IAAI,CAAA;QAE3B,WAAM,GAAY,KAAK,CAAA;QACvB,aAAQ,GAAW,CAAC,CAAA;QACX,cAAS,GAAG,OAAO,CAAA,CAAC,WAAW;QACxC,iBAAY,GAAY,KAAK,CAAA;QAC7B,uBAAkB,GAAsB,EAAE,CAAA;QAC1C,0BAAqB,GAA8B,EAAE,CAAA;QAG3D,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAA;IACzC,CAAC;IAEO,qBAAqB,CAAC,QAAoB;QAChD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACxC,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;QACvD,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAA;IAC9B,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,QAA4B;QACvC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC3C,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC5C,IAAI,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACrB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAA;YACrD,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACK,mBAAmB;QACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,KAAK;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,gCAAgC;aACjD;YACD,eAAe,EAAE,IAAI;SACtB,CAAC,CAAA;QAEF;;WAEG;QACH,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAC/B,MAAM,CAAC,EAAE;YACP,OAAO,MAAM,CAAA;QACf,CAAC,EACD,KAAK,CAAC,EAAE;YACN,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC9B,CAAC,CACF,CAAA;QAED;;WAEG;QACH,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAChC,QAAQ,CAAC,EAAE;YACT,MAAM,IAAI,GAAgB,QAAQ,CAAC,IAAI,CAAA;YAEvC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,CAC9C;gBAAC,KAAa,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;gBAChC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC9B,CAAC;YAED,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;QACnD,CAAC,EACD,KAAK,EAAE,KAAiB,EAAE,EAAE;YAC1B,MAAM,eAAe,GAAG,KAAK,CAAC,MAAgD,CAAA;YAE9E,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;gBACjF,eAAe,CAAC,MAAM,GAAG,IAAI,CAAA;gBAE7B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;oBAExB,IAAI,CAAC;wBACH,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;4BACnC,OAAO,EAAE,EAAE;4BACX,eAAe,EAAE,IAAI;yBACtB,CAAC,CAAA;wBAEF,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;wBAElE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;4BAC5B,uBAAuB;4BACvB,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gCACnE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAA;gCAC9B,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;gCACnC,kBAAkB;gCAClB,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oCAC/B,IAAI,CAAC,cAAc,EAAE,CAAA;gCACvB,CAAC;4BACH,CAAC;4BAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;4BACzB,IAAI,CAAC,gBAAgB,EAAE,CAAA;4BACvB,OAAO,QAAQ,CAAC,eAAe,CAAC,CAAA;wBAClC,CAAC;6BAAM,CAAC;4BACN,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;wBAClE,CAAC;oBACH,CAAC;oBAAC,OAAO,YAAY,EAAE,CAAC;wBACtB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;wBACzB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAA;wBAE5B,iBAAiB;wBACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;wBAChB,IAAI,CAAC,cAAc,EAAE,CAAA;wBAErB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,CACrC;wBAAC,KAAa,CAAC,IAAI,GAAG,sBAAsB,CAAA;wBAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBAC9B,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBACrC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE;4BAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAA;wBACpC,CAAC,CAAC,CAAA;oBACJ,CAAC,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YAED,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAmB,CAAA;gBAC/C,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,CAC7D;gBAAC,GAAW,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,gBAAgB,CAAA;gBAClD,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC5B,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,CAC7C;YAAC,GAAW,CAAC,IAAI,GAAG,eAAe,CAAA;YACpC,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC5B,CAAC,CACF,CAAA;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CACX,GAAW,EACX,SAA8B,EAAE,EAChC,MAA2B;QAE3B,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAM,CAAA;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CACP,GAAW,EACX,MAA4B,EAC5B,MAA2B;QAE3B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAe,CAAA;IACjE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CACR,GAAW,EACX,IAAyB,EACzB,MAA2B;QAE3B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAe,CAAA;IACzD,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,OAAO,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAA;IAC7C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,QAAiB,KAAK;QACvC,uBAAuB;QACvB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YAClC,OAAM;QACR,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAA;QAE9B,IAAI,CAAC;YACH,iCAAiC;YACjC,gDAAgD;YAChD,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAA;YACtD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAqB,kBAAkB,EAAE,EAAE,CAAC,CAAA;YACjF,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAA;YAEnD,kDAAkD;YAClD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,IAAI,GAAG,QAAyC,CAAA;gBACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAA;gBACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAA;gBAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAA;gBAC7B,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;YACtD,CAAC;YAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAE1B,kBAAkB;YAClB,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAA;gBACnD,IAAI,CAAC,cAAc,EAAE,CAAA;YACvB,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAA;YAE7D,0BAA0B;YAC1B,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;gBAC5E,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAA;gBAC1E,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;oBAChB,IAAI,CAAC,cAAc,EAAE,CAAA;gBACvB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,YAAY,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,QAAQ,GAAG,oBAAoB,EAAE,EAAE,CAAA;IACjD,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;IAChC,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;IAChC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAA;IACzC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAA;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAA;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAA;YACrC,4BAA4B;YAC5B,MAAM,KAAK,CAAA;QACb,CAAC;gBAAS,CAAC;YACT,WAAW;YACX,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;YAChB,IAAI,CAAC,cAAc,EAAE,CAAA;QACvB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IAED;;;;;;;;;OASG;IACH,aAAa,CAAC,MAAc,EAAE,YAAoB,GAAG;QACnD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAE3E,iCAAiC;QACjC,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YACtB,OAAO,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAA;QAChF,CAAC;QAED,8BAA8B;QAC9B,MAAM,kBAAkB,GAAG,GAAG,MAAM,IAAI,SAAS,EAAE,CAAA;QACnD,OAAO,eAAe,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;IACrD,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACnC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC5C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAA;IAC/C,CAAC;CACF"}
|
package/dist/web/index.d.ts
CHANGED
package/dist/web/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../web/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAsB,UAAU,kBAa/B;AAED,OAAO,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../web/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAsB,UAAU,kBAa/B;AAED,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA"}
|
package/dist/web/index.js
CHANGED
|
@@ -13,5 +13,5 @@ export async function setupSumor() {
|
|
|
13
13
|
console.log('[setupSumor] Sumor initialized, window.sumor.user:', window.sumor.user);
|
|
14
14
|
console.log('✓ 完成轻呈云客户端初始化');
|
|
15
15
|
}
|
|
16
|
-
export { Sumor
|
|
16
|
+
export { Sumor } from './Sumor';
|
|
17
17
|
//# sourceMappingURL=index.js.map
|
package/dist/web/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../web/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAA;IACtD,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAA;IAEzB,YAAY;IACZ,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAA;IACnD,MAAM,KAAK,CAAC,YAAY,EAAE,CAAA;IAE1B,kBAAkB;IAClB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;IAEpB,OAAO,CAAC,GAAG,CAAC,oDAAoD,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACpF,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;AAC9B,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../web/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAA;IACtD,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAA;IAEzB,YAAY;IACZ,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAA;IACnD,MAAM,KAAK,CAAC,YAAY,EAAE,CAAA;IAE1B,kBAAkB;IAClB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;IAEpB,OAAO,CAAC,GAAG,CAAC,oDAAoD,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACpF,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;AAC9B,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA"}
|