@xelis/sdk 0.5.7 → 0.5.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/daemon/types.d.ts CHANGED
@@ -75,16 +75,17 @@ export interface RPCEventResult {
75
75
  event: string;
76
76
  }
77
77
  export interface Peer {
78
- addr: string;
79
- cumulative_difficulty: number;
80
- height: number;
81
78
  id: number;
82
- last_ping: number;
83
- pruned_topoheight: number;
79
+ addr: string;
84
80
  tag: string;
81
+ version: string;
85
82
  top_block_hash: string;
86
83
  topoheight: number;
87
- version: string;
84
+ height: number;
85
+ last_ping: number;
86
+ pruned_topoheight: number;
87
+ peers: string[];
88
+ cumulative_difficulty: number;
88
89
  }
89
90
  export interface BlockOrdered {
90
91
  topoheight: number;
@@ -161,6 +162,14 @@ export interface AccounHistory {
161
162
  amount: number;
162
163
  };
163
164
  }
165
+ export interface PeerPeerListUpdated {
166
+ peer_id: number;
167
+ peerlist: string[];
168
+ }
169
+ export interface PeerPeerDisconnected {
170
+ peer_id: number;
171
+ peer_addr: string;
172
+ }
164
173
  export declare enum RPCMethod {
165
174
  GetVersion = "get_version",
166
175
  GetInfo = "get_info",
@@ -198,5 +207,9 @@ export declare enum RPCEvent {
198
207
  NewBlock = "NewBlock",
199
208
  TransactionAddedInMempool = "TransactionAddedInMempool",
200
209
  TransactionExecuted = "TransactionExecuted",
201
- BlockOrdered = "BlockOrdered"
210
+ BlockOrdered = "BlockOrdered",
211
+ PeerConnected = "PeerConnected",
212
+ PeerDisconnected = "PeerDisconnected",
213
+ PeerPeerListUpdated = "PeerPeerListUpdated",
214
+ PeerPeerDisconnected = "PeerPeerDisconnected"
202
215
  }
package/daemon/types.js CHANGED
@@ -38,4 +38,8 @@ export var RPCEvent;
38
38
  RPCEvent["TransactionAddedInMempool"] = "TransactionAddedInMempool";
39
39
  RPCEvent["TransactionExecuted"] = "TransactionExecuted";
40
40
  RPCEvent["BlockOrdered"] = "BlockOrdered";
41
+ RPCEvent["PeerConnected"] = "PeerConnected";
42
+ RPCEvent["PeerDisconnected"] = "PeerDisconnected";
43
+ RPCEvent["PeerPeerListUpdated"] = "PeerPeerListUpdated";
44
+ RPCEvent["PeerPeerDisconnected"] = "PeerPeerDisconnected";
41
45
  })(RPCEvent || (RPCEvent = {}));
@@ -1,11 +1,15 @@
1
1
  import { MessageEvent } from 'ws';
2
- import { Block, GetInfoResult, RPCEventResult, Transaction, TopoHeightRangeParams, P2PStatusResult, Balance, GetBalanceAtTopoHeightParams, GetLastBalanceResult, HeightRangeParams, BlockOrdered, GetLastBalanceParams, GetAccountsParams, GetBlockAtTopoHeightParams, GetBlockByHashParams, GetBlocksAtHeightParams, GetTopBlockParams, GetNonceParams, GetNonceResult, GetAccountHistoryParams, AccounHistory, Peer } from './types';
2
+ import { Block, GetInfoResult, RPCEventResult, Transaction, TopoHeightRangeParams, P2PStatusResult, Balance, GetBalanceAtTopoHeightParams, GetLastBalanceResult, HeightRangeParams, BlockOrdered, GetLastBalanceParams, GetAccountsParams, GetBlockAtTopoHeightParams, GetBlockByHashParams, GetBlocksAtHeightParams, GetTopBlockParams, GetNonceParams, GetNonceResult, GetAccountHistoryParams, AccounHistory, Peer, PeerPeerListUpdated, PeerPeerDisconnected } from './types';
3
3
  import { WS as BaseWS } from '../lib/websocket';
