coinbase-api 0.3.2 → 0.5.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 (218) hide show
  1. package/README.md +438 -14
  2. package/dist/cjs/CBAdvancedTradeClient.d.ts +559 -0
  3. package/dist/cjs/CBAdvancedTradeClient.js +574 -0
  4. package/dist/cjs/CBAdvancedTradeClient.js.map +1 -0
  5. package/dist/cjs/CBAppClient.d.ts +359 -0
  6. package/dist/cjs/CBAppClient.js +336 -0
  7. package/dist/cjs/CBAppClient.js.map +1 -0
  8. package/dist/cjs/CBCommerceClient.d.ts +110 -0
  9. package/dist/cjs/CBCommerceClient.js +105 -0
  10. package/dist/cjs/CBCommerceClient.js.map +1 -0
  11. package/dist/cjs/CBExchangeClient.d.ts +640 -0
  12. package/dist/cjs/CBExchangeClient.js +751 -0
  13. package/dist/cjs/CBExchangeClient.js.map +1 -0
  14. package/dist/cjs/CBInternationalClient.d.ts +381 -0
  15. package/dist/cjs/CBInternationalClient.js +437 -0
  16. package/dist/cjs/CBInternationalClient.js.map +1 -0
  17. package/dist/cjs/CBPrimeClient.d.ts +363 -0
  18. package/dist/cjs/CBPrimeClient.js +451 -0
  19. package/dist/cjs/CBPrimeClient.js.map +1 -0
  20. package/dist/cjs/WebsocketClient.d.ts +78 -0
  21. package/dist/cjs/WebsocketClient.js +534 -0
  22. package/dist/cjs/WebsocketClient.js.map +1 -0
  23. package/dist/cjs/index.d.ts +13 -0
  24. package/dist/cjs/index.js +30 -0
  25. package/dist/cjs/index.js.map +1 -0
  26. package/dist/cjs/lib/BaseRestClient.d.ts +66 -0
  27. package/dist/cjs/lib/BaseRestClient.js +436 -0
  28. package/dist/cjs/lib/BaseRestClient.js.map +1 -0
  29. package/dist/cjs/lib/BaseWSClient.d.ts +169 -0
  30. package/dist/cjs/lib/BaseWSClient.js +638 -0
  31. package/dist/cjs/lib/BaseWSClient.js.map +1 -0
  32. package/dist/cjs/lib/jwtNode.d.ts +13 -0
  33. package/dist/cjs/lib/jwtNode.js +52 -0
  34. package/dist/cjs/lib/jwtNode.js.map +1 -0
  35. package/dist/cjs/lib/misc-util.d.ts +1 -0
  36. package/dist/cjs/lib/misc-util.js +7 -0
  37. package/dist/cjs/lib/misc-util.js.map +1 -0
  38. package/dist/cjs/lib/requestUtils.d.ts +98 -0
  39. package/dist/cjs/lib/requestUtils.js +75 -0
  40. package/dist/cjs/lib/requestUtils.js.map +1 -0
  41. package/dist/cjs/lib/webCryptoAPI.d.ts +10 -0
  42. package/dist/cjs/lib/webCryptoAPI.js +83 -0
  43. package/dist/cjs/lib/webCryptoAPI.js.map +1 -0
  44. package/dist/cjs/lib/websocket/WsStore.d.ts +63 -0
  45. package/dist/cjs/lib/websocket/WsStore.js +254 -0
  46. package/dist/cjs/lib/websocket/WsStore.js.map +1 -0
  47. package/dist/cjs/lib/websocket/WsStore.types.d.ts +49 -0
  48. package/dist/cjs/lib/websocket/WsStore.types.js +14 -0
  49. package/dist/cjs/lib/websocket/WsStore.types.js.map +1 -0
  50. package/dist/cjs/lib/websocket/logger.d.ts +6 -0
  51. package/dist/cjs/lib/websocket/logger.js +16 -0
  52. package/dist/cjs/lib/websocket/logger.js.map +1 -0
  53. package/dist/cjs/lib/websocket/typeGuards.d.ts +27 -0
  54. package/dist/cjs/lib/websocket/typeGuards.js +86 -0
  55. package/dist/cjs/lib/websocket/typeGuards.js.map +1 -0
  56. package/dist/cjs/lib/websocket/websocket-util.d.ts +120 -0
  57. package/dist/cjs/lib/websocket/websocket-util.js +173 -0
  58. package/dist/cjs/lib/websocket/websocket-util.js.map +1 -0
  59. package/dist/cjs/package.json +3 -0
  60. package/dist/cjs/types/request/advanced-trade-client.d.ts +194 -0
  61. package/dist/cjs/types/request/advanced-trade-client.js +18 -0
  62. package/dist/cjs/types/request/advanced-trade-client.js.map +1 -0
  63. package/dist/cjs/types/request/coinbase-app-client.d.ts +80 -0
  64. package/dist/cjs/types/request/coinbase-app-client.js +28 -0
  65. package/dist/cjs/types/request/coinbase-app-client.js.map +1 -0
  66. package/dist/cjs/types/request/coinbase-exchange.d.ts +332 -0
  67. package/dist/cjs/types/request/coinbase-exchange.js +3 -0
  68. package/dist/cjs/types/request/coinbase-exchange.js.map +1 -0
  69. package/dist/cjs/types/request/coinbase-international.d.ts +160 -0
  70. package/dist/cjs/types/request/coinbase-international.js +13 -0
  71. package/dist/cjs/types/request/coinbase-international.js.map +1 -0
  72. package/dist/cjs/types/request/coinbase-prime.d.ts +298 -0
  73. package/dist/cjs/types/request/coinbase-prime.js +8 -0
  74. package/dist/cjs/types/request/coinbase-prime.js.map +1 -0
  75. package/dist/cjs/types/response/advanced-trade-client.d.ts +759 -0
  76. package/dist/cjs/types/response/advanced-trade-client.js +8 -0
  77. package/dist/cjs/types/response/advanced-trade-client.js.map +1 -0
  78. package/dist/cjs/types/response/coinbase-app-client.d.ts +168 -0
  79. package/dist/cjs/types/response/coinbase-app-client.js +18 -0
  80. package/dist/cjs/types/response/coinbase-app-client.js.map +1 -0
  81. package/dist/cjs/types/response/coinbase-exchange.d.ts +80 -0
  82. package/dist/cjs/types/response/coinbase-exchange.js +82 -0
  83. package/dist/cjs/types/response/coinbase-exchange.js.map +1 -0
  84. package/dist/cjs/types/response/coinbase-international.d.ts +40 -0
  85. package/dist/cjs/types/response/coinbase-international.js +42 -0
  86. package/dist/cjs/types/response/coinbase-international.js.map +1 -0
  87. package/dist/cjs/types/response/coinbase-prime.d.ts +70 -0
  88. package/dist/cjs/types/response/coinbase-prime.js +72 -0
  89. package/dist/cjs/types/response/coinbase-prime.js.map +1 -0
  90. package/dist/cjs/types/response/ws.d.ts +7 -0
  91. package/dist/cjs/types/response/ws.js +3 -0
  92. package/dist/cjs/types/response/ws.js.map +1 -0
  93. package/dist/cjs/types/shared.types.d.ts +60 -0
  94. package/dist/cjs/types/shared.types.js +3 -0
  95. package/dist/cjs/types/shared.types.js.map +1 -0
  96. package/dist/cjs/types/websockets/client.d.ts +73 -0
  97. package/dist/cjs/types/websockets/client.js +3 -0
  98. package/dist/cjs/types/websockets/client.js.map +1 -0
  99. package/dist/cjs/types/websockets/events.d.ts +40 -0
  100. package/dist/cjs/types/websockets/events.js +3 -0
  101. package/dist/cjs/types/websockets/events.js.map +1 -0
  102. package/dist/cjs/types/websockets/requests.d.ts +76 -0
  103. package/dist/cjs/types/websockets/requests.js +3 -0
  104. package/dist/cjs/types/websockets/requests.js.map +1 -0
  105. package/dist/cjs/types/websockets/wsAPI.d.ts +9 -0
  106. package/dist/cjs/types/websockets/wsAPI.js +3 -0
  107. package/dist/cjs/types/websockets/wsAPI.js.map +1 -0
  108. package/dist/mjs/CBAdvancedTradeClient.d.ts +559 -0
  109. package/dist/mjs/CBAdvancedTradeClient.js +570 -0
  110. package/dist/mjs/CBAdvancedTradeClient.js.map +1 -0
  111. package/dist/mjs/CBAppClient.d.ts +359 -0
  112. package/dist/mjs/CBAppClient.js +332 -0
  113. package/dist/mjs/CBAppClient.js.map +1 -0
  114. package/dist/mjs/CBCommerceClient.d.ts +110 -0
  115. package/dist/mjs/CBCommerceClient.js +101 -0
  116. package/dist/mjs/CBCommerceClient.js.map +1 -0
  117. package/dist/mjs/CBExchangeClient.d.ts +640 -0
  118. package/dist/mjs/CBExchangeClient.js +747 -0
  119. package/dist/mjs/CBExchangeClient.js.map +1 -0
  120. package/dist/mjs/CBInternationalClient.d.ts +381 -0
  121. package/dist/mjs/CBInternationalClient.js +433 -0
  122. package/dist/mjs/CBInternationalClient.js.map +1 -0
  123. package/dist/mjs/CBPrimeClient.d.ts +363 -0
  124. package/dist/mjs/CBPrimeClient.js +447 -0
  125. package/dist/mjs/CBPrimeClient.js.map +1 -0
  126. package/dist/mjs/WebsocketClient.d.ts +78 -0
  127. package/dist/mjs/WebsocketClient.js +530 -0
  128. package/dist/mjs/WebsocketClient.js.map +1 -0
  129. package/dist/mjs/index.d.ts +13 -0
  130. package/dist/mjs/index.js +14 -0
  131. package/dist/mjs/index.js.map +1 -0
  132. package/dist/mjs/lib/BaseRestClient.d.ts +66 -0
  133. package/dist/mjs/lib/BaseRestClient.js +429 -0
  134. package/dist/mjs/lib/BaseRestClient.js.map +1 -0
  135. package/dist/mjs/lib/BaseWSClient.d.ts +169 -0
  136. package/dist/mjs/lib/BaseWSClient.js +631 -0
  137. package/dist/mjs/lib/BaseWSClient.js.map +1 -0
  138. package/dist/mjs/lib/jwtNode.d.ts +13 -0
  139. package/dist/mjs/lib/jwtNode.js +45 -0
  140. package/dist/mjs/lib/jwtNode.js.map +1 -0
  141. package/dist/mjs/lib/misc-util.d.ts +1 -0
  142. package/dist/mjs/lib/misc-util.js +4 -0
  143. package/dist/mjs/lib/misc-util.js.map +1 -0
  144. package/dist/mjs/lib/requestUtils.d.ts +98 -0
  145. package/dist/mjs/lib/requestUtils.js +69 -0
  146. package/dist/mjs/lib/requestUtils.js.map +1 -0
  147. package/dist/mjs/lib/webCryptoAPI.d.ts +10 -0
  148. package/dist/mjs/lib/webCryptoAPI.js +79 -0
  149. package/dist/mjs/lib/webCryptoAPI.js.map +1 -0
  150. package/dist/mjs/lib/websocket/WsStore.d.ts +63 -0
  151. package/dist/mjs/lib/websocket/WsStore.js +249 -0
  152. package/dist/mjs/lib/websocket/WsStore.js.map +1 -0
  153. package/dist/mjs/lib/websocket/WsStore.types.d.ts +49 -0
  154. package/dist/mjs/lib/websocket/WsStore.types.js +11 -0
  155. package/dist/mjs/lib/websocket/WsStore.types.js.map +1 -0
  156. package/dist/mjs/lib/websocket/logger.d.ts +6 -0
  157. package/dist/mjs/lib/websocket/logger.js +13 -0
  158. package/dist/mjs/lib/websocket/logger.js.map +1 -0
  159. package/dist/mjs/lib/websocket/typeGuards.d.ts +27 -0
  160. package/dist/mjs/lib/websocket/typeGuards.js +78 -0
  161. package/dist/mjs/lib/websocket/typeGuards.js.map +1 -0
  162. package/dist/mjs/lib/websocket/websocket-util.d.ts +120 -0
  163. package/dist/mjs/lib/websocket/websocket-util.js +164 -0
  164. package/dist/mjs/lib/websocket/websocket-util.js.map +1 -0
  165. package/dist/mjs/package.json +3 -0
  166. package/dist/mjs/types/request/advanced-trade-client.d.ts +194 -0
  167. package/dist/mjs/types/request/advanced-trade-client.js +17 -0
  168. package/dist/mjs/types/request/advanced-trade-client.js.map +1 -0
  169. package/dist/mjs/types/request/coinbase-app-client.d.ts +80 -0
  170. package/dist/mjs/types/request/coinbase-app-client.js +27 -0
  171. package/dist/mjs/types/request/coinbase-app-client.js.map +1 -0
  172. package/dist/mjs/types/request/coinbase-exchange.d.ts +332 -0
  173. package/dist/mjs/types/request/coinbase-exchange.js +2 -0
  174. package/dist/mjs/types/request/coinbase-exchange.js.map +1 -0
  175. package/dist/mjs/types/request/coinbase-international.d.ts +160 -0
  176. package/dist/mjs/types/request/coinbase-international.js +12 -0
  177. package/dist/mjs/types/request/coinbase-international.js.map +1 -0
  178. package/dist/mjs/types/request/coinbase-prime.d.ts +298 -0
  179. package/dist/mjs/types/request/coinbase-prime.js +7 -0
  180. package/dist/mjs/types/request/coinbase-prime.js.map +1 -0
  181. package/dist/mjs/types/response/advanced-trade-client.d.ts +759 -0
  182. package/dist/mjs/types/response/advanced-trade-client.js +7 -0
  183. package/dist/mjs/types/response/advanced-trade-client.js.map +1 -0
  184. package/dist/mjs/types/response/coinbase-app-client.d.ts +168 -0
  185. package/dist/mjs/types/response/coinbase-app-client.js +17 -0
  186. package/dist/mjs/types/response/coinbase-app-client.js.map +1 -0
  187. package/dist/mjs/types/response/coinbase-exchange.d.ts +80 -0
  188. package/dist/mjs/types/response/coinbase-exchange.js +82 -0
  189. package/dist/mjs/types/response/coinbase-exchange.js.map +1 -0
  190. package/dist/mjs/types/response/coinbase-international.d.ts +40 -0
  191. package/dist/mjs/types/response/coinbase-international.js +42 -0
  192. package/dist/mjs/types/response/coinbase-international.js.map +1 -0
  193. package/dist/mjs/types/response/coinbase-prime.d.ts +70 -0
  194. package/dist/mjs/types/response/coinbase-prime.js +72 -0
  195. package/dist/mjs/types/response/coinbase-prime.js.map +1 -0
  196. package/dist/mjs/types/response/ws.d.ts +7 -0
  197. package/dist/mjs/types/response/ws.js +2 -0
  198. package/dist/mjs/types/response/ws.js.map +1 -0
  199. package/dist/mjs/types/shared.types.d.ts +60 -0
  200. package/dist/mjs/types/shared.types.js +2 -0
  201. package/dist/mjs/types/shared.types.js.map +1 -0
  202. package/dist/mjs/types/websockets/client.d.ts +73 -0
  203. package/dist/mjs/types/websockets/client.js +2 -0
  204. package/dist/mjs/types/websockets/client.js.map +1 -0
  205. package/dist/mjs/types/websockets/events.d.ts +40 -0
  206. package/dist/mjs/types/websockets/events.js +2 -0
  207. package/dist/mjs/types/websockets/events.js.map +1 -0
  208. package/dist/mjs/types/websockets/requests.d.ts +76 -0
  209. package/dist/mjs/types/websockets/requests.js +2 -0
  210. package/dist/mjs/types/websockets/requests.js.map +1 -0
  211. package/dist/mjs/types/websockets/wsAPI.d.ts +9 -0
  212. package/dist/mjs/types/websockets/wsAPI.js +2 -0
  213. package/dist/mjs/types/websockets/wsAPI.js.map +1 -0
  214. package/package.json +42 -30
  215. package/index.js +0 -1
  216. package/lib/index.d.ts +0 -1
  217. package/lib/index.js +0 -16
  218. package/lib/index.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WsStore.js","sourceRoot":"","sources":["../../../../src/lib/websocket/WsStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import WebSocket from 'isomorphic-ws';
