@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.
- package/README.md +22 -0
- package/dist/api/applications/api.d.ts +1 -2
- package/dist/api/applications/api.d.ts.map +1 -1
- package/dist/api/applications/api.js +1 -2
- package/dist/api/applications/api.js.map +1 -1
- package/dist/api/applications/index.d.ts +1 -1
- package/dist/api/applications/index.d.ts.map +1 -1
- package/dist/api/applications/index.js +1 -1
- package/dist/api/applications/index.js.map +1 -1
- package/dist/api/auth/api.d.ts +1 -1
- package/dist/api/auth/api.d.ts.map +1 -1
- package/dist/api/auth/api.js +2 -2
- package/dist/api/auth/api.js.map +1 -1
- package/dist/api/auth/index.d.ts +1 -1
- package/dist/api/auth/index.d.ts.map +1 -1
- package/dist/api/auth/index.js +1 -1
- package/dist/api/auth/index.js.map +1 -1
- package/dist/api/base.js +1 -1
- package/dist/api/base.js.map +1 -1
- package/dist/api/fees/api.d.ts +1 -1
- package/dist/api/fees/api.d.ts.map +1 -1
- package/dist/api/fees/api.js +1 -1
- package/dist/api/fees/api.js.map +1 -1
- package/dist/api/fees/index.d.ts +1 -1
- package/dist/api/fees/index.d.ts.map +1 -1
- package/dist/api/fees/index.js +1 -1
- package/dist/api/fees/index.js.map +1 -1
- package/dist/api/index.d.ts +10 -8
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +10 -8
- package/dist/api/index.js.map +1 -1
- package/dist/api/market/api.d.ts +1 -1
- package/dist/api/market/api.d.ts.map +1 -1
- package/dist/api/market/api.js +1 -1
- package/dist/api/market/api.js.map +1 -1
- package/dist/api/market/index.d.ts +1 -1
- package/dist/api/market/index.d.ts.map +1 -1
- package/dist/api/market/index.js +1 -1
- package/dist/api/market/index.js.map +1 -1
- package/dist/api/orderbook/api.d.ts +16 -0
- package/dist/api/orderbook/api.d.ts.map +1 -0
- package/dist/api/orderbook/api.js +38 -0
- package/dist/api/orderbook/api.js.map +1 -0
- package/dist/api/orderbook/index.d.ts +2 -0
- package/dist/api/orderbook/index.d.ts.map +1 -0
- package/dist/api/orderbook/index.js +2 -0
- package/dist/api/orderbook/index.js.map +1 -0
- package/dist/api/profile/api.d.ts +1 -1
- package/dist/api/profile/api.d.ts.map +1 -1
- package/dist/api/profile/api.js +1 -1
- package/dist/api/profile/api.js.map +1 -1
- package/dist/api/profile/index.d.ts +1 -1
- package/dist/api/profile/index.d.ts.map +1 -1
- package/dist/api/profile/index.js +1 -1
- package/dist/api/profile/index.js.map +1 -1
- package/dist/api/trades/api.d.ts +45 -0
- package/dist/api/trades/api.d.ts.map +1 -0
- package/dist/api/trades/api.js +43 -0
- package/dist/api/trades/api.js.map +1 -0
- package/dist/api/trades/index.d.ts +2 -0
- package/dist/api/trades/index.d.ts.map +1 -0
- package/dist/api/trades/index.js +2 -0
- package/dist/api/trades/index.js.map +1 -0
- package/dist/api/trading/api.d.ts +1 -1
- package/dist/api/trading/api.d.ts.map +1 -1
- package/dist/api/trading/api.js +1 -1
- package/dist/api/trading/api.js.map +1 -1
- package/dist/api/trading/index.d.ts +1 -1
- package/dist/api/trading/index.d.ts.map +1 -1
- package/dist/api/trading/index.js +1 -1
- package/dist/api/trading/index.js.map +1 -1
- package/dist/api/vault/api.d.ts +1 -1
- package/dist/api/vault/api.d.ts.map +1 -1
- package/dist/api/vault/api.js +2 -2
- package/dist/api/vault/api.js.map +1 -1
- package/dist/api/vault/index.d.ts +1 -1
- package/dist/api/vault/index.d.ts.map +1 -1
- package/dist/api/vault/index.js +1 -1
- package/dist/api/vault/index.js.map +1 -1
- package/dist/api/websocket/index.d.ts +3 -9
- package/dist/api/websocket/index.d.ts.map +1 -1
- package/dist/api/websocket/index.js +3 -9
- package/dist/api/websocket/index.js.map +1 -1
- package/dist/api/websocket/types.d.ts +34 -0
- package/dist/api/websocket/types.d.ts.map +1 -0
- package/dist/api/websocket/types.js +2 -0
- package/dist/api/websocket/types.js.map +1 -0
- package/dist/api/websocket/utils.d.ts +9 -0
- package/dist/api/websocket/utils.d.ts.map +1 -0
- package/dist/api/websocket/utils.js +23 -0
- package/dist/api/websocket/utils.js.map +1 -0
- package/dist/api/websocket/websocket.d.ts +6 -0
- package/dist/api/websocket/websocket.d.ts.map +1 -0
- package/dist/api/websocket/websocket.js +314 -0
- package/dist/api/websocket/websocket.js.map +1 -0
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -7
- package/dist/index.js.map +1 -1
- package/dist/networks.d.ts +1 -1
- package/dist/networks.js +3 -3
- package/dist/networks.js.map +1 -1
- package/dist/sdk.d.ts +15 -24
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +48 -67
- package/dist/sdk.js.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +3 -3
- package/dist/api/websocket/base-ws-client.d.ts +0 -85
- package/dist/api/websocket/base-ws-client.d.ts.map +0 -1
- package/dist/api/websocket/base-ws-client.js +0 -256
- package/dist/api/websocket/base-ws-client.js.map +0 -1
- package/dist/api/websocket/clients/ohlcv-ws-client.d.ts +0 -57
- package/dist/api/websocket/clients/ohlcv-ws-client.d.ts.map +0 -1
- package/dist/api/websocket/clients/ohlcv-ws-client.js +0 -132
- package/dist/api/websocket/clients/ohlcv-ws-client.js.map +0 -1
- package/dist/api/websocket/clients/orderbook-ws-client.d.ts +0 -70
- package/dist/api/websocket/clients/orderbook-ws-client.d.ts.map +0 -1
- package/dist/api/websocket/clients/orderbook-ws-client.js +0 -197
- package/dist/api/websocket/clients/orderbook-ws-client.js.map +0 -1
- package/dist/api/websocket/clients/orders-ws-client.d.ts +0 -61
- package/dist/api/websocket/clients/orders-ws-client.d.ts.map +0 -1
- package/dist/api/websocket/clients/orders-ws-client.js +0 -150
- package/dist/api/websocket/clients/orders-ws-client.js.map +0 -1
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Orders WebSocket Client Implementation
|
|
3
|
-
*
|
|
4
|
-
* AUTHENTICATED WebSocket client for personal order-related events.
|
|
5
|
-
* Requires JWT authentication via access token.
|
|
6
|
-
* Shows user-specific order updates and events.
|
|
7
|
-
*/
|
|
8
|
-
import { WebSocketChannel, } from "@0xmonaco/types";
|
|
9
|
-
import { BaseWebSocketClientImpl } from "../index.js";
|
|
10
|
-
/**
|
|
11
|
-
* Convert snake_case keys to camelCase
|
|
12
|
-
*/
|
|
13
|
-
function toCamelCase(str) {
|
|
14
|
-
return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Convert an object's keys from snake_case to camelCase
|
|
18
|
-
*/
|
|
19
|
-
function keysToCamelCase(obj) {
|
|
20
|
-
if (obj === null || obj === undefined)
|
|
21
|
-
return obj;
|
|
22
|
-
if (typeof obj !== "object")
|
|
23
|
-
return obj;
|
|
24
|
-
if (Array.isArray(obj))
|
|
25
|
-
return obj.map((item) => keysToCamelCase(item));
|
|
26
|
-
const result = {};
|
|
27
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
28
|
-
const camelKey = toCamelCase(key);
|
|
29
|
-
result[camelKey] = typeof value === "object" && value !== null ? keysToCamelCase(value) : value;
|
|
30
|
-
}
|
|
31
|
-
return result;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Orders-specific WebSocket client implementation
|
|
35
|
-
*/
|
|
36
|
-
export class OrdersWebSocketClientImpl extends BaseWebSocketClientImpl {
|
|
37
|
-
constructor() {
|
|
38
|
-
super(...arguments);
|
|
39
|
-
// Map to store order event handlers by subscription key
|
|
40
|
-
this.orderHandlers = new Map();
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Override connect to enforce authentication requirement for Orders channel.
|
|
44
|
-
* Orders WebSocket requires JWT authentication for personal order updates.
|
|
45
|
-
*/
|
|
46
|
-
async connect() {
|
|
47
|
-
if (!this.config.accessToken?.trim()) {
|
|
48
|
-
throw new Error("Authentication required: Orders WebSocket requires a JWT access token. " +
|
|
49
|
-
"Call setAccessToken() before connecting or sdk.login() to authenticate.");
|
|
50
|
-
}
|
|
51
|
-
return super.connect();
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Subscribe to personal order events for a specific market and trading mode.
|
|
55
|
-
* Requires authentication - call setAccessToken() before connecting.
|
|
56
|
-
*
|
|
57
|
-
* @param market - Trading pair symbol (e.g., "BTC/USDC")
|
|
58
|
-
* @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
|
|
59
|
-
* @param callback - Function to handle incoming order events
|
|
60
|
-
*
|
|
61
|
-
* @example
|
|
62
|
-
* ```typescript
|
|
63
|
-
* // Set authentication token first
|
|
64
|
-
* ordersWS.setAccessToken(authState.accessToken);
|
|
65
|
-
* await ordersWS.connect();
|
|
66
|
-
*
|
|
67
|
-
* ordersWS.subscribeToOrderEvents("BTC/USDC", TradingMode.SPOT, (event) => {
|
|
68
|
-
* console.log("Personal order event:", event.eventType);
|
|
69
|
-
* });
|
|
70
|
-
* ```
|
|
71
|
-
*/
|
|
72
|
-
subscribeToOrderEvents(market, tradingMode, callback) {
|
|
73
|
-
const channel = `orders:${market}:${tradingMode}`;
|
|
74
|
-
const subscriptionKey = `${market.toUpperCase()}-${tradingMode.toUpperCase()}`;
|
|
75
|
-
this.orderHandlers.set(subscriptionKey, callback);
|
|
76
|
-
// Send subscription message using backend's channel format
|
|
77
|
-
this.send({
|
|
78
|
-
type: "Subscribe",
|
|
79
|
-
channels: [channel],
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Unsubscribe from order events for a specific market and trading mode.
|
|
84
|
-
*
|
|
85
|
-
* @param market - Trading pair symbol (e.g., "BTC/USDC")
|
|
86
|
-
* @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
|
|
87
|
-
*
|
|
88
|
-
* @example
|
|
89
|
-
* ```typescript
|
|
90
|
-
* ordersWS.unsubscribeFromOrderEvents("BTC/USDC", TradingMode.SPOT);
|
|
91
|
-
* ```
|
|
92
|
-
*/
|
|
93
|
-
unsubscribeFromOrderEvents(market, tradingMode) {
|
|
94
|
-
const channel = `orders:${market}:${tradingMode}`;
|
|
95
|
-
const subscriptionKey = `${market.toUpperCase()}-${tradingMode.toUpperCase()}`;
|
|
96
|
-
this.orderHandlers.delete(subscriptionKey);
|
|
97
|
-
// Send unsubscription message
|
|
98
|
-
this.send({
|
|
99
|
-
type: "Unsubscribe",
|
|
100
|
-
channels: [channel],
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
/** Override message handling to process order-specific events */
|
|
104
|
-
handleMessage(message) {
|
|
105
|
-
super.handleMessage(message);
|
|
106
|
-
// Handle order-specific Event messages
|
|
107
|
-
if (this.isOrderEvent(message)) {
|
|
108
|
-
this.handleOrderEvent(message);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
/** Check if message is an order event from the backend */
|
|
112
|
-
isOrderEvent(message) {
|
|
113
|
-
return this.isEventMessage(message, WebSocketChannel.Orders);
|
|
114
|
-
}
|
|
115
|
-
/** Handle order-specific events from the backend */
|
|
116
|
-
handleOrderEvent(event) {
|
|
117
|
-
try {
|
|
118
|
-
const snakeCaseEventData = event.data;
|
|
119
|
-
const snakeCaseOrderEventData = snakeCaseEventData?.data;
|
|
120
|
-
const tradingPair = snakeCaseOrderEventData?.trading_pair;
|
|
121
|
-
const tradingMode = snakeCaseOrderEventData?.trading_mode;
|
|
122
|
-
if (!tradingPair || !tradingMode) {
|
|
123
|
-
console.warn("Missing required order event data (trading_pair or trading_mode):", event);
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
const subscriptionKey = `${tradingPair.toUpperCase()}-${tradingMode.toUpperCase()}`;
|
|
127
|
-
const handler = this.orderHandlers.get(subscriptionKey);
|
|
128
|
-
if (handler) {
|
|
129
|
-
const camelCaseOrderEvent = {
|
|
130
|
-
orderId: snakeCaseEventData.order_id,
|
|
131
|
-
eventType: snakeCaseEventData.event_type,
|
|
132
|
-
timestamp: snakeCaseEventData.timestamp,
|
|
133
|
-
data: keysToCamelCase(snakeCaseOrderEventData),
|
|
134
|
-
};
|
|
135
|
-
handler(camelCaseOrderEvent);
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
console.warn(`No handler found for order event: ${subscriptionKey}`, event);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
catch (error) {
|
|
142
|
-
console.error("Error handling order event:", error, event);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
/** Clean up resources when disconnecting */
|
|
146
|
-
cleanup() {
|
|
147
|
-
this.orderHandlers.clear();
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
//# sourceMappingURL=orders-ws-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orders-ws-client.js","sourceRoot":"","sources":["../../../../src/api/websocket/clients/orders-ws-client.ts"],"names":[],"mappings":"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"}
|