@sudobility/wildduck_client 2.1.2 → 2.2.0

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.
Files changed (37) hide show
  1. package/dist/hooks/useWildduckMailboxes.d.ts +5 -2
  2. package/dist/hooks/useWildduckMailboxes.d.ts.map +1 -1
  3. package/dist/hooks/useWildduckMailboxes.js +102 -3
  4. package/dist/hooks/useWildduckMailboxes.js.map +1 -1
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/websocket/client.d.ts +50 -0
  10. package/dist/websocket/client.d.ts.map +1 -0
  11. package/dist/websocket/client.js +370 -0
  12. package/dist/websocket/client.js.map +1 -0
  13. package/dist/websocket/constants.d.ts +82 -0
  14. package/dist/websocket/constants.d.ts.map +1 -0
  15. package/dist/websocket/constants.js +82 -0
  16. package/dist/websocket/constants.js.map +1 -0
  17. package/dist/websocket/index.d.ts +8 -0
  18. package/dist/websocket/index.d.ts.map +1 -0
  19. package/dist/websocket/index.js +6 -0
  20. package/dist/websocket/index.js.map +1 -0
  21. package/dist/websocket/protocol.d.ts +18 -0
  22. package/dist/websocket/protocol.d.ts.map +1 -0
  23. package/dist/websocket/protocol.js +165 -0
  24. package/dist/websocket/protocol.js.map +1 -0
  25. package/dist/websocket/provider.d.ts +20 -0
  26. package/dist/websocket/provider.d.ts.map +1 -0
  27. package/dist/websocket/provider.js +129 -0
  28. package/dist/websocket/provider.js.map +1 -0
  29. package/dist/websocket/types.d.ts +111 -0
  30. package/dist/websocket/types.d.ts.map +1 -0
  31. package/dist/websocket/types.js +8 -0
  32. package/dist/websocket/types.js.map +1 -0
  33. package/dist/websocket/useWebSocket.d.ts +3 -0
  34. package/dist/websocket/useWebSocket.d.ts.map +1 -0
  35. package/dist/websocket/useWebSocket.js +5 -0
  36. package/dist/websocket/useWebSocket.js.map +1 -0
  37. package/package.json +3 -3
