v3-utils-lib 1.0.0 → 1.0.2

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,208 @@
1
+ import { reactive as e } from "vue";
2
+ import t from "axios";
3
+ //#region \0rolldown/runtime.js
4
+ var n = Object.defineProperty, r = (e, t) => {
5
+ let r = {};
6
+ for (var i in e) n(r, i, {
7
+ get: e[i],
8
+ enumerable: !0
9
+ });
10
+ return t || n(r, Symbol.toStringTag, { value: "Module" }), r;
11
+ }, i = null, a = 0;
12
+ function o(e = "加载中...") {
13
+ if (a++, i) {
14
+ i.style.display = "flex", i.querySelector(".load-text").innerText = e;
15
+ return;
16
+ }
17
+ let t = document.createElement("div");
18
+ t.id = "global-loading-mask", t.innerHTML = `
19
+ <div class="load-box">
20
+ <div class="load-spinner"></div>
21
+ <div class="load-text">${e}</div>
22
+ </div>
23
+ `, t.style.cssText = "\n position: fixed; top: 0; left: 0; right: 0; bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex; align-items: center; justify-content: center;\n z-index: 99999; color: #fff;\n user-select: none;\n ";
24
+ let n = t.querySelector(".load-box");
25
+ n.style.cssText = "\n display: flex; flex-direction: column; align-items: center; gap: 12px;\n ";
26
+ let r = t.querySelector(".load-spinner");
27
+ r.style.cssText = "\n width: 36px; height: 36px;\n border: 3px solid rgba(255,255,255,.3);\n border-top: 3px solid #fff;\n border-radius: 50%;\n animation: spin 0.8s linear infinite;\n ";
28
+ let o = t.querySelector(".load-text");
29
+ o.style.cssText = "\n font-size: 14px; text-shadow: 0 1px 2px rgba(0,0,0,.2);\n ";
30
+ let s = document.createElement("style");
31
+ s.innerHTML = "@keyframes spin { to { transform: rotate(360deg); } }", document.head.appendChild(s), document.body.appendChild(t), i = t;
32
+ }
33
+ function s() {
34
+ a--, a <= 0 && (a = 0, i && (i.style.display = "none"));
35
+ }
36
+ function c() {
37
+ a = 0, i && (i.style.display = "none");
38
+ }
39
+ //#endregion
40
+ //#region src/Page.js
41
+ function l(t) {
42
+ let n = e({
43
+ pageNum: 1,
44
+ pageSize: 10,
45
+ total: 0
46
+ });
47
+ return {
48
+ pageInfo: n,
49
+ PageIndexChange: (e) => {
50
+ if (e !== n.pageNum) return n.pageNum = e, t();
51
+ },
52
+ SizeChange: (e) => {
53
+ if (e !== n.pageSize) return n.pageSize = e, t();
54
+ },
55
+ ResetPage: () => (n.pageNum = 1, t())
56
+ };
57
+ }
58
+ //#endregion
59
+ //#region src/generateRoutes.js
60
+ var u = {};
61
+ function d(e, t) {
62
+ try {
63
+ let n = (/* @__PURE__ */ Error()).stack.split("\n"), r = (n[3] || n[2]).match(/(\/src\/.*?\.js)/), i = r ? r[1] : "unknown";
64
+ setTimeout(() => {
65
+ u[i] = {
66
+ options: e,
67
+ meta: t
68
+ };
69
+ }, 0);
70
+ } catch {}
71
+ }
72
+ function f(e) {
73
+ let t = /* @__PURE__ */ Object.assign({ "/src/index.js": S }), n = [];
74
+ for (let r in t) {
75
+ if (!r.startsWith(e)) continue;
76
+ let i = t[r].component, a = u[r] || {};
77
+ if (!i) continue;
78
+ let o = r.replace(e, "").replace("/index.js", "").replace(/\[(\w+)\]/g, ":$1");
79
+ o === "" && (o = "/");
80
+ let s = o.split("/").filter(Boolean).map((e) => e[0].toUpperCase() + e.slice(1)).join("");
81
+ n.push({
82
+ filePath: r,
83
+ path: o,
84
+ name: s,
85
+ component: i,
86
+ ...a.options,
87
+ meta: a.meta || {},
88
+ children: []
89
+ });
90
+ }
91
+ function r(t, n = "") {
92
+ return t.filter((t) => {
93
+ if (!t.filePath) return !1;
94
+ let r = t.filePath.replace("/index.js", ""), i = `${e}${n}`;
95
+ return RegExp(`^${i}\\/[^\\/]+$`).test(r);
96
+ }).map((e) => {
97
+ let i = { ...e };
98
+ if (n !== "") {
99
+ let e = i.path.split("/");
100
+ i.path = e[e.length - 1];
101
+ } else i.path.startsWith("/") || (i.path = "/" + i.path);
102
+ i.children = r(t, i.path), i.children?.length || delete i.children;
103
+ let { filePath: a, ...o } = i;
104
+ return o;
105
+ });
106
+ }
107
+ return r(n);
108
+ }
109
+ //#endregion
110
+ //#region src/request.js
111
+ var p = null, m = "/api", h = 1e4, g = null;
112
+ function _(e = {}) {
113
+ e.refreshTokenApi && (p = e.refreshTokenApi), e.baseURL && (m = e.baseURL), e.timeout && (h = e.timeout), e.errorHandler && (g = e.errorHandler);
114
+ }
115
+ var v = t.create({
116
+ baseURL: m,
117
+ timeout: h
118
+ }), y = !1, b = [];
119
+ v.interceptors.request.use((e) => {
120
+ let { needToken: t } = e;
121
+ if (t) {
122
+ let t = sessionStorage.getItem("loginInfo");
123
+ if (!t) return Promise.reject({ response: {
124
+ status: 401,
125
+ data: { message: "未登录,请先登录" }
126
+ } });
127
+ let n = JSON.parse(t).accessToken;
128
+ n && (e.headers.Authorization = n);
129
+ }
130
+ return e;
131
+ }, (e) => Promise.reject(e)), v.interceptors.response.use((e) => {
132
+ let { code: t, msg: n } = e.data;
133
+ return t != 200 && (g || console.error)(n || "请求失败"), e.data;
134
+ }, async (e) => {
135
+ let t = e.config;
136
+ if (e.response?.status === 401 && !t._retry) {
137
+ if (y) return new Promise((e) => {
138
+ b.push((n) => {
139
+ t.headers.Authorization = n, e(v(t));
140
+ });
141
+ });
142
+ t._retry = !0, y = !0;
143
+ try {
144
+ let e = JSON.parse(sessionStorage.getItem("loginInfo")), n = e?.refreshToken;
145
+ if (!n) throw Error("refreshToken 不存在");
146
+ if (!p) throw Error("未配置 refreshTokenApi");
147
+ let r = (await p({ refreshToken: n })).data.accessToken;
148
+ return e.accessToken = r, sessionStorage.setItem("loginInfo", JSON.stringify(e)), b.forEach((e) => e(r)), b = [], t.headers.Authorization = r, v(t);
149
+ } catch (e) {
150
+ return sessionStorage.clear(), window.location.href = "/login", Promise.reject(e);
151
+ } finally {
152
+ y = !1;
153
+ }
154
+ }
155
+ let n = e?.response?.data?.msg || "请求失败";
156
+ return g && g(n), Promise.reject(e);
157
+ });
158
+ //#endregion
159
+ //#region src/SuccessAjax.js
160
+ async function x(e, t = {}, n = {}) {
161
+ let r = {
162
+ method: "GET",
163
+ fullscreen: !0,
164
+ needToken: !0,
165
+ loadingText: "加载中...",
166
+ pageInfo: null,
167
+ isFormData: !1,
168
+ headers: {},
169
+ ...n
170
+ }, i = r.method.toUpperCase();
171
+ r.fullscreen && o(r.loadingText);
172
+ let a = {
173
+ ...r.headers,
174
+ needToken: String(r.needToken)
175
+ }, c = t;
176
+ r.pageInfo && (r.isFormData ? (c.append("pageNum", r.pageInfo.pageNum), c.append("pageSize", r.pageInfo.pageSize)) : c = {
177
+ ...t,
178
+ ...r.pageInfo
179
+ }), r.isFormData && delete a["Content-Type"];
180
+ let l = {
181
+ url: e,
182
+ method: i,
183
+ headers: a,
184
+ ...r
185
+ };
186
+ return i === "GET" || i === "DELETE" ? l.params = c : l.data = c, v(l).then((e) => {
187
+ let t = e.data ?? e;
188
+ return r.pageInfo && t.total && (r.pageInfo.total = t.total), t;
189
+ }).catch((e) => Promise.reject(e)).finally(() => {
190
+ r.fullscreen && s();
191
+ });
192
+ }
193
+ //#endregion
194
+ //#region src/index.js
195
+ var S = /* @__PURE__ */ r({
196
+ SuccessAjax: () => x,
197
+ configRequest: () => _,
198
+ forceHideLoadMask: () => c,
199
+ generateRoutes: () => f,
200
+ hideLoadMask: () => s,
201
+ page: () => l,
202
+ routeStore: () => u,
203
+ routerUtils: () => d,
204
+ service: () => v,
205
+ showLoadMask: () => o
206
+ });
207
+ //#endregion
208
+ export { x as SuccessAjax, _ as configRequest, c as forceHideLoadMask, f as generateRoutes, s as hideLoadMask, l as page, u as routeStore, d as routerUtils, v as service, o as showLoadMask };
package/package.json CHANGED
@@ -1,21 +1,18 @@
1
1
  {
2
2
  "name": "v3-utils-lib",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "前端工具函数库:路由生成、请求封装、分页、加载遮罩",
5
5
  "type": "module",
6
- "main": "./dist/utils-lib.cjs",
7
- "module": "./dist/utils-lib.js",
8
- "exports": {
9
- ".": "./dist/utils-lib.js",
10
- "./loadMask": "./dist/loadMask.js",
11
- "./Page": "./dist/Page.js",
12
- "./generateRoutes": "./dist/generateRoutes.js",
13
- "./request": "./dist/request.js",
14
- "./SuccessAjax": "./dist/SuccessAjax.js"
6
+ "main": "./dist/v3-utils-lib.js",
7
+ "module": "./dist/v3-utils-lib.js",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/v3-utils-lib.js",
11
+ "default": "./dist/v3-utils-lib.js"
12
+ }
15
13
  },
