@ancon/wildcat-utils 1.21.0 → 1.21.1

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.21.0",
3
+ "version": "1.21.1",
4
4
  "private": false,
5
5
  "main": "index.js",
6
6
  "module": "index.mjs",
@@ -1,15 +1,15 @@
1
1
  import { SignalRHubName, SignalRSignalName } from '@ancon/wildcat-types';
2
2
  import { SignalRConfig, SignalREventListener } from './types';
3
3
  declare type SignalRConfigArg = Omit<SignalRConfig, 'hub'>;
4
- declare type ReduxSelectorsArg<RootState = unknown> = {
4
+ declare type ReduxSelectorsArg<RootState = unknown> = Partial<{
5
5
  clientIdSelector: (state: RootState) => string | null;
6
6
  isSignalROnlineSelector: (state: RootState) => boolean;
7
- };
8
- declare type ReduxActionsArg = {
7
+ }>;
8
+ declare type ReduxActionsArg = Partial<{
9
9
  setIsSignalROnlineAction: (payload: {
10
10
  isSignalROnline: boolean;
11
11
  }) => unknown;
12
- };
12
+ }>;
13
13
  declare type ReduxHooksArg = Partial<{
14
14
  useAppDispatch: () => (action: unknown) => unknown;
15
15
  useAppStore: <T = {}>() => {
@@ -17,7 +17,7 @@ declare type ReduxHooksArg = Partial<{
17
17
  };
18
18
  useAppSelector: <T extends (...args: any[]) => any>(selector: T) => ReturnType<T>;
19
19
  }>;
20
- declare function createUseSignalRHook(signalRConfig: SignalRConfigArg, selectors: ReduxSelectorsArg, actions: ReduxActionsArg, hooks?: ReduxHooksArg): (hub: SignalRHubName) => {
20
+ declare function createUseSignalRHook<RootState = unknown>(signalRConfig: SignalRConfigArg, selectors?: ReduxSelectorsArg<RootState>, actions?: ReduxActionsArg, hooks?: ReduxHooksArg): (hub: SignalRHubName) => {
21
21
  isHubConnected: boolean;
22
22
  join: (group: string) => Promise<void>;
23
23
  leave: (group: string) => Promise<void>;
@@ -1 +1 @@
1
- "use strict";const e=require("react"),l=require("react-redux"),U=require("./SignalR.js");require("@microsoft/signalr");require("@ancon/wildcat-types");require("../shared/wait.js");require("../api/generateBackoffWithEqualJitter.js");require("../number/randomIntFromInterval.js");function M(O,k,q,H){const{signalRApiUrl:h,logger:A,enableLogging:m}=O,{clientIdSelector:D,isSignalROnlineSelector:d}=k,{setIsSignalROnlineAction:f}=q,{useAppStore:w=l.useStore,useAppDispatch:x=l.useDispatch,useAppSelector:y=l.useSelector}=H??{};return function(G){const n=e.useRef(new U({signalRApiUrl:h,hub:G,logger:A,enableLogging:m})),i=w(),u=x(),g=y(D),[c,j]=e.useState(!1),[s,S]=e.useState(!1),R=e.useRef(c),o=e.useCallback(()=>{d(i.getState())||u(f({isSignalROnline:!0})),s||S(!0)},[u,s,i]),b=o,v=e.useCallback(()=>{d(i.getState())&&u(f({isSignalROnline:!1})),s&&S(!1)},[u,s,i]),p=e.useCallback(async t=>{n.current.groups.indexOf(t)<0&&await n.current.joinGroup(t)},[]),C=e.useCallback(async t=>{n.current.groups.indexOf(t)>=0&&await n.current.leaveGroup(t)},[]),E=e.useCallback((t,r,a)=>n.current.addSignalListener(t,r,a),[]),L=e.useCallback((t,r)=>n.current.removeSignalListener(t,r),[]),I=e.useCallback(()=>n.current.getHubConnectionId(),[]);return e.useEffect(()=>{R.current=c},[c]),e.useEffect(()=>{const t=n.current.addEventListener("connected",o),r=n.current.addEventListener("reconnected",b),a=n.current.addEventListener("disconnected",v);return R.current||j(!0),()=>{t(),r(),a()}},[o,v,b]),e.useEffect(()=>{n.current.setClientId(g||void 0)},[g]),e.useEffect(()=>{async function t(){await n.current.connect()}c&&t()},[c]),e.useEffect(()=>()=>{n.current.leaveAllGroups().then(()=>{n.current.disconnect()})},[n]),e.useMemo(()=>({isHubConnected:s,join:p,leave:C,subscribe:E,unsubscribe:L,getHubConnectionId:I}),[s,p,C,E,L,I])}}module.exports=M;
1
+ "use strict";const e=require("react"),f=require("react-redux"),U=require("./SignalR.js");require("@microsoft/signalr");require("@ancon/wildcat-types");require("../shared/wait.js");require("../api/generateBackoffWithEqualJitter.js");require("../number/randomIntFromInterval.js");function M(k,q,H,h){const{signalRApiUrl:A,logger:O,enableLogging:m}=k,{clientIdSelector:D,isSignalROnlineSelector:s}=q??{},{setIsSignalROnlineAction:u}=H??{},{useAppStore:w=f.useStore,useAppDispatch:x=f.useDispatch,useAppSelector:y=f.useSelector}=h??{};return function(G){const n=e.useRef(new U({signalRApiUrl:A,hub:G,logger:O,enableLogging:m})),o=w(),a=x(),g=y(D??(()=>{})),[r,j]=e.useState(!1),[c,v]=e.useState(!1),b=e.useRef(r),l=e.useCallback(()=>{(s==null?void 0:s(o.getState()))===!1&&u&&a(u({isSignalROnline:!0})),c||v(!0)},[a,c,o]),R=l,S=e.useCallback(()=>{(s==null?void 0:s(o.getState()))===!0&&u&&a(u({isSignalROnline:!1})),c&&v(!1)},[a,c,o]),p=e.useCallback(async t=>{n.current.groups.indexOf(t)<0&&await n.current.joinGroup(t)},[]),C=e.useCallback(async t=>{n.current.groups.indexOf(t)>=0&&await n.current.leaveGroup(t)},[]),E=e.useCallback((t,i,d)=>n.current.addSignalListener(t,i,d),[]),L=e.useCallback((t,i)=>n.current.removeSignalListener(t,i),[]),I=e.useCallback(()=>n.current.getHubConnectionId(),[]);return e.useEffect(()=>{b.current=r},[r]),e.useEffect(()=>{const t=n.current.addEventListener("connected",l),i=n.current.addEventListener("reconnected",R),d=n.current.addEventListener("disconnected",S);return b.current||j(!0),()=>{t(),i(),d()}},[l,S,R]),e.useEffect(()=>{n.current.setClientId(g||void 0)},[g]),e.useEffect(()=>{async function t(){await n.current.connect()}r&&t()},[r]),e.useEffect(()=>()=>{n.current.leaveAllGroups().then(()=>{n.current.disconnect()})},[n]),e.useMemo(()=>({isHubConnected:c,join:p,leave:C,subscribe:E,unsubscribe:L,getHubConnectionId:I}),[c,p,C,E,L,I])}}module.exports=M;
@@ -1,4 +1,4 @@
1
- import { useRef as O, useState as C, useCallback as t, useEffect as i, useMemo as z } from "react";
1
+ import { useRef as C, useState as H, useCallback as t, useEffect as o, useMemo as z } from "react";
2
2
  import { useStore as B, useDispatch as F, useSelector as J } from "react-redux";
3
3
  import K from "./SignalR.mjs";
4
4
  import "@microsoft/signalr";
@@ -6,70 +6,71 @@ import "@ancon/wildcat-types";
6
6
  import "../shared/wait.mjs";
7
7
  import "../api/generateBackoffWithEqualJitter.mjs";
8
8
  import "../number/randomIntFromInterval.mjs";
9
- function $(H, h, A, D) {
10
- const { signalRApiUrl: w, logger: x, enableLogging: y } = H, { clientIdSelector: G, isSignalROnlineSelector: d } = h, { setIsSignalROnlineAction: g } = A, {
9
+ function $(h, A, O, D) {
10
+ const { signalRApiUrl: w, logger: x, enableLogging: y } = h, { clientIdSelector: G, isSignalROnlineSelector: r } = A ?? {}, { setIsSignalROnlineAction: u } = O ?? {}, {
11
11
  useAppStore: j = B,
12
12
  useAppDispatch: k = F,
13
13
  useAppSelector: U = J
14
14
  } = D ?? {};
15
15
  return function(M) {
16
- const e = O(
16
+ const e = C(
17
17
  new K({
18
18
  signalRApiUrl: w,
19
19
  hub: M,
20
20
  logger: x,
21
21
  enableLogging: y
22
22
  })
23
- ), o = j(), u = k(), f = U(G), [s, q] = C(!1), [r, p] = C(!1), S = O(s), a = t(() => {
24
- d(o.getState()) || u(g({ isSignalROnline: !0 })), r || p(!0);
25
- }, [u, r, o]), R = a, v = t(() => {
26
- d(o.getState()) && u(g({ isSignalROnline: !1 })), r && p(!1);
27
- }, [u, r, o]), m = t(async (n) => {
23
+ ), a = j(), d = k(), g = U(G ?? (() => {
24
+ })), [c, q] = H(!1), [s, p] = H(!1), v = C(c), l = t(() => {
25
+ (r == null ? void 0 : r(a.getState())) === !1 && u && d(u({ isSignalROnline: !0 })), s || p(!0);
26
+ }, [d, s, a]), m = l, R = t(() => {
27
+ (r == null ? void 0 : r(a.getState())) === !0 && u && d(u({ isSignalROnline: !1 })), s && p(!1);
28
+ }, [d, s, a]), S = t(async (n) => {
28
29
  e.current.groups.indexOf(n) < 0 && await e.current.joinGroup(n);
29
30
  }, []), b = t(async (n) => {
30
31
  e.current.groups.indexOf(n) >= 0 && await e.current.leaveGroup(n);
31
32
  }, []), L = t(
32
- (n, c, l) => e.current.addSignalListener(
33
+ (n, i, f) => e.current.addSignalListener(
33
34
  n,
34
- c,
35
- l
35
+ i,
36
+ f
36
37
  ),
37
38
  []
38
39
  ), I = t(
39
- (n, c) => e.current.removeSignalListener(n, c),
40
+ (n, i) => e.current.removeSignalListener(n, i),
40
41
  []
41
42
  ), E = t(
42
43
  () => e.current.getHubConnectionId(),
43
44
  []
44
45
  );
45
- return i(() => {
46
- S.current = s;
47
- }, [s]), i(() => {
46
+ return o(() => {
47
+ v.current = c;
48
+ }, [c]), o(() => {
48
49
  const n = e.current.addEventListener(
49
50
  "connected",
50
- a
51
- ), c = e.current.addEventListener(
51
+ l
52
+ ), i = e.current.addEventListener(
52
53
  "reconnected",
53
- R
54
- ), l = e.current.addEventListener(
54
+ m
55
+ ), f = e.current.addEventListener(
55
56
  "disconnected",
56
- v
57
+ R
57
58
  );
58
- return S.current || q(!0), () => {
59
- n(), c(), l();
59
+ return v.current || q(!0), () => {
60
+ n(), i(), f();
60
61
  };
61
62
  }, [
62
- a,
63
- v,
64
- R
65
- ]), i(() => {
66
- e.current.setClientId(f || void 0);
67
- }, [f]), i(() => {
63
+ l,
64
+ R,
65
+ m
66
+ ]), o(() => {
67
+ e.current.setClientId(g || void 0);
68
+ }, [g]), o(() => {
68
69
  async function n() {
69
70
  await e.current.connect();
70
71
  }
71
- s && n();
72
- }, [s]), i(
72
+ c && n();
73
+ }, [c]), o(
73
74
  () => () => {
74
75
  e.current.leaveAllGroups().then(() => {
75
76
  e.current.disconnect();
@@ -78,14 +79,14 @@ function $(H, h, A, D) {
78
79
  [e]
79
80
  ), z(
80
81
  () => ({
81
- isHubConnected: r,
82
- join: m,
82
+ isHubConnected: s,
83
+ join: S,
83
84
  leave: b,
84
85
  subscribe: L,
85
86
  unsubscribe: I,
86
87
  getHubConnectionId: E
87
88
  }),
88
- [r, m, b, L, I, E]
89
+ [s, S, b, L, I, E]
89
90
  );
90
91
  };
91
92
  }