@0xmonaco/core 0.4.1 → 0.4.2

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 (127) hide show
  1. package/README.md +22 -0
  2. package/dist/api/applications/api.d.ts +1 -2
  3. package/dist/api/applications/api.d.ts.map +1 -1
  4. package/dist/api/applications/api.js +1 -2
  5. package/dist/api/applications/api.js.map +1 -1
  6. package/dist/api/applications/index.d.ts +1 -1
  7. package/dist/api/applications/index.d.ts.map +1 -1
  8. package/dist/api/applications/index.js +1 -1
  9. package/dist/api/applications/index.js.map +1 -1
  10. package/dist/api/auth/api.d.ts +1 -1
  11. package/dist/api/auth/api.d.ts.map +1 -1
  12. package/dist/api/auth/api.js +2 -2
  13. package/dist/api/auth/api.js.map +1 -1
  14. package/dist/api/auth/index.d.ts +1 -1
  15. package/dist/api/auth/index.d.ts.map +1 -1
  16. package/dist/api/auth/index.js +1 -1
  17. package/dist/api/auth/index.js.map +1 -1
  18. package/dist/api/base.js +1 -1
  19. package/dist/api/base.js.map +1 -1
  20. package/dist/api/fees/api.d.ts +1 -1
  21. package/dist/api/fees/api.d.ts.map +1 -1
  22. package/dist/api/fees/api.js +1 -1
  23. package/dist/api/fees/api.js.map +1 -1
  24. package/dist/api/fees/index.d.ts +1 -1
  25. package/dist/api/fees/index.d.ts.map +1 -1
  26. package/dist/api/fees/index.js +1 -1
  27. package/dist/api/fees/index.js.map +1 -1
  28. package/dist/api/index.d.ts +10 -8
  29. package/dist/api/index.d.ts.map +1 -1
  30. package/dist/api/index.js +10 -8
  31. package/dist/api/index.js.map +1 -1
  32. package/dist/api/market/api.d.ts +1 -1
  33. package/dist/api/market/api.d.ts.map +1 -1
  34. package/dist/api/market/api.js +1 -1
  35. package/dist/api/market/api.js.map +1 -1
  36. package/dist/api/market/index.d.ts +1 -1
  37. package/dist/api/market/index.d.ts.map +1 -1
  38. package/dist/api/market/index.js +1 -1
  39. package/dist/api/market/index.js.map +1 -1
  40. package/dist/api/orderbook/api.d.ts +16 -0
  41. package/dist/api/orderbook/api.d.ts.map +1 -0
  42. package/dist/api/orderbook/api.js +38 -0
  43. package/dist/api/orderbook/api.js.map +1 -0
  44. package/dist/api/orderbook/index.d.ts +2 -0
  45. package/dist/api/orderbook/index.d.ts.map +1 -0
  46. package/dist/api/orderbook/index.js +2 -0
  47. package/dist/api/orderbook/index.js.map +1 -0
  48. package/dist/api/profile/api.d.ts +1 -1
  49. package/dist/api/profile/api.d.ts.map +1 -1
  50. package/dist/api/profile/api.js +1 -1
  51. package/dist/api/profile/api.js.map +1 -1
  52. package/dist/api/profile/index.d.ts +1 -1
  53. package/dist/api/profile/index.d.ts.map +1 -1
  54. package/dist/api/profile/index.js +1 -1
  55. package/dist/api/profile/index.js.map +1 -1
  56. package/dist/api/trades/api.d.ts +45 -0
  57. package/dist/api/trades/api.d.ts.map +1 -0
  58. package/dist/api/trades/api.js +43 -0
  59. package/dist/api/trades/api.js.map +1 -0
  60. package/dist/api/trades/index.d.ts +2 -0
  61. package/dist/api/trades/index.d.ts.map +1 -0
  62. package/dist/api/trades/index.js +2 -0
  63. package/dist/api/trades/index.js.map +1 -0
  64. package/dist/api/trading/api.d.ts +1 -1
  65. package/dist/api/trading/api.d.ts.map +1 -1
  66. package/dist/api/trading/api.js +1 -1
  67. package/dist/api/trading/api.js.map +1 -1
  68. package/dist/api/trading/index.d.ts +1 -1
  69. package/dist/api/trading/index.d.ts.map +1 -1
  70. package/dist/api/trading/index.js +1 -1
  71. package/dist/api/trading/index.js.map +1 -1
  72. package/dist/api/vault/api.d.ts +1 -1
  73. package/dist/api/vault/api.d.ts.map +1 -1
  74. package/dist/api/vault/api.js +2 -2
  75. package/dist/api/vault/api.js.map +1 -1
  76. package/dist/api/vault/index.d.ts +1 -1
  77. package/dist/api/vault/index.d.ts.map +1 -1
  78. package/dist/api/vault/index.js +1 -1
  79. package/dist/api/vault/index.js.map +1 -1
  80. package/dist/api/websocket/index.d.ts +3 -9
  81. package/dist/api/websocket/index.d.ts.map +1 -1
  82. package/dist/api/websocket/index.js +3 -9
  83. package/dist/api/websocket/index.js.map +1 -1
  84. package/dist/api/websocket/types.d.ts +34 -0
  85. package/dist/api/websocket/types.d.ts.map +1 -0
  86. package/dist/api/websocket/types.js +2 -0
  87. package/dist/api/websocket/types.js.map +1 -0
  88. package/dist/api/websocket/utils.d.ts +9 -0
  89. package/dist/api/websocket/utils.d.ts.map +1 -0
  90. package/dist/api/websocket/utils.js +23 -0
  91. package/dist/api/websocket/utils.js.map +1 -0
  92. package/dist/api/websocket/websocket.d.ts +6 -0
  93. package/dist/api/websocket/websocket.d.ts.map +1 -0
  94. package/dist/api/websocket/websocket.js +314 -0
  95. package/dist/api/websocket/websocket.js.map +1 -0
  96. package/dist/index.d.ts +6 -5
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +5 -7
  99. package/dist/index.js.map +1 -1
  100. package/dist/networks.d.ts +1 -1
  101. package/dist/networks.js +3 -3
  102. package/dist/networks.js.map +1 -1
  103. package/dist/sdk.d.ts +15 -24
  104. package/dist/sdk.d.ts.map +1 -1
  105. package/dist/sdk.js +48 -67
  106. package/dist/sdk.js.map +1 -1
  107. package/dist/utils/index.d.ts +1 -1
  108. package/dist/utils/index.d.ts.map +1 -1
  109. package/dist/utils/index.js +1 -1
  110. package/dist/utils/index.js.map +1 -1
  111. package/package.json +3 -3
  112. package/dist/api/websocket/base-ws-client.d.ts +0 -85
  113. package/dist/api/websocket/base-ws-client.d.ts.map +0 -1
  114. package/dist/api/websocket/base-ws-client.js +0 -256
  115. package/dist/api/websocket/base-ws-client.js.map +0 -1
  116. package/dist/api/websocket/clients/ohlcv-ws-client.d.ts +0 -57
  117. package/dist/api/websocket/clients/ohlcv-ws-client.d.ts.map +0 -1
  118. package/dist/api/websocket/clients/ohlcv-ws-client.js +0 -132
  119. package/dist/api/websocket/clients/ohlcv-ws-client.js.map +0 -1
  120. package/dist/api/websocket/clients/orderbook-ws-client.d.ts +0 -70
  121. package/dist/api/websocket/clients/orderbook-ws-client.d.ts.map +0 -1
  122. package/dist/api/websocket/clients/orderbook-ws-client.js +0 -197
  123. package/dist/api/websocket/clients/orderbook-ws-client.js.map +0 -1
  124. package/dist/api/websocket/clients/orders-ws-client.d.ts +0 -61
  125. package/dist/api/websocket/clients/orders-ws-client.d.ts.map +0 -1
  126. package/dist/api/websocket/clients/orders-ws-client.js +0 -150
  127. package/dist/api/websocket/clients/orders-ws-client.js.map +0 -1
