@royaltics/ui 1.9.0 → 1.9.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.
@@ -0,0 +1,126 @@
1
+ # @royaltics/ui - WebSocket Store & Hooks
2
+
3
+ The WebSocket system has been refactored to use a global `Zustand` store, entirely removing the need for a `<WebSocketProviderContext>` React wrapper. This allows you to initialize socket connections anywhere in your application (even outside of React components) and strictly ties connections to the `socket.io-client` lifecycle.
4
+
5
+ ## 1. Global Socket Initialization
6
+ To initialize your socket connection globally, call `initSocketOptions`. You should only do this once, typically in your application's entry file or authentication hook.
7
+
8
+ ```tsx
9
+ import { initSocketOptions } from '@royaltics/ui/hooks';
10
+
11
+ // Call this when the user logs in or app initializes
12
+ initSocketOptions({
13
+ socketUrl: 'https://socket.example.com',
14
+ token: 'YOUR_AUTH_TOKEN_HERE',
15
+ options: {
16
+ // Standard socket.io ManagerOptions & SocketOptions
17
+ reconnection: true,
18
+ reconnectionAttempts: 5,
19
+ },
20
+ onAuthError: (err) => {
21
+ // Triggered when socket.io 'connect_error' is fired.
22
+ // You can implement token refreshing mechanisms and then re-call `initSocketOptions({ ...newConfig })`
23
+ console.error("Socket authentication failed", err);
24
+ }
25
+ });
26
+ ```
27
+ *Note: If you call `initSocketOptions` with an empty `socketUrl` or `token`, it will automatically disconnect the socket.*
28
+
29
+ ## 2. Reading Global Socket State
30
+ You can read the socket connection status directly using the `useSocketStore` hook anywhere in your component tree.
31
+
32
+ ```tsx
33
+ import { useSocketState } from '@royaltics/ui/socket';
34
+
35
+ export const ConnectionStatus = () => {
36
+ // You can read the status ('connected', 'disconnected', 'error', 'connecting')
37
+ const { status, isConnected } = useSocketState();
38
+
39
+ return <div>Socket is {isConnected ? 'Online' : 'Offline'}</div>
40
+ }
41
+ ```
42
+
43
+ ## 3. Emitting Events
44
+ The store gives you direct access to the `emit` function, completely sidestepping standard React context constraints.
45
+
46
+ ```tsx
47
+ import { useSocketState } from '@royaltics/ui/socket';
48
+
49
+ export const ChatInput = () => {
50
+ // Destructure what you need!
51
+ const { emit, isConnected } = useSocketState();
52
+
53
+ const sendMessage = () => {
54
+ if (!isConnected) return;
55
+ emit('chat:message', { text: 'Hello, world!' });
56
+ };
57
+
58
+ return <button onClick={sendMessage}>Send</button>;
59
+ };
60
+ ```
61
+
62
+ ### `setToken(token)`
63
+ If you only need to update the authentication token without changing the `socketUrl` or other options, you can use `setToken`. This will automatically disconnect the current socket and reconnect with the new token.
64
+
65
+ ```tsx
66
+ import { useSocketState } from '@royaltics/ui/socket';
67
+
68
+ export const ProfileSettings = () => {
69
+ const { setToken } = useSocketState();
70
+
71
+ const handleSessionRefresh = (newToken: string) => {
72
+ setToken(newToken);
73
+ };
74
+
75
+ return <button onClick={() => handleSessionRefresh('NEW_TOKEN')}>Refresh Socket Token</button>;
76
+ };
77
+ ```
78
+
79
+ ## 4. Tree-Shaking & Bundle Optimization
80
+ To ensure that `socket.io-client` is only bundled when you actually use WebSockets, the socket logic is isolated in `@royaltics/ui/socket`.
81
+
82
+ > [!IMPORTANT]
83
+ > Do **NOT** import socket hooks from `@royaltics/ui/hooks`. Always use the dedicated entry point:
84
+ > `import { useSocketState } from '@royaltics/ui/socket';`
85
+
86
+ ## 5. Listening to Events
87
+ We provide two tailored hooks for listening to specific Socket.io events and managing standard React lifecycles.
88
+
89
+ ### `useSocketEvent`
90
+ Used for managing a single distinct event listener.
91
+
92
+ ```tsx
93
+ import { useSocketEvent } from '@royaltics/ui/socket';
94
+
95
+ export const NotificationToast = () => {
96
+ // Automatically binds/unbinds on mount/unmount
97
+ useSocketEvent('notification:new', (data) => {
98
+ console.log('Got new notification', data);
99
+ });
100
+
101
+ return null;
102
+ }
103
+ ```
104
+
105
+ ### `useSocketEvents`
106
+ Used when a component needs to mount a dense array of closely related events. You can easily toggle individual events using the `enabled` flag.
107
+
108
+ ```tsx
109
+ import { useSocketEvents } from '@royaltics/ui/socket';
110
+
111
+ export const ChatRoom = () => {
112
+ useSocketEvents([
113
+ {
114
+ event: 'chat:message',
115
+ onData: (message) => console.log('New Message:', message)
116
+ },
117
+ {
118
+ event: 'chat:typing',
119
+ enabled: false, // You can toggle this dynamically!
120
+ onData: (user) => console.log(`${user} is typing...`)
121
+ }
122
+ ]);
123
+
124
+ return <div>Chat UI</div>
125
+ }
126
+ ```
@@ -1,3 +1,4 @@
1
1
  export * from "socket.io-client";
