@sudobility/wildduck_client 2.3.0 → 2.3.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/README.md +46 -0
- package/dist/components/WebSocketStatus.d.ts +26 -0
- package/dist/components/WebSocketStatus.d.ts.map +1 -0
- package/dist/components/WebSocketStatus.js +187 -0
- package/dist/components/WebSocketStatus.js.map +1 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,8 +9,10 @@ TypeScript client library for the WildDuck email API with React and React Native
|
|
|
9
9
|
|
|
10
10
|
- ✅ **Complete Type Safety** - Full TypeScript support with comprehensive type definitions
|
|
11
11
|
- ✅ **React Integration** - Built-in hooks using @tanstack/react-query for optimal data fetching
|
|
12
|
+
- ✅ **Real-time WebSocket Support** - Optional WebSocket connections for instant updates (v2.3.0+)
|
|
12
13
|
- ✅ **Crypto Authentication** - SIWE (Sign-in with Ethereum) and traditional password authentication
|
|
13
14
|
- ✅ **Comprehensive API** - User, mailbox, message, address, filter, and autoreply management
|
|
15
|
+
- ✅ **React Native Compatible** - Works seamlessly in both React JS and React Native (0.64+)
|
|
14
16
|
- ✅ **Development Mode** - Mock data for testing without a live server
|
|
15
17
|
- ✅ **Integration Tests** - Full test coverage with real WildDuck server testing
|
|
16
18
|
- ✅ **Cloudflare Worker Support** - Optional worker URL configuration for proxying requests
|
|
@@ -216,6 +218,50 @@ See [docs/GAP_ANALYSIS.md](./docs/GAP_ANALYSIS.md) for a comprehensive breakdown
|
|
|
216
218
|
|
|
217
219
|
For detailed documentation on all hooks, see [docs/HOOKS_DOCUMENTATION.md](./docs/HOOKS_DOCUMENTATION.md).
|
|
218
220
|
|
|
221
|
+
## WebSocket Real-time Support
|
|
222
|
+
|
|
223
|
+
Since v2.3.0, all hooks support optional WebSocket connections for real-time updates.
|
|
224
|
+
|
|
225
|
+
### Quick Start
|
|
226
|
+
|
|
227
|
+
```tsx
|
|
228
|
+
import { WebSocketProvider } from '@sudobility/wildduck_client';
|
|
229
|
+
|
|
230
|
+
function App() {
|
|
231
|
+
return (
|
|
232
|
+
<WebSocketProvider
|
|
233
|
+
enabled={true}
|
|
234
|
+
config={{ url: 'ws://your-server.com/ws' }}
|
|
235
|
+
>
|
|
236
|
+
<YourApp />
|
|
237
|
+
</WebSocketProvider>
|
|
238
|
+
);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
// Enable WebSocket in any hook
|
|
242
|
+
const { mailboxes } = useWildduckMailboxes(
|
|
243
|
+
networkClient,
|
|
244
|
+
config,
|
|
245
|
+
wildduckUserAuth,
|
|
246
|
+
false,
|
|
247
|
+
{ enableWebSocket: true } // ← Enable real-time updates
|
|
248
|
+
);
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Features
|
|
252
|
+
|
|
253
|
+
- **Automatic reconnection** with exponential backoff
|
|
254
|
+
- **Per-user connections** - one WebSocket per authenticated user
|
|
255
|
+
- **Seamless fallback** to REST API if WebSocket unavailable
|
|
256
|
+
- **React Query integration** - automatic cache updates
|
|
257
|
+
- **Event-driven updates** - mailboxes, messages, filters, settings, autoreply
|
|
258
|
+
|
|
259
|
+
### Documentation
|
|
260
|
+
|
|
261
|
+
- **[Complete WebSocket Guide](./docs/WEBSOCKET.md)** - Setup, configuration, API reference
|
|
262
|
+
- **[Usage Examples](./docs/examples/WEBSOCKET_EXAMPLES.md)** - Real-world code examples
|
|
263
|
+
- **[React Native Compatibility](./docs/REACT_NATIVE_COMPATIBILITY.md)** - Mobile support guide
|
|
264
|
+
|
|
219
265
|
## Development
|
|
220
266
|
|
|
221
267
|
### Setup
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { WildduckUserAuth } from "@sudobility/types";
|
|
3
|
+
import type { ConnectionState } from "../websocket/types";
|
|
4
|
+
export interface WebSocketStatusProps {
|
|
5
|
+
wildduckUserAuth: WildduckUserAuth | null;
|
|
6
|
+
showReconnectCount?: boolean;
|
|
7
|
+
showDetails?: boolean;
|
|
8
|
+
className?: string;
|
|
9
|
+
style?: React.CSSProperties;
|
|
10
|
+
renderStatus?: (state: ConnectionState, reconnectAttempt: number) => React.ReactNode;
|
|
11
|
+
}
|
|
12
|
+
export declare function WebSocketStatus({ wildduckUserAuth, showReconnectCount, showDetails, className, style, renderStatus, }: WebSocketStatusProps): React.ReactElement | null;
|
|
13
|
+
export interface WebSocketStatusBadgeProps {
|
|
14
|
+
wildduckUserAuth: WildduckUserAuth | null;
|
|
15
|
+
size?: number;
|
|
16
|
+
className?: string;
|
|
17
|
+
style?: React.CSSProperties;
|
|
18
|
+
}
|
|
19
|
+
export declare function WebSocketStatusBadge({ wildduckUserAuth, size, className, style, }: WebSocketStatusBadgeProps): React.ReactElement | null;
|
|
20
|
+
export interface WebSocketStatsProps {
|
|
21
|
+
wildduckUserAuth: WildduckUserAuth | null;
|
|
22
|
+
className?: string;
|
|
23
|
+
style?: React.CSSProperties;
|
|
24
|
+
}
|
|
25
|
+
export declare function WebSocketStats({ wildduckUserAuth, className, style, }: WebSocketStatsProps): React.ReactElement | null;
|
|
26
|
+
//# sourceMappingURL=WebSocketStatus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebSocketStatus.d.ts","sourceRoot":"","sources":["../../src/components/WebSocketStatus.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,WAAW,oBAAoB;IAEnC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAG1C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAG7B,WAAW,CAAC,EAAE,OAAO,CAAC;IAGtB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAG5B,YAAY,CAAC,EAAE,CACb,KAAK,EAAE,eAAe,EACtB,gBAAgB,EAAE,MAAM,KACrB,KAAK,CAAC,SAAS,CAAC;CACtB;AAUD,wBAAgB,eAAe,CAAC,EAC9B,gBAAgB,EAChB,kBAAyB,EACzB,WAAmB,EACnB,SAAc,EACd,KAAK,EACL,YAAY,GACb,EAAE,oBAAoB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAwJlD;AAKD,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,wBAAgB,oBAAoB,CAAC,EACnC,gBAAgB,EAChB,IAAQ,EACR,SAAc,EACd,KAAK,GACN,EAAE,yBAAyB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAyDvD;AAKD,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,wBAAgB,cAAc,CAAC,EAC7B,gBAAgB,EAChB,SAAc,EACd,KAAK,GACN,EAAE,mBAAmB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA+DjD"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import React, { useEffect, useState } from "react";
|
|
2
|
+
import { useWebSocket } from "../websocket/useWebSocket";
|
|
3
|
+
export function WebSocketStatus({ wildduckUserAuth, showReconnectCount = true, showDetails = false, className = "", style, renderStatus, }) {
|
|
4
|
+
const wsContext = useWebSocket();
|
|
5
|
+
const [connectionState, setConnectionState] = useState("disconnected");
|
|
6
|
+
const [reconnectAttempt, setReconnectAttempt] = useState(0);
|
|
7
|
+
const [reconnectDelay, setReconnectDelay] = useState(0);
|
|
8
|
+
const [lastError, setLastError] = useState(null);
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
if (!wsContext || !wildduckUserAuth) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const client = wsContext.getClient(wildduckUserAuth);
|
|
14
|
+
if (!client) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
setConnectionState(client.state);
|
|
18
|
+
setReconnectAttempt(client.reconnectAttempt);
|
|
19
|
+
const handleStateChange = (_oldState, newState) => {
|
|
20
|
+
setConnectionState(newState);
|
|
21
|
+
if (newState === "connected") {
|
|
22
|
+
setLastError(null);
|
|
23
|
+
setReconnectAttempt(0);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
const handleReconnecting = (attempt, delay) => {
|
|
27
|
+
setReconnectAttempt(attempt);
|
|
28
|
+
setReconnectDelay(delay);
|
|
29
|
+
};
|
|
30
|
+
const handleError = (error) => {
|
|
31
|
+
setLastError(error.message);
|
|
32
|
+
};
|
|
33
|
+
client.on("stateChange", handleStateChange);
|
|
34
|
+
client.on("reconnecting", handleReconnecting);
|
|
35
|
+
client.on("error", handleError);
|
|
36
|
+
return () => {
|
|
37
|
+
client.off("stateChange", handleStateChange);
|
|
38
|
+
client.off("reconnecting", handleReconnecting);
|
|
39
|
+
client.off("error", handleError);
|
|
40
|
+
};
|
|
41
|
+
}, [wsContext, wildduckUserAuth]);
|
|
42
|
+
if (!wsContext || !wildduckUserAuth) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
if (renderStatus) {
|
|
46
|
+
return React.createElement(React.Fragment, null, renderStatus(connectionState, reconnectAttempt));
|
|
47
|
+
}
|
|
48
|
+
const statusConfig = {
|
|
49
|
+
disconnected: { color: "#6c757d", text: "Offline", emoji: "⚫" },
|
|
50
|
+
connecting: { color: "#ffc107", text: "Connecting...", emoji: "🟡" },
|
|
51
|
+
connected: { color: "#28a745", text: "Live", emoji: "🟢" },
|
|
52
|
+
reconnecting: {
|
|
53
|
+
color: "#fd7e14",
|
|
54
|
+
text: "Reconnecting...",
|
|
55
|
+
emoji: "🟠",
|
|
56
|
+
},
|
|
57
|
+
disconnecting: { color: "#dc3545", text: "Disconnecting...", emoji: "🔴" },
|
|
58
|
+
};
|
|
59
|
+
const { color, text } = statusConfig[connectionState];
|
|
60
|
+
return (React.createElement("div", { className: `websocket-status ${className}`, style: {
|
|
61
|
+
display: "flex",
|
|
62
|
+
alignItems: "center",
|
|
63
|
+
gap: "8px",
|
|
64
|
+
padding: "4px 12px",
|
|
65
|
+
borderRadius: "16px",
|
|
66
|
+
backgroundColor: "rgba(0, 0, 0, 0.05)",
|
|
67
|
+
fontSize: "14px",
|
|
68
|
+
...style,
|
|
69
|
+
} },
|
|
70
|
+
React.createElement("span", { className: "status-dot", style: {
|
|
71
|
+
display: "inline-block",
|
|
72
|
+
width: "8px",
|
|
73
|
+
height: "8px",
|
|
74
|
+
borderRadius: "50%",
|
|
75
|
+
backgroundColor: color,
|
|
76
|
+
}, title: text }),
|
|
77
|
+
React.createElement("span", { className: "status-text", style: { fontWeight: 500 } }, text),
|
|
78
|
+
showReconnectCount &&
|
|
79
|
+
connectionState === "reconnecting" &&
|
|
80
|
+
reconnectAttempt > 0 && (React.createElement("span", { className: "reconnect-info", style: { fontSize: "12px", color: "#6c757d" } },
|
|
81
|
+
"(attempt ",
|
|
82
|
+
reconnectAttempt,
|
|
83
|
+
")")),
|
|
84
|
+
showDetails && (React.createElement("div", { className: "status-details", style: {
|
|
85
|
+
fontSize: "12px",
|
|
86
|
+
color: "#6c757d",
|
|
87
|
+
marginLeft: "8px",
|
|
88
|
+
} },
|
|
89
|
+
connectionState === "reconnecting" && reconnectDelay > 0 && (React.createElement("span", null,
|
|
90
|
+
"Retry in ",
|
|
91
|
+
Math.round(reconnectDelay / 1000),
|
|
92
|
+
"s")),
|
|
93
|
+
lastError && connectionState !== "connected" && (React.createElement("span", { title: lastError }, " | Error"))))));
|
|
94
|
+
}
|
|
95
|
+
export function WebSocketStatusBadge({ wildduckUserAuth, size = 8, className = "", style, }) {
|
|
96
|
+
const wsContext = useWebSocket();
|
|
97
|
+
const [connectionState, setConnectionState] = useState("disconnected");
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
if (!wsContext || !wildduckUserAuth) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const client = wsContext.getClient(wildduckUserAuth);
|
|
103
|
+
if (!client) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
setConnectionState(client.state);
|
|
107
|
+
const handleStateChange = (_oldState, newState) => {
|
|
108
|
+
setConnectionState(newState);
|
|
109
|
+
};
|
|
110
|
+
client.on("stateChange", handleStateChange);
|
|
111
|
+
return () => {
|
|
112
|
+
client.off("stateChange", handleStateChange);
|
|
113
|
+
};
|
|
114
|
+
}, [wsContext, wildduckUserAuth]);
|
|
115
|
+
if (!wsContext || !wildduckUserAuth) {
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
const colorMap = {
|
|
119
|
+
disconnected: "#6c757d",
|
|
120
|
+
connecting: "#ffc107",
|
|
121
|
+
connected: "#28a745",
|
|
122
|
+
reconnecting: "#fd7e14",
|
|
123
|
+
disconnecting: "#dc3545",
|
|
124
|
+
};
|
|
125
|
+
return (React.createElement("span", { className: `websocket-status-badge ${className}`, style: {
|
|
126
|
+
display: "inline-block",
|
|
127
|
+
width: `${size}px`,
|
|
128
|
+
height: `${size}px`,
|
|
129
|
+
borderRadius: "50%",
|
|
130
|
+
backgroundColor: colorMap[connectionState],
|
|
131
|
+
...style,
|
|
132
|
+
}, title: connectionState }));
|
|
133
|
+
}
|
|
134
|
+
export function WebSocketStats({ wildduckUserAuth, className = "", style, }) {
|
|
135
|
+
const wsContext = useWebSocket();
|
|
136
|
+
const [stats, setStats] = useState({
|
|
137
|
+
state: "disconnected",
|
|
138
|
+
reconnectAttempt: 0,
|
|
139
|
+
subscriptions: 0,
|
|
140
|
+
});
|
|
141
|
+
useEffect(() => {
|
|
142
|
+
if (!wsContext || !wildduckUserAuth) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
const client = wsContext.getClient(wildduckUserAuth);
|
|
146
|
+
if (!client) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
const updateStats = () => {
|
|
150
|
+
setStats({
|
|
151
|
+
state: client.state,
|
|
152
|
+
reconnectAttempt: client.reconnectAttempt,
|
|
153
|
+
subscriptions: client.subscriptions.size,
|
|
154
|
+
});
|
|
155
|
+
};
|
|
156
|
+
updateStats();
|
|
157
|
+
const handleStateChange = () => updateStats();
|
|
158
|
+
const handleReconnecting = () => updateStats();
|
|
159
|
+
client.on("stateChange", handleStateChange);
|
|
160
|
+
client.on("reconnecting", handleReconnecting);
|
|
161
|
+
return () => {
|
|
162
|
+
client.off("stateChange", handleStateChange);
|
|
163
|
+
client.off("reconnecting", handleReconnecting);
|
|
164
|
+
};
|
|
165
|
+
}, [wsContext, wildduckUserAuth]);
|
|
166
|
+
if (!wsContext || !wildduckUserAuth) {
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
return (React.createElement("div", { className: `websocket-stats ${className}`, style: {
|
|
170
|
+
padding: "8px",
|
|
171
|
+
fontSize: "12px",
|
|
172
|
+
fontFamily: "monospace",
|
|
173
|
+
backgroundColor: "rgba(0, 0, 0, 0.05)",
|
|
174
|
+
borderRadius: "4px",
|
|
175
|
+
...style,
|
|
176
|
+
} },
|
|
177
|
+
React.createElement("div", null,
|
|
178
|
+
"State: ",
|
|
179
|
+
stats.state),
|
|
180
|
+
React.createElement("div", null,
|
|
181
|
+
"Subscriptions: ",
|
|
182
|
+
stats.subscriptions),
|
|
183
|
+
stats.reconnectAttempt > 0 && (React.createElement("div", null,
|
|
184
|
+
"Reconnect attempts: ",
|
|
185
|
+
stats.reconnectAttempt))));
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=WebSocketStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebSocketStatus.js","sourceRoot":"","sources":["../../src/components/WebSocketStatus.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,GACzB,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,cAAc,GAIf,MAAM,mBAAmB,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAGxB,cAAc,WAAW,CAAC;AAG1B,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAGxB,cAAc,WAAW,CAAC;AAG1B,cAAc,aAAa,CAAC;AAG5B,cAAc,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAGxB,cAAc,WAAW,CAAC;AAG1B,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAGxB,cAAc,WAAW,CAAC;AAG1B,cAAc,aAAa,CAAC;AAG5B,cAAc,cAAc,CAAC"}
|
package/package.json
CHANGED