package/dist/sdk.js CHANGED
@@ -1,15 +1,14 @@
1
1
  import { createPublicClient, http } from "viem";
2
2
  import { sei, seiTestnet } from "viem/chains";
3
- import { ApplicationsAPIImpl } from "./api/applications/index.js";
4
- import { AuthAPIImpl } from "./api/auth/index.js";
5
- import { FeesAPIImpl } from "./api/fees/index.js";
6
- import { MarketAPIImpl } from "./api/market/index.js";
7
- import { ProfileAPIImpl } from "./api/profile/index.js";
8
- import { TradingAPIImpl } from "./api/trading/index.js";
9
- import { VaultAPIImpl } from "./api/vault/index.js";
10
- import { OHLCVWebSocketClientImpl, OrderbookWebSocketClientImpl, OrdersWebSocketClientImpl } from "./api/websocket/index.js";
11
- import { APIError, InvalidConfigError, InvalidStateError } from "./errors.js";
12
- import { resolveApiUrl } from "./networks.js";
3
+ import { ApplicationsAPIImpl, createMonacoWebSocket, OrderbookAPIImpl, TradesAPIImpl } from "./api";
4
+ import { AuthAPIImpl } from "./api/auth";
5
+ import { FeesAPIImpl } from "./api/fees";
6
+ import { MarketAPIImpl } from "./api/market";
7
+ import { ProfileAPIImpl } from "./api/profile";
8
+ import { TradingAPIImpl } from "./api/trading";
9
+ import { VaultAPIImpl } from "./api/vault";
10
+ import { APIError, InvalidConfigError, InvalidStateError } from "./errors";
11
+ import { resolveApiUrl } from "./networks";
13
12
  // ---------------------------------------------------------------------------
