@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,6 @@
1
1
  {
2
2
  "name": "@ancon/wildcat-utils",
3
- "version": "1.40.12",
3
+ "version": "1.40.13",
4
4
  "private": false,
5
5
  "main": "index.js",
6
6
  "module": "index.mjs",
@@ -1,6 +1,5 @@
1
1
  import { SignalRHubName, SignalRSignalName } from '@ancon/wildcat-types';
2
- import { SignalRConfig, SignalREventListener } from './types';
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: SignalRConfigArg, selectors?: ReduxSelectorsArg<RootState>, actions?: ReduxActionsArg, hooks?: ReduxHooksArg): (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;
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"),b=require("react-redux"),P=require("../noop-7ea3b37b.js"),U=f=>Object.freeze(Object.defineProperty({__proto__:null,default:f},Symbol.toStringTag,{value:"Module"}));function z(f,y,A,L){const{signalRApiUrl:_,logger:j,enableLogging:q}=f,{clientIdSelector:w,isSignalROnlineSelector:c}=y??{},{setIsSignalROnlineAction:i}=A??{},{useAppStore:x=b.useStore,useAppDispatch:D=b.useDispatch,useAppSelector:G=b.useSelector}=L??{};return function(p){const[e,m]=n.useState(null),a=x(),l=D(),S=G(w??(()=>{})),[o,M]=n.useState(!1),[u,C]=n.useState(!1),I=n.useRef(o),d=n.useCallback(()=>{(c==null?void 0:c(a.getState()))===!1&&i&&l(i({isSignalROnline:!0})),u||C(!0)},[l,u,a]),v=d,E=n.useCallback(()=>{(c==null?void 0:c(a.getState()))===!0&&i&&l(i({isSignalROnline:!1})),u&&C(!1)},[l,u,a]),O=n.useCallback(async t=>{e&&e.groups.indexOf(t)<0&&await(e==null?void 0:e.joinGroup(t))},[e]),h=n.useCallback(async t=>{e&&e.groups.indexOf(t)>=0&&await(e==null?void 0:e.leaveGroup(t))},[e]),k=n.useCallback((t,s,r)=>e?e==null?void 0:e.addSignalListener(t,s,r):P.noop,[e]),H=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(()=>U(require("./SignalR.js"))).then(({default:s})=>{t||m(new s({signalRApiUrl:_,hub:p,logger:j,enableLogging:q}))}),()=>{t=!0}},[p]),n.useEffect(()=>{I.current=o},[o]),n.useEffect(()=>{const t=e==null?void 0:e.addEventListener("connected",d),s=e==null?void 0:e.addEventListener("reconnected",v),r=e==null?void 0:e.addEventListener("disconnected",E);return e&&!I.current&&M(!0),()=>{t==null||t(),s==null||s(),r==null||r()}},[e,d,E,v]),n.useEffect(()=>{e==null||e.setClientId(S||void 0)},[e,S]),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:u,join:O,leave:h,subscribe:k,unsubscribe:H,getHubConnectionId:g}),[u,O,h,k,H,g])}}module.exports=z;
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 p, useRef as B, useCallback as s, useEffect as r, useMemo as F } from "react";
2
- import { useStore as J, useDispatch as K, useSelector as N } from "react-redux";
3
- import { n as P } from "../noop-378485d5.mjs";
4
- function Y(g, w, E, x) {
5
- const { signalRApiUrl: y, logger: D, enableLogging: G } = g, { clientIdSelector: j, isSignalROnlineSelector: o } = w ?? {}, { setIsSignalROnlineAction: d } = E ?? {}, {
6
- useAppStore: k = J,
7
- useAppDispatch: U = K,
8
- useAppSelector: M = N
9
- } = x ?? {};
10
- return function(S) {
11
- const [e, q] = p(null), a = k(), f = U(), b = M(j ?? (() => {
12
- })), [i, z] = p(!1), [c, I] = p(!1), v = B(i), l = s(() => {
13
- (o == null ? void 0 : o(a.getState())) === !1 && d && f(d({ isSignalROnline: !0 })), c || I(!0);
14
- }, [f, c, a]), H = l, h = s(() => {
15
- (o == null ? void 0 : o(a.getState())) === !0 && d && f(d({ isSignalROnline: !1 })), c && I(!1);
16
- }, [f, c, a]), m = s(
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
- ), A = s(
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
- ), C = s(
27
- (t, n, u) => e ? e == null ? void 0 : e.addSignalListener(
28
+ ), w = s(
29
+ (t, n, d) => e ? e == null ? void 0 : e.addSignalListener(
28
30
  t,
29
31
  n,
30
- u
31
- ) : P,
32
+ d
33
+ ) : W,
32
34
  [e]
33
- ), L = s(
35
+ ), E = s(
34
36
  (t, n) => {
35
37
  e && e.removeSignalListener(t, n);
36
38
  },
37
39
  [e]
38
- ), O = s(() => e ? e.getHubConnectionId() : null, [e]);
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 || q(
44
+ t || J(
43
45
  new n({
44
- signalRApiUrl: y,
45
- hub: S,
46
- logger: D,
47
- enableLogging: G
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
- }, [S]), r(() => {
54
- v.current = i;
55
- }, [i]), r(() => {
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
- l
67
+ I
59
68
  ), n = e == null ? void 0 : e.addEventListener(
60
69
  "reconnected",
61
- H
62
- ), u = e == null ? void 0 : e.addEventListener(
70
+ U
71
+ ), d = e == null ? void 0 : e.addEventListener(
63
72
  "disconnected",
64
- h
73
+ m
65
74
  );
66
- return e && !v.current && z(!0), () => {
67
- t == null || t(), n == null || n(), u == null || u();
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
- l,
72
- h,
73
- H
80
+ I,
81
+ m,
82
+ U
74
83
  ]), r(() => {
75
- e == null || e.setClientId(b || void 0);
76
- }, [e, b]), r(() => {
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
- i && t();
81
- }, [e, i]), r(
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
- ), F(
97
+ ), P(
89
98
  () => ({
90
99
  isHubConnected: c,
91
- join: m,
92
- leave: A,
93
- subscribe: C,
94
- unsubscribe: L,
95
- getHubConnectionId: O
100
+ join: C,
101
+ leave: O,
102
+ subscribe: w,
103
+ unsubscribe: E,
104
+ getHubConnectionId: g
96
105
  }),
97
- [c, m, A, C, L, O]
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
- Y as default
119
+ $ as default
103
120
  };
@@ -11,3 +11,4 @@ export declare type SignalRConfig = {
11
11
  /** @default false */
12
12
  enableLogging?: boolean;
13
13
  };
14
+ export declare type SignalRHookConfig = Omit<SignalRConfig, 'hub'>;