@xelis/sdk 0.9.11 → 0.10.1
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/address/address.js +55 -0
- package/dist/cjs/address/bech32.js +167 -0
- package/dist/cjs/config.js +4 -2
- package/dist/cjs/daemon/rpc.js +122 -71
- package/dist/cjs/daemon/types.js +44 -24
- package/dist/cjs/daemon/websocket.js +129 -105
- package/dist/cjs/data/element.js +84 -0
- package/dist/cjs/data/value.js +327 -0
- package/dist/cjs/{lib/rpc.js → rpc/http.js} +68 -18
- package/dist/cjs/rpc/parse_json/parse_json.js +15 -0
- package/dist/cjs/{lib → rpc}/websocket.js +119 -79
- package/dist/cjs/wallet/rpc.js +81 -70
- package/dist/cjs/wallet/types.js +44 -1
- package/dist/cjs/wallet/websocket.js +77 -14
- package/dist/cjs/xswd/websocket.js +3 -3
- package/dist/esm/address/address.js +53 -0
- package/dist/esm/address/bech32.js +161 -0
- package/dist/esm/config.js +3 -1
- package/dist/esm/daemon/rpc.js +122 -71
- package/dist/esm/daemon/types.js +44 -24
- package/dist/esm/daemon/websocket.js +130 -106
- package/dist/esm/data/element.js +81 -0
- package/dist/esm/data/value.js +324 -0
- package/dist/esm/{lib/rpc.js → rpc/http.js} +67 -17
- package/dist/esm/rpc/parse_json/parse_json.js +8 -0
- package/dist/esm/{lib → rpc}/websocket.js +118 -78
- package/dist/esm/wallet/rpc.js +81 -70
- package/dist/esm/wallet/types.js +43 -0
- package/dist/esm/wallet/websocket.js +77 -14
- package/dist/esm/xswd/websocket.js +3 -3
- package/dist/types/address/address.d.ts +12 -0
- package/dist/types/address/bech32.d.ts +6 -0
- package/dist/types/config.d.ts +2 -0
- package/dist/types/daemon/rpc.d.ts +68 -51
- package/dist/types/daemon/types.d.ts +216 -44
- package/dist/types/daemon/websocket.d.ts +77 -56
- package/dist/types/data/element.d.ts +20 -0
- package/dist/types/data/value.d.ts +50 -0
- package/dist/types/rpc/http.d.ts +9 -0
- package/dist/types/rpc/parse_json/parse_json.d.ts +1 -0
- package/dist/types/{lib → rpc}/websocket.d.ts +14 -10
- package/dist/types/wallet/rpc.d.ts +45 -26
- package/dist/types/wallet/types.d.ts +244 -21
- package/dist/types/wallet/websocket.d.ts +47 -22
- package/dist/types/xswd/websocket.d.ts +3 -3
- package/package.json +5 -4
- package/dist/cjs/lib/parse_data.js +0 -15
- package/dist/esm/lib/parse_data.js +0 -11
- package/dist/types/lib/parse_data.d.ts +0 -1
- package/dist/types/lib/rpc.d.ts +0 -7
- /package/dist/cjs/{lib → rpc}/types.js +0 -0
- /package/dist/esm/{lib → rpc}/types.js +0 -0
- /package/dist/types/{lib → rpc}/types.d.ts +0 -0
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
exports.ValueWriter = exports.ValueReader = exports.Value = exports.ValueType = void 0;
|
|
4
|
+
var element_1 = require("./element");
|
|
5
|
+
var MaxStringSize = 255;
|
|
6
|
+
var ErrMaxStringSize = "string max limit is 255 bytes";
|
|
7
|
+
var MaxBlobSize = 65535;
|
|
8
|
+
var ErrMaxBlobSize = "blob max size is 65535 bytes";
|
|
9
|
+
function ErrUnsupportedValue(value) {
|
|
10
|
+
return "unsupported value type ".concat(value);
|
|
11
|
+
}
|
|
12
|
+
function getUIntTypeByValue(value) {
|
|
13
|
+
if (value < 0)
|
|
14
|
+
throw "invalid uint number";
|
|
15
|
+
if (value <= 0xFF)
|
|
16
|
+
return ValueType.U8;
|
|
17
|
+
if (value <= 0xFFFF)
|
|
18
|
+
return ValueType.U16;
|
|
19
|
+
if (value <= 0xFFFFFFFF)
|
|
20
|
+
return ValueType.U32;
|
|
21
|
+
if (value <= BigInt("0xFFFFFFFFFFFFFFFF"))
|
|
22
|
+
return ValueType.U64;
|
|
23
|
+
if (value <= BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"))
|
|
24
|
+
return ValueType.U128;
|
|
25
|
+
throw "unsupported uint";
|
|
26
|
+
}
|
|
27
|
+
var ValueType;
|
|
28
|
+
(function (ValueType) {
|
|
29
|
+
ValueType[ValueType["Bool"] = 0] = "Bool";
|
|
30
|
+
ValueType[ValueType["String"] = 1] = "String";
|
|
31
|
+
ValueType[ValueType["U8"] = 2] = "U8";
|
|
32
|
+
ValueType[ValueType["U16"] = 3] = "U16";
|
|
33
|
+
ValueType[ValueType["U32"] = 4] = "U32";
|
|
34
|
+
ValueType[ValueType["U64"] = 5] = "U64";
|
|
35
|
+
ValueType[ValueType["U128"] = 6] = "U128";
|
|
36
|
+
ValueType[ValueType["Hash"] = 7] = "Hash";
|
|
37
|
+
ValueType[ValueType["Blob"] = 8] = "Blob";
|
|
38
|
+
})(ValueType = exports.ValueType || (exports.ValueType = {}));
|
|
39
|
+
var Value = /** @class */ (function () {
|
|
40
|
+
function Value(vType, data) {
|
|
41
|
+
this.vType = vType;
|
|
42
|
+
this.data = data;
|
|
43
|
+
}
|
|
44
|
+
Value["new"] = function (data) {
|
|
45
|
+
if (typeof data === "string") {
|
|
46
|
+
return new Value(ValueType.String, data);
|
|
47
|
+
}
|
|
48
|
+
else if (typeof data === "boolean") {
|
|
49
|
+
return new Value(ValueType.Bool, data);
|
|
50
|
+
}
|
|
51
|
+
else if (Array.isArray(data)) {
|
|
52
|
+
return new Value(ValueType.Blob, data);
|
|
53
|
+
}
|
|
54
|
+
else if (data instanceof Uint8Array && data.byteLength === 32) {
|
|
55
|
+
return new Value(ValueType.Hash, data);
|
|
56
|
+
}
|
|
57
|
+
else if (typeof data === "number" || typeof data === "bigint") {
|
|
58
|
+
var eType = getUIntTypeByValue(data);
|
|
59
|
+
switch (eType) {
|
|
60
|
+
case ValueType.U8:
|
|
61
|
+
return new Value(ValueType.U8, data);
|
|
62
|
+
case ValueType.U16:
|
|
63
|
+
return new Value(ValueType.U16, data);
|
|
64
|
+
case ValueType.U32:
|
|
65
|
+
return new Value(ValueType.U32, data);
|
|
66
|
+
case ValueType.U64:
|
|
67
|
+
return new Value(ValueType.U64, data);
|
|
68
|
+
case ValueType.U128:
|
|
69
|
+
return new Value(ValueType.U128, data);
|
|
70
|
+
default:
|
|
71
|
+
throw "unsupported data type";
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
throw "unsupported data type";
|
|
75
|
+
};
|
|
76
|
+
return Value;
|
|
77
|
+
}());
|
|
78
|
+
exports.Value = Value;
|
|
79
|
+
var ValueReader = /** @class */ (function () {
|
|
80
|
+
function ValueReader(data) {
|
|
81
|
+
this.data = Array.from(data);
|
|
82
|
+
}
|
|
83
|
+
ValueReader.prototype.read = function () {
|
|
84
|
+
var eType = this.readByte();
|
|
85
|
+
switch (eType) {
|
|
86
|
+
case element_1.ElementType.Value:
|
|
87
|
+
return element_1.Element.value(this.readValue());
|
|
88
|
+
case element_1.ElementType.Array:
|
|
89
|
+
var arrSize = this.readByte();
|
|
90
|
+
var elements = [];
|
|
91
|
+
for (var i = 0; i < arrSize; i++) {
|
|
92
|
+
elements.push(this.read());
|
|
93
|
+
}
|
|
94
|
+
return element_1.Element.array(elements);
|
|
95
|
+
case element_1.ElementType.Fields:
|
|
96
|
+
var fieldsSize = this.readByte();
|
|
97
|
+
var map = new Map();
|
|
98
|
+
for (var i = 0; i < fieldsSize; i++) {
|
|
99
|
+
map.set(this.readValue(), this.read());
|
|
100
|
+
}
|
|
101
|
+
return element_1.Element.fields(map);
|
|
102
|
+
default:
|
|
103
|
+
throw "invalid element type";
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
ValueReader.prototype.readByte = function () {
|
|
107
|
+
return this.data.splice(0, 1)[0];
|
|
108
|
+
};
|
|
109
|
+
ValueReader.prototype.readU16 = function () {
|
|
110
|
+
var arr = new Uint8Array(this.data.splice(0, 2));
|
|
111
|
+
var view = new DataView(arr.buffer);
|
|
112
|
+
return view.getUint16(0, false);
|
|
113
|
+
};
|
|
114
|
+
ValueReader.prototype.readU32 = function () {
|
|
115
|
+
var arr = new Uint8Array(this.data.splice(0, 4));
|
|
116
|
+
var view = new DataView(arr.buffer);
|
|
117
|
+
return view.getUint32(0, false);
|
|
118
|
+
};
|
|
119
|
+
ValueReader.prototype.readU64 = function () {
|
|
120
|
+
var arr = new Uint8Array(this.data.splice(0, 8));
|
|
121
|
+
var view = new DataView(arr.buffer);
|
|
122
|
+
return view.getBigUint64(0, false);
|
|
123
|
+
};
|
|
124
|
+
ValueReader.prototype.readU128 = function () {
|
|
125
|
+
var data = this.data.splice(0, 16);
|
|
126
|
+
var value = BigInt(0);
|
|
127
|
+
for (var i = 0; i < 16; i++) {
|
|
128
|
+
value = (value << BigInt(8)) | BigInt(data[i]);
|
|
129
|
+
}
|
|
130
|
+
return value;
|
|
131
|
+
};
|
|
132
|
+
ValueReader.prototype.readString = function () {
|
|
133
|
+
var size = this.readByte();
|
|
134
|
+
var decoder = new TextDecoder();
|
|
135
|
+
var data = new Uint8Array(this.data.splice(0, size));
|
|
136
|
+
return decoder.decode(data);
|
|
137
|
+
};
|
|
138
|
+
ValueReader.prototype.readBool = function () {
|
|
139
|
+
return this.readByte() === 1 ? true : false;
|
|
140
|
+
};
|
|
141
|
+
ValueReader.prototype.readHash = function () {
|
|
142
|
+
return this.data.splice(0, 32);
|
|
143
|
+
};
|
|
144
|
+
ValueReader.prototype.readBlob = function () {
|
|
145
|
+
var size = this.readByte();
|
|
146
|
+
return this.data.splice(0, size);
|
|
147
|
+
};
|
|
148
|
+
ValueReader.prototype.readValue = function () {
|
|
149
|
+
var vType = this.readByte();
|
|
150
|
+
switch (vType) {
|
|
151
|
+
case ValueType.U8:
|
|
152
|
+
return new Value(vType, this.readByte());
|
|
153
|
+
case ValueType.U16:
|
|
154
|
+
return new Value(vType, this.readU16());
|
|
155
|
+
case ValueType.U32:
|
|
156
|
+
return new Value(vType, this.readU32());
|
|
157
|
+
case ValueType.U64:
|
|
158
|
+
return new Value(vType, this.readU64());
|
|
159
|
+
case ValueType.U128:
|
|
160
|
+
return new Value(vType, this.readU128());
|
|
161
|
+
case ValueType.String:
|
|
162
|
+
return new Value(vType, this.readString());
|
|
163
|
+
case ValueType.Bool:
|
|
164
|
+
return new Value(vType, this.readBool());
|
|
165
|
+
case ValueType.Blob:
|
|
166
|
+
return new Value(vType, this.readBlob());
|
|
167
|
+
case ValueType.Hash:
|
|
168
|
+
return new Value(vType, this.readHash());
|
|
169
|
+
default:
|
|
170
|
+
throw "";
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
return ValueReader;
|
|
174
|
+
}());
|
|
175
|
+
exports.ValueReader = ValueReader;
|
|
176
|
+
var ValueWriter = /** @class */ (function () {
|
|
177
|
+
function ValueWriter() {
|
|
178
|
+
this.data = [];
|
|
179
|
+
}
|
|
180
|
+
ValueWriter.prototype.write = function (dataElement) {
|
|
181
|
+
var _this = this;
|
|
182
|
+
var eType = dataElement.validate();
|
|
183
|
+
switch (eType) {
|
|
184
|
+
case element_1.ElementType.Value:
|
|
185
|
+
this.writeU8(element_1.ElementType.Value);
|
|
186
|
+
this.writeValue(dataElement.value);
|
|
187
|
+
break;
|
|
188
|
+
case element_1.ElementType.Array:
|
|
189
|
+
this.writeU8(element_1.ElementType.Array);
|
|
190
|
+
var array = dataElement.array;
|
|
191
|
+
this.writeU8(array.length);
|
|
192
|
+
array.forEach(function (element) {
|
|
193
|
+
_this.write(element);
|
|
194
|
+
});
|
|
195
|
+
break;
|
|
196
|
+
case element_1.ElementType.Fields:
|
|
197
|
+
this.writeU8(element_1.ElementType.Fields);
|
|
198
|
+
var fields = dataElement.fields;
|
|
199
|
+
this.writeU8(fields.size);
|
|
200
|
+
fields.forEach(function (element, key) {
|
|
201
|
+
_this.writeValue(key);
|
|
202
|
+
_this.write(element);
|
|
203
|
+
});
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
ValueWriter.prototype.appendData = function (data) {
|
|
208
|
+
var _a;
|
|
209
|
+
(_a = this.data).push.apply(_a, Array.from(data));
|
|
210
|
+
};
|
|
211
|
+
ValueWriter.prototype.appendBuffer = function (buf) {
|
|
212
|
+
this.appendData(new Uint8Array(buf));
|
|
213
|
+
};
|
|
214
|
+
ValueWriter.prototype.writeU8 = function (value) {
|
|
215
|
+
if (typeof value !== "number") {
|
|
216
|
+
throw "value is not a number";
|
|
217
|
+
}
|
|
218
|
+
this.appendBuffer(new Uint8Array([value]));
|
|
219
|
+
};
|
|
220
|
+
ValueWriter.prototype.writeU16 = function (value) {
|
|
221
|
+
if (typeof value !== "number") {
|
|
222
|
+
throw "value is not a number";
|
|
223
|
+
}
|
|
224
|
+
var buf = new ArrayBuffer(2);
|
|
225
|
+
var view = new DataView(buf);
|
|
226
|
+
view.setUint16(0, value, false);
|
|
227
|
+
this.appendBuffer(buf);
|
|
228
|
+
};
|
|
229
|
+
ValueWriter.prototype.writeU32 = function (value) {
|
|
230
|
+
if (typeof value !== "number") {
|
|
231
|
+
throw "value is not a number";
|
|
232
|
+
}
|
|
233
|
+
var buf = new ArrayBuffer(4);
|
|
234
|
+
var view = new DataView(buf);
|
|
235
|
+
view.setUint32(0, value, false);
|
|
236
|
+
this.appendBuffer(buf);
|
|
237
|
+
};
|
|
238
|
+
ValueWriter.prototype.writeU64 = function (value) {
|
|
239
|
+
if (typeof value !== "bigint") {
|
|
240
|
+
throw "value is not a bigint";
|
|
241
|
+
}
|
|
242
|
+
var buf = new ArrayBuffer(8);
|
|
243
|
+
var view = new DataView(buf);
|
|
244
|
+
view.setBigUint64(0, value, false);
|
|
245
|
+
this.appendBuffer(buf);
|
|
246
|
+
};
|
|
247
|
+
ValueWriter.prototype.writeU128 = function (value) {
|
|
248
|
+
if (typeof value !== "bigint") {
|
|
249
|
+
throw "value is not a bigint";
|
|
250
|
+
}
|
|
251
|
+
var bytes = [];
|
|
252
|
+
for (var i = 0; i < 16; i++) {
|
|
253
|
+
var byte = Number((value >> BigInt(8 * (15 - i))) & BigInt(0xFF));
|
|
254
|
+
bytes.push(byte);
|
|
255
|
+
}
|
|
256
|
+
this.appendData(new Uint8Array(bytes));
|
|
257
|
+
};
|
|
258
|
+
ValueWriter.prototype.writeString = function (value) {
|
|
259
|
+
if (typeof value !== "string") {
|
|
260
|
+
throw "value is not string";
|
|
261
|
+
}
|
|
262
|
+
var encoder = new TextEncoder();
|
|
263
|
+
var data = encoder.encode(value);
|
|
264
|
+
if (data.length > MaxStringSize) {
|
|
265
|
+
throw ErrMaxStringSize;
|
|
266
|
+
}
|
|
267
|
+
this.writeU8(data.length);
|
|
268
|
+
this.appendData(data);
|
|
269
|
+
};
|
|
270
|
+
ValueWriter.prototype.writeBool = function (value) {
|
|
271
|
+
if (typeof value !== "boolean") {
|
|
272
|
+
throw "value is not a boolean";
|
|
273
|
+
}
|
|
274
|
+
this.writeU8(value ? 1 : 0);
|
|
275
|
+
};
|
|
276
|
+
ValueWriter.prototype.writeBlob = function (value) {
|
|
277
|
+
this.writeU8(value.length);
|
|
278
|
+
this.appendData(new Uint8Array(value));
|
|
279
|
+
};
|
|
280
|
+
ValueWriter.prototype.writeHash = function (value) {
|
|
281
|
+
this.appendData(value);
|
|
282
|
+
};
|
|
283
|
+
ValueWriter.prototype.writeValue = function (value) {
|
|
284
|
+
switch (value.vType) {
|
|
285
|
+
case ValueType.Bool:
|
|
286
|
+
this.writeU8(ValueType.Bool);
|
|
287
|
+
this.writeBool(value.data);
|
|
288
|
+
break;
|
|
289
|
+
case ValueType.String:
|
|
290
|
+
this.writeU8(ValueType.String);
|
|
291
|
+
this.writeString(value.data);
|
|
292
|
+
break;
|
|
293
|
+
case ValueType.U8:
|
|
294
|
+
this.writeU8(ValueType.U8);
|
|
295
|
+
this.writeU8(value.data);
|
|
296
|
+
break;
|
|
297
|
+
case ValueType.U16:
|
|
298
|
+
this.writeU8(ValueType.U16);
|
|
299
|
+
this.writeU16(value.data);
|
|
300
|
+
break;
|
|
301
|
+
case ValueType.U32:
|
|
302
|
+
this.writeU8(ValueType.U32);
|
|
303
|
+
this.writeU32(value.data);
|
|
304
|
+
break;
|
|
305
|
+
case ValueType.U64:
|
|
306
|
+
this.writeU8(ValueType.U64);
|
|
307
|
+
this.writeU64(value.data);
|
|
308
|
+
break;
|
|
309
|
+
case ValueType.U128:
|
|
310
|
+
this.writeU8(ValueType.U128);
|
|
311
|
+
this.writeU128(value.data);
|
|
312
|
+
break;
|
|
313
|
+
case ValueType.Blob:
|
|
314
|
+
this.writeU8(ValueType.Blob);
|
|
315
|
+
this.writeBlob(value.data);
|
|
316
|
+
break;
|
|
317
|
+
case ValueType.Hash:
|
|
318
|
+
this.writeU8(ValueType.Hash);
|
|
319
|
+
this.writeHash(value.data);
|
|
320
|
+
break;
|
|
321
|
+
default:
|
|
322
|
+
throw ErrUnsupportedValue(value);
|
|
323
|
+
}
|
|
324
|
+
};
|
|
325
|
+
return ValueWriter;
|
|
326
|
+
}());
|
|
327
|
+
exports.ValueWriter = ValueWriter;
|
|
@@ -36,29 +36,34 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
38
|
exports.__esModule = true;
|
|
39
|
-
exports.
|
|
40
|
-
var
|
|
41
|
-
var
|
|
42
|
-
function
|
|
39
|
+
exports.HttpRPC = void 0;
|
|
40
|
+
var parse_json_1 = require("./parse_json/parse_json");
|
|
41
|
+
var HttpRPC = /** @class */ (function () {
|
|
42
|
+
function HttpRPC(endpoint) {
|
|
43
43
|
this.endpoint = endpoint;
|
|
44
44
|
this.timeout = 3000;
|
|
45
|
+
this.headers = new Headers();
|
|
46
|
+
this.headers.set("Content-Type", "application/json");
|
|
45
47
|
}
|
|
46
|
-
|
|
48
|
+
HttpRPC.prototype.batchRequest = function (requests) {
|
|
47
49
|
return __awaiter(this, void 0, void 0, function () {
|
|
48
|
-
var controller_1, body, timeoutId, res,
|
|
50
|
+
var controller_1, id_1, body, timeoutId, res, jsonString, items_1, data, err_1;
|
|
49
51
|
return __generator(this, function (_a) {
|
|
50
52
|
switch (_a.label) {
|
|
51
53
|
case 0:
|
|
52
54
|
_a.trys.push([0, 5, , 6]);
|
|
53
55
|
controller_1 = new AbortController();
|
|
54
|
-
|
|
56
|
+
id_1 = 0;
|
|
57
|
+
requests.forEach(function (request) {
|
|
58
|
+
request.id = ++id_1;
|
|
59
|
+
request.jsonrpc = "2.0";
|
|
60
|
+
});
|
|
61
|
+
body = JSON.stringify(requests);
|
|
55
62
|
timeoutId = setTimeout(function () {
|
|
56
63
|
controller_1.abort();
|
|
57
64
|
}, this.timeout);
|
|
58
|
-
headers = headers || new Headers();
|
|
59
|
-
headers.set("Content-Type", "application/json");
|
|
60
65
|
return [4 /*yield*/, fetch(this.endpoint, {
|
|
61
|
-
headers: headers,
|
|
66
|
+
headers: this.headers,
|
|
62
67
|
method: "POST",
|
|
63
68
|
body: body,
|
|
64
69
|
signal: controller_1.signal
|
|
@@ -69,23 +74,68 @@ var RPC = /** @class */ (function () {
|
|
|
69
74
|
if (!res.ok) return [3 /*break*/, 3];
|
|
70
75
|
return [4 /*yield*/, res.text()];
|
|
71
76
|
case 2:
|
|
72
|
-
|
|
73
|
-
|
|
77
|
+
jsonString = _a.sent();
|
|
78
|
+
items_1 = [];
|
|
79
|
+
data = (0, parse_json_1.parseJSON)(jsonString);
|
|
80
|
+
data.forEach(function (item) {
|
|
81
|
+
if (item.error) {
|
|
82
|
+
items_1.push(new Error(item.error.message));
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
items_1.push(item.result);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
return [2 /*return*/, Promise.resolve(items_1)];
|
|
89
|
+
case 3: return [2 /*return*/, Promise.reject(new Error("".concat(res.status, " - ").concat(res.statusText)))];
|
|
90
|
+
case 4: return [3 /*break*/, 6];
|
|
91
|
+
case 5:
|
|
92
|
+
err_1 = _a.sent();
|
|
93
|
+
return [2 /*return*/, Promise.reject(err_1)];
|
|
94
|
+
case 6: return [2 /*return*/];
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
HttpRPC.prototype.request = function (method, params) {
|
|
100
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
101
|
+
var controller_2, body, timeoutId, res, jsonString, data, err_2;
|
|
102
|
+
return __generator(this, function (_a) {
|
|
103
|
+
switch (_a.label) {
|
|
104
|
+
case 0:
|
|
105
|
+
_a.trys.push([0, 5, , 6]);
|
|
106
|
+
controller_2 = new AbortController();
|
|
107
|
+
body = JSON.stringify({ id: 1, jsonrpc: '2.0', method: method, params: params });
|
|
108
|
+
timeoutId = setTimeout(function () {
|
|
109
|
+
controller_2.abort();
|
|
110
|
+
}, this.timeout);
|
|
111
|
+
return [4 /*yield*/, fetch(this.endpoint, {
|
|
112
|
+
headers: this.headers,
|
|
113
|
+
method: "POST",
|
|
114
|
+
body: body,
|
|
115
|
+
signal: controller_2.signal
|
|
116
|
+
})];
|
|
117
|
+
case 1:
|
|
118
|
+
res = _a.sent();
|
|
119
|
+
clearTimeout(timeoutId);
|
|
120
|
+
if (!res.ok) return [3 /*break*/, 3];
|
|
121
|
+
return [4 /*yield*/, res.text()];
|
|
122
|
+
case 2:
|
|
123
|
+
jsonString = _a.sent();
|
|
124
|
+
data = (0, parse_json_1.parseJSON)(jsonString);
|
|
74
125
|
if (data.error) {
|
|
75
126
|
return [2 /*return*/, Promise.reject(new Error(data.error.message))];
|
|
76
127
|
}
|
|
77
|
-
return [2 /*return*/, Promise.resolve(data)];
|
|
128
|
+
return [2 /*return*/, Promise.resolve(data.result)];
|
|
78
129
|
case 3: return [2 /*return*/, Promise.reject(new Error("".concat(res.status, " - ").concat(res.statusText)))];
|
|
79
130
|
case 4: return [3 /*break*/, 6];
|
|
80
131
|
case 5:
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
return [2 /*return*/, Promise.reject(err_1)];
|
|
132
|
+
err_2 = _a.sent();
|
|
133
|
+
return [2 /*return*/, Promise.reject(err_2)];
|
|
84
134
|
case 6: return [2 /*return*/];
|
|
85
135
|
}
|
|
86
136
|
});
|
|
87
137
|
});
|
|
88
138
|
};
|
|
89
|
-
return
|
|
139
|
+
return HttpRPC;
|
|
90
140
|
}());
|
|
91
|
-
exports.
|
|
141
|
+
exports.HttpRPC = HttpRPC;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.parseJSON = void 0;
|
|
7
|
+
var json_bigint_1 = __importDefault(require("json-bigint"));
|
|
8
|
+
// do not use JSON.parse() or we loose precision on big numbers
|
|
9
|
+
// for ex: the API returns the nonce as a number instead of a string and JSON.parse() is rounding the number because of overflow
|
|
10
|
+
// instead we will return any BigInt as a string and avoid precision loss
|
|
11
|
+
// NOTE: Previously was using lossless-json with isSafeNumber, but its too slow for big json data
|
|
12
|
+
var parseJSON = function (data) {
|
|
13
|
+
return (0, json_bigint_1["default"])({ storeAsString: true }).parse(data);
|
|
14
|
+
};
|
|
15
|
+
exports.parseJSON = parseJSON;
|