14
13
  // SDK implementation
15
14
  // ---------------------------------------------------------------------------
@@ -21,7 +20,16 @@ export class MonacoSDKImpl {
21
20
  if (!cfg.seiRpcUrl) {
22
21
  throw new InvalidConfigError("seiRpcUrl is required", "seiRpcUrl");
23
22
  }
24
- // Validate URL format
23
+ if (!cfg.wsUrl) {
24
+ throw new InvalidConfigError("wsUrl is required", "wsUrl");
25
+ }
26
+ // Validate URL formats
27
+ try {
28
+ new URL(cfg.wsUrl);
29
+ }
30
+ catch (_e) {
31
+ throw new InvalidConfigError(`wsUrl must be a valid URL, got: ${cfg.wsUrl}`, "wsUrl");
32
+ }
25
33
  try {
26
34
  new URL(cfg.seiRpcUrl);
27
35
  }
@@ -42,7 +50,7 @@ export class MonacoSDKImpl {
42
50
  });
43
51
  // Resolve the API URL (from preset or custom URL)
44
52
  const apiUrl = resolveApiUrl(network);
45
- // Validate wallet client is on the correct chain
53
+ // Validate that the wallet client is on the correct chain
46
54
  if (cfg.walletClient.chain?.id !== chain.id) {
47
55
  throw new InvalidConfigError(`Wallet client chain mismatch. Expected ${chain.id}, got ${cfg.walletClient.chain?.id}`, "walletClient");
48
56
  }
@@ -55,24 +63,13 @@ export class MonacoSDKImpl {
55
63
  this.vault = new VaultAPIImpl(this.publicClient, this.walletClient, this.chain, this.applications, apiUrl);
56
64
  this.trading = new TradingAPIImpl(apiUrl);
57
65
  this.profile = new ProfileAPIImpl(apiUrl);
58
- // Instantiate WebSocket clients
59
- this.websocket = {
60
- // Orders WebSocket - REQUIRES AUTHENTICATION (this will serve Order Event updates for the authenticated user)
61
- orders: new OrdersWebSocketClientImpl({
62
- wsUrl: `${apiUrl}/ws`,
63
- // accessToken will be set after login via setAccessToken() to authenticate the user
64
- }),
65
- // OHLCV WebSocket - PUBLIC (this will serve OHLCV Event updates for a specific market)
66
- ohlcv: new OHLCVWebSocketClientImpl({
67
- wsUrl: `${apiUrl}/ws`,
68
- // No accessToken required to be set - public access
69
- }),
70
- // Orderbook WebSocket - PUBLIC (this will serve Orderbook Event updates for a specific market)
71
- orderbook: new OrderbookWebSocketClientImpl({
72
- wsUrl: `${apiUrl}/ws`,
73
- // No accessToken required to be set - public access
74
- }),
75
- };
66
+ this.orderbook = new OrderbookAPIImpl(apiUrl);
67
+ this.trades = new TradesAPIImpl(apiUrl);
68
+ this.ws = createMonacoWebSocket(cfg.wsUrl);
69
+ // Auto-connect WebSocket
70
+ this.ws.connect().catch((err) => {
71
+ console.error("WebSocket connection failed:", err);
72
+ });
76
73
  }
77
74
  // -----------------------------------------------------------------------
78
75
  // Authentication
