@das-fed/utils 7.1.0-dev.3 → 7.1.0-dev.31

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.
Files changed (72) hide show
  1. package/api-services/index.js +994 -958
  2. package/api-services/index.js.gz +0 -0
  3. package/api-services/modules/app-manage/index.js +487 -470
  4. package/api-services/modules/app-manage/index.js.gz +0 -0
  5. package/api-services/modules/authentication/index.js +487 -470
  6. package/api-services/modules/authentication/index.js.gz +0 -0
  7. package/api-services/modules/bems/index.js +486 -469
  8. package/api-services/modules/bems/index.js.gz +0 -0
  9. package/api-services/modules/contract/index.js +753 -718
  10. package/api-services/modules/contract/index.js.gz +0 -0
  11. package/api-services/modules/duty-manage/index.js +856 -857
  12. package/api-services/modules/duty-manage/index.js.gz +0 -0
  13. package/api-services/modules/enterpriseright/index.js +487 -470
  14. package/api-services/modules/enterpriseright/index.js.gz +0 -0
  15. package/api-services/modules/file/index.js +844 -809
  16. package/api-services/modules/file/index.js.gz +0 -0
  17. package/api-services/modules/gateway-edge/index.js +487 -470
  18. package/api-services/modules/gateway-edge/index.js.gz +0 -0
  19. package/api-services/modules/index.js +863 -845
  20. package/api-services/modules/index.js.gz +0 -0
  21. package/api-services/modules/iot/index.js +1001 -966
  22. package/api-services/modules/iot/index.js.gz +0 -0
  23. package/api-services/modules/justauth/index.d.ts +1 -1
  24. package/api-services/modules/justauth/index.js +757 -721
  25. package/api-services/modules/justauth/index.js.gz +0 -0
  26. package/api-services/modules/knowledge/index.js +487 -470
  27. package/api-services/modules/knowledge/index.js.gz +0 -0
  28. package/api-services/modules/link/index.js +487 -470
  29. package/api-services/modules/link/index.js.gz +0 -0
  30. package/api-services/modules/permission/index.js +851 -852
  31. package/api-services/modules/permission/index.js.gz +0 -0
  32. package/api-services/modules/platformManage/index.js +753 -718
  33. package/api-services/modules/platformManage/index.js.gz +0 -0
  34. package/api-services/modules/portal/index.js +487 -470
  35. package/api-services/modules/portal/index.js.gz +0 -0
  36. package/api-services/modules/space-manage/index.js +487 -470
  37. package/api-services/modules/space-manage/index.js.gz +0 -0
  38. package/api-services/modules/super-admin/index.js +757 -722
  39. package/api-services/modules/super-admin/index.js.gz +0 -0
  40. package/api-services/modules/supplier/index.js +757 -722
  41. package/api-services/modules/supplier/index.js.gz +0 -0
  42. package/api-services/modules/supplychain-manage/index.js +753 -718
  43. package/api-services/modules/supplychain-manage/index.js.gz +0 -0
  44. package/api-services/modules/systemConfiguration/index.js +487 -470
  45. package/api-services/modules/systemConfiguration/index.js.gz +0 -0
  46. package/api-services/modules/tool/index.js +487 -470
  47. package/api-services/modules/tool/index.js.gz +0 -0
  48. package/api-services/src/create-service/index.js +728 -693
  49. package/api-services/src/create-service/index.js.gz +0 -0
  50. package/common-info/index.d.ts +1 -1
  51. package/common-tools/platform-tools/index.d.ts +7 -2
  52. package/common-tools/platform-tools/index.js +27 -15
  53. package/common-tools/platform-tools/index.js.gz +0 -0
  54. package/create-api-service/index.js +850 -851
  55. package/create-api-service/index.js.gz +0 -0
  56. package/create-api-service/sso/authorizer.d.ts +1 -0
  57. package/create-api-service/sso/index.d.ts +13 -17
  58. package/create-api-service/sso/index.js +892 -784
  59. package/create-api-service/sso/index.js.gz +0 -0
  60. package/create-api-service/sso/utils.d.ts +8 -0
  61. package/create-api-service/thirdLogout/index.js +1857 -0
  62. package/create-api-service/thirdLogout/index.js.gz +0 -0
  63. package/create-api-service/thirdLogout/sso/utils.d.ts +8 -0
  64. package/create-api-service/thirdLogout/thirdLogout/index.d.ts +19 -0
  65. package/create-api-service/unauthorized-recovery/index.d.ts +36 -0
  66. package/create-api-service/unauthorized-recovery/index.js +16 -0
  67. package/curring-http/type.d.ts +6 -0
  68. package/esm-map.json +12 -1
  69. package/package.json +4 -4
  70. package/token-tools/index.d.ts +37 -1
  71. package/token-tools/index.js +59 -25
  72. package/token-tools/index.js.gz +0 -0
