@upbit-official/upbit-sdk 1.0.0 → 1.1.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 (190) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +21 -0
  3. package/client.d.mts +10 -4
  4. package/client.d.mts.map +1 -1
  5. package/client.d.ts +10 -4
  6. package/client.d.ts.map +1 -1
  7. package/client.js +23 -5
  8. package/client.js.map +1 -1
  9. package/client.mjs +23 -5
  10. package/client.mjs.map +1 -1
  11. package/index.d.mts +3 -1
  12. package/index.d.mts.map +1 -1
  13. package/index.d.ts +3 -1
  14. package/index.d.ts.map +1 -1
  15. package/index.js +2 -1
  16. package/index.js.map +1 -1
  17. package/index.mjs +1 -1
  18. package/index.mjs.map +1 -1
  19. package/internal/ws-parser.d.mts +40 -0
  20. package/internal/ws-parser.d.mts.map +1 -0
  21. package/internal/ws-parser.d.ts +40 -0
  22. package/internal/ws-parser.d.ts.map +1 -0
  23. package/internal/ws-parser.js +125 -0
  24. package/internal/ws-parser.js.map +1 -0
  25. package/internal/ws-parser.mjs +118 -0
  26. package/internal/ws-parser.mjs.map +1 -0
  27. package/internal/ws-simple-types.d.mts +8 -0
  28. package/internal/ws-simple-types.d.mts.map +1 -0
  29. package/internal/ws-simple-types.d.ts +8 -0
  30. package/internal/ws-simple-types.d.ts.map +1 -0
  31. package/internal/ws-simple-types.js +3 -0
  32. package/internal/ws-simple-types.js.map +1 -0
  33. package/internal/ws-simple-types.mjs +2 -0
  34. package/internal/ws-simple-types.mjs.map +1 -0
  35. package/internal/ws.d.mts +1 -0
  36. package/internal/ws.d.mts.map +1 -1
  37. package/internal/ws.d.ts +1 -0
  38. package/internal/ws.d.ts.map +1 -1
  39. package/internal/ws.js.map +1 -1
  40. package/internal/ws.mjs.map +1 -1
  41. package/lib/index.d.mts +4 -2
  42. package/lib/index.d.mts.map +1 -1
  43. package/lib/index.d.ts +4 -2
  44. package/lib/index.d.ts.map +1 -1
  45. package/lib/index.js +2 -1
  46. package/lib/index.js.map +1 -1
  47. package/lib/index.mjs +1 -1
  48. package/lib/index.mjs.map +1 -1
  49. package/lib/jsonParseFloat.d.mts +5 -5
  50. package/lib/jsonParseFloat.d.mts.map +1 -1
  51. package/lib/jsonParseFloat.d.ts +5 -5
  52. package/lib/jsonParseFloat.d.ts.map +1 -1
  53. package/lib/jsonParseFloat.js +30 -12
  54. package/lib/jsonParseFloat.js.map +1 -1
  55. package/lib/jsonParseFloat.mjs +30 -12
  56. package/lib/jsonParseFloat.mjs.map +1 -1
  57. package/lib/ws.d.mts +102 -15
  58. package/lib/ws.d.mts.map +1 -1
  59. package/lib/ws.d.ts +102 -15
  60. package/lib/ws.d.ts.map +1 -1
  61. package/lib/ws.js +208 -34
  62. package/lib/ws.js.map +1 -1
  63. package/lib/ws.mjs +204 -33
  64. package/lib/ws.mjs.map +1 -1
  65. package/package.json +1 -1
  66. package/resources/index.d.mts +3 -2
  67. package/resources/index.d.mts.map +1 -1
  68. package/resources/index.d.ts +3 -2
  69. package/resources/index.d.ts.map +1 -1
  70. package/resources/index.js +3 -1
  71. package/resources/index.js.map +1 -1
  72. package/resources/index.mjs +3 -2
  73. package/resources/index.mjs.map +1 -1
  74. package/resources/ws-info/index.d.mts +6 -0
  75. package/resources/ws-info/index.d.mts.map +1 -0
  76. package/resources/ws-info/index.d.ts +6 -0
  77. package/resources/ws-info/index.d.ts.map +1 -0
  78. package/resources/ws-info/index.js +6 -0
  79. package/resources/ws-info/index.js.map +1 -0
  80. package/resources/ws-info/index.mjs +2 -0
  81. package/resources/ws-info/index.mjs.map +1 -0
  82. package/resources/ws-info/internal-base.d.mts +63 -0
  83. package/resources/ws-info/internal-base.d.mts.map +1 -0
  84. package/resources/ws-info/internal-base.d.ts +63 -0
  85. package/resources/ws-info/internal-base.d.ts.map +1 -0
  86. package/resources/ws-info/internal-base.js +47 -0
  87. package/resources/ws-info/internal-base.js.map +1 -0
  88. package/resources/ws-info/internal-base.mjs +41 -0
  89. package/resources/ws-info/internal-base.mjs.map +1 -0
  90. package/resources/ws-info/ws-info.d.mts +1180 -0
  91. package/resources/ws-info/ws-info.d.mts.map +1 -0
  92. package/resources/ws-info/ws-info.d.ts +1180 -0
  93. package/resources/ws-info/ws-info.d.ts.map +1 -0
  94. package/resources/ws-info/ws-info.js +8 -0
  95. package/resources/ws-info/ws-info.js.map +1 -0
  96. package/resources/ws-info/ws-info.mjs +4 -0
  97. package/resources/ws-info/ws-info.mjs.map +1 -0
  98. package/resources/ws-info/ws.d.mts +91 -0
  99. package/resources/ws-info/ws.d.mts.map +1 -0
  100. package/resources/ws-info/ws.d.ts +91 -0
  101. package/resources/ws-info/ws.d.ts.map +1 -0
  102. package/resources/ws-info/ws.js +463 -0
  103. package/resources/ws-info/ws.js.map +1 -0
  104. package/resources/ws-info/ws.mjs +458 -0
  105. package/resources/ws-info/ws.mjs.map +1 -0
  106. package/resources/ws-info.d.mts +2 -0
  107. package/resources/ws-info.d.mts.map +1 -0
  108. package/resources/ws-info.d.ts +2 -0
  109. package/resources/ws-info.d.ts.map +1 -0
  110. package/resources/ws-info.js +5 -0
  111. package/resources/ws-info.js.map +1 -0
  112. package/resources/ws-info.mjs +2 -0
  113. package/resources/ws-info.mjs.map +1 -0
  114. package/resources/ws-private/index.d.mts +3 -1
  115. package/resources/ws-private/index.d.mts.map +1 -1
  116. package/resources/ws-private/index.d.ts +3 -1
  117. package/resources/ws-private/index.d.ts.map +1 -1
  118. package/resources/ws-private/index.js.map +1 -1
  119. package/resources/ws-private/index.mjs +1 -1
  120. package/resources/ws-private/index.mjs.map +1 -1
  121. package/resources/ws-private/internal-base.d.mts.map +1 -1
  122. package/resources/ws-private/internal-base.d.ts.map +1 -1
  123. package/resources/ws-private/internal-base.js.map +1 -1
  124. package/resources/ws-private/internal-base.mjs.map +1 -1
  125. package/resources/ws-private/ws-private.d.mts +301 -9
  126. package/resources/ws-private/ws-private.d.mts.map +1 -1
  127. package/resources/ws-private/ws-private.d.ts +301 -9
  128. package/resources/ws-private/ws-private.d.ts.map +1 -1
  129. package/resources/ws-private/ws-private.js.map +1 -1
  130. package/resources/ws-private/ws-private.mjs.map +1 -1
  131. package/resources/ws-private/ws.d.mts +2 -2
  132. package/resources/ws-private/ws.d.mts.map +1 -1
  133. package/resources/ws-private/ws.d.ts +2 -2
  134. package/resources/ws-private/ws.d.ts.map +1 -1
  135. package/resources/ws-private/ws.js +15 -20
  136. package/resources/ws-private/ws.js.map +1 -1
  137. package/resources/ws-private/ws.mjs +15 -20
  138. package/resources/ws-private/ws.mjs.map +1 -1
  139. package/resources/ws-public/index.d.mts +3 -1
  140. package/resources/ws-public/index.d.mts.map +1 -1
  141. package/resources/ws-public/index.d.ts +3 -1
  142. package/resources/ws-public/index.d.ts.map +1 -1
  143. package/resources/ws-public/index.js.map +1 -1
  144. package/resources/ws-public/index.mjs +1 -1
  145. package/resources/ws-public/index.mjs.map +1 -1
  146. package/resources/ws-public/internal-base.d.mts.map +1 -1
  147. package/resources/ws-public/internal-base.d.ts.map +1 -1
  148. package/resources/ws-public/internal-base.js.map +1 -1
  149. package/resources/ws-public/internal-base.mjs.map +1 -1
  150. package/resources/ws-public/ws-public.d.mts +355 -5
  151. package/resources/ws-public/ws-public.d.mts.map +1 -1
  152. package/resources/ws-public/ws-public.d.ts +355 -5
  153. package/resources/ws-public/ws-public.d.ts.map +1 -1
  154. package/resources/ws-public/ws.d.mts +2 -2
  155. package/resources/ws-public/ws.d.mts.map +1 -1
  156. package/resources/ws-public/ws.d.ts +2 -2
  157. package/resources/ws-public/ws.d.ts.map +1 -1
  158. package/resources/ws-public/ws.js +15 -20
  159. package/resources/ws-public/ws.js.map +1 -1
  160. package/resources/ws-public/ws.mjs +15 -20
  161. package/resources/ws-public/ws.mjs.map +1 -1
  162. package/src/client.ts +92 -5
  163. package/src/index.ts +24 -1
  164. package/src/internal/ws-parser.ts +164 -0
  165. package/src/internal/ws-simple-types.ts +34 -0
  166. package/src/internal/ws.ts +1 -0
  167. package/src/lib/index.ts +17 -2
  168. package/src/lib/jsonParseFloat.ts +37 -12
  169. package/src/lib/ws.ts +367 -55
  170. package/src/resources/index.ts +42 -2
  171. package/src/resources/ws-info/index.ts +44 -0
  172. package/src/resources/ws-info/internal-base.ts +96 -0
  173. package/src/resources/ws-info/ws-info.ts +1855 -0
  174. package/src/resources/ws-info/ws.ts +574 -0
  175. package/src/resources/ws-info.ts +1 -0
  176. package/src/resources/ws-private/index.ts +12 -1
  177. package/src/resources/ws-private/internal-base.ts +0 -1
  178. package/src/resources/ws-private/ws-private.ts +420 -18
  179. package/src/resources/ws-private/ws.ts +16 -23
  180. package/src/resources/ws-public/index.ts +16 -1
  181. package/src/resources/ws-public/internal-base.ts +0 -1
  182. package/src/resources/ws-public/ws-public.ts +459 -4
  183. package/src/resources/ws-public/ws.ts +16 -23
  184. package/src/version.ts +1 -1
  185. package/version.d.mts +1 -1
  186. package/version.d.ts +1 -1
  187. package/version.js +1 -1
  188. package/version.js.map +1 -1
  189. package/version.mjs +1 -1
  190. package/version.mjs.map +1 -1