16
14
  "files": [
17
- "dist",
18
- "README.md"
15
+ "dist"
19
16
  ],
20
17
  "scripts": {
21
18
  "build": "vite build",
package/dist/Page.js DELETED
@@ -1,21 +0,0 @@
1
- import { reactive as e } from "vue";
2
- //#region src/Page.js
3
- function t(t) {
4
- let n = e({
5
- pageNum: 1,
6
- pageSize: 10,
7
- total: 0
8
- });
9
- return {
10
- pageInfo: n,
11
- PageIndexChange: (e) => {
12
- if (e !== n.pageNum) return n.pageNum = e, t();
13
- },
14
- SizeChange: (e) => {
15
- if (e !== n.pageSize) return n.pageSize = e, t();
16
- },
17
- ResetPage: () => (n.pageNum = 1, t())
18
- };
19
- }
20
- //#endregion
21
- export { t as page };
@@ -1,38 +0,0 @@
1
- import { hideLoadMask as e, showLoadMask as t } from "./loadMask.js";
2
- import n from "./request.js";
3
- //#region src/SuccessAjax.js
4
- async function r(r, i = {}, a = {}) {
5
- let o = {
6
- method: "GET",
7
- fullscreen: !0,
8
- needToken: !0,
9
- loadingText: "加载中...",
10
- pageInfo: null,
11
- isFormData: !1,
12
- headers: {},
13
- ...a
14
- }, s = o.method.toUpperCase();
15
- o.fullscreen && t(o.loadingText);
16
- let c = {
17
- ...o.headers,
18
- needToken: String(o.needToken)
19
- }, l = i;
20
- o.pageInfo && (o.isFormData ? (l.append("pageNum", o.pageInfo.pageNum), l.append("pageSize", o.pageInfo.pageSize)) : l = {
21
- ...i,
22
- ...o.pageInfo
23
- }), o.isFormData && delete c["Content-Type"];
24
- let u = {
25
- url: r,
26
- method: s,
27
- headers: c,
28
- ...o
29
- };
30
- return s === "GET" || s === "DELETE" ? u.params = l : u.data = l, n(u).then((e) => {
31
- let t = e.data ?? e;
32
- return o.pageInfo && t.total && (o.pageInfo.total = t.total), t;
33
- }).catch((e) => Promise.reject(e)).finally(() => {
34
- o.fullscreen && e();
35
- });
36
- }
37
- //#endregion
38
- export { r as default };
@@ -1,2 +0,0 @@
1
- import { n as e, r as t, t as n } from "./src-DLRBzo3h.js";
2
- export { n as generateRoutes, e as routeStore, t as routerUtils };
package/dist/loadMask.js DELETED
@@ -1,31 +0,0 @@
1
- //#region src/loadMask.js
2
- var e = null, t = 0;
3
- function n(n = "加载中...") {
4
- if (t++, e) {
5
- e.style.display = "flex", e.querySelector(".load-text").innerText = n;
6
- return;
7
- }
8
- let r = document.createElement("div");
9
- r.id = "global-loading-mask", r.innerHTML = `
10
- <div class="load-box">
11
- <div class="load-spinner"></div>
12
- <div class="load-text">${n}</div>
13
- </div>
14
- `, r.style.cssText = "\n position: fixed; top: 0; left: 0; right: 0; bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex; align-items: center; justify-content: center;\n z-index: 99999; color: #fff;\n user-select: none;\n ";
15
- let i = r.querySelector(".load-box");
16
- i.style.cssText = "\n display: flex; flex-direction: column; align-items: center; gap: 12px;\n ";
17
- let a = r.querySelector(".load-spinner");
18
- a.style.cssText = "\n width: 36px; height: 36px;\n border: 3px solid rgba(255,255,255,.3);\n border-top: 3px solid #fff;\n border-radius: 50%;\n animation: spin 0.8s linear infinite;\n ";
19
- let o = r.querySelector(".load-text");
20
- o.style.cssText = "\n font-size: 14px; text-shadow: 0 1px 2px rgba(0,0,0,.2);\n ";
21
- let s = document.createElement("style");
22
- s.innerHTML = "@keyframes spin { to { transform: rotate(360deg); } }", document.head.appendChild(s), document.body.appendChild(r), e = r;
23
- }
24
- function r() {
25
- t--, t <= 0 && (t = 0, e && (e.style.display = "none"));
26
- }
27
- function i() {
28
- t = 0, e && (e.style.display = "none");
29
- }
30
- //#endregion
31
- export { i as forceHideLoadMask, r as hideLoadMask, n as showLoadMask };
package/dist/request.js DELETED
@@ -1,51 +0,0 @@
1
- import e from "axios";
2
- //#region src/request.js
3
- var t = null, n = "/api", r = 1e4, i = null;
4
- function a(e = {}) {
5
- e.refreshTokenApi && (t = e.refreshTokenApi), e.baseURL && (n = e.baseURL), e.timeout && (r = e.timeout), e.errorHandler && (i = e.errorHandler);
6
- }
7
- var o = e.create({
8
- baseURL: n,
9
- timeout: r
10
- }), s = !1, c = [];
11
- o.interceptors.request.use((e) => {
12
- let { needToken: t } = e;
13
- if (t) {
14
- let t = sessionStorage.getItem("loginInfo");
15
- if (!t) return Promise.reject({ response: {
16
- status: 401,
17
- data: { message: "未登录,请先登录" }
18
- } });
19
- let n = JSON.parse(t).accessToken;
20
- n && (e.headers.Authorization = n);
21
- }
22
- return e;
23
- }, (e) => Promise.reject(e)), o.interceptors.response.use((e) => {
24
- let { code: t, msg: n } = e.data;
25
- return t != 200 && (i || console.error)(n || "请求失败"), e.data;
26
- }, async (e) => {
27
- let n = e.config;
28
- if (e.response?.status === 401 && !n._retry) {
29
- if (s) return new Promise((e) => {
30
- c.push((t) => {
31
- n.headers.Authorization = t, e(o(n));
32
- });
33
- });
34
- n._retry = !0, s = !0;
35
- try {
36
- let e = JSON.parse(sessionStorage.getItem("loginInfo")), r = e?.refreshToken;
37
- if (!r) throw Error("refreshToken 不存在");
38
- if (!t) throw Error("未配置 refreshTokenApi");
39
- let i = (await t({ refreshToken: r })).data.accessToken;
40
- return e.accessToken = i, sessionStorage.setItem("loginInfo", JSON.stringify(e)), c.forEach((e) => e(i)), c = [], n.headers.Authorization = i, o(n);
41
- } catch (e) {
42
- return sessionStorage.clear(), window.location.href = "/login", Promise.reject(e);
43
- } finally {
44
- s = !1;
45
- }
46
- }
47
- let r = e?.response?.data?.msg || "请求失败";
48
- return i && i(r), Promise.reject(e);
49
- });
50
- //#endregion
51
- export { a as configRequest, o as default };
@@ -1,76 +0,0 @@
1
- import { forceHideLoadMask as e, hideLoadMask as t, showLoadMask as n } from "./loadMask.js";
2
- import { page as r } from "./Page.js";
3
- import i from "./request.js";
4
- import a from "./SuccessAjax.js";
5
- //#region \0rolldown/runtime.js
6
- var o = Object.defineProperty, s = (e, t) => {
7
- let n = {};
8
- for (var r in e) o(n, r, {
9
- get: e[r],
10
- enumerable: !0
11
- });
12
- return t || o(n, Symbol.toStringTag, { value: "Module" }), n;
13
- }, c = {};
14
- function l(e, t) {
15
- try {
16
- let n = (/* @__PURE__ */ Error()).stack.split("\n"), r = (n[3] || n[2]).match(/(\/src\/.*?\.js)/), i = r ? r[1] : "unknown";
17
- setTimeout(() => {
18
- c[i] = {
19
- options: e,
20
- meta: t
21
- };
22
- }, 0);
23
- } catch {}
24
- }
25
- function u(e) {
26
- let t = /* @__PURE__ */ Object.assign({ "/src/index.js": d }), n = [];
27
- for (let r in t) {
28
- if (!r.startsWith(e)) continue;
29
- let i = t[r].component, a = c[r] || {};
30
- if (!i) continue;
31
- let o = r.replace(e, "").replace("/index.js", "").replace(/\[(\w+)\]/g, ":$1");
32
- o === "" && (o = "/");
33
- let s = o.split("/").filter(Boolean).map((e) => e[0].toUpperCase() + e.slice(1)).join("");
34
- n.push({
35
- filePath: r,
36
- path: o,
37
- name: s,
38
- component: i,
39
- ...a.options,
40
- meta: a.meta || {},
41
- children: []
42
- });
43
- }
44
- function r(t, n = "") {
45
- return t.filter((t) => {
46
- if (!t.filePath) return !1;
47
- let r = t.filePath.replace("/index.js", ""), i = `${e}${n}`;
48
- return RegExp(`^${i}\\/[^\\/]+$`).test(r);
49
- }).map((e) => {
50
- let i = { ...e };
51
- if (n !== "") {
52
- let e = i.path.split("/");
53
- i.path = e[e.length - 1];
54
- } else i.path.startsWith("/") || (i.path = "/" + i.path);
55
- i.children = r(t, i.path), i.children?.length || delete i.children;
56
- let { filePath: a, ...o } = i;
57
- return o;
58
- });
59
- }
60
- return r(n);
61
- }
62
- //#endregion
63
- //#region src/index.js
64
- var d = /* @__PURE__ */ s({
65
- SuccessAjax: () => a,
66
- forceHideLoadMask: () => e,
67
- generateRoutes: () => u,
68
- hideLoadMask: () => t,
69
- page: () => r,
70
- routeStore: () => c,
71
- routerUtils: () => l,
72
- service: () => i,
73
- showLoadMask: () => n
74
- });
75
- //#endregion
76
- export { c as n, l as r, u as t };
package/dist/utils-lib.js DELETED
@@ -1,6 +0,0 @@
1
- import { n as e, r as t, t as n } from "./src-DLRBzo3h.js";
2
- import { forceHideLoadMask as r, hideLoadMask as i, showLoadMask as a } from "./loadMask.js";
3
- import { page as o } from "./Page.js";
4
- import s from "./request.js";
5
- import c from "./SuccessAjax.js";
6
- export { c as SuccessAjax, r as forceHideLoadMask, n as generateRoutes, i as hideLoadMask, o as page, e as routeStore, t as routerUtils, s as service, a as showLoadMask };