@@ -0,0 +1,8 @@
1
+ export declare const getQuery: (name: string) => any;
2
+ /**
3
+ * 获取当前登录类型。
4
+ * 优先读取 URL 参数并同步到 localStorage,避免首屏 401 早于路由监听时读不到 loginType。
5
+ * @returns 当前登录类型
6
+ */
7
+ export declare const getLoginType: () => any;
8
+ export declare const removeQueryParams: (paramsToRemove: any[]) => void;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * 判断当前是否使用需要定制退出流程的第三方登录。
3
+ * @returns 是否需要执行第三方退出
4
+ */
5
+ export declare const isThirdLogin: () => any;
6
+ /**
7
+ * 执行中深项目的第三方退出登录。
8
+ * @param redirctToUrl 平台退出完成后的回调地址
9
+ */
10
+ export declare const zhongshenLogout: (redirctToUrl: string) => void;
11
+ /**
12
+ * 执行江铃汽车项目的第三方退出登录。
13
+ */
14
+ export declare const jmcLogout: () => any;
15
+ /**
16
+ * 根据第三方登录来源调用对应的退出方法。
17
+ * @param redirctToUrl 平台退出地址
18
+ */
19
+ export declare const thirdLogout: (redirctToUrl?: string) => any;
@@ -0,0 +1,36 @@
1
+ import { CurringConfig } from '../../curring-http/type';
2
+
3
+ /** 401 恢复成功后的结果。 */
4
+ export interface UnauthorizedRecoveryResult {
5
+ /** 恢复后用于重试原请求的平台访问令牌。 */
6
+ accessToken: string;
7
+ }
8
+ /** 401 恢复处理器接收的上下文。 */
9
+ export interface UnauthorizedRecoveryContext {
10
+ /** Axios 返回的原始错误。 */
11
+ error: any;
12
+ /** 发生 401 的原始请求配置。 */
13
+ config: CurringConfig;
14
+ }
15
+ /** 项目可注册的 401 恢复处理器。 */
16
+ export type UnauthorizedRecoveryHandler = (context: UnauthorizedRecoveryContext) => Promise<UnauthorizedRecoveryResult | null>;
17
+ /**
18
+ * 判断当前是否已经注册项目级 401 恢复处理器。
19
+ * 框架默认刷新返回 401 后据此判断是否交由项目恢复,避免直接触发退出登录。
20
+ * @returns 是否存在项目级恢复处理器
21
+ */
22
+ export declare const hasUnauthorizedRecovery: () => boolean;
23
+ /**
24
+ * 注册项目自定义的 401 恢复处理器。
25
+ * 后注册的处理器会覆盖之前的处理器,避免不同项目逻辑同时接管认证流程。
26
+ * @param handler 项目自定义恢复处理器
27
+ * @returns 注销当前处理器的方法
28
+ */
29
+ export declare const registerUnauthorizedRecovery: (handler: UnauthorizedRecoveryHandler) => () => void;
30
+ /**
31
+ * 尝试恢复 401 请求。
32
+ * 并发 401 共用同一个恢复任务,避免短时间内重复续签 Token。
33
+ * @param context 401 请求上下文
34
+ * @returns 恢复成功后的新 Token;无法恢复时返回 null
35
+ */
36
+ export declare const recoverUnauthorized: (context: UnauthorizedRecoveryContext) => unknown;
@@ -0,0 +1,16 @@
1
+ const n = Symbol.for("@das-fed/utils/unauthorized-recovery-state"), o = () => {
2
+ const r = globalThis;
3
+ return r[n] || (r[n] = {
4
+ handler: null,
5
+ promise: null
6
+ }), r[n];
7
+ }, e = o(), l = () => e.handler !== null, t = (r) => (e.handler = r, () => {
8
+ e.handler === r && (e.handler = null);
9
+ }), s = async (r) => e.handler ? (e.promise || (e.promise = Promise.resolve(e.handler(r)).finally(() => {
10
+ e.promise = null;
11
+ })), e.promise) : null;
12
+ export {
13
+ l as hasUnauthorizedRecovery,
14
+ s as recoverUnauthorized,
15
+ t as registerUnauthorizedRecovery
16
+ };
@@ -52,6 +52,12 @@ export type CurringConfig = AxiosRequestConfig & {
52
52
  /** 接口401是否重定向到登录页 */
53
53
  noRedireLogin?: boolean
54
54
 
55
+ /** 是否跳过项目注册的401恢复逻辑 */
56
+ skipUnauthorizedRecovery?: boolean
57
+
58
+ /** 标记当前请求已完成一次401恢复重试,防止重复续签 */
59
+ _unauthorizedRecoveryRetried?: boolean
60
+
55
61
  /** 开启CSRF安全选项 */
56
62
  csrf?: boolean
57
63
  }