@@ -90,28 +87,22 @@ export class MonacoSDKImpl {
90
87
  * when calling `auth.revokeToken()` or just call `sdk.logout()`.
91
88
  *
92
89
  * @param clientId - The client ID for authentication
93
- * @param options - Optional configuration
94
- * @param options.connectWebSocket - Auto-connect all authenticated WebSocket channels after login (currently Orders) (default: false)
95
- * @returns The authentication state with accessToken, refreshToken, user info, etc.
96
90
  *
97
91
  * @example
98
92
  * ```typescript
99
- * // Simple login (manual WebSocket connection)
93
+ * // Login and connect WebSocket
100
94
  * const authState = await sdk.login(clientId);
101
- * await sdk.websocket.orders.connect();
102
- *
103
- * // Auto-connect authenticated WebSocket channels (currently Orders)
104
- * const authState = await sdk.login(clientId, { connectWebSocket: true });
105
- * // Orders WebSocket is now connected and ready
106
- * sdk.websocket.orders.subscribeToOrderEvents("BTC/USDC", "SPOT", callback);
95
+ * await sdk.ws.connect();
96
+ * // WebSocket is now connected and ready
97
+ * const unsub = sdk.ws.orders("BTC/USDC", "SPOT", (event) => console.log(event));
107
98
  *
108
99
  * // Later, to revoke:
109
100
  * await sdk.auth.revokeToken(authState.refreshToken); // ✅
110
- * // Or simply:
111
- * await sdk.logout(); // ✅ Calls revokeToken internally and disconnects WebSockets
101
+ * // Or revoke and disconnect WebSocket:
102
+ * await sdk.logout(); // ✅ Calls revokeToken internally and disconnects WebSocket
112
103
  * ```
113
104
  */
114
- async login(clientId, options) {
105
+ async login(clientId) {
115
106
  const response = await this.auth.authenticate(clientId);
116
107
  this.authState = {
117
108
  accessToken: response.accessToken,
@@ -120,21 +111,15 @@ export class MonacoSDKImpl {
120
111
  user: response.user,
121
112
  };
122
113
  // Set access tokens for APIs
114
+ this.auth.setAccessToken(this.authState.accessToken);
123
115
  this.applications.setAccessToken(this.authState.accessToken);
124
116
  this.fees.setAccessToken(this.authState.accessToken);
125
117
  this.vault.setAccessToken(this.authState.accessToken);
126
118
  this.trading.setAccessToken(this.authState.accessToken);
127
119
  this.market.setAccessToken(this.authState.accessToken);
128
120
  this.profile.setAccessToken(this.authState.accessToken);
129
- // Set WebSocket access tokens
130
- this.websocket.orders.setAccessToken(this.authState.accessToken);
131
- this.websocket.ohlcv.setAccessToken(this.authState.accessToken);
132
- this.websocket.orderbook.setAccessToken(this.authState.accessToken);
133
- // Optionally auto-connect authenticated WebSocket channels
134
- // Currently includes: Orders (personal order updates)
135
- if (options?.connectWebSocket) {
136
- await this.websocket.orders.connect();
137
- }
121
+ // Set WebSocket access token (triggers reconnect to include token in URL)
122
+ this.ws.setToken(this.authState.accessToken);
138
123
  return this.authState;
139
124
  }
140
125
  /**
@@ -154,19 +139,18 @@ export class MonacoSDKImpl {
154
139
  setAuthState(authState) {
155
140
  this.authState = authState;
156
141
  // Set access tokens for all APIs
142
+ this.auth.setAccessToken(authState.accessToken);
157
143
  this.applications.setAccessToken(authState.accessToken);
158
144
  this.fees.setAccessToken(authState.accessToken);
159
145
  this.vault.setAccessToken(authState.accessToken);
160
146
  this.trading.setAccessToken(authState.accessToken);
161
147
  this.market.setAccessToken(authState.accessToken);
162
148
  this.profile.setAccessToken(authState.accessToken);
163
- // Set WebSocket access tokens
164
- this.websocket.orders.setAccessToken(authState.accessToken);
165
- this.websocket.ohlcv.setAccessToken(authState.accessToken);
166
- this.websocket.orderbook.setAccessToken(authState.accessToken);
149
+ // Set WebSocket access token (triggers reconnect to include token in URL)
150
+ this.ws.setToken(authState.accessToken);
167
151
  }
168
152
  /**
169
- * Logout the user
153
+ * Log the user out
170
154
  *
171
155
  * This method revokes the refresh token (if available), disconnects all authenticated
172
156
  * WebSocket channels, and clears the local auth state.
@@ -184,14 +168,13 @@ export class MonacoSDKImpl {
184
168
  await this.auth.revokeToken(this.authState.refreshToken);
185
169
  }
186
170
  catch (error) {
187
- // Log but don't throw - we want to clear local state regardless
171
+ // Log but don't throw - we want to clear the local state regardless
188
172
  console.warn("Failed to revoke token on logout:", error);
189
173
  }
190
174
  }
191
- // Disconnect authenticated WebSocket channels if connected
192
- // Currently includes: Orders (personal order updates)
193
- if (this.websocket.orders.isConnected()) {
194
- this.websocket.orders.disconnect();
175
+ // Disconnect WebSocket if connected
176
+ if (this.ws.isConnected()) {
177
+ this.ws.disconnect();
195
178
  }
196
179
  this.authState = undefined;
197
180
  }
@@ -216,14 +199,12 @@ export class MonacoSDKImpl {
216
199
  this.trading.setAccessToken(this.authState.accessToken);
217
200
  this.market.setAccessToken(this.authState.accessToken);
218
201
  this.profile.setAccessToken(this.authState.accessToken);
219
- // Set WebSocket access tokens
220
- this.websocket.orders.setAccessToken(this.authState.accessToken);
221
- this.websocket.ohlcv.setAccessToken(this.authState.accessToken);
222
- this.websocket.orderbook.setAccessToken(this.authState.accessToken);
202
+ // Set WebSocket access token (triggers reconnect to include token in URL)
203
+ this.ws.setToken(this.authState.accessToken);
223
204
  return this.authState;
224
205
  }
225
206
  catch (error) {
226
- // If refresh fails, clear auth state
207
+ // If refresh fails, set the auth state to undefined
227
208
  this.authState = undefined;
228
209
  throw error;
229
210
  }
package/dist/sdk.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export * from "./magnitude.js";
1
+ export * from "./magnitude";
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -1,2 +1,2 @@
1
- export * from "./magnitude.js";
1
+ export * from "./magnitude";
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0xmonaco/core",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -12,8 +12,8 @@
12
12
  "viem": "^2.31.7"
13
13
  },
14
14
  "dependencies": {
15
- "@0xmonaco/contracts": "0.4.1",
16
- "@0xmonaco/types": "0.4.1"
15
+ "@0xmonaco/contracts": "0.4.2",
16
+ "@0xmonaco/types": "0.4.2"
17
17
  },
18
18
  "devDependencies": {
19
19
  "@types/node": "^20.11.30",
@@ -1,85 +0,0 @@
1
- /**
2
- * Base WebSocket Client
3
- *
4
- * Production-ready WebSocket client with:
5
- * - Message queuing and retry logic
6
- * - Heartbeat/ping-pong for connection health
7
- * - Exponential backoff reconnection
8
- * - Event-driven error handling
9
- * - Optional JWT authentication via query parameters (only added if accessToken is provided)
10
- *
11
- * Supports both public channels (no authentication) and private channels (requires JWT).
12
- */
13
- import { type BaseWebSocketClient, type ConnectionStatus, type RawEventMessage, type WebSocketChannel, type WebSocketConfig } from "@0xmonaco/types";
14
- /**
15
- * Base WebSocket client implementation for Monaco Protocol
16
- *
17
- * This client supports both authenticated and unauthenticated connections.
18
- * If an accessToken is provided in the config, it will be included as a query parameter.
19
- * If no accessToken is provided, the connection will be made without authentication (public channels).
20
- */
21
- export declare class BaseWebSocketClientImpl implements BaseWebSocketClient {
22
- protected static readonly CONNECTION_TIMEOUT = 10000;
23
- protected static readonly HEARTBEAT_INTERVAL = 15000;
24
- protected static readonly HEARTBEAT_TIMEOUT = 30000;
25
- protected static readonly MAX_RECONNECT_DELAY = 30000;
26
- protected ws: WebSocket | null;
27
- protected config: WebSocketConfig;
28
- protected connectionStatus: ConnectionStatus;
29
- protected reconnectAttempts: number;
30
- protected reconnectTimer: NodeJS.Timeout | null;
31
- protected messageQueue: unknown[];
32
- protected isAuthenticated: boolean;
33
- protected heartbeatInterval: NodeJS.Timeout | null;
34
- protected lastPong: number;
35
- constructor(config: WebSocketConfig);
36
- /**
37
- * Connect to the WebSocket server.
38
- * For public channels (OHLCV, Orderbook), authentication is optional.
39
- * For private channels (Orders), authentication is required - call setAccessToken() first.
40
- */
41
- connect(): Promise<void>;
42
- /** Disconnect from the WebSocket server */
43
- disconnect(): void;
44
- /** Get current connection status */
45
- getConnectionStatus(): ConnectionStatus;
46
- /** Check if currently connected */
47
- isConnected(): boolean;
48
- /** Set the access token for authentication */
49
- setAccessToken(token: string): void;
50
- /**
51
- * Send message (queues if not connected).
52
- * Messages are queued if the WebSocket is not in OPEN state, regardless of authentication.
53
- * This allows both authenticated and public channels to queue messages until connected.
54
- */
55
- send(data: unknown): void;
56
- /** Flush all queued messages */
57
- protected flushMessageQueue(): void;
58
- /** Start heartbeat ping/pong */
59
- protected startHeartbeat(): void;
60
- /** Stop heartbeat interval */
61
- protected stopHeartbeat(): void;
62
- /** Handle connection errors with cleanup */
63
- protected handleConnectionError(error: unknown): void;
64
- /** Handle incoming WebSocket messages - can be overridden by subclasses */
65
- protected handleMessage(message: RawEventMessage): void;
66
- /**
67
- * Helper method to validate WebSocket event messages using WebSocketChannel enum
68
- * @param message - The message to validate
69
- * @param channelType - The expected channel type (WebSocketChannel.Orders, WebSocketChannel.Orderbook, etc.)
70
- * @returns True if the message is a valid event with the specified channel type
71
- */
72
- protected isEventMessage(message: unknown, channelType: WebSocketChannel): boolean;
73
- /**
74
- * Create WebSocket connection with event handlers.
75
- *
76
- * If accessToken is provided in config, it will be appended as a query parameter.
77
- * If no accessToken is provided, connection will be made without authentication (public channels).
78
- */
79
- protected createConnection(): Promise<void>;
80
- /** Schedule reconnect with exponential backoff */
81
- protected scheduleReconnect(): void;
82
- /** Stop reconnection timer */
83
- protected stopReconnectTimer(): void;
84
- }
85
- //# sourceMappingURL=base-ws-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-ws-client.d.ts","sourceRoot":"","sources":["../../../src/api/websocket/base-ws-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EAErB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;GAMG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IAEjE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,SAAS;IACrD,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,SAAS;IACrD,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,SAAS;IACpD,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,SAAS;IAGtD,SAAS,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAAQ;IACtC,SAAS,CAAC,MAAM,EAAE,eAAe,CAAC;IAClC,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAgC;IAG5E,SAAS,CAAC,iBAAiB,SAAK;IAChC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAQ;IAGvD,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,CAAM;IACvC,SAAS,CAAC,eAAe,UAAS;IAGlC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAQ;IAC1D,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAc;gBAE5B,MAAM,EAAE,eAAe;IAUnC;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB9B,2CAA2C;IAC3C,UAAU,IAAI,IAAI;IAclB,oCAAoC;IACpC,mBAAmB,IAAI,gBAAgB;IAIvC,mCAAmC;IACnC,WAAW,IAAI,OAAO;IAItB,8CAA8C;IAC9C,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAQzB,gCAAgC;IAChC,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAOnC,gCAAgC;IAChC,SAAS,CAAC,cAAc,IAAI,IAAI;IAWhC,8BAA8B;IAC9B,SAAS,CAAC,aAAa,IAAI,IAAI;IAO/B,4CAA4C;IAC5C,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAOrD,2EAA2E;IAC3E,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAOvD;;;;;OAKG;IACH,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,GAAG,OAAO;IAgBlF;;;;;OAKG;cACa,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IA8DjD,kDAAkD;IAClD,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAuBnC,8BAA8B;IAC9B,SAAS,CAAC,kBAAkB,IAAI,IAAI;CAMrC"}
@@ -1,256 +0,0 @@
1
- /**
2
- * Base WebSocket Client
3
- *
4
- * Production-ready WebSocket client with:
5
- * - Message queuing and retry logic
6
- * - Heartbeat/ping-pong for connection health
7
- * - Exponential backoff reconnection
8
- * - Event-driven error handling
9
- * - Optional JWT authentication via query parameters (only added if accessToken is provided)
10
- *
11
- * Supports both public channels (no authentication) and private channels (requires JWT).
12
- */
13
- import { WebSocketStatus, } from "@0xmonaco/types";
14
- /**
15
- * Base WebSocket client implementation for Monaco Protocol
16
- *
17
- * This client supports both authenticated and unauthenticated connections.
18
- * If an accessToken is provided in the config, it will be included as a query parameter.
19
- * If no accessToken is provided, the connection will be made without authentication (public channels).
20
- */
21
- export class BaseWebSocketClientImpl {
22
- constructor(config) {
23
- // Core WebSocket properties
24
- this.ws = null;
25
- this.connectionStatus = WebSocketStatus.Disconnected;
26
- // Reconnection management
27
- this.reconnectAttempts = 0;
28
- this.reconnectTimer = null;
29
- // Message handling
30
- this.messageQueue = [];
31
- this.isAuthenticated = false;
32
- // Heartbeat management
33
- this.heartbeatInterval = null;
34
- this.lastPong = Date.now();
35
- this.config = {
36
- autoReconnect: true,
37
- reconnectDelay: 5000,
38
- maxReconnectAttempts: 5,
39
- accessToken: "",
40
- ...config,
41
- };
42
- }
43
- /**
44
- * Connect to the WebSocket server.
45
- * For public channels (OHLCV, Orderbook), authentication is optional.
46
- * For private channels (Orders), authentication is required - call setAccessToken() first.
47
- */
48
- async connect() {
49
- try {
50
- if (this.ws) {
51
- this.ws.close(1000, "Reconnecting");
52
- this.ws = null;
53
- }
54
- if (this.connectionStatus === WebSocketStatus.Connecting || this.connectionStatus === WebSocketStatus.Connected) {
55
- return;
56
- }
57
- // No validation here - let each specific client decide if auth is required
58
- // Public channels (OHLCV, Orderbook) work without authentication
59
- // Private channels (Orders) should validate in their own implementation if needed
60
- this.connectionStatus = WebSocketStatus.Connecting;
61
- await this.createConnection();
62
- }
63
- catch (error) {
64
- this.handleConnectionError(error);
65
- throw error;
66
- }
67
- }
68
- /** Disconnect from the WebSocket server */
69
- disconnect() {
70
- this.config.autoReconnect = false;
71
- this.stopReconnectTimer();
72
- this.stopHeartbeat();
73
- if (this.ws) {
74
- this.ws.close();
75
- this.ws = null;
76
- }
77
- this.connectionStatus = WebSocketStatus.Disconnected;
78
- this.isAuthenticated = false;
79
- }
80
- /** Get current connection status */
81
- getConnectionStatus() {
82
- return this.connectionStatus;
83
- }
84
- /** Check if currently connected */
85
- isConnected() {
86
- return this.connectionStatus === "connected";
87
- }
88
- /** Set the access token for authentication */
89
- setAccessToken(token) {
90
- this.config.accessToken = token;
91
- }
92
- /**
93
- * Send message (queues if not connected).
94
- * Messages are queued if the WebSocket is not in OPEN state, regardless of authentication.
95
- * This allows both authenticated and public channels to queue messages until connected.
96
- */
97
- send(data) {
98
- if (this.ws?.readyState !== WebSocket.OPEN) {
99
- this.messageQueue.push(data);
100
- return;
101
- }
102
- this.ws.send(JSON.stringify(data));
103
- }
104
- /** Flush all queued messages */
105
- flushMessageQueue() {
106
- while (this.messageQueue.length > 0) {
107
- const message = this.messageQueue.shift();
108
- this.send(message);
109
- }
110
- }
111
- /** Start heartbeat ping/pong */
112
- startHeartbeat() {
113
- this.heartbeatInterval = setInterval(() => {
114
- if (Date.now() - this.lastPong > BaseWebSocketClientImpl.HEARTBEAT_TIMEOUT) {
115
- this.ws?.close();
116
- return;
117
- }
118
- this.ws?.send(JSON.stringify({ type: "Ping" }));
119
- }, BaseWebSocketClientImpl.HEARTBEAT_INTERVAL);
120
- }
121
- /** Stop heartbeat interval */
122
- stopHeartbeat() {
123
- if (this.heartbeatInterval) {
124
- clearInterval(this.heartbeatInterval);
125
- this.heartbeatInterval = null;
126
- }
127
- }
128
- /** Handle connection errors with cleanup */
129
- handleConnectionError(error) {
130
- this.connectionStatus = WebSocketStatus.Disconnected;
131
- this.isAuthenticated = false;
132
- this.stopHeartbeat();
133
- console.warn("WebSocket connection error:", error);
134
- }
135
- /** Handle incoming WebSocket messages - can be overridden by subclasses */
136
- handleMessage(message) {
137
- if (message.type === "Pong") {
138
- this.lastPong = Date.now();
139
- return;
140
- }
141
- }
142
- /**
143
- * Helper method to validate WebSocket event messages using WebSocketChannel enum
144
- * @param message - The message to validate
145
- * @param channelType - The expected channel type (WebSocketChannel.Orders, WebSocketChannel.Orderbook, etc.)
146
- * @returns True if the message is a valid event with the specified channel type
147
- */
148
- isEventMessage(message, channelType) {
149
- if (!message || typeof message !== "object") {
150
- return false;
151
- }
152
- const msg = message;
153
- return (msg.type === "Event" &&
154
- typeof msg.channel === "string" &&
155
- msg.channel.startsWith(`${channelType}:`) &&
156
- msg.data !== null &&
157
- msg.data !== undefined &&
158
- typeof msg.data === "object");
159
- }
160
- /**
161
- * Create WebSocket connection with event handlers.
162
- *
163
- * If accessToken is provided in config, it will be appended as a query parameter.
164
- * If no accessToken is provided, connection will be made without authentication (public channels).
165
- */
166
- async createConnection() {
167
- return new Promise((resolve, reject) => {
168
- try {
169
- const url = new URL(this.config.wsUrl);
170
- // Only add authentication token if provided (optional for public channels)
171
- if (this.config.accessToken) {
172
- url.searchParams.set("token", this.config.accessToken);
173
- }
174
- this.ws = new WebSocket(url.toString());
175
- const connectionTimeout = setTimeout(() => {
176
- if (this.ws && this.ws.readyState === WebSocket.CONNECTING) {
177
- this.ws.close();
178
- reject(new Error("WebSocket connection timeout"));
179
- }
180
- }, BaseWebSocketClientImpl.CONNECTION_TIMEOUT);
181
- this.ws.onopen = () => {
182
- clearTimeout(connectionTimeout);
183
- this.connectionStatus = WebSocketStatus.Connected;
184
- this.reconnectAttempts = 0;
185
- this.isAuthenticated = !!this.config.accessToken;
186
- this.lastPong = Date.now();
187
- this.startHeartbeat();
188
- this.flushMessageQueue();
189
- resolve();
190
- };
191
- this.ws.onmessage = (event) => {
192
- try {
193
- const message = JSON.parse(event.data);
194
- this.handleMessage(message);
195
- }
196
- catch (error) {
197
- console.warn("Failed to parse WebSocket message:", error);
198
- }
199
- };
200
- this.ws.onclose = (event) => {
201
- clearTimeout(connectionTimeout);
202
- this.connectionStatus = WebSocketStatus.Disconnected;
203
- this.isAuthenticated = false;
204
- this.stopHeartbeat();
205
- if (this.config.autoReconnect && this.reconnectAttempts < (this.config.maxReconnectAttempts || 5) && event.code !== 1000) {
206
- this.scheduleReconnect();
207
- }
208
- };
209
- this.ws.onerror = () => {
210
- clearTimeout(connectionTimeout);
211
- if (this.connectionStatus === "connecting") {
212
- reject(new Error("Failed to connect to WebSocket"));
213
- }
214
- };
215
- }
216
- catch (error) {
217
- this.connectionStatus = WebSocketStatus.Disconnected;
218
- reject(error);
219
- }
220
- });
221
- }
222
- /** Schedule reconnect with exponential backoff */
223
- scheduleReconnect() {
224
- this.connectionStatus = WebSocketStatus.Reconnecting;
225
- this.reconnectAttempts++;
226
- const baseDelay = this.config.reconnectDelay || 5000;
227
- const exponentialDelay = Math.min(baseDelay * 2 ** (this.reconnectAttempts - 1), BaseWebSocketClientImpl.MAX_RECONNECT_DELAY);
228
- this.reconnectTimer = setTimeout(async () => {
229
- try {
230
- if (!this.config.accessToken?.trim()) {
231
- console.error("JWT token expired or invalid, cannot reconnect");
232
- return;
233
- }
234
- await this.connect();
235
- }
236
- catch (_error) {
237
- if (this.reconnectAttempts >= (this.config.maxReconnectAttempts || 5)) {
238
- console.error("Failed to reconnect after maximum attempts");
239
- }
240
- }
241
- }, exponentialDelay);
242
- }
243
- /** Stop reconnection timer */
244
- stopReconnectTimer() {
245
- if (this.reconnectTimer) {
246
- clearTimeout(this.reconnectTimer);
247
- this.reconnectTimer = null;
248
- }
249
- }
250
- }
251
- // Connection constants
252
- BaseWebSocketClientImpl.CONNECTION_TIMEOUT = 10000; // 10 seconds
253
- BaseWebSocketClientImpl.HEARTBEAT_INTERVAL = 15000; // 15 seconds
254
- BaseWebSocketClientImpl.HEARTBEAT_TIMEOUT = 30000; // 30 seconds
255
- BaseWebSocketClientImpl.MAX_RECONNECT_DELAY = 30000; // 30 seconds
256
- //# sourceMappingURL=base-ws-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-ws-client.js","sourceRoot":"","sources":["../../../src/api/websocket/base-ws-client.ts"],"names":[],"mappings":"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"}