@das-fed/utils 7.1.0-dev.30 → 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.
@@ -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;
@@ -2,7 +2,7 @@
2
2
  * 判断当前是否使用需要定制退出流程的第三方登录。
3
3
  * @returns 是否需要执行第三方退出
4
4
  */
5
- export declare const isThirdLogin: () => boolean;
5
+ export declare const isThirdLogin: () => any;
6
6
  /**
7
7
  * 执行中深项目的第三方退出登录。
8
8
  * @param redirctToUrl 平台退出完成后的回调地址
@@ -1,95 +1,95 @@
1
1
  import { AxiosInstance, AxiosRequestConfig, AxiosError } from 'axios';
2
2
  import { Ref } from 'vue';
3
-
4
-
5
- /** 请求工具配置项 */
6
- export type CurringConfig = AxiosRequestConfig & {
7
- /** 请求实例 */
8
- axiosInstance?: AxiosInstance
9
-
10
- /** 请求方法 */
11
- method?: Method
12
-
13
- /** 请求的body数据 */
14
- data?: any
15
-
16
- /** 请求的query数据 */
17
- params?: any
18
-
19
- /** 接口地址前缀 */
20
- urlPrefix?: string
21
-
22
- /** 标记为公共接口,不需要鉴权,默认为false */
23
- public?: boolean
24
-
25
- /** 请求成功执行的回调 */
26
- onSuccess?: (res: any, config: CurringConfig) => Promise<any>
27
-
28
- /** 请求失败执行的回调 */
29
- onError?: (error: any, config: CurringConfig) => Promise<any>
30
-
31
- /** 自定义处理请求失败执行的回调 */
32
- onCustomError?: (error: any, config: CurringConfig) => Promise<any>
33
-
34
- /** 不管请求成功或失败都会执行的回调 */
35
- finally?: (config: CurringConfig) => any
36
-
37
- /** 每次请求之前都会执行的函数 */
38
- beforeRun?: (config: CurringConfig) => Promise<CurringConfig>
39
-
40
- /** 自定义错误信息 */
41
- customErrorMessage?: (
42
- /** 原始错误信息 */
43
- message: string,
44
-
45
- /** 原始错误对象 */
46
- error: any,
47
- ) => string | null | undefined
48
-
49
- /** 忽略错误提示 */
50
- ignoreErrorMessage?: boolean
51
-
52
- /** 接口401是否重定向到登录页 */
53
- noRedireLogin?: boolean
54
-
55
- /** 是否跳过项目注册的401恢复逻辑 */
56
- skipUnauthorizedRecovery?: boolean
57
-
58
- /** 标记当前请求已完成一次401恢复重试,防止重复续签 */
59
- _unauthorizedRecoveryRetried?: boolean
60
-
61
- /** 开启CSRF安全选项 */
62
- csrf?: boolean
63
- }
64
-
65
- export type Method = 'get' | 'post' | 'put' | 'delete' | 'patch'
66
-
67
- export type CurringConfigFun = (config: CurringConfig) => CurringConfig | Promise<CurringConfig>
68
-
69
- export type CurringRes = {
70
- /** 请求时返回的接口数据 */
71
- data: Ref<any>
72
-
73
- /** 请求时的错误信息 */
74
- error: Ref<any>
75
-
76
- /** 请求时的loading */
77
- loading: Ref<boolean>
78
-
79
- /** 发起请求 返回格式 [ error, data ] */
80
- run: (payload?: any, config?: CurringConfig) => CurringRunRes
81
-
82
- /** 取消请求控制器 */
83
- abortController: Ref<AbortController | null>
84
- }
85
-
86
- /** 返回为数组 [error, data], 请求成功error为null,请求失败data为null */
87
- export type CurringRunRes = Promise<
88
- [
89
- /** 请求返回的错误信息,请求成功时为null,请求失败时为错误信息 */
90
- error: { code: string | number; msg: string; error: AxiosError } | null,
91
-
92
- /** 请求返回的接口数据,请求成功时为后端数据,请求失败时为null */
93
- data: any | null,
94
- ]
95
- >
3
+
4
+
5
+ /** 请求工具配置项 */
6
+ export type CurringConfig = AxiosRequestConfig & {
7
+ /** 请求实例 */
8
+ axiosInstance?: AxiosInstance
9
+
10
+ /** 请求方法 */
11
+ method?: Method
12
+
13
+ /** 请求的body数据 */
14
+ data?: any
15
+
16
+ /** 请求的query数据 */
17
+ params?: any
18
+
19
+ /** 接口地址前缀 */
20
+ urlPrefix?: string
21
+
22
+ /** 标记为公共接口,不需要鉴权,默认为false */
23
+ public?: boolean
24
+
25
+ /** 请求成功执行的回调 */
26
+ onSuccess?: (res: any, config: CurringConfig) => Promise<any>
27
+
28
+ /** 请求失败执行的回调 */
29
+ onError?: (error: any, config: CurringConfig) => Promise<any>
30
+
31
+ /** 自定义处理请求失败执行的回调 */
32
+ onCustomError?: (error: any, config: CurringConfig) => Promise<any>
33
+
34
+ /** 不管请求成功或失败都会执行的回调 */
35
+ finally?: (config: CurringConfig) => any
36
+
37
+ /** 每次请求之前都会执行的函数 */
38
+ beforeRun?: (config: CurringConfig) => Promise<CurringConfig>
39
+
40
+ /** 自定义错误信息 */
41
+ customErrorMessage?: (
42
+ /** 原始错误信息 */
43
+ message: string,
44
+
45
+ /** 原始错误对象 */
46
+ error: any,
47
+ ) => string | null | undefined
48
+
49
+ /** 忽略错误提示 */
50
+ ignoreErrorMessage?: boolean
51
+
52
+ /** 接口401是否重定向到登录页 */
53
+ noRedireLogin?: boolean
54
+
55
+ /** 是否跳过项目注册的401恢复逻辑 */
56
+ skipUnauthorizedRecovery?: boolean
57
+
58
+ /** 标记当前请求已完成一次401恢复重试,防止重复续签 */
59
+ _unauthorizedRecoveryRetried?: boolean
60
+
61
+ /** 开启CSRF安全选项 */
62
+ csrf?: boolean
63
+ }
64
+
65
+ export type Method = 'get' | 'post' | 'put' | 'delete' | 'patch'
66
+
67
+ export type CurringConfigFun = (config: CurringConfig) => CurringConfig | Promise<CurringConfig>
68
+
69
+ export type CurringRes = {
70
+ /** 请求时返回的接口数据 */
71
+ data: Ref<any>
72
+
73
+ /** 请求时的错误信息 */
74
+ error: Ref<any>
75
+
76
+ /** 请求时的loading */
77
+ loading: Ref<boolean>
78
+
79
+ /** 发起请求 返回格式 [ error, data ] */
80
+ run: (payload?: any, config?: CurringConfig) => CurringRunRes
81
+
82
+ /** 取消请求控制器 */
83
+ abortController: Ref<AbortController | null>
84
+ }
85
+
86
+ /** 返回为数组 [error, data], 请求成功error为null,请求失败data为null */
87
+ export type CurringRunRes = Promise<
88
+ [
89
+ /** 请求返回的错误信息,请求成功时为null,请求失败时为错误信息 */
90
+ error: { code: string | number; msg: string; error: AxiosError } | null,
91
+
92
+ /** 请求返回的接口数据,请求成功时为后端数据,请求失败时为null */
93
+ data: any | null,
94
+ ]
95
+ >
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",
@@ -152,5 +153,6 @@
152
153
  "jmcLogout": "/create-api-service/thirdLogout/index",
153
154
  "registerUnauthorizedRecovery": "/create-api-service/unauthorized-recovery/index",
154
155
  "recoverUnauthorized": "/create-api-service/unauthorized-recovery/index",
155
- "hasUnauthorizedRecovery": "/create-api-service/unauthorized-recovery/index"
156
+ "hasUnauthorizedRecovery": "/create-api-service/unauthorized-recovery/index",
157
+ "clearPlatformAuthStorage": "/token-tools/index"
156
158
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@das-fed/utils",
3
- "version": "7.1.0-dev.30",
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.30",
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.30",
25
- "@das-fed/web": "7.1.0-dev.30",
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",
@@ -19,4 +19,39 @@ export declare const getAccessTokenInfo: (key: TokenInfoKey) => any;
19
19
  */
20
20
  export declare const setAccessToken: (token: string, info?: any) => void;
21
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;
22
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 ?? 0), 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