2
2
  export * from "./socket-store.js";
3
+ export * from "./useSocketState.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/socket/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/socket/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from "socket.io-client";
2
2
  export * from "./socket-store.js";
3
+ export * from "./useSocketState.js";
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/socket/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/socket/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
@@ -4,9 +4,17 @@ export interface SocketStoreState {
4
4
  socket: Socket | null;
5
5
  status: SocketStatus;
6
6
  isConnected: boolean;
7
- connect: (url: string, token: string, extraOptions?: Partial<ManagerOptions & SocketOptions>) => void;
7
+ config: {
8
+ url: string;
9
+ token: string;
10
+ options?: Partial<ManagerOptions & SocketOptions>;
11
+ onAuthError?: (err: Error) => void;
12
+ } | null;
13
+ connect: (url: string, token: string, extraOptions?: Partial<ManagerOptions & SocketOptions>, onAuthError?: (err: Error) => void) => void;
8
14
  disconnect: () => void;
15
+ setToken: (token: string) => void;
9
16
  emit: (event: string, ...args: any[]) => void;
17
+ off: (event: string, callback?: (...args: any[]) => void) => void;
10
18
  }
11
19
  export interface SocketHookEvent<T = any> {
12
20
  event: string;
@@ -14,8 +22,4 @@ export interface SocketHookEvent<T = any> {
14
22
  enabled?: boolean;
15
23
  }
16
24
  export declare const socketStore: import("zustand").StoreApi<SocketStoreState>;
17
- export declare function useSocketStore(): SocketStoreState;
18
- export declare function useSocketStore<T>(selector: (state: SocketStoreState) => T): T;
19
- export declare const useSocketEvent: <T = any>(event: string, callback: (...args: T[]) => void) => void;
20
- export declare const useSocketEvents: (events: SocketHookEvent[]) => void;
21
25
  //# sourceMappingURL=socket-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"socket-store.d.ts","sourceRoot":"","sources":["../../../src/core/socket/socket-store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAM,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAG7E,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC;AAEjF,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,cAAc,GAAG,aAAa,CAAC,KAAK,IAAI,CAAC;IACtG,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,GAAG;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,8CAyErB,CAAC;AAGJ,wBAAgB,cAAc,IAAI,gBAAgB,CAAC;AACnD,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,CAAC,GAAG,CAAC,CAAC;AAK/E,eAAO,MAAM,cAAc,GAAI,CAAC,GAAG,GAAG,EAAE,OAAO,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,SAUtF,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,QAAQ,eAAe,EAAE,SAkBxD,CAAC"}
1
+ {"version":3,"file":"socket-store.d.ts","sourceRoot":"","sources":["../../../src/core/socket/socket-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE7E,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC;AAEjF,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE;QACJ,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC;QAClD,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;KACtC,GAAG,IAAI,CAAC;IACT,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,cAAc,GAAG,aAAa,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,KAAK,IAAI,CAAC;IAC1I,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC9C,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC;CACrE;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,GAAG;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,8CAgGrB,CAAC"}
@@ -1,15 +1,15 @@
1
1
  import { createStore } from 'zustand/vanilla';
2
- import { useStore } from 'zustand';
3
2
  import { io } from 'socket.io-client';
4
- import { useEffect } from 'react';
5
3
  export const socketStore = createStore((set, get) => ({
6
4
  socket: null,
7
5
  status: 'disconnected',
8
6
  isConnected: false,
9
- connect: (url, token, extraOptions) => {
7
+ config: null,
8
+ connect: (url, token, extraOptions, onAuthError) => {
10
9
  let { socket } = get();
11
10
  // Prevent reconnecting if already connected to the same instance/token
12
- if (socket?.connected && socket.auth && socket.auth.token === token)
11
+ // @ts-ignore: uri is private but needed for caching check
12
+ if (socket?.connected && socket.auth && socket.auth.token === token && socket.io.uri === url)
13
13
  return;
14
14
  // Clean up previous instance
15
15
  if (socket) {
@@ -41,19 +41,28 @@ export const socketStore = createStore((set, get) => ({
41
41
  newSocket.on('connect_error', (error) => {
42
42
  console.error('[Socket.IO] Connection error:', error.message);
43
43
  set({ status: 'error', isConnected: false });
44
+ if (onAuthError) {
45
+ onAuthError(error);
46
+ }
44
47
  });
45
48
  newSocket.on('error', (error) => {
46
49
  console.error('[Socket.IO] Socket error:', error);
47
50
  set({ status: 'error', isConnected: false });
48
51
  });
49
- set({ socket: newSocket });
52
+ set({ socket: newSocket, config: { url, token, options: extraOptions, onAuthError } });
53
+ },
54
+ setToken: (token) => {
55
+ const { config, connect } = get();
56
+ if (config && config.token !== token) {
57
+ connect(config.url, token, config.options, config.onAuthError);
58
+ }
50
59
  },
51
60
  disconnect: () => {
52
61
  const { socket } = get();
53
62
  if (socket) {
54
63
  socket.removeAllListeners();
55
64
  socket.disconnect();
56
- set({ socket: null, status: 'disconnected', isConnected: false });
65
+ set({ socket: null, status: 'disconnected', isConnected: false, config: null });
57
66
  }
58
67
  },
59
68
  emit: (event, ...args) => {
@@ -64,36 +73,17 @@ export const socketStore = createStore((set, get) => ({
64
73
  else {
65
74
  console.warn(`[Socket.IO] Cannot emit "${event}": socket not connected`);
66
75
  }
76
+ },
77
+ off: (event, callback) => {
78
+ const { socket } = get();
79
+ if (socket) {
80
+ if (callback) {
81
+ socket.off(event, callback);
82
+ }
83
+ else {
84
+ socket.off(event);
85
+ }
86
+ }
67
87
  }
68
88
  }));
69
- export function useSocketStore(selector) {
70
- return useStore(socketStore, selector || ((s) => s));
71
- }
72
- export const useSocketEvent = (event, callback) => {
73
- const socket = useSocketStore(s => s.socket);
74
- useEffect(() => {
75
- if (!socket)
76
- return;
77
- socket.on(event, callback);
78
- return () => {
79
- socket.off(event, callback);
80
- };
81
- }, [socket, event, callback]);
82
- };
83
- export const useSocketEvents = (events) => {
84
- const socket = useSocketStore(s => s.socket);
85
- useEffect(() => {
86
- if (!socket)
87
- return;
88
- const activeEvents = events.filter(e => e.enabled !== false);
89
- activeEvents.forEach(({ event, onData }) => {
90
- socket.on(event, onData);
91
- });
92
- return () => {
93
- activeEvents.forEach(({ event, onData }) => {
94
- socket.off(event, onData);
95
- });
96
- };
97
- }, [socket, events]);
98
- };
99
89
  //# sourceMappingURL=socket-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"socket-store.js","sourceRoot":"","sources":["../../../src/core/socket/socket-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"socket-store.js","sourceRoot":"","sources":["../../../src/core/socket/socket-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { ManagerOptions, SocketOptions } from 'socket.io-client';
2
+ import { SocketHookEvent } from './socket-store.js';
3
+ export interface SocketOptionsProps {
4
+ socketUrl?: string;
5
+ token?: string;
6
+ options?: Partial<ManagerOptions & SocketOptions>;
7
+ onAuthError?: (error: Error) => void;
8
+ }
9
+ export declare const initSocketOptions: ({ socketUrl, token, options, onAuthError }: SocketOptionsProps) => void;
10
+ export declare const useSocketState: () => import("./socket-store.js").SocketStoreState;
11
+ export declare const useSocketEvent: <T = any>(event: string, callback: (...args: T[]) => void) => void;
12
+ export declare const useSocketEvents: (events: SocketHookEvent[]) => void;
13
+ //# sourceMappingURL=useSocketState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSocketState.d.ts","sourceRoot":"","sources":["../../../src/core/socket/useSocketState.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAe,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEjE,MAAM,WAAW,kBAAkB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC;IAClD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACxC;AAED,eAAO,MAAM,iBAAiB,GAAI,4CAA4C,kBAAkB,SAM/F,CAAC;AAEF,eAAO,MAAM,cAAc,oDAE1B,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,CAAC,GAAG,GAAG,EAAE,OAAO,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,SAUtF,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,QAAQ,eAAe,EAAE,SAkBxD,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { useEffect } from 'react';
2
+ import { useStore } from 'zustand';
3
+ import { socketStore } from './socket-store.js';
4
+ export const initSocketOptions = ({ socketUrl, token, options, onAuthError }) => {
5
+ if (socketUrl && token) {
6
+ socketStore.getState().connect(socketUrl, token, options, onAuthError);
7
+ }
8
+ else {
9
+ socketStore.getState().disconnect();
10
+ }
11
+ };
12
+ export const useSocketState = () => {
13
+ return useStore(socketStore);
14
+ };
15
+ export const useSocketEvent = (event, callback) => {
16
+ const socket = useSocketState().socket;
17
+ useEffect(() => {
18
+ if (!socket)
19
+ return;
20
+ socket.on(event, callback);
21
+ return () => {
22
+ socket.off(event, callback);
23
+ };
24
+ }, [socket, event, callback]);
25
+ };
26
+ export const useSocketEvents = (events) => {
27
+ const socket = useSocketState().socket;
28
+ useEffect(() => {
29
+ if (!socket)
30
+ return;
31
+ const activeEvents = events.filter(e => e.enabled !== false);
32
+ activeEvents.forEach(({ event, onData }) => {
33
+ socket.on(event, onData);
34
+ });
35
+ return () => {
36
+ activeEvents.forEach(({ event, onData }) => {
37
+ socket.off(event, onData);
38
+ });
39
+ };
40
+ }, [socket, events]);
41
+ };
42
+ //# sourceMappingURL=useSocketState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSocketState.js","sourceRoot":"","sources":["../../../src/core/socket/useSocketState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,WAAW,EAAmB,MAAM,mBAAmB,CAAC;AASjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAsB,EAAE,EAAE;IAChG,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QACrB,WAAW,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC3E,CAAC;SAAM,CAAC;QACJ,WAAW,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IAC/B,OAAO,QAAQ,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAU,KAAa,EAAE,QAAgC,EAAE,EAAE;IACvF,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC,MAAM,CAAC;IAEvC,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC3B,OAAO,GAAG,EAAE;YACR,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAChC,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAyB,EAAE,EAAE;IACzD,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC,MAAM,CAAC;IAEvC,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC;QAE7D,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;YACvC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACR,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;gBACvC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACzB,CAAC,CAAC"}
@@ -3,5 +3,4 @@ export { default as useNavigatorOnLine } from "./useNavigatorOnline.js";
3
3
  export { default as useRouter } from "./useRouter.js";
4
4
  export { initHttpOptions, useHttpStore, type HttpOptions } from "./useHttpStore.js";
5
5
  export { i18nStore, useI18n, t } from "../core/i18n/i18n-store.js";
6
- export { WebSocketProviderContext } from "../providers/websocket-provider.js";
7
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,4BAA4B,CAAC"}
@@ -3,5 +3,4 @@ export { default as useNavigatorOnLine } from "./useNavigatorOnline.js";
3
3
  export { default as useRouter } from "./useRouter.js";
4
4
  export { initHttpOptions, useHttpStore } from "./useHttpStore.js";
5
5
  export { i18nStore, useI18n, t } from "../core/i18n/i18n-store.js";
6
- export { WebSocketProviderContext } from "../providers/websocket-provider.js";
7
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAoB,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAoB,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,4BAA4B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@royaltics/ui",
3
- "version": "1.9.0",
3
+ "version": "1.9.1",
4
4
  "private": false,
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",
@@ -1,22 +0,0 @@
1
- import React from 'react';
2
- import { RefreshTokenConfig } from '../core/http/http-store.js';
3
- interface HttpProviderProps {
4
- children: React.ReactNode;
5
- baseUrl?: string;
6
- debug?: boolean;
7
- initialHeaders?: Record<string, string>;
8
- skipRejected?: boolean;
9
- onHttpError?: (error: Error | Response) => void;
10
- onNotAuth?: (currentUrl: string) => void;
11
- refreshTokenConfig?: RefreshTokenConfig;
12
- queryConfig?: {
13
- staleTime?: number;
14
- gcTime?: number;
15
- refetchOnWindowFocus?: boolean;
16
- retry?: number;
17
- };
18
- }
19
- export declare const HttpProvider: React.FC<HttpProviderProps>;
20
- export declare const useHttpContext: () => import("../core/http/http.types.js").HttpStoreState;
21
- export {};
22
- //# sourceMappingURL=http-provider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-provider.d.ts","sourceRoot":"","sources":["../../src/providers/http-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAElD,OAAO,EAAa,kBAAkB,EAAgB,MAAM,4BAA4B,CAAC;AAEzF,UAAU,iBAAiB;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC;IAChD,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,WAAW,CAAC,EAAE;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACF;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAuCpD,CAAC;AAGF,eAAO,MAAM,cAAc,2DAAqC,CAAC"}
@@ -1,31 +0,0 @@
1
- import React, { useEffect, useMemo } from 'react';
2
- import QueryManager from '../core/http/query-manager.js';
3
- import { httpStore, useHttpStore } from '../core/http/http-store.js';
4
- export const HttpProvider = ({ children, baseUrl = '', debug = false, initialHeaders = {}, skipRejected = false, onHttpError, onNotAuth, refreshTokenConfig, queryConfig, }) => {
5
- const queryManager = useMemo(() => new QueryManager(queryConfig), []);
6
- useEffect(() => {
7
- httpStore.getState().init({
8
- baseUrl,
9
- debug,
10
- headers: initialHeaders,
11
- queryManager,
12
- skipRejected,
13
- onHttpError,
14
- onNotAuth,
15
- refreshTokenConfig,
16
- });
17
- const handleOnline = () => httpStore.getState().setOnline(true);
18
- const handleOffline = () => httpStore.getState().setOnline(false);
19
- window.addEventListener('online', handleOnline);
20
- window.addEventListener('offline', handleOffline);
21
- return () => {
22
- queryManager.destroy();
23
- window.removeEventListener('online', handleOnline);
24
- window.removeEventListener('offline', handleOffline);
25
- };
26
- }, [baseUrl, debug, initialHeaders, queryManager, skipRejected, onHttpError, onNotAuth, refreshTokenConfig]);
27
- return React.createElement(React.Fragment, null, children);
28
- };
29
- // Legacy compatibility wrapper to avoid breaking consumers that imported useHttpContext
30
- export const useHttpContext = () => useHttpStore(state => state);
31
- //# sourceMappingURL=http-provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-provider.js","sourceRoot":"","sources":["../../src/providers/http-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,YAAY,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAsB,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAmBzF,MAAM,CAAC,MAAM,YAAY,GAAgC,CAAC,EACzD,QAAQ,EACR,OAAO,GAAG,EAAE,EACZ,KAAK,GAAG,KAAK,EACb,cAAc,GAAG,EAAE,EACnB,YAAY,GAAG,KAAK,EACpB,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,WAAW,GACX,EAAE,EAAE;IACJ,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;IAEtE,SAAS,CAAC,GAAG,EAAE;QACd,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;YACzB,OAAO;YACP,KAAK;YACL,OAAO,EAAE,cAAc;YACvB,YAAY;YACZ,YAAY;YACZ,WAAW;YACX,SAAS;YACT,kBAAkB;SAClB,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAElE,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAChD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAElD,OAAO,GAAG,EAAE;YACX,YAAY,CAAC,OAAO,EAAE,CAAC;YACvB,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACnD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACtD,CAAC,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAE7G,OAAO,0CAAG,QAAQ,CAAI,CAAC;AACxB,CAAC,CAAC;AAEF,wFAAwF;AACxF,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from './websocket-provider.js';
2
- export * from './http-provider.js';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from './websocket-provider.js';
2
- export * from './http-provider.js';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC"}
@@ -1,11 +0,0 @@
1
- import React from 'react';
2
- import { ManagerOptions, SocketOptions } from 'socket.io-client';
3
- export interface WebSocketProviderContextProps {
4
- children: React.ReactNode;
5
- socketUrl?: string;
6
- token?: string;
7
- options?: Partial<ManagerOptions & SocketOptions>;
8
- }
9
- export declare const WebSocketProviderContext: ({ children, socketUrl, token, options }: WebSocketProviderContextProps) => React.JSX.Element;
10
- export default WebSocketProviderContext;
11
- //# sourceMappingURL=websocket-provider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"websocket-provider.d.ts","sourceRoot":"","sources":["../../src/providers/websocket-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjE,MAAM,WAAW,6BAA6B;IAC1C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC;CACrD;AAED,eAAO,MAAM,wBAAwB,GAAI,yCAAyC,6BAA6B,sBAe9G,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
@@ -1,18 +0,0 @@
1
- import React, { useEffect } from 'react';
2
- import { socketStore } from '../core/socket/socket-store.js';
3
- export const WebSocketProviderContext = ({ children, socketUrl, token, options }) => {
4
- useEffect(() => {
5
- if (socketUrl && token) {
6
- socketStore.getState().connect(socketUrl, token, options);
7
- }
8
- else {
9
- socketStore.getState().disconnect();
10
- }
11
- return () => {
12
- socketStore.getState().disconnect();
13
- };
14
- }, [socketUrl, token, options]); // Make sure to pass stable references for options
15
- return (React.createElement(React.Fragment, null, children));
16
- };
17
- export default WebSocketProviderContext;
18
- //# sourceMappingURL=websocket-provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"websocket-provider.js","sourceRoot":"","sources":["../../src/providers/websocket-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAS7D,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAiC,EAAE,EAAE;IAE/G,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;YACrB,WAAW,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACJ,WAAW,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,CAAC;QACxC,CAAC;QAED,OAAO,GAAG,EAAE;YACR,WAAW,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,CAAC;QACxC,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,kDAAkD;IAEnF,OAAO,CAAC,0CAAG,QAAQ,CAAI,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF,eAAe,wBAAwB,CAAC"}