@reyaxyz/api-sdk 0.79.3 → 0.80.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.
@@ -37,13 +37,13 @@ var IncomingMessageTypes;
37
37
  IncomingMessageTypes["PONG"] = "pong";
38
38
  })(IncomingMessageTypes || (exports.IncomingMessageTypes = IncomingMessageTypes = {}));
39
39
  var SocketClient = /** @class */ (function () {
40
- function SocketClient(environment, onOpenCallback, onCloseCallback, onMessageCallback) {
40
+ function SocketClient(config) {
41
41
  this.pingInterval = 30000;
42
42
  this.lastMessageTime = Date.now();
43
- this.onOpenCallback = onOpenCallback;
44
- this.onCloseCallback = onCloseCallback;
45
- this.onMessageCallback = onMessageCallback;
46
- this.url = (common_1.API_CLIENT_CONFIGS[environment] || common_1.API_CLIENT_CONFIGS['test']).webSocketEndpoint;
43
+ this.onOpenCallback = config.onOpen;
44
+ this.onCloseCallback = config.onClose;
45
+ this.onMessageCallback = config.onMessage;
46
+ this.url = (common_1.API_CLIENT_CONFIGS[config.environment] || common_1.API_CLIENT_CONFIGS['test']).webSocketEndpoint;
47
47
  }
48
48
  SocketClient.prototype.connect = function () {
49
49
  this.ws = new ws_1.default(this.url);
@@ -1 +1 @@
1
- {"version":3,"file":"socket-client.js","sourceRoot":"/","sources":["clients/socket-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAA6C;AAC7C,0CAIyB;AAEzB,IAAK,oBAIJ;AAJD,WAAK,oBAAoB;IACvB,qCAAa,CAAA;IACb,+CAAuB,CAAA;IACvB,mDAA2B,CAAA;AAC7B,CAAC,EAJI,oBAAoB,KAApB,oBAAoB,QAIxB;AAED,IAAK,cAEJ;AAFD,WAAK,cAAc;IACjB,qCAAmB,CAAA;AACrB,CAAC,EAFI,cAAc,KAAd,cAAc,QAElB;AAED,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAC9B,+CAAuB,CAAA;IACvB,iDAAyB,CAAA;IACzB,uCAAe,CAAA;IACf,qDAA6B,CAAA;IAC7B,iEAAyC,CAAA;IACzC,qCAAa,CAAA;AACf,CAAC,EAPW,oBAAoB,oCAApB,oBAAoB,QAO/B;AAED;IASE,sBACE,WAAyC,EACzC,cAA0B,EAC1B,eAA2B,EAC3B,iBAAgD;QAP1C,iBAAY,GAAW,KAAM,CAAC;QAC9B,oBAAe,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QAQ3C,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,GAAG,GAAG,CACT,2BAAkB,CAAC,WAAW,CAAC,IAAI,2BAAkB,CAAC,MAAM,CAAC,CAC9D,CAAC,iBAAiB,CAAC;IACtB,CAAC;IAED,8BAAO,GAAP;QACE,IAAI,CAAC,EAAE,GAAG,IAAI,YAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,CAAC;IAED;;;OAGG;IACH,4BAAK,GAAL;;QACE,MAAA,IAAI,CAAC,EAAE,0CAAE,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,2BAAI,GAAJ,UAAK,IAAY;;QACf,MAAA,IAAI,CAAC,EAAE,0CAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEO,iCAAU,GAAlB;QACE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEO,kCAAW,GAAnB;QACE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC;IAEO,oCAAa,GAArB,UAAsB,KAAmB;QACvC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEO,0CAAmB,GAA3B;QAAA,iBAWC;QAVC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC;YAChC,IAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAI,CAAC,eAAe,CAAC;YACtD,IAAI,WAAW,GAAG,KAAI,CAAC,YAAY,EAAE,CAAC;gBACpC,IAAM,OAAO,GAAG;oBACd,IAAI,EAAE,oBAAoB,CAAC,IAAI;iBAChC,CAAC;gBACF,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACxB,CAAC;IAMD,sBAAI,gCAAM;QAJV;;;WAGG;aACH,UAAW,QAAoB;YAC7B,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QACjC,CAAC;;;OAAA;IAMD,sBAAI,iCAAO;QAJX;;;WAGG;aACH,UAAY,QAAoB;YAC9B,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;QAClC,CAAC;;;OAAA;IAMD,sBAAI,mCAAS;QAJb;;;WAGG;aACH,UAAc,QAAuC;YACnD,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;QACpC,CAAC;;;OAAA;IAED;;;OAGG;IACH,gCAAS,GAAT,UAAU,OAAe,EAAE,MAAe;QACxC,IAAM,OAAO,cACX,IAAI,EAAE,oBAAoB,CAAC,SAAS,EACpC,OAAO,SAAA,IACJ,MAAM,CACV,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,kCAAW,GAAX,UAAY,OAAe,EAAE,MAAe;QAC1C,IAAM,OAAO,cACX,IAAI,EAAE,oBAAoB,CAAC,WAAW,EACtC,OAAO,SAAA,IACJ,MAAM,CACV,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,CAAC;IACD;;;;OAIG;IACH,yCAAkB,GAAlB,UAAmB,MAAc,EAAE,UAA6B;QAC9D,IAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;QACvC,IAAM,MAAM,GAAG;YACb,EAAE,EAAE,UAAG,MAAM,cAAI,UAAU,CAAE;YAC7B,OAAO,EAAE,IAAI;SACd,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,6CAAsB,GAAtB,UAAuB,MAAc,EAAE,UAA6B;QAClE,IAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;QACvC,IAAM,MAAM,GAAG;YACb,EAAE,EAAE,UAAG,MAAM,cAAI,UAAU,CAAE;SAC9B,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IACH,mBAAC;AAAD,CAAC,AAhKD,IAgKC;AAhKY,oCAAY","sourcesContent":["import WebSocket, { MessageEvent } from 'ws';\nimport {\n API_CLIENT_CONFIGS,\n CandlesResolution,\n ServiceConfig,\n} from '@reyaxyz/common';\n\nenum OutgoingMessageTypes {\n PING = 'ping',\n SUBSCRIBE = 'subscribe',\n UNSUBSCRIBE = 'unsubscribe',\n}\n\nenum SocketChannels {\n CANDLES = 'candles',\n}\n\nexport enum IncomingMessageTypes {\n CONNECTED = 'connected',\n SUBSCRIBED = 'subscribed',\n ERROR = 'error',\n CHANNEL_DATA = 'channel_data',\n CHANNEL_BATCH_DATA = 'channel_batch_data',\n PONG = 'pong',\n}\n\nexport class SocketClient {\n private url: string;\n private ws?: WebSocket;\n private onOpenCallback?: () => void;\n private onCloseCallback?: () => void;\n private onMessageCallback?: (event: MessageEvent) => void;\n private pingInterval: number = 30_000;\n private lastMessageTime: number = Date.now();\n private pingIntervalId?: NodeJS.Timeout;\n constructor(\n environment: ServiceConfig['environment'],\n onOpenCallback: () => void,\n onCloseCallback: () => void,\n onMessageCallback: (event: MessageEvent) => void,\n ) {\n this.onOpenCallback = onOpenCallback;\n this.onCloseCallback = onCloseCallback;\n this.onMessageCallback = onMessageCallback;\n this.url = (\n API_CLIENT_CONFIGS[environment] || API_CLIENT_CONFIGS['test']\n ).webSocketEndpoint;\n }\n\n connect(): void {\n this.ws = new WebSocket(this.url);\n this.ws.addEventListener('open', this.handleOpen.bind(this));\n this.ws.addEventListener('close', this.handleClose.bind(this));\n this.ws.addEventListener('message', this.handleMessage.bind(this));\n }\n\n /**\n * @description Close the websocket connection.\n *\n */\n close(): void {\n this.ws?.close();\n this.ws = undefined;\n }\n\n /**\n * @description Send data to the websocket connection.\n *\n */\n send(data: string): void {\n this.ws?.send(data);\n }\n\n private handleOpen(): void {\n if (this.onOpenCallback) {\n this.onOpenCallback();\n }\n this.restartPingInterval();\n }\n\n private handleClose(): void {\n if (this.onCloseCallback) {\n this.onCloseCallback();\n }\n clearInterval(this.pingIntervalId);\n }\n\n private handleMessage(event: MessageEvent): void {\n if (event.data === 'PING') {\n this.send('PONG');\n } else {\n this.lastMessageTime = Date.now();\n if (this.onMessageCallback) {\n this.onMessageCallback(event);\n }\n }\n this.restartPingInterval();\n }\n\n private restartPingInterval(): void {\n clearInterval(this.pingIntervalId);\n this.pingIntervalId = setInterval(() => {\n const elapsedTime = Date.now() - this.lastMessageTime;\n if (elapsedTime > this.pingInterval) {\n const message = {\n type: OutgoingMessageTypes.PING,\n };\n this.send(JSON.stringify(message));\n }\n }, this.pingInterval);\n }\n\n /**\n * @description Set callback when the socket is opened.\n *\n */\n set onOpen(callback: () => void) {\n this.onOpenCallback = callback;\n }\n\n /**\n * @description Set callback when the socket is closed.\n *\n */\n set onClose(callback: () => void) {\n this.onCloseCallback = callback;\n }\n\n /**\n * @description Set callback when the socket receives a message.\n *\n */\n set onMessage(callback: (event: MessageEvent) => void) {\n this.onMessageCallback = callback;\n }\n\n /**\n * @description Send a subscribe message to the websocket connection.\n *\n */\n subscribe(channel: string, params?: object): void {\n const message = {\n type: OutgoingMessageTypes.SUBSCRIBE,\n channel,\n ...params,\n };\n this.send(JSON.stringify(message));\n }\n\n /**\n * @description Send an unsubscribe message to the websocket connection.\n *\n */\n unsubscribe(channel: string, params?: object): void {\n const message = {\n type: OutgoingMessageTypes.UNSUBSCRIBE,\n channel,\n ...params,\n };\n this.send(JSON.stringify(message));\n }\n /**\n * @description Subscribe to candles channel\n * for a specific market and resolution.\n *\n */\n subscribeToCandles(market: string, resolution: CandlesResolution): void {\n const channel = SocketChannels.CANDLES;\n const params = {\n id: `${market}/${resolution}`,\n batched: true,\n };\n this.subscribe(channel, params);\n }\n\n /**\n * @description Unsubscribe from candles channel\n * for a specific market and resolution.\n */\n unsubscribeFromCandles(market: string, resolution: CandlesResolution): void {\n const channel = SocketChannels.CANDLES;\n const params = {\n id: `${market}/${resolution}`,\n };\n this.unsubscribe(channel, params);\n }\n}\n"]}
1
+ {"version":3,"file":"socket-client.js","sourceRoot":"/","sources":["clients/socket-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAA6C;AAC7C,0CAIyB;AAEzB,IAAK,oBAIJ;AAJD,WAAK,oBAAoB;IACvB,qCAAa,CAAA;IACb,+CAAuB,CAAA;IACvB,mDAA2B,CAAA;AAC7B,CAAC,EAJI,oBAAoB,KAApB,oBAAoB,QAIxB;AAED,IAAK,cAEJ;AAFD,WAAK,cAAc;IACjB,qCAAmB,CAAA;AACrB,CAAC,EAFI,cAAc,KAAd,cAAc,QAElB;AAED,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAC9B,+CAAuB,CAAA;IACvB,iDAAyB,CAAA;IACzB,uCAAe,CAAA;IACf,qDAA6B,CAAA;IAC7B,iEAAyC,CAAA;IACzC,qCAAa,CAAA;AACf,CAAC,EAPW,oBAAoB,oCAApB,oBAAoB,QAO/B;AASD;IASE,sBAAY,MAA0B;QAH9B,iBAAY,GAAW,KAAM,CAAC;QAC9B,oBAAe,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QAG3C,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC;QAC1C,IAAI,CAAC,GAAG,GAAG,CACT,2BAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,2BAAkB,CAAC,MAAM,CAAC,CACrE,CAAC,iBAAiB,CAAC;IACtB,CAAC;IAED,8BAAO,GAAP;QACE,IAAI,CAAC,EAAE,GAAG,IAAI,YAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,CAAC;IAED;;;OAGG;IACH,4BAAK,GAAL;;QACE,MAAA,IAAI,CAAC,EAAE,0CAAE,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,2BAAI,GAAJ,UAAK,IAAY;;QACf,MAAA,IAAI,CAAC,EAAE,0CAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEO,iCAAU,GAAlB;QACE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEO,kCAAW,GAAnB;QACE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC;IAEO,oCAAa,GAArB,UAAsB,KAAmB;QACvC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEO,0CAAmB,GAA3B;QAAA,iBAWC;QAVC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC;YAChC,IAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAI,CAAC,eAAe,CAAC;YACtD,IAAI,WAAW,GAAG,KAAI,CAAC,YAAY,EAAE,CAAC;gBACpC,IAAM,OAAO,GAAG;oBACd,IAAI,EAAE,oBAAoB,CAAC,IAAI;iBAChC,CAAC;gBACF,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACxB,CAAC;IAMD,sBAAI,gCAAM;QAJV;;;WAGG;aACH,UAAW,QAAoB;YAC7B,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QACjC,CAAC;;;OAAA;IAMD,sBAAI,iCAAO;QAJX;;;WAGG;aACH,UAAY,QAAoB;YAC9B,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;QAClC,CAAC;;;OAAA;IAMD,sBAAI,mCAAS;QAJb;;;WAGG;aACH,UAAc,QAAuC;YACnD,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;QACpC,CAAC;;;OAAA;IAED;;;OAGG;IACH,gCAAS,GAAT,UAAU,OAAe,EAAE,MAAe;QACxC,IAAM,OAAO,cACX,IAAI,EAAE,oBAAoB,CAAC,SAAS,EACpC,OAAO,SAAA,IACJ,MAAM,CACV,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,kCAAW,GAAX,UAAY,OAAe,EAAE,MAAe;QAC1C,IAAM,OAAO,cACX,IAAI,EAAE,oBAAoB,CAAC,WAAW,EACtC,OAAO,SAAA,IACJ,MAAM,CACV,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,CAAC;IACD;;;;OAIG;IACH,yCAAkB,GAAlB,UAAmB,MAAc,EAAE,UAA6B;QAC9D,IAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;QACvC,IAAM,MAAM,GAAG;YACb,EAAE,EAAE,UAAG,MAAM,cAAI,UAAU,CAAE;YAC7B,OAAO,EAAE,IAAI;SACd,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,6CAAsB,GAAtB,UAAuB,MAAc,EAAE,UAA6B;QAClE,IAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;QACvC,IAAM,MAAM,GAAG;YACb,EAAE,EAAE,UAAG,MAAM,cAAI,UAAU,CAAE;SAC9B,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IACH,mBAAC;AAAD,CAAC,AA3JD,IA2JC;AA3JY,oCAAY","sourcesContent":["import WebSocket, { MessageEvent } from 'ws';\nimport {\n API_CLIENT_CONFIGS,\n CandlesResolution,\n ServiceConfig,\n} from '@reyaxyz/common';\n\nenum OutgoingMessageTypes {\n PING = 'ping',\n SUBSCRIBE = 'subscribe',\n UNSUBSCRIBE = 'unsubscribe',\n}\n\nenum SocketChannels {\n CANDLES = 'candles',\n}\n\nexport enum IncomingMessageTypes {\n CONNECTED = 'connected',\n SUBSCRIBED = 'subscribed',\n ERROR = 'error',\n CHANNEL_DATA = 'channel_data',\n CHANNEL_BATCH_DATA = 'channel_batch_data',\n PONG = 'pong',\n}\n\ninterface SocketClientConfig {\n environment: ServiceConfig['environment'];\n onOpen: () => void;\n onClose: () => void;\n onMessage: (event: MessageEvent) => void;\n}\n\nexport class SocketClient {\n private url: string;\n private ws?: WebSocket;\n private onOpenCallback?: () => void;\n private onCloseCallback?: () => void;\n private onMessageCallback?: (event: MessageEvent) => void;\n private pingInterval: number = 30_000;\n private lastMessageTime: number = Date.now();\n private pingIntervalId?: NodeJS.Timeout;\n constructor(config: SocketClientConfig) {\n this.onOpenCallback = config.onOpen;\n this.onCloseCallback = config.onClose;\n this.onMessageCallback = config.onMessage;\n this.url = (\n API_CLIENT_CONFIGS[config.environment] || API_CLIENT_CONFIGS['test']\n ).webSocketEndpoint;\n }\n\n connect(): void {\n this.ws = new WebSocket(this.url);\n this.ws.addEventListener('open', this.handleOpen.bind(this));\n this.ws.addEventListener('close', this.handleClose.bind(this));\n this.ws.addEventListener('message', this.handleMessage.bind(this));\n }\n\n /**\n * @description Close the websocket connection.\n *\n */\n close(): void {\n this.ws?.close();\n this.ws = undefined;\n }\n\n /**\n * @description Send data to the websocket connection.\n *\n */\n send(data: string): void {\n this.ws?.send(data);\n }\n\n private handleOpen(): void {\n if (this.onOpenCallback) {\n this.onOpenCallback();\n }\n this.restartPingInterval();\n }\n\n private handleClose(): void {\n if (this.onCloseCallback) {\n this.onCloseCallback();\n }\n clearInterval(this.pingIntervalId);\n }\n\n private handleMessage(event: MessageEvent): void {\n if (event.data === 'PING') {\n this.send('PONG');\n } else {\n this.lastMessageTime = Date.now();\n if (this.onMessageCallback) {\n this.onMessageCallback(event);\n }\n }\n this.restartPingInterval();\n }\n\n private restartPingInterval(): void {\n clearInterval(this.pingIntervalId);\n this.pingIntervalId = setInterval(() => {\n const elapsedTime = Date.now() - this.lastMessageTime;\n if (elapsedTime > this.pingInterval) {\n const message = {\n type: OutgoingMessageTypes.PING,\n };\n this.send(JSON.stringify(message));\n }\n }, this.pingInterval);\n }\n\n /**\n * @description Set callback when the socket is opened.\n *\n */\n set onOpen(callback: () => void) {\n this.onOpenCallback = callback;\n }\n\n /**\n * @description Set callback when the socket is closed.\n *\n */\n set onClose(callback: () => void) {\n this.onCloseCallback = callback;\n }\n\n /**\n * @description Set callback when the socket receives a message.\n *\n */\n set onMessage(callback: (event: MessageEvent) => void) {\n this.onMessageCallback = callback;\n }\n\n /**\n * @description Send a subscribe message to the websocket connection.\n *\n */\n subscribe(channel: string, params?: object): void {\n const message = {\n type: OutgoingMessageTypes.SUBSCRIBE,\n channel,\n ...params,\n };\n this.send(JSON.stringify(message));\n }\n\n /**\n * @description Send an unsubscribe message to the websocket connection.\n *\n */\n unsubscribe(channel: string, params?: object): void {\n const message = {\n type: OutgoingMessageTypes.UNSUBSCRIBE,\n channel,\n ...params,\n };\n this.send(JSON.stringify(message));\n }\n /**\n * @description Subscribe to candles channel\n * for a specific market and resolution.\n *\n */\n subscribeToCandles(market: string, resolution: CandlesResolution): void {\n const channel = SocketChannels.CANDLES;\n const params = {\n id: `${market}/${resolution}`,\n batched: true,\n };\n this.subscribe(channel, params);\n }\n\n /**\n * @description Unsubscribe from candles channel\n * for a specific market and resolution.\n */\n unsubscribeFromCandles(market: string, resolution: CandlesResolution): void {\n const channel = SocketChannels.CANDLES;\n const params = {\n id: `${market}/${resolution}`,\n };\n this.unsubscribe(channel, params);\n }\n}\n"]}
@@ -8,6 +8,12 @@ export declare enum IncomingMessageTypes {
8
8
  CHANNEL_BATCH_DATA = "channel_batch_data",
9
9
  PONG = "pong"
10
10
  }
11
+ interface SocketClientConfig {
12
+ environment: ServiceConfig['environment'];
13
+ onOpen: () => void;
14
+ onClose: () => void;
15
+ onMessage: (event: MessageEvent) => void;
16
+ }
11
17
  export declare class SocketClient {
12
18
  private url;
13
19
  private ws?;
@@ -17,7 +23,7 @@ export declare class SocketClient {
17
23
  private pingInterval;
18
24
  private lastMessageTime;
19
25
  private pingIntervalId?;
20
- constructor(environment: ServiceConfig['environment'], onOpenCallback: () => void, onCloseCallback: () => void, onMessageCallback: (event: MessageEvent) => void);
26
+ constructor(config: SocketClientConfig);
21
27
  connect(): void;
22
28
  /**
23
29
  * @description Close the websocket connection.
@@ -70,4 +76,5 @@ export declare class SocketClient {
70
76
  */
71
77
  unsubscribeFromCandles(market: string, resolution: CandlesResolution): void;
72
78
  }
79
+ export {};
73
80
  //# sourceMappingURL=socket-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"socket-client.d.ts","sourceRoot":"/","sources":["clients/socket-client.ts"],"names":[],"mappings":"AAAA,OAAkB,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC7C,OAAO,EAEL,iBAAiB,EACjB,aAAa,EACd,MAAM,iBAAiB,CAAC;AAYzB,oBAAY,oBAAoB;IAC9B,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,KAAK,UAAU;IACf,YAAY,iBAAiB;IAC7B,kBAAkB,uBAAuB;IACzC,IAAI,SAAS;CACd;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,EAAE,CAAC,CAAY;IACvB,OAAO,CAAC,cAAc,CAAC,CAAa;IACpC,OAAO,CAAC,eAAe,CAAC,CAAa;IACrC,OAAO,CAAC,iBAAiB,CAAC,CAAgC;IAC1D,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,cAAc,CAAC,CAAiB;gBAEtC,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,EACzC,cAAc,EAAE,MAAM,IAAI,EAC1B,eAAe,EAAE,MAAM,IAAI,EAC3B,iBAAiB,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI;IAUlD,OAAO,IAAI,IAAI;IAOf;;;OAGG;IACH,KAAK,IAAI,IAAI;IAKb;;;OAGG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,mBAAmB;IAa3B;;;OAGG;IACH,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,EAE9B;IAED;;;OAGG;IACH,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,EAE/B;IAED;;;OAGG;IACH,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,EAEpD;IAED;;;OAGG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IASjD;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAQnD;;;;OAIG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,GAAG,IAAI;IASvE;;;OAGG;IACH,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,GAAG,IAAI;CAO5E"}
1
+ {"version":3,"file":"socket-client.d.ts","sourceRoot":"/","sources":["clients/socket-client.ts"],"names":[],"mappings":"AAAA,OAAkB,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC7C,OAAO,EAEL,iBAAiB,EACjB,aAAa,EACd,MAAM,iBAAiB,CAAC;AAYzB,oBAAY,oBAAoB;IAC9B,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,KAAK,UAAU;IACf,YAAY,iBAAiB;IAC7B,kBAAkB,uBAAuB;IACzC,IAAI,SAAS;CACd;AAED,UAAU,kBAAkB;IAC1B,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAC1C,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;CAC1C;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,EAAE,CAAC,CAAY;IACvB,OAAO,CAAC,cAAc,CAAC,CAAa;IACpC,OAAO,CAAC,eAAe,CAAC,CAAa;IACrC,OAAO,CAAC,iBAAiB,CAAC,CAAgC;IAC1D,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,cAAc,CAAC,CAAiB;gBAC5B,MAAM,EAAE,kBAAkB;IAStC,OAAO,IAAI,IAAI;IAOf;;;OAGG;IACH,KAAK,IAAI,IAAI;IAKb;;;OAGG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,mBAAmB;IAa3B;;;OAGG;IACH,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,EAE9B;IAED;;;OAGG;IACH,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,EAE/B;IAED;;;OAGG;IACH,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,EAEpD;IAED;;;OAGG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IASjD;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAQnD;;;;OAIG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,GAAG,IAAI;IASvE;;;OAGG;IACH,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,GAAG,IAAI;CAO5E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reyaxyz/api-sdk",
3
- "version": "0.79.3",
3
+ "version": "0.80.0",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -38,7 +38,7 @@
38
38
  "ws": "^8.16.0"
39
39
  },
40
40
  "packageManager": "pnpm@8.3.1",
41
- "gitHead": "cbcf0d76d411fbef31b188afc07d351075a4df6c",
41
+ "gitHead": "b5f5d391e5c5592e858b27ea068cfb52e2c5bcd8",
42
42
  "devDependencies": {
43
43
  "@types/ws": "^8.5.10"
44
44
  }
@@ -24,6 +24,13 @@ export enum IncomingMessageTypes {
24
24
  PONG = 'pong',
25
25
  }
26
26
 
27
+ interface SocketClientConfig {
28
+ environment: ServiceConfig['environment'];
29
+ onOpen: () => void;
30
+ onClose: () => void;
31
+ onMessage: (event: MessageEvent) => void;
32
+ }
33
+
27
34
  export class SocketClient {
28
35
  private url: string;
29
36
  private ws?: WebSocket;
@@ -33,17 +40,12 @@ export class SocketClient {
33
40
  private pingInterval: number = 30_000;
34
41
  private lastMessageTime: number = Date.now();
35
42
  private pingIntervalId?: NodeJS.Timeout;
36
- constructor(
37
- environment: ServiceConfig['environment'],
38
- onOpenCallback: () => void,
39
- onCloseCallback: () => void,
40
- onMessageCallback: (event: MessageEvent) => void,
41
- ) {
42
- this.onOpenCallback = onOpenCallback;
43
- this.onCloseCallback = onCloseCallback;
44
- this.onMessageCallback = onMessageCallback;
43
+ constructor(config: SocketClientConfig) {
44
+ this.onOpenCallback = config.onOpen;
45
+ this.onCloseCallback = config.onClose;
46
+ this.onMessageCallback = config.onMessage;
45
47
  this.url = (
46
- API_CLIENT_CONFIGS[environment] || API_CLIENT_CONFIGS['test']
48
+ API_CLIENT_CONFIGS[config.environment] || API_CLIENT_CONFIGS['test']
47
49
  ).webSocketEndpoint;
48
50
  }
49
51