@ancon/wildcat-utils 1.40.12 → 1.40.13
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/package.json
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { SignalRHubName, SignalRSignalName } from '@ancon/wildcat-types';
|
|
2
|
-
import {
|
|
3
|
-
declare type SignalRConfigArg = Omit<SignalRConfig, 'hub'>;
|
|
2
|
+
import { SignalRHookConfig, SignalREventListener } from './types';
|
|
4
3
|
declare type ReduxSelectorsArg<RootState = unknown> = Partial<{
|
|
5
4
|
clientIdSelector: (state: RootState) => string | null;
|
|
6
5
|
isSignalROnlineSelector: (state: RootState) => boolean;
|
|
@@ -17,12 +16,15 @@ declare type ReduxHooksArg = Partial<{
|
|
|
17
16
|
};
|
|
18
17
|
useAppSelector: <T extends (...args: any[]) => any>(selector: T) => ReturnType<T>;
|
|
19
18
|
}>;
|
|
20
|
-
declare function createUseSignalRHook<RootState = unknown>(signalRConfig:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
declare function createUseSignalRHook<RootState = unknown>(signalRConfig: SignalRHookConfig, selectors?: ReduxSelectorsArg<RootState>, actions?: ReduxActionsArg, hooks?: ReduxHooksArg): {
|
|
20
|
+
useSignalR: (hub: SignalRHubName) => {
|
|
21
|
+
isHubConnected: boolean;
|
|
22
|
+
join: (group: string) => Promise<void>;
|
|
23
|
+
leave: (group: string) => Promise<void>;
|
|
24
|
+
subscribe: (signal: SignalRSignalName, listener: SignalREventListener, shouldSkipOwnClient?: boolean) => (() => void);
|
|
25
|
+
unsubscribe: (signal: SignalRSignalName, listener: SignalREventListener) => void;
|
|
26
|
+
getHubConnectionId: () => string | null;
|
|
27
|
+
};
|
|
28
|
+
setUrl(url: string): void;
|
|
27
29
|
};
|
|
28
30
|
export default createUseSignalRHook;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const n=require("react"),
|
|
1
|
+
"use strict";const n=require("react"),C=require("react-redux"),T=require("../noop-7ea3b37b.js"),B=a=>Object.freeze(Object.defineProperty({__proto__:null,default:a},Symbol.toStringTag,{value:"Module"}));function F(a,y,w,_){const{logger:j,enableLogging:q}=a;let{signalRApiUrl:I}=a;const{clientIdSelector:x,isSignalROnlineSelector:c}=y??{},{setIsSignalROnlineAction:l}=w??{},{useAppStore:D=C.useStore,useAppDispatch:G=C.useDispatch,useAppSelector:m=C.useSelector}=_??{},p=new Set;function M(u){const[f,P]=n.useState(I),[e,z]=n.useState(null),d=D(),b=G(),h=m(x??(()=>{})),[o,N]=n.useState(!1),[r,E]=n.useState(!1),v=n.useRef(o),S=n.useCallback(()=>{(c==null?void 0:c(d.getState()))===!1&&l&&b(l({isSignalROnline:!0})),r||E(!0)},[b,r,d]),O=S,k=n.useCallback(()=>{(c==null?void 0:c(d.getState()))===!0&&l&&b(l({isSignalROnline:!1})),r&&E(!1)},[b,r,d]),H=n.useCallback(async t=>{e&&e.groups.indexOf(t)<0&&await(e==null?void 0:e.joinGroup(t))},[e]),A=n.useCallback(async t=>{e&&e.groups.indexOf(t)>=0&&await(e==null?void 0:e.leaveGroup(t))},[e]),L=n.useCallback((t,s,i)=>e?e==null?void 0:e.addSignalListener(t,s,i):T.noop,[e]),U=n.useCallback((t,s)=>{e&&e.removeSignalListener(t,s)},[e]),g=n.useCallback(()=>e?e.getHubConnectionId():null,[e]);return n.useEffect(()=>{let t=!1;return Promise.resolve().then(()=>B(require("./SignalR.js"))).then(({default:s})=>{t||z(new s({signalRApiUrl:f,hub:u,logger:j,enableLogging:q}))}),()=>{t=!0}},[u,f]),n.useEffect(()=>{function t(s){P(s)}return p.add(t),()=>{p.delete(t)}},[]),n.useEffect(()=>{v.current=o},[o]),n.useEffect(()=>{const t=e==null?void 0:e.addEventListener("connected",S),s=e==null?void 0:e.addEventListener("reconnected",O),i=e==null?void 0:e.addEventListener("disconnected",k);return e&&!v.current&&N(!0),()=>{t==null||t(),s==null||s(),i==null||i()}},[e,S,k,O]),n.useEffect(()=>{e==null||e.setClientId(h||void 0)},[e,h]),n.useEffect(()=>{async function t(){await(e==null?void 0:e.connect())}o&&t()},[e,o]),n.useEffect(()=>()=>{e==null||e.leaveAllGroups().then(()=>{e==null||e.disconnect()})},[e]),n.useMemo(()=>({isHubConnected:r,join:H,leave:A,subscribe:L,unsubscribe:U,getHubConnectionId:g}),[r,H,A,L,U,g])}return{useSignalR:M,setUrl(u){I=u,p.forEach(f=>{f(u)})}}}module.exports=F;
|
|
@@ -1,103 +1,120 @@
|
|
|
1
|
-
import { useState as
|
|
2
|
-
import { useStore as
|
|
3
|
-
import { n as
|
|
4
|
-
function
|
|
5
|
-
const {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}, [
|
|
15
|
-
(o == null ? void 0 : o(
|
|
16
|
-
}, [
|
|
1
|
+
import { useState as S, useRef as N, useCallback as s, useEffect as r, useMemo as P } from "react";
|
|
2
|
+
import { useStore as Q, useDispatch as T, useSelector as V } from "react-redux";
|
|
3
|
+
import { n as W } from "../noop-378485d5.mjs";
|
|
4
|
+
function $(h, x, y, D) {
|
|
5
|
+
const { logger: G, enableLogging: j } = h;
|
|
6
|
+
let { signalRApiUrl: v } = h;
|
|
7
|
+
const { clientIdSelector: k, isSignalROnlineSelector: o } = x ?? {}, { setIsSignalROnlineAction: a } = y ?? {}, {
|
|
8
|
+
useAppStore: M = Q,
|
|
9
|
+
useAppDispatch: q = T,
|
|
10
|
+
useAppSelector: z = V
|
|
11
|
+
} = D ?? {}, b = /* @__PURE__ */ new Set();
|
|
12
|
+
function B(i) {
|
|
13
|
+
const [l, F] = S(v), [e, J] = S(null), f = M(), p = q(), H = z(k ?? (() => {
|
|
14
|
+
})), [u, K] = S(!1), [c, A] = S(!1), L = N(u), I = s(() => {
|
|
15
|
+
(o == null ? void 0 : o(f.getState())) === !1 && a && p(a({ isSignalROnline: !0 })), c || A(!0);
|
|
16
|
+
}, [p, c, f]), U = I, m = s(() => {
|
|
17
|
+
(o == null ? void 0 : o(f.getState())) === !0 && a && p(a({ isSignalROnline: !1 })), c && A(!1);
|
|
18
|
+
}, [p, c, f]), C = s(
|
|
17
19
|
async (t) => {
|
|
18
20
|
e && e.groups.indexOf(t) < 0 && await (e == null ? void 0 : e.joinGroup(t));
|
|
19
21
|
},
|
|
20
22
|
[e]
|
|
21
|
-
),
|
|
23
|
+
), O = s(
|
|
22
24
|
async (t) => {
|
|
23
25
|
e && e.groups.indexOf(t) >= 0 && await (e == null ? void 0 : e.leaveGroup(t));
|
|
24
26
|
},
|
|
25
27
|
[e]
|
|
26
|
-
),
|
|
27
|
-
(t, n,
|
|
28
|
+
), w = s(
|
|
29
|
+
(t, n, d) => e ? e == null ? void 0 : e.addSignalListener(
|
|
28
30
|
t,
|
|
29
31
|
n,
|
|
30
|
-
|
|
31
|
-
) :
|
|
32
|
+
d
|
|
33
|
+
) : W,
|
|
32
34
|
[e]
|
|
33
|
-
),
|
|
35
|
+
), E = s(
|
|
34
36
|
(t, n) => {
|
|
35
37
|
e && e.removeSignalListener(t, n);
|
|
36
38
|
},
|
|
37
39
|
[e]
|
|
38
|
-
),
|
|
40
|
+
), g = s(() => e ? e.getHubConnectionId() : null, [e]);
|
|
39
41
|
return r(() => {
|
|
40
42
|
let t = !1;
|
|
41
43
|
return import("./SignalR.mjs").then(({ default: n }) => {
|
|
42
|
-
t ||
|
|
44
|
+
t || J(
|
|
43
45
|
new n({
|
|
44
|
-
signalRApiUrl:
|
|
45
|
-
hub:
|
|
46
|
-
logger:
|
|
47
|
-
enableLogging:
|
|
46
|
+
signalRApiUrl: l,
|
|
47
|
+
hub: i,
|
|
48
|
+
logger: G,
|
|
49
|
+
enableLogging: j
|
|
48
50
|
})
|
|
49
51
|
);
|
|
50
52
|
}), () => {
|
|
51
53
|
t = !0;
|
|
52
54
|
};
|
|
53
|
-
}, [
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
}, [i, l]), r(() => {
|
|
56
|
+
function t(n) {
|
|
57
|
+
F(n);
|
|
58
|
+
}
|
|
59
|
+
return b.add(t), () => {
|
|
60
|
+
b.delete(t);
|
|
61
|
+
};
|
|
62
|
+
}, []), r(() => {
|
|
63
|
+
L.current = u;
|
|
64
|
+
}, [u]), r(() => {
|
|
56
65
|
const t = e == null ? void 0 : e.addEventListener(
|
|
57
66
|
"connected",
|
|
58
|
-
|
|
67
|
+
I
|
|
59
68
|
), n = e == null ? void 0 : e.addEventListener(
|
|
60
69
|
"reconnected",
|
|
61
|
-
|
|
62
|
-
),
|
|
70
|
+
U
|
|
71
|
+
), d = e == null ? void 0 : e.addEventListener(
|
|
63
72
|
"disconnected",
|
|
64
|
-
|
|
73
|
+
m
|
|
65
74
|
);
|
|
66
|
-
return e && !
|
|
67
|
-
t == null || t(), n == null || n(),
|
|
75
|
+
return e && !L.current && K(!0), () => {
|
|
76
|
+
t == null || t(), n == null || n(), d == null || d();
|
|
68
77
|
};
|
|
69
78
|
}, [
|
|
70
79
|
e,
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
80
|
+
I,
|
|
81
|
+
m,
|
|
82
|
+
U
|
|
74
83
|
]), r(() => {
|
|
75
|
-
e == null || e.setClientId(
|
|
76
|
-
}, [e,
|
|
84
|
+
e == null || e.setClientId(H || void 0);
|
|
85
|
+
}, [e, H]), r(() => {
|
|
77
86
|
async function t() {
|
|
78
87
|
await (e == null ? void 0 : e.connect());
|
|
79
88
|
}
|
|
80
|
-
|
|
81
|
-
}, [e,
|
|
89
|
+
u && t();
|
|
90
|
+
}, [e, u]), r(
|
|
82
91
|
() => () => {
|
|
83
92
|
e == null || e.leaveAllGroups().then(() => {
|
|
84
93
|
e == null || e.disconnect();
|
|
85
94
|
});
|
|
86
95
|
},
|
|
87
96
|
[e]
|
|
88
|
-
),
|
|
97
|
+
), P(
|
|
89
98
|
() => ({
|
|
90
99
|
isHubConnected: c,
|
|
91
|
-
join:
|
|
92
|
-
leave:
|
|
93
|
-
subscribe:
|
|
94
|
-
unsubscribe:
|
|
95
|
-
getHubConnectionId:
|
|
100
|
+
join: C,
|
|
101
|
+
leave: O,
|
|
102
|
+
subscribe: w,
|
|
103
|
+
unsubscribe: E,
|
|
104
|
+
getHubConnectionId: g
|
|
96
105
|
}),
|
|
97
|
-
[c,
|
|
106
|
+
[c, C, O, w, E, g]
|
|
98
107
|
);
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
useSignalR: B,
|
|
111
|
+
setUrl(i) {
|
|
112
|
+
v = i, b.forEach((l) => {
|
|
113
|
+
l(i);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
99
116
|
};
|
|
100
117
|
}
|
|
101
118
|
export {
|
|
102
|
-
|
|
119
|
+
$ as default
|
|
103
120
|
};
|
package/signalr/types.d.ts
CHANGED