package/esm-map.json CHANGED
@@ -124,6 +124,7 @@
124
124
  "getTokenParams": "/create-api-service/sso/index",
125
125
  "getTokenFromCode": "/create-api-service/sso/index",
126
126
  "real_uri": "/create-api-service/sso/index",
127
+ "getLoginType": "/create-api-service/sso/index",
127
128
  "getQuery": "/create-api-service/sso/index",
128
129
  "tokenStorage": "/create-api-service/sso/index",
129
130
  "login": "/create-api-service/sso/index",
@@ -143,5 +144,15 @@
143
144
  "calcTextWidth": "/common-tools/calc-text-width/index",
144
145
  "getFileExtension": "/common-tools/get-file-extension/index",
145
146
  "getLanguages": "/common-info/index",
146
- "appendQueryParams": "/common-tools/get-url-params/index"
147
+ "appendQueryParams": "/common-tools/get-url-params/index",
148
+ "refreshToken": "/create-api-service/sso/index",
149
+ "isThirdLogin": "/create-api-service/thirdLogout/index",
150
+ "thirdLogout": "/create-api-service/thirdLogout/index",
151
+ "oauthClient": "/api-services/modules/justauth/index",
152
+ "zhongshenLogout": "/create-api-service/thirdLogout/index",
153
+ "jmcLogout": "/create-api-service/thirdLogout/index",
154
+ "registerUnauthorizedRecovery": "/create-api-service/unauthorized-recovery/index",
155
+ "recoverUnauthorized": "/create-api-service/unauthorized-recovery/index",
156
+ "hasUnauthorizedRecovery": "/create-api-service/unauthorized-recovery/index",
157
+ "clearPlatformAuthStorage": "/token-tools/index"
147
158
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@das-fed/utils",
3
- "version": "7.1.0-dev.3",
3
+ "version": "7.1.0-dev.31",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "./index.js",
@@ -9,7 +9,7 @@
9
9
  "license": "ISC",
10
10
  "dependencies": {
11
11
  "@antv/x6": "^2.18.1",
12
- "@das-fed/utils": "7.1.0-dev.3",
12
+ "@das-fed/utils": "7.1.0-dev.31",
13
13
  "@vue/shared": "^3.4.21",
14
14
  "@vueuse/core": "^9.6.0",
15
15
  "axios": "^1.6.7",
@@ -21,8 +21,8 @@
21
21
  "vue": "^3.4.21"
22
22
  },