@@ -0,0 +1,111 @@
1
+ export declare enum WebSocketReadyState {
2
+ CONNECTING = 0,
3
+ OPEN = 1,
4
+ CLOSING = 2,
5
+ CLOSED = 3
6
+ }
7
+ export interface WebSocketConfig {
8
+ url: string;
9
+ reconnect?: boolean;
10
+ reconnectDelay?: number;
11
+ maxReconnectDelay?: number;
12
+ reconnectAttempts?: number;
13
+ autoSubscribe?: boolean;
14
+ debug?: boolean;
15
+ pingInterval?: number;
16
+ pongTimeout?: number;
17
+ }
18
+ export type ChannelName = "mailboxes" | "messages" | "settings" | "filters" | "autoreply";
19
+ export type ClientMessageType = "subscribe" | "unsubscribe" | "fetch";
20
+ export type ServerMessageType = "data" | "update" | "disconnect";
21
+ export interface BaseSubscriptionParams {
22
+ userId: string;
23
+ token: string;
24
+ }
25
+ export interface MailboxesSubscriptionParams extends BaseSubscriptionParams {
26
+ }
27
+ export interface MessagesSubscriptionParams extends BaseSubscriptionParams {
28
+ mailboxId: string;
29
+ }
30
+ export interface SettingsSubscriptionParams extends BaseSubscriptionParams {
31
+ }
32
+ export interface FiltersSubscriptionParams extends BaseSubscriptionParams {
33
+ }
34
+ export interface AutoReplySubscriptionParams extends BaseSubscriptionParams {
35
+ }
36
+ export type SubscriptionParams = MailboxesSubscriptionParams | MessagesSubscriptionParams | SettingsSubscriptionParams | FiltersSubscriptionParams | AutoReplySubscriptionParams;
37
+ export interface FetchParams {
38
+ mailboxId?: string;
39
+ cursor?: string;
40
+ }
41
+ export interface ClientMessage {
42
+ type: ClientMessageType;
43
+ channel: ChannelName;
44
+ data: Record<string, any>;
45
+ }
46
+ export interface ServerResponseData {
47
+ success: boolean;
48
+ error?: string;
49
+ message?: string;
50
+ [key: string]: any;
51
+ }
52
+ export interface ServerMessage {
53
+ type: ServerMessageType;
54
+ channel: string;
55
+ data: {
56
+ code: number;
57
+ response: ServerResponseData;
58
+ };
59
+ }
60
+ export interface SubscriptionResponse extends ServerResponseData {
61
+ }
62
+ export interface FetchResponse extends ServerResponseData {
63
+ }
64
+ export interface UpdateEventData {
65
+ event?: "created" | "updated" | "deleted";
66
+ [key: string]: any;
67
+ }
68
+ export interface SubscriptionState {
69
+ channel: ChannelName;
70
+ params: SubscriptionParams;
71
+ active: boolean;
72
+ subscribedAt: number;
73
+ }
74
+ export type ConnectionState = "disconnected" | "connecting" | "connected" | "reconnecting" | "disconnecting";
75
+ export interface WebSocketEventMap {
76
+ connected: () => void;
77
+ disconnected: (code: number, reason: string) => void;
78
+ reconnecting: (attempt: number, delay: number) => void;
79
+ error: (error: Error) => void;
80
+ data: (channel: ChannelName, data: ServerResponseData) => void;
81
+ update: (channel: ChannelName, data: ServerResponseData) => void;
82
+ stateChange: (oldState: ConnectionState, newState: ConnectionState) => void;
83
+ }
84
+ export type EventListener<T extends keyof WebSocketEventMap> = WebSocketEventMap[T];
85
+ export interface IWebSocketClient {
86
+ readonly state: ConnectionState;
87
+ readonly readyState: WebSocketReadyState;
88
+ readonly isConnected: boolean;
89
+ readonly isReconnecting: boolean;
90
+ readonly reconnectAttempt: number;
91
+ readonly subscriptions: ReadonlyMap<ChannelName, SubscriptionState>;
92
+ connect(auth: {
93
+ userId: string;
94
+ accessToken: string;
95
+ }): Promise<void>;
96
+ disconnect(code?: number, reason?: string): void;
97
+ subscribe(channel: ChannelName, params: SubscriptionParams): Promise<SubscriptionResponse>;
98
+ unsubscribe(channel: ChannelName): Promise<void>;
99
+ fetch(channel: ChannelName, params: FetchParams): Promise<FetchResponse>;
100
+ on<T extends keyof WebSocketEventMap>(event: T, listener: EventListener<T>): void;
101
+ off<T extends keyof WebSocketEventMap>(event: T, listener: EventListener<T>): void;
102
+ removeAllListeners(event?: keyof WebSocketEventMap): void;
103
+ }
104
+ export interface ReconnectionOptions {
105
+ attempt: number;
106
+ maxAttempts: number;
107
+ delay: number;
108
+ maxDelay: number;
109
+ }
110
+ export type TimerHandle = ReturnType<typeof setTimeout>;
111
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/websocket/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export var WebSocketReadyState;
2
+ (function (WebSocketReadyState) {
3
+ WebSocketReadyState[WebSocketReadyState["CONNECTING"] = 0] = "CONNECTING";
4
+ WebSocketReadyState[WebSocketReadyState["OPEN"] = 1] = "OPEN";
5
+ WebSocketReadyState[WebSocketReadyState["CLOSING"] = 2] = "CLOSING";
6
+ WebSocketReadyState[WebSocketReadyState["CLOSED"] = 3] = "CLOSED";
7
+ })(WebSocketReadyState || (WebSocketReadyState = {}));
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/websocket/types.ts"],"names":[],"mappings":"AASA,MAAM,CAAN,IAAY,mBAKX;AALD,WAAY,mBAAmB;IAC7B,yEAAc,CAAA;IACd,6DAAQ,CAAA;IACR,mEAAW,CAAA;IACX,iEAAU,CAAA;AACZ,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,QAK9B"}
@@ -0,0 +1,3 @@
1
+ import type { WebSocketContextValue } from "./provider";
2
+ export declare function useWebSocket(): WebSocketContextValue;
3
+ //# sourceMappingURL=useWebSocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWebSocket.d.ts","sourceRoot":"","sources":["../../src/websocket/useWebSocket.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAkCxD,wBAAgB,YAAY,IAAI,qBAAqB,CAEpD"}
@@ -0,0 +1,5 @@
1
+ import { useWebSocketContext } from "./provider";
2
+ export function useWebSocket() {
3
+ return useWebSocketContext();
4
+ }
5
+ //# sourceMappingURL=useWebSocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWebSocket.js","sourceRoot":"","sources":["../../src/websocket/useWebSocket.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAmCjD,MAAM,UAAU,YAAY;IAC1B,OAAO,mBAAmB,EAAE,CAAC;AAC/B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sudobility/wildduck_client",
3
- "version": "2.1.2",
3
+ "version": "2.2.0",
4
4
  "description": "React and React Native compatible client library for WildDuck email API with TypeScript support",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -44,8 +44,8 @@
44
44
  "react": "^19.2.0"
45
45
  },
46
46
  "devDependencies": {
47
- "@sudobility/configs": "^0.0.24",
48
- "@sudobility/di": "^1.4.17",
47
+ "@sudobility/configs": "^0.0.25",
48
+ "@sudobility/di": "^1.4.18",
49
49
  "@sudobility/types": "^1.9.12",
50
50
  "@tanstack/react-query": "^5.90.5",
51
51
  "@testing-library/react": "^16.3.0",