package/lib/ws.js CHANGED
@@ -1,36 +1,68 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WsStream = exports.WsStreamManager = void 0;
3
+ exports.WsStream = exports.WsStreamManager = exports.WsEndpoint = void 0;
4
+ exports.buildSubscriptionMessage = buildSubscriptionMessage;
5
+ exports.buildListSubscriptionsMessage = buildListSubscriptionsMessage;
6
+ exports.parseWsMessage = parseWsMessage;
4
7
  const tslib_1 = require("../internal/tslib.js");
5
8
  const WS = tslib_1.__importStar(require("ws"));
6
9
  const uuid_1 = require("../internal/utils/uuid.js");
7
10
  const jwtAuth_1 = require("./jwtAuth.js");
8
- const jsonParseFloat_1 = require("./jsonParseFloat.js");
9
11
  const internal_base_1 = require("../resources/ws-public/internal-base.js");
10
12
  const internal_base_2 = require("../resources/ws-private/internal-base.js");
11
- function buildSubscriptionMessage(types) {
13
+ const internal_base_3 = require("../resources/ws-info/internal-base.js");
14
+ const ws_parser_1 = require("../internal/ws-parser.js");
15
+ var WsEndpoint;
16
+ (function (WsEndpoint) {
17
+ WsEndpoint["Public"] = "public";
18
+ WsEndpoint["Private"] = "private";
19
+ WsEndpoint["Info"] = "info";
20
+ })(WsEndpoint || (exports.WsEndpoint = WsEndpoint = {}));
21
+ function requiresAuth(endpoint) {
22
+ return endpoint !== WsEndpoint.Public;
23
+ }
24
+ function buildSubscriptionMessage(types, format) {
12
25
  const fields = [{ ticket: (0, uuid_1.uuid4)() }];
13
26
  for (const t of types) {
14
- if ('codes' in t && t.codes) {
15
- fields.push({ type: t.type, codes: t.codes });
16
- }
17
- else {
18
- fields.push({ type: t.type });
19
- }
27
+ fields.push(t);
20
28
  }
29
+ if (format !== undefined)
30
+ fields.push({ format });
31
+ return JSON.stringify(fields);
32
+ }
33
+ function buildListSubscriptionsMessage(format) {
34
+ const fields = [{ ticket: (0, uuid_1.uuid4)() }, { method: 'LIST_SUBSCRIPTIONS' }];
35
+ if (format !== undefined)
36
+ fields.push({ format });
21
37
  return JSON.stringify(fields);
22
38
  }
39
+ function parseWsMessage(data) {
40
+ return (0, ws_parser_1.parseWebSocketValue)(data);
41
+ }
42
+ function buildAnnouncementSubscription(categories, includeBody) {
43
+ const subscription = { type: 'announcement' };
44
+ if (categories !== undefined)
45
+ subscription.categories = categories;
46
+ if (includeBody !== undefined)
47
+ subscription.include_body = includeBody;
48
+ return subscription;
49
+ }
23
50
  /**
24
51
  * Manages a WebSocket stream as an AsyncIterable.
25
52
  *
26
53
  * Use with `for await (const event of manager) { ... }`.
27
54
  */
28
55
  class WsStreamManager {
29
- constructor(client, types, isPrivate, opts = {}) {
56
+ constructor(client, types, endpoint, opts = {}) {
30
57
  this._currentWs = null;
31
58
  this.client = client;
32
59
  this.types = types;
33
- this.isPrivate = isPrivate;
60
+ this.endpoint =
61
+ typeof endpoint === 'boolean' ?
62
+ endpoint ? WsEndpoint.Private
63
+ : WsEndpoint.Public
64
+ : endpoint;
65
+ this.format = opts.format;
34
66
  this.maxRetries = opts.maxRetries ?? 5;
35
67
  this.retryDelayMs = opts.retryDelayMs ?? 1000;
36
68
  if (opts.onDisconnect)
@@ -38,8 +70,40 @@ class WsStreamManager {
38
70
  if (opts.onReconnect)
39
71
  this.onReconnect = opts.onReconnect;
40
72
  }
73
+ /**
74
+ * Returns subscriptions for this stream's currently open connection.
75
+ * Start consuming the iterator before calling; calls before connection reject.
76
+ * The response format is unchanged. Responses are matched by request ticket.
77
+ */
78
+ listSubscriptions(timeoutMs = 5000) {
79
+ const ws = this._currentWs;
80
+ if (!ws || ws.readyState !== WS.WebSocket.OPEN) {
81
+ return Promise.reject(new Error('WebSocket connection is not open'));
82
+ }
83
+ if (this._pendingListSubscriptions) {
84
+ return Promise.reject(new Error('LIST_SUBSCRIPTIONS request is already pending'));
85
+ }
86
+ return new Promise((resolve, reject) => {
87
+ const message = buildListSubscriptionsMessage(this.format);
88
+ const ticket = JSON.parse(message)[0].ticket;
89
+ const timer = setTimeout(() => {
90
+ if (this._pendingListSubscriptions?.ticket === ticket) {
91
+ this._settlePendingListSubscriptions(ws, new Error('LIST_SUBSCRIPTIONS response not received within timeout'));
92
+ }
93
+ }, timeoutMs);
94
+ this._pendingListSubscriptions = { resolve, reject, timer, socket: ws, ticket };
95
+ try {
96
+ ws.send(message);
97
+ }
98
+ catch (error) {
99
+ this._settlePendingListSubscriptions(ws, error instanceof Error ? error : new Error(String(error)));
100
+ }
101
+ });
102
+ }
41
103
  /** Closes the current WebSocket connection. */
42
104
  close() {
105
+ if (this._currentWs)
106
+ this._settlePendingListSubscriptions(this._currentWs, new Error('WebSocket closed'));
43
107
  if (this._currentWs &&
44
108
  (this._currentWs.readyState === WS.WebSocket.OPEN ||
45
109
  this._currentWs.readyState === WS.WebSocket.CONNECTING)) {
@@ -47,7 +111,15 @@ class WsStreamManager {
47
111
  }
48
112
  }
49
113
  [Symbol.asyncIterator]() {
50
- return this._iterate();
114
+ const iterator = this._iterate();
115
+ const finish = iterator.return.bind(iterator);
116
+ iterator.return = (value) => {
117
+ if (this._currentWs)
118
+ this._settlePendingListSubscriptions(this._currentWs, new Error('WebSocket iterator ended'));
119
+ this.close();
120
+ return finish(value);
121
+ };
122
+ return iterator;
51
123
  }
52
124
  async *_iterate() {
53
125
  let retries = 0;
@@ -58,28 +130,51 @@ class WsStreamManager {
58
130
  let done = false;
59
131
  let closeCode = 1000;
60
132
  let closeReason = '';
133
+ let pingTimer;
61
134
  const ws = await this._connect();
62
135
  this._currentWs = ws;
63
136
  ws.on('message', (data) => {
137
+ let parsed;
64
138
  try {
65
- const parsed = (0, jsonParseFloat_1.jsonParseFloat)(data.toString());
66
- queue.push(parsed);
67
- resolve?.();
68
- resolve = null;
139
+ parsed = (0, ws_parser_1.parseWebSocketValue)(data);
69
140
  }
70
141
  catch {
71
- // ignore JSON parse errors
142
+ return; // Preserve the stream's existing handling of malformed JSON.
143
+ }
144
+ const items = Array.isArray(parsed) ? parsed : [parsed];
145
+ const remaining = items.filter((item) => {
146
+ if (!(0, ws_parser_1.isListSubscriptionsResponse)(item))
147
+ return true;
148
+ return !this._settlePendingListSubscriptions(ws, item);
149
+ });
150
+ if (remaining.length > 0 || (Array.isArray(parsed) && parsed.length === 0)) {
151
+ // Preserve the single versus list envelope for every endpoint.
152
+ queue.push((Array.isArray(parsed) ? remaining : remaining[0]));
72
153
  }
154
+ resolve?.();
155
+ resolve = null;
73
156
  });
157
+ if (this.endpoint === WsEndpoint.Info) {
158
+ pingTimer = setInterval(() => {
159
+ if (ws.readyState === WS.WebSocket.OPEN)
160
+ ws.ping();
161
+ }, 30000);
162
+ }
74
163
  ws.on('close', (code, reason) => {
164
+ if (pingTimer !== undefined)
165
+ clearInterval(pingTimer);
75
166
  done = true;
76
167
  closeCode = code;
77
168
  closeReason = reason.toString();
169
+ this._settlePendingListSubscriptions(ws, new Error(`WebSocket disconnected (code=${code})`));
78
170
  resolve?.();
79
171
  resolve = null;
80
172
  });
81
173
  ws.on('error', (err) => {
174
+ if (pingTimer !== undefined)
175
+ clearInterval(pingTimer);
82
176
  done = true;
177
+ this._settlePendingListSubscriptions(ws, err);
83
178
  reject?.(err);
84
179
  reject = null;
85
180
  resolve?.();
@@ -99,7 +194,11 @@ class WsStreamManager {
99
194
  }
100
195
  }
101
196
  finally {
102
- this._currentWs = null;
197
+ if (pingTimer !== undefined)
198
+ clearInterval(pingTimer);
199
+ this._settlePendingListSubscriptions(ws, new Error('WebSocket iterator ended'));
200
+ if (this._currentWs === ws)
201
+ this._currentWs = null;
103
202
  if (ws.readyState === WS.WebSocket.OPEN || ws.readyState === WS.WebSocket.CONNECTING) {
104
203
  ws.close();
105
204
  }
@@ -120,21 +219,24 @@ class WsStreamManager {
120
219
  }
121
220
  }
122
221
  async _connect() {
123
- const url = this.isPrivate ? (0, internal_base_2.buildURL)(this.client) : (0, internal_base_1.buildURL)(this.client);
124
- const headers = {};
125
- if (this.isPrivate) {
222
+ const url = this.endpoint === WsEndpoint.Info ? (0, internal_base_3.buildURL)(this.client)
223
+ : this.endpoint === WsEndpoint.Private ? (0, internal_base_2.buildURL)(this.client)
224
+ : (0, internal_base_1.buildURL)(this.client);
225
+ let authHeaders;
226
+ if (requiresAuth(this.endpoint)) {
126
227
  const { accessKey, secretKey } = this.client;
127
228
  if (!accessKey || !secretKey) {
128
- throw new Error('Private WebSocket requires accessKey and secretKey');
229
+ throw new Error(`${this.endpoint} WebSocket requires accessKey and secretKey`);
129
230
  }
130
231
  const token = (0, jwtAuth_1.createJwtToken)(accessKey, secretKey);
131
- headers['Authorization'] = `Bearer ${token}`;
232
+ authHeaders = { Authorization: `Bearer ${token}` };
132
233
  }
234
+ const headers = this.client._buildWebSocketHandshakeHeaders(authHeaders);
133
235
  return new Promise((resolve, reject) => {
134
236
  const ws = new WS.WebSocket(url.toString(), { headers });
135
237
  const onOpen = () => {
136
238
  ws.removeListener('error', onError);
137
- ws.send(buildSubscriptionMessage(this.types));
239
+ ws.send(buildSubscriptionMessage(this.types, this.format));
138
240
  resolve(ws);
139
241
  };
140
242
  const onError = (err) => {
@@ -145,6 +247,23 @@ class WsStreamManager {
145
247
  ws.once('error', onError);
146
248
  });
147
249
  }
250
+ _settlePendingListSubscriptions(ws, result) {
251
+ const pending = this._pendingListSubscriptions;
252
+ if (!pending || pending.socket !== ws)
253
+ return false;
254
+ if (!(result instanceof Error)) {
255
+ const ticket = 'ticket' in result ? result.ticket : result.tckt;
256
+ if (pending.ticket !== ticket)
257
+ return false;
258
+ }
259
+ this._pendingListSubscriptions = undefined;
260
+ clearTimeout(pending.timer);
261
+ if (result instanceof Error)
262
+ pending.reject(result);
263
+ else
264
+ pending.resolve(result);
265
+ return true;
266
+ }
148
267
  }
149
268
  exports.WsStreamManager = WsStreamManager;
150
269
  /**
@@ -159,32 +278,49 @@ class WsStream {
159
278
  }
160
279
  /** Subscribe to the ticker (current price) stream. */
161
280
  ticker(codes, opts) {
162
- return new WsStreamManager(this.client, [{ type: 'ticker', codes }], false, opts);
281
+ return new WsStreamManager(this.client, [{ type: 'ticker', codes }], WsEndpoint.Public, opts);
163
282
  }
164
283
  /** Subscribe to the trade (executed order) stream. */
165
284
  trade(codes, opts) {
166
- return new WsStreamManager(this.client, [{ type: 'trade', codes }], false, opts);
285
+ return new WsStreamManager(this.client, [{ type: 'trade', codes }], WsEndpoint.Public, opts);
167
286
  }
168
287
  /** Subscribe to the orderbook stream. */
169
288
  orderbook(codes, opts) {
170
- return new WsStreamManager(this.client, [{ type: 'orderbook', codes }], false, opts);
289
+ return new WsStreamManager(this.client, [{ type: 'orderbook', codes }], WsEndpoint.Public, opts);
171
290
  }
172
291
  /** Subscribe to the candle stream. */
173
292
  candle(codes, opts) {
174
293
  const { interval = '1m', ...streamOpts } = opts ?? {};
175
- return new WsStreamManager(this.client, [{ type: `candle.${interval}`, codes }], false, streamOpts);
294
+ return new WsStreamManager(this.client, [{ type: `candle.${interval}`, codes }], WsEndpoint.Public, streamOpts);
176
295
  }
177
296
  /** Subscribe to the myOrder (my orders) stream. Requires authentication. */
178
297
  myOrder(codes, opts) {
179
- return new WsStreamManager(this.client, [{ type: 'myOrder', codes }], true, opts);
298
+ return new WsStreamManager(this.client, [{ type: 'myOrder', codes }], WsEndpoint.Private, opts);
180
299
  }
181
300
  /** Subscribe to the myAsset (my assets) stream. Requires authentication. */
182
301
  myAsset(opts) {
183
- return new WsStreamManager(this.client, [{ type: 'myAsset' }], true, opts);
302
+ return new WsStreamManager(this.client, [{ type: 'myAsset' }], WsEndpoint.Private, opts);
303
+ }
304
+ /** Subscribe to the announcement stream. Requires authentication. */
305
+ announcement(opts) {
306
+ const { categories, includeBody, ...streamOpts } = opts ?? {};
307
+ return new WsStreamManager(this.client, [buildAnnouncementSubscription(categories, includeBody)], WsEndpoint.Private, streamOpts);
308
+ }
309
+ /** Subscribe to calculated indicator values. Requires authentication. */
310
+ indicator(codes, opts) {
311
+ const { timeframe, indicators, format = 'DEFAULT', ...streamOpts } = opts;
312
+ const subscription = { type: 'indicator', codes, timeframe, indicators };
313
+ return new WsStreamManager(this.client, [subscription], WsEndpoint.Info, { ...streamOpts, format });
314
+ }
315
+ /** Subscribe to technical indicator condition transitions. Requires authentication. */
316
+ indicatorSignal(codes, opts) {
317
+ const { timeframe, indicators, format = 'DEFAULT', ...streamOpts } = opts;
318
+ const subscription = { type: 'indicator_signal', codes, timeframe, indicators };
319
+ return new WsStreamManager(this.client, [subscription], WsEndpoint.Info, { ...streamOpts, format });
184
320
  }
185
321
  /** Subscribe to multiple public streams at once. */
186
322
  subscribe(opts) {
187
- const { ticker, trade, orderbook, candle, maxRetries, retryDelayMs, onDisconnect, onReconnect } = opts;
323
+ const { ticker, trade, orderbook, candle, format, maxRetries, retryDelayMs, onDisconnect, onReconnect } = opts;
188
324
  const types = [];
189
325
  if (ticker)
190
326
  types.push({ type: 'ticker', codes: ticker });
@@ -195,6 +331,8 @@ class WsStream {
195
331
  if (candle)
196
332
  types.push({ type: `candle.${candle.interval ?? '1m'}`, codes: candle.codes });
197
333
  const streamOpts = {};
334
+ if (format !== undefined)
335
+ streamOpts.format = format;
198
336
  if (maxRetries !== undefined)
199
337
  streamOpts.maxRetries = maxRetries;
200
338
  if (retryDelayMs !== undefined)
@@ -203,17 +341,53 @@ class WsStream {
203
341
  streamOpts.onDisconnect = onDisconnect;
204
342
  if (onReconnect)
205
343
  streamOpts.onReconnect = onReconnect;
206
- return new WsStreamManager(this.client, types, false, streamOpts);
344
+ return new WsStreamManager(this.client, types, WsEndpoint.Public, streamOpts);
207
345
  }
208
346
  /** Subscribe to multiple private streams at once. Requires authentication. */
209
347
  subscribePrivate(opts) {
210
- const { myOrder, myAsset, maxRetries, retryDelayMs, onDisconnect, onReconnect } = opts;
348
+ const { announcement, myOrder, myAsset, format, maxRetries, retryDelayMs, onDisconnect, onReconnect } = opts;
211
349
  const types = [];
350
+ if (announcement) {
351
+ types.push(buildAnnouncementSubscription(announcement === true ? undefined : announcement.categories, announcement === true ? undefined : announcement.includeBody));
352
+ }
212
353
  if (myOrder)
213
354
  types.push({ type: 'myOrder', codes: myOrder });
214
355
  if (myAsset)
215
356
  types.push({ type: 'myAsset' });
216
357
  const streamOpts = {};
358
+ if (format !== undefined)
359
+ streamOpts.format = format;
360
+ if (maxRetries !== undefined)
361
+ streamOpts.maxRetries = maxRetries;
362
+ if (retryDelayMs !== undefined)
363
+ streamOpts.retryDelayMs = retryDelayMs;
364
+ if (onDisconnect)
365
+ streamOpts.onDisconnect = onDisconnect;
366
+ if (onReconnect)
367
+ streamOpts.onReconnect = onReconnect;
368
+ return new WsStreamManager(this.client, types, WsEndpoint.Private, streamOpts);
369
+ }
370
+ /** Subscribe to multiple info streams at once. Requires authentication. */
371
+ subscribeInfo(opts) {
372
+ const { indicator, indicatorSignal, format, maxRetries, retryDelayMs, onDisconnect, onReconnect } = opts;
373
+ const subscriptions = [
374
+ ...(indicator ?
375
+ Array.isArray(indicator) ?
376
+ indicator
377
+ : [indicator]
378
+ : []).map((item) => ({ ...item, type: 'indicator' })),
379
+ ...(indicatorSignal ?
380
+ Array.isArray(indicatorSignal) ?
381
+ indicatorSignal
382
+ : [indicatorSignal]
383
+ : []).map((item) => ({ ...item, type: 'indicator_signal' })),
384
+ ];
385
+ if (subscriptions.length === 0) {
386
+ throw new Error('At least one subscription type must be specified');
387
+ }
388
+ const streamOpts = {};
389
+ if (format !== undefined)
390
+ streamOpts.format = format;
217
391
  if (maxRetries !== undefined)
218
392
  streamOpts.maxRetries = maxRetries;
219
393
  if (retryDelayMs !== undefined)
@@ -222,7 +396,7 @@ class WsStream {
222
396
  streamOpts.onDisconnect = onDisconnect;
223
397
  if (onReconnect)
224
398
  streamOpts.onReconnect = onReconnect;
225
- return new WsStreamManager(this.client, types, true, streamOpts);
399
+ return new WsStreamManager(this.client, subscriptions, WsEndpoint.Info, streamOpts);
226
400
  }
227
401
  }
228
402
  exports.WsStream = WsStream;
package/lib/ws.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ws.js","sourceRoot":"","sources":["../src/lib/ws.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ws.js","sourceRoot":"","sources":["../src/lib/ws.ts"],"names":[],"mappings":"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"}