23
23
  "devDependencies": {
24
- "@das-fed/cli": "7.1.0-dev.3",
25
- "@das-fed/web": "7.1.0-dev.3",
24
+ "@das-fed/cli": "7.1.0-dev.31",
25
+ "@das-fed/web": "7.1.0-dev.31",
26
26
  "@types/js-cookie": "^3.0.6",
27
27
  "@types/lodash-es": "^4.17.12",
28
28
  "@types/qs": "^6.9.15",
@@ -10,7 +10,8 @@ export declare const getAccessToken: () => string;
10
10
  /**
11
11
  * 获取tokenInfo相关信息
12
12
  */
13
- export declare const getAccessTokenInfo: (key: typeof accessTokenExpiredAtKey | typeof refreshTokenKey | typeof redirectUriKey | typeof accessTokenInfoKey) => any;
13
+ type TokenInfoKey = typeof accessTokenExpiredAtKey | typeof refreshTokenKey | typeof redirectUriKey | typeof accessTokenInfoKey;
14
+ export declare const getAccessTokenInfo: (key: TokenInfoKey) => any;
14
15
  /**
15
16
  * 存入token、tokenInfo
16
17
  * @param token
@@ -18,4 +19,39 @@ export declare const getAccessTokenInfo: (key: typeof accessTokenExpiredAtKey |
18
19
  */
19
20
  export declare const setAccessToken: (token: string, info?: any) => void;
20
21
  export declare const removeAccessToken: () => void;
22
+ /**
23
+ * 获取、保存和清理平台 token 相关数据。
24
+ * 统一放在 token-tools 中,便于 SSO 与业务模块复用同一套 token 存储规则。
25
+ * @returns token 存储操作集合
26
+ */
27
+ export declare const tokenStorage: () => {
28
+ /**
29
+ * 获取当前平台 token 数据。
30
+ * @returns token、过期时间和 refresh token
31
+ */
32
+ getData: () => {
33
+ accessToken: string;
34
+ accessTokenExpiredAt: any;
35
+ refreshToken: any;
36
+ };
37
+ /**
38
+ * 保存平台 token 数据。
39
+ * @param data token 信息
40
+ */
41
+ save: (data: {
42
+ accessToken: string | null;
43
+ accessTokenExpiredAt: number;
44
+ refreshToken: string | null;
45
+ info: any;
46
+ }) => void;
47
+ /**
48
+ * 清理平台 token 数据。
49
+ */
50
+ remove: () => void;
51
+ };
52
+ /**
53
+ * 清理平台退出相关的本地认证数据。
54
+ * 统一封装退出清理动作,避免各退出入口遗漏 idelTime、sessionStorage 或流程引擎 token。
55
+ */
56
+ export declare const clearPlatformAuthStorage: () => void;
21
57
  export {};
@@ -1,13 +1,14 @@
1
+ import { removeProcessEngineToken as I, setProcessEngineToken as h } from "@das-fed/utils/process-engine-info";
1
2
  /*! js-cookie v3.0.5 | MIT */
2
3
  function l(e) {
3
- for (var t = 1; t < arguments.length; t++) {
4
- var n = arguments[t];
5
- for (var g in n)
6
- e[g] = n[g];
4
+ for (var n = 1; n < arguments.length; n++) {
5
+ var t = arguments[n];
6
+ for (var g in t)
7
+ e[g] = t[g];
7
8
  }
8
9
  return e;
9
10
  }
10
- var k = {
11
+ var S = {
11
12
  read: function(e) {
12
13
  return e[0] === '"' && (e = e.slice(1, -1)), e.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent);
13
14
  },
@@ -18,10 +19,10 @@ var k = {
18
19
  );
19
20
  }
20
21
  };
21
- function d(e, t) {
22
- function n(r, i, o) {
22
+ function m(e, n) {
23
+ function t(r, i, o) {
23
24
  if (!(typeof document > "u")) {
24
- o = l({}, t, o), typeof o.expires == "number" && (o.expires = new Date(Date.now() + o.expires * 864e5)), o.expires && (o.expires = o.expires.toUTCString()), r = encodeURIComponent(r).replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent).replace(/[()]/g, escape);
25
+ o = l({}, n, o), typeof o.expires == "number" && (o.expires = new Date(Date.now() + o.expires * 864e5)), o.expires && (o.expires = o.expires.toUTCString()), r = encodeURIComponent(r).replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent).replace(/[()]/g, escape);
25
26
  var c = "";
26
27
  for (var s in o)
27
28
  o[s] && (c += "; " + s, o[s] !== !0 && (c += "=" + o[s].split(";")[0]));
@@ -31,10 +32,10 @@ function d(e, t) {
31
32
  function g(r) {
32
33
  if (!(typeof document > "u" || arguments.length && !r)) {
33
34
  for (var i = document.cookie ? document.cookie.split("; ") : [], o = {}, c = 0; c < i.length; c++) {
34
- var s = i[c].split("="), I = s.slice(1).join("=");
35
+ var s = i[c].split("="), u = s.slice(1).join("=");
35
36
  try {
36
37
  var f = decodeURIComponent(s[0]);
37
- if (o[f] = e.read(I, f), r === f)
38
+ if (o[f] = e.read(u, f), r === f)
38
39
  break;
39
40
  } catch {
40
41
  }
@@ -44,10 +45,10 @@ function d(e, t) {
44
45
  }
45
46
  return Object.create(
46
47
  {
47
- set: n,
48
+ set: t,
48
49
  get: g,
49
50
  remove: function(r, i) {
50
- n(
51
+ t(
51
52
  r,
52
53
  "",
53
54
  l({}, i, {
@@ -56,28 +57,61 @@ function d(e, t) {
56
57
  );
57
58
  },
58
59
  withAttributes: function(r) {
59
- return d(this.converter, l({}, this.attributes, r));
60
+ return m(this.converter, l({}, this.attributes, r));
60
61
  },
61
62
  withConverter: function(r) {
62
- return d(l({}, this.converter, r), this.attributes);
63
+ return m(l({}, this.converter, r), this.attributes);
63
64
  }
64
65
  },
65
66
  {
66
- attributes: { value: Object.freeze(t) },
67
+ attributes: { value: Object.freeze(n) },
67
68
  converter: { value: Object.freeze(e) }
68
69
  }
69
70
  );
70
71
  }
71
- var p = d(k, { path: "/" });
72
- const a = "accessToken", m = "accessTokenExpiredAt", v = "refreshToken", u = "redirectUri", S = "csrf-token", h = () => localStorage.getItem(a) ?? p.get(a) ?? sessionStorage.getItem(a) ?? "", C = (e) => localStorage.getItem(e) ?? p.get(e) ?? sessionStorage.getItem(e) ?? "", x = (e, t = {}) => {
73
- var n;
74
- (n = window.webConfig) != null && n.disableSaveToken || (localStorage.setItem(a, e), localStorage.setItem(m, t.accessTokenExpiredAt ?? "0"), localStorage.setItem(v, t.refreshToken ?? ""), t.redirectUri && localStorage.setItem(u, t.redirectUri));
75
- }, U = () => {
76
- localStorage.removeItem(a), localStorage.removeItem(m), localStorage.removeItem(v), localStorage.removeItem(u), localStorage.removeItem(S);
72
+ var d = m(S, { path: "/" });
73
+ const a = "accessToken", k = "accessTokenExpiredAt", T = "refreshToken", v = "redirectUri", x = "csrf-token", A = () => localStorage.getItem(a) ?? d.get(a) ?? sessionStorage.getItem(a) ?? "", p = (e) => localStorage.getItem(e) ?? d.get(e) ?? sessionStorage.getItem(e) ?? "", C = (e, n = {}) => {
74
+ var t;
75
+ (t = window.webConfig) != null && t.disableSaveToken || (localStorage.setItem(a, e), localStorage.setItem(k, n.accessTokenExpiredAt ?? 0), localStorage.setItem(T, n.refreshToken ?? 0), n.redirectUri && localStorage.setItem(v, n.redirectUri));
76
+ }, E = () => {
77
+ localStorage.removeItem(a), localStorage.removeItem(k), localStorage.removeItem(T), localStorage.removeItem(v), localStorage.removeItem(x);
78
+ }, U = () => ({
79
+ /**
80
+ * 获取当前平台 token 数据。
81
+ * @returns token、过期时间和 refresh token
82
+ */
83
+ getData: () => {
84
+ const e = p("accessTokenExpiredAt");
85
+ return {
86
+ accessToken: A(),
87
+ accessTokenExpiredAt: e ? Number(e) : 0,
88
+ refreshToken: p("refreshToken")
89
+ };
90
+ },
91
+ /**
92
+ * 保存平台 token 数据。
93
+ * @param data token 信息
94
+ */
95
+ save: (e) => {
96
+ C(e.accessToken ?? "", {
97
+ accessTokenExpiredAt: e.accessTokenExpiredAt,
98
+ refreshToken: e.refreshToken
99
+ }), h(e);
100
+ },
101
+ /**
102
+ * 清理平台 token 数据。
103
+ */
104
+ remove: () => {
105
+ E(), I();
106
+ }
107
+ }), R = () => {
108
+ localStorage.removeItem("idelTime"), sessionStorage.clear(), U().remove();
77
109
  };
78
110
  export {
79
- h as getAccessToken,
80
- C as getAccessTokenInfo,
81
- U as removeAccessToken,
82
- x as setAccessToken
111
+ R as clearPlatformAuthStorage,
112
+ A as getAccessToken,
113
+ p as getAccessTokenInfo,
114
+ E as removeAccessToken,
115
+ C as setAccessToken,
116
+ U as tokenStorage
83
117
  };
Binary file