@xelis/sdk 0.9.1 → 0.9.2
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/dist/cjs/lib/parse_data.js +15 -0
- package/dist/cjs/lib/rpc.js +5 -3
- package/dist/cjs/lib/websocket.js +3 -2
- package/dist/esm/lib/parse_data.js +11 -0
- package/dist/esm/lib/rpc.js +5 -3
- package/dist/esm/lib/websocket.js +3 -2
- package/dist/types/daemon/types.d.ts +1 -1
- package/dist/types/lib/parse_data.d.ts +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
exports.parseData = void 0;
|
|
4
|
+
var lossless_json_1 = require("lossless-json");
|
|
5
|
+
// do not use JSON.parse() or we loose precision on big numbers
|
|
6
|
+
// for ex: the API returns the nonce as a number instead of a string and JSON.parse() is rounding the number because of overflow
|
|
7
|
+
// instead we will return any big number as a string and avoid precision loss
|
|
8
|
+
var parseData = function (data) {
|
|
9
|
+
return (0, lossless_json_1.parse)(data, null, function (value) {
|
|
10
|
+
if ((0, lossless_json_1.isSafeNumber)(value))
|
|
11
|
+
return parseFloat(value);
|
|
12
|
+
return value;
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
exports.parseData = parseData;
|
package/dist/cjs/lib/rpc.js
CHANGED
|
@@ -37,6 +37,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
37
37
|
};
|
|
38
38
|
exports.__esModule = true;
|
|
39
39
|
exports.RPC = void 0;
|
|
40
|
+
var parse_data_1 = require("./parse_data");
|
|
40
41
|
var RPC = /** @class */ (function () {
|
|
41
42
|
function RPC(endpoint) {
|
|
42
43
|
this.endpoint = endpoint;
|
|
@@ -44,7 +45,7 @@ var RPC = /** @class */ (function () {
|
|
|
44
45
|
}
|
|
45
46
|
RPC.prototype.post = function (method, params, headers) {
|
|
46
47
|
return __awaiter(this, void 0, void 0, function () {
|
|
47
|
-
var controller_1, body, timeoutId, res, data, err_1;
|
|
48
|
+
var controller_1, body, timeoutId, res, stringData, data, err_1;
|
|
48
49
|
return __generator(this, function (_a) {
|
|
49
50
|
switch (_a.label) {
|
|
50
51
|
case 0:
|
|
@@ -66,9 +67,10 @@ var RPC = /** @class */ (function () {
|
|
|
66
67
|
res = _a.sent();
|
|
67
68
|
clearTimeout(timeoutId);
|
|
68
69
|
if (!res.ok) return [3 /*break*/, 3];
|
|
69
|
-
return [4 /*yield*/, res.
|
|
70
|
+
return [4 /*yield*/, res.text()];
|
|
70
71
|
case 2:
|
|
71
|
-
|
|
72
|
+
stringData = _a.sent();
|
|
73
|
+
data = (0, parse_data_1.parseData)(stringData);
|
|
72
74
|
if (data.error) {
|
|
73
75
|
return [2 /*return*/, Promise.reject(new Error(data.error.message))];
|
|
74
76
|
}
|
|
@@ -42,6 +42,7 @@ exports.__esModule = true;
|
|
|
42
42
|
exports.WS = void 0;
|
|
43
43
|
var isomorphic_ws_1 = __importDefault(require("isomorphic-ws"));
|
|
44
44
|
var await_to_js_1 = __importDefault(require("await-to-js"));
|
|
45
|
+
var parse_data_1 = require("./parse_data");
|
|
45
46
|
var WS = /** @class */ (function () {
|
|
46
47
|
function WS(options) {
|
|
47
48
|
this.connectionTries = 0;
|
|
@@ -139,7 +140,7 @@ var WS = /** @class */ (function () {
|
|
|
139
140
|
var id = _this.events[event].id;
|
|
140
141
|
if (typeof msgEvent.data === "string") {
|
|
141
142
|
try {
|
|
142
|
-
var data =
|
|
143
|
+
var data = (0, parse_data_1.parseData)(msgEvent.data);
|
|
143
144
|
if (data.id === id) {
|
|
144
145
|
if (data.error) {
|
|
145
146
|
onData(msgEvent, undefined, new Error(data.error.message));
|
|
@@ -230,7 +231,7 @@ var WS = /** @class */ (function () {
|
|
|
230
231
|
var timeoutId = null;
|
|
231
232
|
var onMessage = function (msgEvent) {
|
|
232
233
|
if (typeof msgEvent.data === "string") {
|
|
233
|
-
var data =
|
|
234
|
+
var data = (0, parse_data_1.parseData)(msgEvent.data);
|
|
234
235
|
if (data.id === requestMethod.id) {
|
|
235
236
|
clearTimeout(timeoutId);
|
|
236
237
|
_this.socket && _this.socket.removeEventListener("message", onMessage);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { parse, isSafeNumber } from 'lossless-json';
|
|
2
|
+
// do not use JSON.parse() or we loose precision on big numbers
|
|
3
|
+
// for ex: the API returns the nonce as a number instead of a string and JSON.parse() is rounding the number because of overflow
|
|
4
|
+
// instead we will return any big number as a string and avoid precision loss
|
|
5
|
+
export var parseData = function (data) {
|
|
6
|
+
return parse(data, null, function (value) {
|
|
7
|
+
if (isSafeNumber(value))
|
|
8
|
+
return parseFloat(value);
|
|
9
|
+
return value;
|
|
10
|
+
});
|
|
11
|
+
};
|
package/dist/esm/lib/rpc.js
CHANGED
|
@@ -34,6 +34,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
34
34
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
|
+
import { parseData } from './parse_data.js';
|
|
37
38
|
var RPC = /** @class */ (function () {
|
|
38
39
|
function RPC(endpoint) {
|
|
39
40
|
this.endpoint = endpoint;
|
|
@@ -41,7 +42,7 @@ var RPC = /** @class */ (function () {
|
|
|
41
42
|
}
|
|
42
43
|
RPC.prototype.post = function (method, params, headers) {
|
|
43
44
|
return __awaiter(this, void 0, void 0, function () {
|
|
44
|
-
var controller_1, body, timeoutId, res, data, err_1;
|
|
45
|
+
var controller_1, body, timeoutId, res, stringData, data, err_1;
|
|
45
46
|
return __generator(this, function (_a) {
|
|
46
47
|
switch (_a.label) {
|
|
47
48
|
case 0:
|
|
@@ -63,9 +64,10 @@ var RPC = /** @class */ (function () {
|
|
|
63
64
|
res = _a.sent();
|
|
64
65
|
clearTimeout(timeoutId);
|
|
65
66
|
if (!res.ok) return [3 /*break*/, 3];
|
|
66
|
-
return [4 /*yield*/, res.
|
|
67
|
+
return [4 /*yield*/, res.text()];
|
|
67
68
|
case 2:
|
|
68
|
-
|
|
69
|
+
stringData = _a.sent();
|
|
70
|
+
data = parseData(stringData);
|
|
69
71
|
if (data.error) {
|
|
70
72
|
return [2 /*return*/, Promise.reject(new Error(data.error.message))];
|
|
71
73
|
}
|
|
@@ -36,6 +36,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
36
36
|
};
|
|
37
37
|
import WebSocket from 'isomorphic-ws';
|
|
38
38
|
import to from 'await-to-js';
|
|
39
|
+
import { parseData } from './parse_data.js';
|
|
39
40
|
var WS = /** @class */ (function () {
|
|
40
41
|
function WS(options) {
|
|
41
42
|
this.connectionTries = 0;
|
|
@@ -133,7 +134,7 @@ var WS = /** @class */ (function () {
|
|
|
133
134
|
var id = _this.events[event].id;
|
|
134
135
|
if (typeof msgEvent.data === "string") {
|
|
135
136
|
try {
|
|
136
|
-
var data =
|
|
137
|
+
var data = parseData(msgEvent.data);
|
|
137
138
|
if (data.id === id) {
|
|
138
139
|
if (data.error) {
|
|
139
140
|
onData(msgEvent, undefined, new Error(data.error.message));
|
|
@@ -224,7 +225,7 @@ var WS = /** @class */ (function () {
|
|
|
224
225
|
var timeoutId = null;
|
|
225
226
|
var onMessage = function (msgEvent) {
|
|
226
227
|
if (typeof msgEvent.data === "string") {
|
|
227
|
-
var data =
|
|
228
|
+
var data = parseData(msgEvent.data);
|
|
228
229
|
if (data.id === requestMethod.id) {
|
|
229
230
|
clearTimeout(timeoutId);
|
|
230
231
|
_this.socket && _this.socket.removeEventListener("message", onMessage);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const parseData: (data: string) => unknown;
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.9.
|
|
2
|
+
"version": "0.9.2",
|
|
3
3
|
"name": "@xelis/sdk",
|
|
4
4
|
"description": "Xelis software development kit for JS",
|
|
5
5
|
"exports": {
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
"await-to-js": "^3.0.0",
|
|
37
37
|
"isomorphic-ws": "^5.0.0",
|
|
38
38
|
"js-base64": "^3.7.6",
|
|
39
|
+
"lossless-json": "^4.0.1",
|
|
39
40
|
"react": "^18.2.0",
|
|
40
41
|
"ws": "^8.12.1"
|
|
41
42
|
}
|