2
+ export declare enum WsConnectionStateEnum {
3
+ INITIAL = 0,
4
+ CONNECTING = 1,
5
+ CONNECTED = 2,
6
+ CLOSING = 3,
7
+ RECONNECTING = 4,
8
+ ERROR_RECONNECTING = 5
9
+ }
10
+ export interface DeferredPromise<TSuccess = any, TError = any> {
11
+ resolve?: (value: TSuccess) => TSuccess;
12
+ reject?: (value: TError) => TError;
13
+ promise?: Promise<TSuccess>;
14
+ }
15
+ export interface WSConnectedResult {
16
+ wsKey: string;
17
+ }
18
+ export interface WsStoredState<TWSTopicSubscribeEvent extends string | object> {
19
+ /** The currently active websocket connection */
20
+ ws?: WebSocket;
21
+ /** The current lifecycle state of the connection (enum) */
22
+ connectionState?: WsConnectionStateEnum;
23
+ /** A timer that will send an upstream heartbeat (ping) when it expires */
24
+ activePingTimer?: ReturnType<typeof setTimeout> | undefined;
25
+ /** A timer tracking that an upstream heartbeat was sent, expecting a reply before it expires */
26
+ activePongTimer?: ReturnType<typeof setTimeout> | undefined;
27
+ /** If a reconnection is in progress, this will have the timer for the delayed reconnect */
28
+ activeReconnectTimer?: ReturnType<typeof setTimeout> | undefined;
29
+ /**
30
+ * When a connection attempt is in progress (even for reconnect), a promise is stored here.
31
+ *
32
+ * This promise will resolve once connected (and will then get removed);
33
+ */
34
+ deferredPromiseStore: Record<string, DeferredPromise>;
35
+ /**
36
+ * All the topics we are expected to be subscribed to on this connection (and we automatically resubscribe to if the connection drops)
37
+ *
38
+ * A "Set" and a deep-object-match are used to ensure we only subscribe to a topic once (tracking a list of unique topics we're expected to be connected to)
39
+ */
40
+ subscribedTopics: Set<TWSTopicSubscribeEvent>;
41
+ /** Whether this connection is ready for events (welcome message received after connection) */
42
+ isReadyForEvents?: boolean;
43
+ /** Whether this connection has completed authentication (only applies to private connections) */
44
+ isAuthenticated?: boolean;
45
+ /** Whether this connection has completed authentication before for the Websocket API, so it knows to automatically reauth if reconnected */
46
+ didAuthWSAPI?: boolean;
47
+ /** To reauthenticate on the WS API, which channel do we send to? */
48
+ WSAPIAuthChannel?: string;
49
+ }
@@ -0,0 +1,11 @@
1
+ export var WsConnectionStateEnum;
2
+ (function (WsConnectionStateEnum) {
3
+ WsConnectionStateEnum[WsConnectionStateEnum["INITIAL"] = 0] = "INITIAL";
4
+ WsConnectionStateEnum[WsConnectionStateEnum["CONNECTING"] = 1] = "CONNECTING";
5
+ WsConnectionStateEnum[WsConnectionStateEnum["CONNECTED"] = 2] = "CONNECTED";
6
+ WsConnectionStateEnum[WsConnectionStateEnum["CLOSING"] = 3] = "CLOSING";
7
+ WsConnectionStateEnum[WsConnectionStateEnum["RECONNECTING"] = 4] = "RECONNECTING";
8
+ WsConnectionStateEnum[WsConnectionStateEnum["ERROR_RECONNECTING"] = 5] = "ERROR_RECONNECTING";
9
+ // ERROR = 5,
10
+ })(WsConnectionStateEnum || (WsConnectionStateEnum = {}));
11
+ //# sourceMappingURL=WsStore.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WsStore.types.js","sourceRoot":"","sources":["../../../../src/lib/websocket/WsStore.types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,qBAQX;AARD,WAAY,qBAAqB;IAC/B,uEAAW,CAAA;IACX,6EAAc,CAAA;IACd,2EAAa,CAAA;IACb,uEAAW,CAAA;IACX,iFAAgB,CAAA;IAChB,6FAAsB,CAAA;IACtB,aAAa;AACf,CAAC,EARW,qBAAqB,KAArB,qBAAqB,QAQhC"}
@@ -0,0 +1,6 @@
1
+ export type LogParams = null | any;
2
+ export declare const DefaultLogger: {
3
+ trace: (..._params: LogParams) => void;
4
+ info: (...params: LogParams) => void;
5
+ error: (...params: LogParams) => void;
6
+ };
@@ -0,0 +1,13 @@
1
+ export const DefaultLogger = {
2
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3
+ trace: (..._params) => {
4
+ // console.log(_params);
5
+ },
6
+ info: (...params) => {
7
+ console.info(params);
8
+ },
9
+ error: (...params) => {
10
+ console.error(params);
11
+ },
12
+ };
13
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../src/lib/websocket/logger.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,6DAA6D;IAC7D,KAAK,EAAE,CAAC,GAAG,OAAkB,EAAQ,EAAE;QACrC,wBAAwB;IAC1B,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,MAAiB,EAAQ,EAAE;QACnC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,MAAiB,EAAQ,EAAE;QACpC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;CACF,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { CBAdvancedTradeErrorEvent, CBAdvancedTradeEvent, CBExchangeBaseEvent } from '../../types/websockets/events.js';
2
+ import { WsExchangeRequestOperation, WsInternationalRequestOperation, WsPrimeRequestOperation } from '../../types/websockets/requests.js';
3
+ import { WsKey } from './websocket-util.js';
4
+ export declare function isCBAdvancedTradeWSEvent(event: unknown): event is CBAdvancedTradeEvent;
5
+ /**
6
+ * Type guard that checks whether this event is/extends CBExchangeBaseEvent
7
+ */
8
+ export declare function isCBExchangeWSEvent(event: unknown, wsKey: WsKey): event is CBExchangeBaseEvent;
9
+ /**
10
+ * Type guard for error-type response events seen for the Advnaced Trade WS channel
11
+ */
12
+ export declare function isCBAdvancedTradeErrorEvent(event: unknown): event is CBAdvancedTradeErrorEvent;
13
+ /**
14
+ * Silly type guard for the structure of events being sent to the server
15
+ * (e.g. when subscribing to a topic)
16
+ */
17
+ export declare function isCBExchangeWSRequestOperation<TWSTopic extends string = string>(evt: unknown, wsKey: WsKey): evt is WsExchangeRequestOperation<TWSTopic>;
18
+ /**
19
+ * Silly type guard for the structure of events being sent to the server
20
+ * (e.g. when subscribing to a topic)
21
+ */
22
+ export declare function isCBINTXWSRequestOperation<TWSTopic extends string = string>(evt: unknown, wsKey: WsKey): evt is WsInternationalRequestOperation<TWSTopic>;
23
+ /**
24
+ * Silly type guard for the structure of events being sent to the server
25
+ * (e.g. when subscribing to a topic)
26
+ */
27
+ export declare function isCBPrimeWSRequestOperation<TWSTopic extends string = string>(evt: unknown, wsKey: WsKey): evt is WsPrimeRequestOperation<TWSTopic>;
@@ -0,0 +1,78 @@
1
+ import { WS_KEY_MAP } from './websocket-util.js';
2
+ function isDefinedObject(value) {
3
+ return typeof value === 'object' || !value;
4
+ }
5
+ export function isCBAdvancedTradeWSEvent(event) {
6
+ if (!isDefinedObject(event)) {
7
+ return false;
8
+ }
9
+ const message = event;
10
+ return typeof message.channel === 'string';
11
+ }
12
+ /**
13
+ * Type guard that checks whether this event is/extends CBExchangeBaseEvent
14
+ */
15
+ export function isCBExchangeWSEvent(event, wsKey) {
16
+ if (!isDefinedObject(event)) {
17
+ return false;
18
+ }
19
+ return (wsKey === WS_KEY_MAP.exchangeMarketData ||
20
+ wsKey === WS_KEY_MAP.exchangeDirectMarketData);
21
+ }
22
+ /**
23
+ * Type guard for error-type response events seen for the Advnaced Trade WS channel
24
+ */
25
+ export function isCBAdvancedTradeErrorEvent(event) {
26
+ if (!isDefinedObject(event)) {
27
+ return false;
28
+ }
29
+ const message = event;
30
+ return message.type === 'error';
31
+ }
32
+ /**
33
+ * Silly type guard for the structure of events being sent to the server
34
+ * (e.g. when subscribing to a topic)
35
+ */
36
+ export function isCBExchangeWSRequestOperation(evt, wsKey) {
37
+ if (!isDefinedObject(evt)) {
38
+ return false;
39
+ }
40
+ const looselyTypedEvent = evt;
41
+ if (typeof looselyTypedEvent.type !== 'string' ||
42
+ !Array.isArray(looselyTypedEvent.channels)) {
43
+ return false;
44
+ }
45
+ return (wsKey === WS_KEY_MAP.exchangeDirectMarketData ||
46
+ wsKey === WS_KEY_MAP.exchangeMarketData);
47
+ }
48
+ /**
49
+ * Silly type guard for the structure of events being sent to the server
50
+ * (e.g. when subscribing to a topic)
51
+ */
52
+ export function isCBINTXWSRequestOperation(evt, wsKey) {
53
+ if (!isDefinedObject(evt)) {
54
+ return false;
55
+ }
56
+ const looselyTypedEvent = evt;
57
+ if (typeof looselyTypedEvent.type !== 'string' ||
58
+ !Array.isArray(looselyTypedEvent.channels)) {
59
+ return false;
60
+ }
61
+ return wsKey === WS_KEY_MAP.internationalMarketData;
62
+ }
63
+ /**
64
+ * Silly type guard for the structure of events being sent to the server
65
+ * (e.g. when subscribing to a topic)
66
+ */
67
+ export function isCBPrimeWSRequestOperation(evt, wsKey) {
68
+ if (!isDefinedObject(evt)) {
69
+ return false;
70
+ }
71
+ const looselyTypedEvent = evt;
72
+ if (typeof looselyTypedEvent.type !== 'string' ||
73
+ typeof looselyTypedEvent.channel !== 'string') {
74
+ return false;
75
+ }
76
+ return wsKey === WS_KEY_MAP.internationalMarketData;
77
+ }
78
+ //# sourceMappingURL=typeGuards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../../../src/lib/websocket/typeGuards.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAS,MAAM,qBAAqB,CAAC;AAExD,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAc;IAEd,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,KAA6B,CAAC;IAC9C,OAAO,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAc,EACd,KAAY;IAEZ,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CACL,KAAK,KAAK,UAAU,CAAC,kBAAkB;QACvC,KAAK,KAAK,UAAU,CAAC,wBAAwB,CAC9C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAAc;IAEd,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,KAAkC,CAAC;IACnD,OAAO,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAE5C,GAAY,EAAE,KAAY;IAC1B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,iBAAiB,GAAG,GAA2C,CAAC;IAEtE,IACE,OAAO,iBAAiB,CAAC,IAAI,KAAK,QAAQ;QAC1C,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAC1C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CACL,KAAK,KAAK,UAAU,CAAC,wBAAwB;QAC7C,KAAK,KAAK,UAAU,CAAC,kBAAkB,CACxC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,GAAY,EACZ,KAAY;IAEZ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,iBAAiB,GAAG,GAAgD,CAAC;IAE3E,IACE,OAAO,iBAAiB,CAAC,IAAI,KAAK,QAAQ;QAC1C,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAC1C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,KAAK,UAAU,CAAC,uBAAuB,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,GAAY,EACZ,KAAY;IAEZ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,iBAAiB,GAAG,GAAwC,CAAC;IAEnE,IACE,OAAO,iBAAiB,CAAC,IAAI,KAAK,QAAQ;QAC1C,OAAO,iBAAiB,CAAC,OAAO,KAAK,QAAQ,EAC7C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,KAAK,UAAU,CAAC,uBAAuB,CAAC;AACtD,CAAC"}
@@ -0,0 +1,120 @@
1
+ import WebSocket from 'isomorphic-ws';
2
+ import { WsExchangeRequestOperation, WsInternationalRequestOperation } from '../../types/websockets/requests.js';
3
+ /**
4
+ * Each websocket URL (domain + endpoint) is represented as a "WS Key". Authentication is handled automatically if required.
5
+ */
6
+ export declare const WS_KEY_MAP: {
7
+ /**
8
+ * Market Data is the traditional feed that provides updates for both orders and trades.
9
+ * Most channels are now available without authentication.
10
+ *
11
+ * https://docs.cdp.coinbase.com/advanced-trade/docs/ws-overview
12
+ */
13
+ readonly advTradeMarketData: "advTradeMarketData";
14
+ /**
15
+ * User Order Data provides updates for the orders of the user.
16
+ *
17
+ * https://docs.cdp.coinbase.com/advanced-trade/docs/ws-overview
18
+ */
19
+ readonly advTradeUserData: "advTradeUserData";
20
+ /**
21
+ * Coinbase Market Data (part of Coinbase Exchange API) is the traditional feed which is available without authentication.
22
+ *
23
+ * https://docs.cdp.coinbase.com/exchange/docs/websocket-overview
24
+ */
25
+ readonly exchangeMarketData: "exchangeMarketData";
26
+ /**
27
+ * Coinbase Direct Market Data has direct access to Coinbase Exchange servers and requires Authentication.
28
+ *
29
+ * https://docs.cdp.coinbase.com/exchange/docs/websocket-overview
30
+ */
31
+ readonly exchangeDirectMarketData: "exchangeDirectMarketData";
32
+ /**
33
+ * The INTX WebSocket feed is publicly available and provides real-time market data updates for orders and trades.
34
+ * The SDK must authenticate when subscribing to the WebSocket Feed the very first time.
35
+ *
36
+ * https://docs.cdp.coinbase.com/intx/docs/websocket-overview
37
+ */
38
+ readonly internationalMarketData: "internationalMarketData";
39
+ /**
40
+ * The Prime WebSocket feed provides real-time market data updates for orders and trades. To begin
41
+ * receiving feed messages, you must send a signed subscribe message to the server indicating
42
+ * which channels and products to receive. The SDK will handle this automatically.
43
+ *
44
+ * https://docs.cdp.coinbase.com/prime/docs/websocket-feed
45
+ */
46
+ readonly primeMarketData: "primeMarketData";
47
+ };
48
+ /** This is used to differentiate between each of the available websocket streams */
49
+ export type WsKey = (typeof WS_KEY_MAP)[keyof typeof WS_KEY_MAP];
50
+ /**
51
+ * Normalised internal format for a request (subscribe/unsubscribe/etc) on a topic, with optional parameters.
52
+ *
53
+ * - Topic: the topic this event is for
54
+ * - Payload: the parameters to include, optional. E.g. auth requires key + sign. Some topics allow configurable parameters.
55
+ */
56
+ export interface WsTopicRequest<TWSTopic extends string = string, TWSPayload = any> {
57
+ topic: TWSTopic;
58
+ /**
59
+ * Any parameters to include with the request. These are automatically merged into the request.
60
+ */
61
+ payload?: TWSPayload;
62
+ }
63
+ /**
64
+ * Conveniently allow users to request a topic either as string topics or objects (containing string topic + params)
65
+ */
66
+ export type WsTopicRequestOrStringTopic<TWSTopic extends string, TWSPayload = any> = WsTopicRequest<TWSTopic, TWSPayload> | string;
67
+ export interface MessageEventLike {
68
+ target: WebSocket;
69
+ type: 'message';
70
+ data: string;
71
+ }
72
+ export declare function isMessageEvent(msg: unknown): msg is MessageEventLike;
73
+ /**
74
+ * Some exchanges have two livenet environments, some have test environments, some dont. This allows easy flexibility for different exchanges.
75
+ * Examples:
76
+ * - One livenet and one testnet: NetworkMap<'livenet' | 'testnet'>
77
+ * - One livenet, sometimes two, one testnet: NetworkMap<'livenet' | 'testnet', 'livenet2'>
78
+ * - Only one livenet, no other networks: NetworkMap<'livenet'>
79
+ */
80
+ type NetworkMap<TRequiredKeys extends string, TOptionalKeys extends string | undefined = undefined> = Record<TRequiredKeys, string> & (TOptionalKeys extends string ? Record<TOptionalKeys, string | undefined> : Record<TRequiredKeys, string>);
81
+ export declare const WS_URL_MAP: Record<WsKey, NetworkMap<'livenet' | 'testnet'>>;
82
+ /**
83
+ * Merge one or more WS Request operations (e.g. subscribe request) for
84
+ * CB Exchange into one, allowing them to be sent as one request
85
+ */
86
+ export declare function getMergedCBExchangeWSRequestOperations<TWSTopic extends string = string>(operations: WsExchangeRequestOperation<TWSTopic>[]): WsExchangeRequestOperation<TWSTopic>;
87
+ /**
88
+ * Merge one or more WS Request operations (e.g. subscribe request) for
89
+ * CB Exchange into one, allowing them to be sent as one request
90
+ */
91
+ export declare function getMergedCBINTXRequestOperations<TWSTopic extends string = string>(operations: WsInternationalRequestOperation<TWSTopic>[]): WsInternationalRequestOperation<TWSTopic>;
92
+ /**
93
+ * Return sign used to authenticate CB Exchange WS requests
94
+ */
95
+ export declare function getCBExchangeWSSign(apiSecret: string): Promise<{
96
+ timestampInSeconds: string;
97
+ sign: string;
98
+ }>;
99
+ /**
100
+ * Return sign used to authenticate CB INTX WS requests
101
+ */
102
+ export declare function getCBInternationalWSSign(apiKey: string, apiSecret: string, apiPassphrase: string): Promise<{
103
+ timestampInSeconds: string;
104
+ sign: string;
105
+ }>;
106
+ /**
107
+ * Return sign used to authenticate CB Prime WS requests
108
+ */
109
+ export declare function getCBPrimeWSSign(params: {
110
+ channelName: string;
111
+ svcAccountId: string;
112
+ portfolioId: string;
113
+ apiKey: string;
114
+ apiSecret: string;
115
+ product_ids?: string[];
116
+ }): Promise<{
117
+ timestampInSeconds: string;
118
+ sign: string;
119
+ }>;
120
+ export {};
@@ -0,0 +1,164 @@
1
+ import { signMessage } from '../webCryptoAPI.js';
2
+ /**
3
+ * Each websocket URL (domain + endpoint) is represented as a "WS Key". Authentication is handled automatically if required.
4
+ */
5
+ export const WS_KEY_MAP = {
6
+ /**
7
+ * Market Data is the traditional feed that provides updates for both orders and trades.
8
+ * Most channels are now available without authentication.
9
+ *
10
+ * https://docs.cdp.coinbase.com/advanced-trade/docs/ws-overview
11
+ */
12
+ advTradeMarketData: 'advTradeMarketData',
13
+ /**
14
+ * User Order Data provides updates for the orders of the user.
15
+ *
16
+ * https://docs.cdp.coinbase.com/advanced-trade/docs/ws-overview
17
+ */
18
+ advTradeUserData: 'advTradeUserData',
19
+ /**
20
+ * Coinbase Market Data (part of Coinbase Exchange API) is the traditional feed which is available without authentication.
21
+ *
22
+ * https://docs.cdp.coinbase.com/exchange/docs/websocket-overview
23
+ */
24
+ exchangeMarketData: 'exchangeMarketData',
25
+ /**
26
+ * Coinbase Direct Market Data has direct access to Coinbase Exchange servers and requires Authentication.
27
+ *
28
+ * https://docs.cdp.coinbase.com/exchange/docs/websocket-overview
29
+ */
30
+ exchangeDirectMarketData: 'exchangeDirectMarketData',
31
+ /**
32
+ * The INTX WebSocket feed is publicly available and provides real-time market data updates for orders and trades.
33
+ * The SDK must authenticate when subscribing to the WebSocket Feed the very first time.
34
+ *
35
+ * https://docs.cdp.coinbase.com/intx/docs/websocket-overview
36
+ */
37
+ internationalMarketData: 'internationalMarketData',
38
+ /**
39
+ * The Prime WebSocket feed provides real-time market data updates for orders and trades. To begin
40
+ * receiving feed messages, you must send a signed subscribe message to the server indicating
41
+ * which channels and products to receive. The SDK will handle this automatically.
42
+ *
43
+ * https://docs.cdp.coinbase.com/prime/docs/websocket-feed
44
+ */
45
+ primeMarketData: 'primeMarketData',
46
+ };
47
+ export function isMessageEvent(msg) {
48
+ if (typeof msg !== 'object' || !msg) {
49
+ return false;
50
+ }
51
+ const message = msg;
52
+ return message['type'] === 'message' && typeof message['data'] === 'string';
53
+ }
54
+ export const WS_URL_MAP = {
55
+ [WS_KEY_MAP.advTradeMarketData]: {
56
+ livenet: 'wss://advanced-trade-ws.coinbase.com',
57
+ testnet: 'NotAvailable',
58
+ },
59
+ [WS_KEY_MAP.advTradeUserData]: {
60
+ livenet: 'wss://advanced-trade-ws-user.coinbase.com',
61
+ testnet: 'NotAvailable',
62
+ },
63
+ [WS_KEY_MAP.exchangeMarketData]: {
64
+ livenet: 'wss://ws-feed.exchange.coinbase.com',
65
+ testnet: 'wss://ws-feed-public.sandbox.exchange.coinbase.com',
66
+ },
67
+ [WS_KEY_MAP.exchangeDirectMarketData]: {
68
+ livenet: 'wss://ws-direct.exchange.coinbase.com',
69
+ testnet: 'wss://ws-direct.sandbox.exchange.coinbase.com',
70
+ },
71
+ [WS_KEY_MAP.internationalMarketData]: {
72
+ livenet: 'wss://ws-md.international.coinbase.com',
73
+ testnet: 'wss://ws-md.n5e2.coinbase.com',
74
+ },
75
+ [WS_KEY_MAP.primeMarketData]: {
76
+ livenet: 'wss://ws-feed.prime.coinbase.com',
77
+ testnet: 'NotAvailable',
78
+ },
79
+ };
80
+ /**
81
+ * Merge one or more WS Request operations (e.g. subscribe request) for
82
+ * CB Exchange into one, allowing them to be sent as one request
83
+ */
84
+ export function getMergedCBExchangeWSRequestOperations(operations) {
85
+ // The CB Exchange WS supports sending multiple topics in one request.
86
+ // Merge all requests into one
87
+ return operations.reduce((acc, evt) => {
88
+ if (!acc) {
89
+ const wsRequestEvent = {
90
+ type: evt.type,
91
+ channels: [...evt.channels],
92
+ };
93
+ return wsRequestEvent;
94
+ }
95
+ const wsRequestEvent = {
96
+ type: evt.type,
97
+ channels: [...acc.channels, ...evt.channels],
98
+ };
99
+ return wsRequestEvent;
100
+ });
101
+ }
102
+ /**
103
+ * Merge one or more WS Request operations (e.g. subscribe request) for
104
+ * CB Exchange into one, allowing them to be sent as one request
105
+ */
106
+ export function getMergedCBINTXRequestOperations(operations) {
107
+ // The CB Exchange WS supports sending multiple topics in one request.
108
+ // Merge all requests into one
109
+ return operations.reduce((acc, evt) => {
110
+ if (!acc) {
111
+ const wsRequestEvent = {
112
+ type: evt.type,
113
+ channels: [...evt.channels],
114
+ };
115
+ return wsRequestEvent;
116
+ }
117
+ const wsRequestEvent = {
118
+ type: evt.type,
119
+ channels: [...acc.channels, ...evt.channels],
120
+ };
121
+ return wsRequestEvent;
122
+ });
123
+ }
124
+ /**
125
+ * Return sign used to authenticate CB Exchange WS requests
126
+ */
127
+ export async function getCBExchangeWSSign(apiSecret) {
128
+ const timestampInMs = Date.now();
129
+ const timestampInSeconds = (timestampInMs / 1000).toFixed(0);
130
+ const signPath = '/users/self/verify';
131
+ const signRequestMethod = 'GET';
132
+ const signInput = `${timestampInSeconds}${signRequestMethod}${signPath}`;
133
+ const sign = await signMessage(signInput, apiSecret, 'base64', 'SHA-256', 'base64:web');
134
+ return { sign, timestampInSeconds };
135
+ }
136
+ /**
137
+ * Return sign used to authenticate CB INTX WS requests
138
+ */
139
+ export async function getCBInternationalWSSign(apiKey, apiSecret, apiPassphrase) {
140
+ const timestampInMs = Date.now();
141
+ const timestampInSeconds = (timestampInMs / 1000).toFixed(0);
142
+ const signInput = timestampInSeconds + apiKey + 'CBINTLMD' + apiPassphrase;
143
+ const sign = await signMessage(signInput, apiSecret, 'base64', 'SHA-256', 'base64:web');
144
+ return { sign, timestampInSeconds };
145
+ }
146
+ /**
147
+ * Return sign used to authenticate CB Prime WS requests
148
+ */
149
+ export async function getCBPrimeWSSign(params) {
150
+ const timestampInMs = Date.now();
151
+ const timestampInSeconds = (timestampInMs / 1000).toFixed(0);
152
+ // channelName + accessKey + svcAccountId + timestamp + portfolioId + products
153
+ const signInput = [
154
+ params.channelName,
155
+ params.apiKey,
156
+ params.svcAccountId,
157
+ timestampInSeconds,
158
+ params.portfolioId,
159
+ params.product_ids ? params.product_ids.join('') : '',
160
+ ].join('');
161
+ const sign = await signMessage(signInput, params.apiSecret, 'base64', 'SHA-256', 'base64:web');
162
+ return { sign, timestampInSeconds };
163
+ }
164
+ //# sourceMappingURL=websocket-util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-util.js","sourceRoot":"","sources":["../../../../src/lib/websocket/websocket-util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }