sumor 3.1.7 → 3.2.0

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.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * URL Helper - 提供各种应用内 URL 的快速访问方法
3
3
  */
4
- import { oauthStore } from './OAuthStore';
4
+ import { oauthStore } from './OAuthStore.js';
5
5
  /**
6
6
  * OAuth URL 访问对象
7
7
  */
@@ -8,7 +8,7 @@
8
8
  * - hasPermission('posts', 'edit') 检查是否有 'posts:edit' 权限
9
9
  * - hasPermission('posts', '*') 或 hasPermission('posts') 检查是否有任何 posts 权限
10
10
  */
11
- import { oauthStore } from '../OAuthStore';
11
+ import { oauthStore } from '../OAuthStore.js';
12
12
  export default function hasPermission(module, operation = '*') {
13
13
  const user = oauthStore.getUser();
14
14
  if (!user || !user.permissions) {
@@ -3,7 +3,7 @@
3
3
  * @param role 角色名称
4
4
  * @returns 是否拥有该角色
5
5
  */
6
- import { oauthStore } from '../OAuthStore';
6
+ import { oauthStore } from '../OAuthStore.js';
7
7
  export default function hasRole(role) {
8
8
  const user = oauthStore.getUser();
9
9
  if (!user || !user.roles) {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * 登录:跳转到授权页面
3
3
  */
4
- import { oauthStore } from '../OAuthStore';
4
+ import { oauthStore } from '../OAuthStore.js';
5
5
  export default function login() {
6
6
  const authorizeUrl = oauthStore.getAuthorizeUrl();
7
7
  if (authorizeUrl) {
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * 登出:调用后端登出接口,撤销会话
3
3
  */
4
- import { oauthStore } from '../OAuthStore';
5
- import { axiosInstance } from '../axiosInstance';
4
+ import { oauthStore } from '../OAuthStore.js';
5
+ import { axiosInstance } from '../axiosInstance.js';
6
6
  export default async function logout() {
7
7
  try {
8
8
  await axiosInstance.post('/api/oauth/logout', {}, { withCredentials: true });
@@ -3,8 +3,8 @@
3
3
  * 通过刷新 access token 接口获取 endpoint、authorizeUrl 和用户信息
4
4
  * @param force 是否强制刷新,忽略缓存
5
5
  */
6
- import { oauthStore } from '../OAuthStore';
7
- import { axiosInstance } from '../axiosInstance';
6
+ import { oauthStore } from '../OAuthStore.js';
7
+ import { axiosInstance } from '../axiosInstance.js';
8
8
  const CACHE_TTL = 3600000; // 1小时,单位毫秒
9
9
  export default async function refreshToken(force = false) {
10
10
  // SSR 环境下不执行刷新
@@ -1 +1 @@
1
- {"version":3,"file":"axiosInstance.d.ts","sourceRoot":"","sources":["../../web/axiosInstance.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,aAAa,EAAkC,MAAM,OAAO,CAAA;AA4H5E,eAAO,MAAM,aAAa,eAAwB,CAAA"}
1
+ {"version":3,"file":"axiosInstance.d.ts","sourceRoot":"","sources":["../../web/axiosInstance.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,aAAa,EAAkC,MAAM,OAAO,CAAA;AA2G5E,eAAO,MAAM,aAAa,eAAwB,CAAA"}
@@ -3,7 +3,7 @@
3
3
  * 统一管理 HTTP 请求的拦截器和配置
4
4
  */
5
5
  import axios from 'axios';
6
- import { oauthStore } from './OAuthStore';
6
+ import { oauthStore } from './OAuthStore.js';
7
7
  /**
8
8
  * 创建 Axios 实例并配置拦截器
9
9
  */
@@ -25,16 +25,10 @@ function createAxiosInstance() {
25
25
  return Promise.reject(error);
26
26
  });
27
27
  /**
28
- * 响应拦截器:统一处理响应数据和错误
28
+ * 响应拦截器:仅处理网络层错误,不处理业务逻辑
29
29
  */
30
30
  instance.interceptors.response.use(response => {
31
- const data = response.data;
32
- if (data.code !== 'OK') {
33
- const error = new Error(data.message || '请求失败');
34
- error.code = data.code;
35
- return Promise.reject(error);
36
- }
37
- return data.data !== undefined ? data.data : true;
31
+ return response;
38
32
  }, async (error) => {
39
33
  const originalRequest = error.config;
40
34
  if (error.response?.status === 401 && originalRequest && !originalRequest._retry) {
@@ -78,15 +72,7 @@ function createAxiosInstance() {
78
72
  });
79
73
  }
80
74
  }
81
- if (error.response?.data) {
82
- const data = error.response.data;
83
- const err = new Error(data.message || error.message || '请求失败');
84
- err.code = data.code || 'REQUEST_FAILED';
85
- return Promise.reject(err);
86
- }
87
- const err = new Error(error.message || '网络错误');
88
- err.code = 'NETWORK_ERROR';
89
- return Promise.reject(err);
75
+ return Promise.reject(error);
90
76
  });
91
77
  return instance;
92
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../web/axiosInstance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../web/axiosInstance.ts"],"names":[],"mappings":"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"}
package/dist/web/index.js CHANGED
@@ -2,13 +2,13 @@
2
2
  * Sumor Framework - 轻呈云客户端 API
3
3
  */
4
4
  // 导出所有 API 函数
5
- export { default as refreshToken } from './api/refreshToken';
6
- export { default as login } from './api/login';
7
- export { default as logout } from './api/logout';
8
- export { default as hasPermission } from './api/hasPermission';
9
- export { default as hasRole } from './api/hasRole';
5
+ export { default as refreshToken } from './api/refreshToken.js';
6
+ export { default as login } from './api/login.js';
7
+ export { default as logout } from './api/logout.js';
8
+ export { default as hasPermission } from './api/hasPermission.js';
9
+ export { default as hasRole } from './api/hasRole.js';
10
10
  // 导出其他工具
11
- export { oauthUrl } from './UrlHelper';
12
- export { oauthStore } from './OAuthStore';
13
- export { axiosInstance as axios } from './axiosInstance';
11
+ export { oauthUrl } from './UrlHelper.js';
12
+ export { oauthStore } from './OAuthStore.js';
13
+ export { axiosInstance as axios } from './axiosInstance.js';
14
14
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sumor",
3
- "version": "3.1.7",
3
+ "version": "3.2.0",
4
4
  "description": "Sumor OAuth framework",
5
5
  "main": "dist/server/index.js",
6
6
  "types": "dist/server/index.d.ts",
@@ -27,8 +27,8 @@
27
27
  "scripts": {
28
28
  "init": "npm install",
29
29
  "build": "npm run build:server && npm run build:web",
30
- "build:server": "tsc -p tsconfig.server.json && tsc-alias -p tsconfig.server.json",
31
- "build:web": "tsc -p tsconfig.web.json && tsc-alias -p tsconfig.web.json",
30
+ "build:server": "tsc -p tsconfig.server.json && tsc-alias -p tsconfig.server.json && node scripts/add-extensions.js",
31
+ "build:web": "tsc -p tsconfig.web.json && tsc-alias -p tsconfig.web.json && node scripts/add-extensions.js",
32
32
  "clean": "rm -rf dist",
33
33
  "prebuild": "npm run clean",
34
34
  "type-check": "tsc --noEmit",