@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
@@ -0,0 +1,44 @@
1
+ export {
2
+ WsInfo,
3
+ type BollingerBandsIndicator,
4
+ type BollingerBandsIndicatorSignal,
5
+ type Indicator,
6
+ type IndicatorSignal,
7
+ type IndicatorTimeframe,
8
+ type IndicatorType,
9
+ type MaCrossoverIndicator,
10
+ type MaCrossoverIndicatorSignal,
11
+ type MacdIndicator,
12
+ type MacdIndicatorSignal,
13
+ type MovingAverageIndicator,
14
+ type MovingAverageIndicatorSignal,
15
+ type RsiIndicator,
16
+ type RsiIndicatorSignal,
17
+ type RsiOverboughtIndicatorSignal,
18
+ type RsiOverboughtIndicatorSignalRequest,
19
+ type RsiOversoldIndicatorSignal,
20
+ type RsiOversoldIndicatorSignalRequest,
21
+ type VolumeIndicator,
22
+ type VolumeIndicatorSignal,
23
+ type ConnectInfoClientEvent,
24
+ type ConnectInfoServerEvent,
25
+ } from './ws-info';
26
+ export { type WsInfoWSClientOptions } from './ws';
27
+ export { type WsInfoWSReconnectOptions } from './ws';
28
+
29
+ export type { SimpleInfoServerEvent } from '../../internal/ws-simple-types';
30
+ export type {
31
+ SimpleVolumeIndicator,
32
+ SimpleRsiIndicator,
33
+ SimpleMovingAverageIndicator,
34
+ SimpleMaCrossoverIndicator,
35
+ SimpleBollingerBandsIndicator,
36
+ SimpleMacdIndicator,
37
+ SimpleVolumeIndicatorSignal,
38
+ SimpleRsiOverboughtIndicatorSignal,
39
+ SimpleRsiOversoldIndicatorSignal,
40
+ SimpleMovingAverageIndicatorSignal,
41
+ SimpleMaCrossoverIndicatorSignal,
42
+ SimpleBollingerBandsIndicatorSignal,
43
+ SimpleMacdIndicatorSignal,
44
+ } from '../../internal/ws-simple-types';
@@ -0,0 +1,96 @@
1
+ import * as WsInfoAPI from './ws-info';
2
+ import { Upbit } from '../../client';
3
+ import { EventEmitter } from '../../core/EventEmitter';
4
+ import { UpbitError } from '../../core/error';
5
+ import type { ReconnectingEvent } from '../../internal/ws';
6
+
7
+ export type WsInfoServerMessage = WsInfoAPI.ConnectInfoServerEvent;
8
+
9
+ export type WsInfoStreamMessage =
10
+ | { type: 'connecting' | 'open' | 'closing' }
11
+ | { type: 'close'; code: number; reason: string }
12
+ | { type: 'reconnecting'; reconnect: ReconnectingEvent }
13
+ | { type: 'reconnected' }
14
+ | { type: 'message'; message: WsInfoServerMessage }
15
+ | { type: 'error'; error: WebSocketError };
16
+
17
+ export class WebSocketError extends UpbitError {
18
+ /**
19
+ * The error data that the API sent back in an error event.
20
+ */
21
+ error?: unknown | undefined;
22
+
23
+ constructor(message: string, event: unknown | null) {
24
+ super(message);
25
+
26
+ this.error = event ?? undefined;
27
+ }
28
+ }
29
+
30
+ type Simplify<T> = { [KeyType in keyof T]: T[KeyType] } & {};
31
+
32
+ type WebSocketEvents = Simplify<
33
+ {
34
+ event: (event: WsInfoServerMessage) => void;
35
+ error: (error: WebSocketError) => void;
36
+ close: (code: number, reason: string) => void;
37
+ reconnecting: (event: ReconnectingEvent) => void;
38
+ reconnected: () => void;
39
+ } & {
40
+ [EventType in WsInfoAPI.ConnectInfoServerEvent['type']]: (
41
+ event: Extract<WsInfoAPI.ConnectInfoServerEvent, { type?: EventType }>,
42
+ ) => unknown;
43
+ }
44
+ >;
45
+
46
+ export abstract class WsInfoEmitter extends EventEmitter<WebSocketEvents> {
47
+ /**
48
+ * Send an event to the API.
49
+ */
50
+ abstract send(event: WsInfoAPI.ConnectInfoClientEvent): void;
51
+
52
+ /**
53
+ * Close the WebSocket connection.
54
+ */
55
+ abstract close(props?: { code: number; reason: string }): void;
56
+
57
+ protected _onError(event: null, message: string, cause: any): void;
58
+ protected _onError(event: unknown, message?: string | undefined): void;
59
+ protected _onError(event: unknown | null, message?: string | undefined, cause?: any): void {
60
+ message = message ?? safeJSONStringify(event) ?? 'unknown error';
61
+
62
+ if (!this._hasListener('error')) {
63
+ const error = new WebSocketError(
64
+ message +
65
+ `\n\nTo resolve these unhandled rejection errors you should bind an \`error\` callback, e.g. \`ws.on('error', (error) => ...)\` `,
66
+ event,
67
+ );
68
+ // @ts-ignore
69
+ error.cause = cause;
70
+ Promise.reject(error);
71
+ return;
72
+ }
73
+
74
+ const error = new WebSocketError(message, event);
75
+ // @ts-ignore
76
+ error.cause = cause;
77
+
78
+ this._emit('error', error);
79
+ }
80
+ }
81
+
82
+ export function buildURL(client: Upbit, parameters?: Record<string, unknown> | null): URL {
83
+ const { ...query } = parameters ?? {};
84
+ const endpoint = '/websocket/v1/info';
85
+ const url = new URL(client.buildURL(endpoint, query, undefined));
86
+ url.protocol = url.protocol === 'http:' || url.protocol === 'ws:' ? 'ws:' : 'wss:';
87
+ return url;
88
+ }
89
+
90
+ function safeJSONStringify(value: unknown): string | null {
91
+ try {
92
+ return JSON.stringify(value);
93
+ } catch {
94
+ return null;
95
+ }
96
+ }