@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 +20 -7
- package/daemon/types.js +4 -0
- package/daemon/websocket.d.ts +5 -1
- package/daemon/websocket.js +12 -0
- package/lib/websocket.d.ts +6 -0
- package/lib/websocket.js +15 -9
- package/package.json +2 -2
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
|
-
|
|
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
|
-
|
|
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 = {}));
|
package/daemon/websocket.d.ts
CHANGED
|
@@ -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>;
|
package/daemon/websocket.js
CHANGED
|
@@ -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
|
}
|
package/lib/websocket.d.ts
CHANGED
|
@@ -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.
|
|
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": {
|