4
4
  declare class WS extends BaseWS {
5
5
  onNewBlock(onData: (msgEvent: MessageEvent, data?: Block & RPCEventResult, err?: Error) => void): Promise<() => Promise<void>>;
6
6
  onTransactionAddedInMempool(onData: (msgEvent: MessageEvent, data?: Transaction & RPCEventResult, err?: Error) => void): Promise<() => Promise<void>>;
7
7
  onTransactionExecuted(onData: (msgEvent: MessageEvent, data?: Transaction & RPCEventResult, err?: Error) => void): Promise<() => Promise<void>>;
8
8
  onBlockOrdered(onData: (msgEvent: MessageEvent, data?: BlockOrdered & RPCEventResult, err?: Error) => void): Promise<() => Promise<void>>;
9
+ onPeerConnected(onData: (msgEvent: MessageEvent, data?: Peer & RPCEventResult, err?: Error) => void): Promise<() => Promise<void>>;
10
+ onPeerDisconnected(onData: (msgEvent: MessageEvent, data?: number & RPCEventResult, err?: Error) => void): Promise<() => Promise<void>>;
11
+ onPeerPeerListUpdated(onData: (msgEvent: MessageEvent, data?: PeerPeerListUpdated & RPCEventResult, err?: Error) => void): Promise<() => Promise<void>>;
12
+ onPeerPeerDisconnected(onData: (msgEvent: MessageEvent, data?: PeerPeerDisconnected & RPCEventResult, err?: Error) => void): Promise<() => Promise<void>>;
9
13
  getVersion(): Promise<string>;
10
14
  getInfo(): Promise<GetInfoResult>;
11
15
  getHeight(): Promise<number>;
@@ -13,6 +13,18 @@ class WS extends BaseWS {
13
13
  onBlockOrdered(onData) {
14
14
  return this.listenEvent(RPCEvent.BlockOrdered, onData);
15
15
  }
16
+ onPeerConnected(onData) {
17
+ return this.listenEvent(RPCEvent.PeerConnected, onData);
18
+ }
19
+ onPeerDisconnected(onData) {
20
+ return this.listenEvent(RPCEvent.PeerDisconnected, onData);
21
+ }
22
+ onPeerPeerListUpdated(onData) {
23
+ return this.listenEvent(RPCEvent.PeerPeerListUpdated, onData);
24
+ }
25
+ onPeerPeerDisconnected(onData) {
26
+ return this.listenEvent(RPCEvent.PeerPeerDisconnected, onData);
27
+ }
16
28
  getVersion() {
17
29
  return this.dataCall(RPCMethod.GetVersion);
18
30
  }
@@ -9,13 +9,19 @@ export declare class WS {
9
9
  reconnectOnConnectionLoss: boolean;
10
10
  maxConnectionTries: number;
11
11
  connectionTries: number;
12
+ methodIdIncrement: number;
12
13
  private events;
13
14
  constructor();
14
15
  connect(endpoint: string): Promise<unknown>;
15
16
  tryReconnect(): void;
17
+ close(): void;
16
18
  private clearEvent;
17
19
  closeAllListens(event: string): Promise<void>;
18
20
  listenEvent<T>(event: string, onData: (msgEvent: MessageEvent, data?: T, err?: Error) => void): Promise<() => Promise<void>>;
19
21
  call<T>(method: string, params?: any): Promise<RPCResponse<T>>;
20
22
  dataCall<T>(method: string, params?: any): Promise<T>;
23
+ createRequestMethod(method: string, params?: any): {
24
+ data: string;
25
+ id: number;
26
+ };
21
27
  }
package/lib/websocket.js CHANGED
@@ -1,16 +1,9 @@
1
1
  import WebSocket from 'isomorphic-ws';
2
2
  import to from 'await-to-js';
3
- function createRequestMethod(method, params) {
4
- const id = Math.floor(Date.now() * Math.random());
5
- const request = { id: id, jsonrpc: `2.0`, method };
6
- if (params)
7
- request.params = params;
8
- const data = JSON.stringify(request);
9
- return { data, id };
10
- }
11
3
  export class WS {
12
4
  constructor() {
13
5
  this.connectionTries = 0;
6
+ this.methodIdIncrement = 0;
14
7
  this.endpoint = "";
15
8
  this.timeout = 3000;
16
9
  this.events = {};
@@ -58,6 +51,11 @@ export class WS {
58
51
  this.tryReconnect();
59
52
  });
60
53
  }
54
+ close() {
55
+ if (!this.socket)
56
+ return;
57
+ this.socket.close();
58
+ }
61
59
  clearEvent(event) {
62
60
  this.events[event].listeners.forEach(listener => {
63
61
  this.socket && this.socket.removeEventListener(`message`, listener);
@@ -147,7 +145,7 @@ export class WS {
147
145
  }
148
146
  call(method, params) {
149
147
  return new Promise((resolve, reject) => {
150
- const { data, id } = createRequestMethod(method, params);
148
+ const { data, id } = this.createRequestMethod(method, params);
151
149
  let timeoutId = null;
152
150
  const onMessage = (msgEvent) => {
153
151
  if (typeof msgEvent.data === `string`) {
@@ -181,4 +179,12 @@ export class WS {
181
179
  return resolve(res.result);
182
180
  });
183
181
  }
182
+ createRequestMethod(method, params) {
183
+ const id = this.methodIdIncrement++;
184
+ const request = { id: id, jsonrpc: `2.0`, method };
185
+ if (params)
186
+ request.params = params;
187
+ const data = JSON.stringify(request);
188
+ return { data, id };
189
+ }
184
190
  }
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.5.7",
2
+ "version": "0.5.9",
3
3
  "name": "@xelis/sdk",
4
4
  "description": "Xelis software development kit for JS",
5
5
  "repository": {
@@ -9,7 +9,7 @@
9
9
  "homepage": "https://github.com/xelis-project/xelis-js-sdk#readme",
10
10
  "scripts": {
11
11
  "test": "jest",
12
- "build": "npx tsc --declaration && cp package.json ./dist && cp README.md ./dist",
12
+ "build": "rm -r ./dist && npx tsc --declaration && cp package.json ./dist && cp README.md ./dist",
13
13
  "publish": "cd ./dist && npm publish"
14
14
  },
15
15
  "devDependencies": {