@jnrs/vue-core 1.2.2 → 1.2.4
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/dist/components/JnFileUpload.vue.d.ts +20 -8
- package/dist/components/JnImageView.vue.d.ts +4 -0
- package/dist/components/index.d.ts +3 -2
- package/dist/components/index.js +1068 -832
- package/dist/composables/index.d.ts +1 -0
- package/dist/composables/index.js +127 -3
- package/dist/composables/useWebSocket.d.ts +117 -0
- package/dist/index-BVrPZ7_E.js +3386 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +6 -3275
- package/dist/locales/en/components.d.ts +15 -0
- package/dist/locales/en/index.d.ts +15 -0
- package/dist/locales/i18next.d.ts +2 -1
- package/dist/locales/index.js +34 -4
- package/dist/locales/zhCn/components.d.ts +15 -0
- package/dist/locales/zhCn/index.d.ts +15 -0
- package/dist/request/axios.d.ts +3 -3
- package/dist/request/index.d.ts +1 -0
- package/dist/request/index.js +4 -0
- package/dist/types/base.d.ts +4 -0
- package/dist/{useMouseSelection-v7Ud0vBn.js → useMouseSelection-DU3qQWIm.js} +2 -2
- package/package.json +6 -3
|
@@ -1,5 +1,129 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { c as G, u as K } from "../useMouseSelection-DU3qQWIm.js";
|
|
2
|
+
import { ref as p, onDeactivated as x, onActivated as A, onUnmounted as D } from "vue";
|
|
3
|
+
import { ElMessage as v } from "element-plus";
|
|
4
|
+
import { a as L, u as _ } from "../index-KdP2kDTZ.js";
|
|
5
|
+
const { token: H } = L(), { isMock: R } = _();
|
|
6
|
+
function z(O) {
|
|
7
|
+
const {
|
|
8
|
+
url: S,
|
|
9
|
+
token: k = H,
|
|
10
|
+
connectionTimeoutDuration: C = 6e4,
|
|
11
|
+
heartbeat: b = !1,
|
|
12
|
+
heartbeatInterval: T = 3e4,
|
|
13
|
+
heartbeatTimeout: N = 1e4,
|
|
14
|
+
showLog: i = !1,
|
|
15
|
+
showMessage: c = !0,
|
|
16
|
+
onOpen: E,
|
|
17
|
+
onMessage: M,
|
|
18
|
+
onClose: I,
|
|
19
|
+
onError: y
|
|
20
|
+
} = O, e = p(null), f = p(!0), s = p(!1), u = p("未连接");
|
|
21
|
+
let h = "", o = "", r = null, a = null, t = null;
|
|
22
|
+
R && (h = S.startsWith("/mock") ? S : "/mock" + S);
|
|
23
|
+
const g = () => {
|
|
24
|
+
r && clearTimeout(r), a && clearTimeout(a), r = null, a = null;
|
|
25
|
+
}, W = () => {
|
|
26
|
+
if (!(!e.value || e.value.readyState !== WebSocket.OPEN))
|
|
27
|
+
try {
|
|
28
|
+
e.value.send(JSON.stringify({ type: "ping" })), a = setTimeout(() => {
|
|
29
|
+
o = "WebSocket 连接不稳定,正在重连...", i && console.warn(o), c && v({
|
|
30
|
+
message: o,
|
|
31
|
+
type: "warning",
|
|
32
|
+
grouping: !0,
|
|
33
|
+
showClose: !0,
|
|
34
|
+
duration: 3e3
|
|
35
|
+
}), P();
|
|
36
|
+
}, N);
|
|
37
|
+
} catch (n) {
|
|
38
|
+
console.error("发送 WebSocket ping 失败:", n);
|
|
39
|
+
}
|
|
40
|
+
}, P = () => {
|
|
41
|
+
d(), setTimeout(w, 2e3);
|
|
42
|
+
}, w = () => {
|
|
43
|
+
if (e.value?.readyState === WebSocket.OPEN) return;
|
|
44
|
+
e.value && e.value.close(), g(), t && clearTimeout(t);
|
|
45
|
+
const n = k ? [k] : void 0;
|
|
46
|
+
e.value = new WebSocket(h, n), t = setTimeout(() => {
|
|
47
|
+
e.value && e.value.readyState !== WebSocket.OPEN && (o = "WebSocket 连接超时", f.value = !1, s.value = !1, u.value = "连接超时", i && console.error(o), c && v({
|
|
48
|
+
message: o,
|
|
49
|
+
type: "error",
|
|
50
|
+
grouping: !0,
|
|
51
|
+
showClose: !0,
|
|
52
|
+
duration: 0
|
|
53
|
+
}), e.value?.close(), e.value = null, y?.(new Event("timeout")));
|
|
54
|
+
}, C), e.value.onopen = () => {
|
|
55
|
+
t && (clearTimeout(t), t = null), f.value = !1, s.value = !0, u.value = "连接成功", o = "WebSocket 连接成功", i && console.log(o), c && v({
|
|
56
|
+
message: o,
|
|
57
|
+
type: "success",
|
|
58
|
+
grouping: !0,
|
|
59
|
+
showClose: !0,
|
|
60
|
+
duration: 3e3
|
|
61
|
+
}), E?.(), b && (g(), r = setInterval(W, T));
|
|
62
|
+
}, e.value.onmessage = (l) => {
|
|
63
|
+
if (u.value = "数据接收中", typeof l.data == "string")
|
|
64
|
+
try {
|
|
65
|
+
if (JSON.parse(l.data).type === "pong") {
|
|
66
|
+
a && (clearTimeout(a), a = null);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
} catch {
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
const m = JSON.parse(l.data);
|
|
73
|
+
M?.(m);
|
|
74
|
+
} catch (m) {
|
|
75
|
+
console.error("WebSocket 消息解析失败:", l.data, m);
|
|
76
|
+
}
|
|
77
|
+
}, e.value.onclose = () => {
|
|
78
|
+
f.value = !1, s.value = !1, u.value = "连接已关闭", g(), t && (clearTimeout(t), t = null), o = "WebSocket 连接已关闭", i && console.log(o), c && v({
|
|
79
|
+
message: o,
|
|
80
|
+
type: "warning",
|
|
81
|
+
grouping: !0,
|
|
82
|
+
showClose: !0,
|
|
83
|
+
duration: 3e3
|
|
84
|
+
}), I?.();
|
|
85
|
+
}, e.value.onerror = (l) => {
|
|
86
|
+
f.value = !1, s.value = !1, u.value = "连接失败", t && (clearTimeout(t), t = null), o = "WebSocket 连接失败", i && console.error(o, l), c && v({
|
|
87
|
+
message: o,
|
|
88
|
+
type: "error",
|
|
89
|
+
grouping: !0,
|
|
90
|
+
showClose: !0,
|
|
91
|
+
duration: 3e3
|
|
92
|
+
}), y?.(l);
|
|
93
|
+
};
|
|
94
|
+
}, J = (n) => {
|
|
95
|
+
if (!e.value || e.value.readyState !== WebSocket.OPEN) {
|
|
96
|
+
o = "WebSocket 未连接,无法发送消息", i && console.error(o), c && v({
|
|
97
|
+
message: o,
|
|
98
|
+
type: "error",
|
|
99
|
+
grouping: !0,
|
|
100
|
+
showClose: !0,
|
|
101
|
+
duration: 3e3
|
|
102
|
+
});
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const l = typeof n == "string" ? n : JSON.stringify(n);
|
|
106
|
+
e.value.send(l);
|
|
107
|
+
}, d = () => {
|
|
108
|
+
e.value && (e.value.close(), e.value = null), f.value = !1, s.value = !1, u.value = "手动关闭连接", g(), t && (clearTimeout(t), t = null);
|
|
109
|
+
};
|
|
110
|
+
return w(), x(() => {
|
|
111
|
+
r && (clearInterval(r), r = null), a && (clearTimeout(a), a = null);
|
|
112
|
+
}), A(() => {
|
|
113
|
+
s.value && b && (r = setInterval(W, T));
|
|
114
|
+
}), D(() => {
|
|
115
|
+
d();
|
|
116
|
+
}), {
|
|
117
|
+
ws: e,
|
|
118
|
+
isLoading: f,
|
|
119
|
+
isConnected: s,
|
|
120
|
+
wsStateInfo: u,
|
|
121
|
+
sendMessage: J,
|
|
122
|
+
closeWebSocket: d
|
|
123
|
+
};
|
|
124
|
+
}
|
|
2
125
|
export {
|
|
3
|
-
|
|
4
|
-
|
|
126
|
+
G as useMouseSelection,
|
|
127
|
+
K as useReactivityTableHeight,
|
|
128
|
+
z as useWebSocket
|
|
5
129
|
};
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @Author : TanRui
|
|
3
|
+
* @WeChat : Tan578853789
|
|
4
|
+
* @File : useWebSocket.ts
|
|
5
|
+
* @Date : 2026/01/06
|
|
6
|
+
* @Desc. : WebSocket 封装(支持心跳机制,前端发送 {type: 'ping'},后端需返回 {type: 'pong'})
|
|
7
|
+
*/
|
|
8
|
+
type WebSocketRawMessage = unknown;
|
|
9
|
+
interface UseWebSocketOptions {
|
|
10
|
+
/**
|
|
11
|
+
* WebSocket 地址
|
|
12
|
+
*/
|
|
13
|
+
url: string;
|
|
14
|
+
/**
|
|
15
|
+
* 网络超时时间(ms,默认 60s)
|
|
16
|
+
*/
|
|
17
|
+
connectionTimeoutDuration?: number;
|
|
18
|
+
/**
|
|
19
|
+
* 认证信息
|
|
20
|
+
*/
|
|
21
|
+
token?: string;
|
|
22
|
+
/**
|
|
23
|
+
* 是否启用心跳(默认 false)
|
|
24
|
+
*/
|
|
25
|
+
heartbeat?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* 心跳间隔(ms,默认 30s)
|
|
28
|
+
*/
|
|
29
|
+
heartbeatInterval?: number;
|
|
30
|
+
/**
|
|
31
|
+
* 心跳超时时间(ms,默认 10s)
|
|
32
|
+
*/
|
|
33
|
+
heartbeatTimeout?: number;
|
|
34
|
+
/**
|
|
35
|
+
* 是否打印控制台信息(默认 false)
|
|
36
|
+
*/
|
|
37
|
+
showLog?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* 是否显示消息弹框(默认 true)
|
|
40
|
+
*/
|
|
41
|
+
showMessage?: boolean;
|
|
42
|
+
onOpen?: () => void;
|
|
43
|
+
onMessage?: (data: WebSocketRawMessage) => void;
|
|
44
|
+
onClose?: () => void;
|
|
45
|
+
onError?: (error: Event) => void;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* useWebSocket
|
|
49
|
+
* @param options - WebSocket 配置项
|
|
50
|
+
* @returns {WebSocket | null} - ws 实例
|
|
51
|
+
* @returns {boolean} - isLoading 是否正在加载中
|
|
52
|
+
* @returns {boolean} - isConnected 是否已连接
|
|
53
|
+
* @returns {string} - wsStateInfo 连接状态信息
|
|
54
|
+
* @returns {void} - sendMessage 发送消息函数
|
|
55
|
+
* @returns {void} - closeWebSocket 关闭连接函数
|
|
56
|
+
*/
|
|
57
|
+
export declare function useWebSocket(options: UseWebSocketOptions): {
|
|
58
|
+
ws: import('vue').Ref<{
|
|
59
|
+
binaryType: BinaryType;
|
|
60
|
+
readonly bufferedAmount: number;
|
|
61
|
+
readonly extensions: string;
|
|
62
|
+
onclose: ((this: WebSocket, ev: CloseEvent) => any) | null;
|
|
63
|
+
onerror: ((this: WebSocket, ev: Event) => any) | null;
|
|
64
|
+
onmessage: ((this: WebSocket, ev: MessageEvent) => any) | null;
|
|
65
|
+
onopen: ((this: WebSocket, ev: Event) => any) | null;
|
|
66
|
+
readonly protocol: string;
|
|
67
|
+
readonly readyState: number;
|
|
68
|
+
readonly url: string;
|
|
69
|
+
close: (code?: number, reason?: string) => void;
|
|
70
|
+
send: (data: string | ArrayBufferLike | Blob | ArrayBufferView) => void;
|
|
71
|
+
readonly CONNECTING: 0;
|
|
72
|
+
readonly OPEN: 1;
|
|
73
|
+
readonly CLOSING: 2;
|
|
74
|
+
readonly CLOSED: 3;
|
|
75
|
+
addEventListener: {
|
|
76
|
+
<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
77
|
+
(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
78
|
+
};
|
|
79
|
+
removeEventListener: {
|
|
80
|
+
<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
81
|
+
(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
82
|
+
};
|
|
83
|
+
dispatchEvent: (event: Event) => boolean;
|
|
84
|
+
} | null, WebSocket | {
|
|
85
|
+
binaryType: BinaryType;
|
|
86
|
+
readonly bufferedAmount: number;
|
|
87
|
+
readonly extensions: string;
|
|
88
|
+
onclose: ((this: WebSocket, ev: CloseEvent) => any) | null;
|
|
89
|
+
onerror: ((this: WebSocket, ev: Event) => any) | null;
|
|
90
|
+
onmessage: ((this: WebSocket, ev: MessageEvent) => any) | null;
|
|
91
|
+
onopen: ((this: WebSocket, ev: Event) => any) | null;
|
|
92
|
+
readonly protocol: string;
|
|
93
|
+
readonly readyState: number;
|
|
94
|
+
readonly url: string;
|
|
95
|
+
close: (code?: number, reason?: string) => void;
|
|
96
|
+
send: (data: string | ArrayBufferLike | Blob | ArrayBufferView) => void;
|
|
97
|
+
readonly CONNECTING: 0;
|
|
98
|
+
readonly OPEN: 1;
|
|
99
|
+
readonly CLOSING: 2;
|
|
100
|
+
readonly CLOSED: 3;
|
|
101
|
+
addEventListener: {
|
|
102
|
+
<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
103
|
+
(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
104
|
+
};
|
|
105
|
+
removeEventListener: {
|
|
106
|
+
<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
107
|
+
(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
108
|
+
};
|
|
109
|
+
dispatchEvent: (event: Event) => boolean;
|
|
110
|
+
} | null>;
|
|
111
|
+
isLoading: import('vue').Ref<boolean, boolean>;
|
|
112
|
+
isConnected: import('vue').Ref<boolean, boolean>;
|
|
113
|
+
wsStateInfo: import('vue').Ref<string, string>;
|
|
114
|
+
sendMessage: (data: string | Record<string, unknown>) => void;
|
|
115
|
+
closeWebSocket: () => void;
|
|
116
|
+
};
|
|
117
|
+
export {};
|