@xelis/sdk 0.11.15 → 0.11.17
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/bech32.js +47 -56
- package/dist/cjs/address/index.js +20 -21
- package/dist/cjs/config.js +26 -38
- package/dist/cjs/contract/contract.js +178 -0
- package/dist/cjs/contract/typed_contract.js +259 -0
- package/dist/cjs/contract/xvm_serializer.js +170 -0
- package/dist/cjs/daemon/rpc.js +157 -168
- package/dist/cjs/daemon/types.js +4 -1
- package/dist/cjs/daemon/websocket.js +170 -181
- package/dist/cjs/data/element.js +39 -41
- package/dist/cjs/data/value.js +106 -111
- package/dist/cjs/react/daemon.js +33 -43
- package/dist/cjs/rpc/http.js +75 -132
- package/dist/cjs/rpc/parse_json/parse_json.js +4 -4
- package/dist/cjs/rpc/types.js +1 -1
- package/dist/cjs/rpc/websocket.js +131 -201
- package/dist/cjs/wallet/rpc.js +98 -117
- package/dist/cjs/wallet/types.js +1 -1
- package/dist/cjs/wallet/websocket.js +105 -126
- package/dist/cjs/xswd/relayer/app.js +57 -36
- package/dist/cjs/xswd/relayer/index.js +25 -27
- package/dist/cjs/xswd/types.js +1 -1
- package/dist/cjs/xswd/websocket.js +15 -33
- package/dist/esm/address/bech32.js +46 -55
- package/dist/esm/address/index.js +16 -17
- package/dist/esm/config.js +25 -37
- package/dist/esm/contract/contract.js +172 -0
- package/dist/esm/contract/typed_contract.js +251 -0
- package/dist/esm/contract/xvm_serializer.js +163 -0
- package/dist/esm/daemon/rpc.js +153 -165
- package/dist/esm/daemon/types.js +3 -0
- package/dist/esm/daemon/websocket.js +166 -179
- package/dist/esm/data/element.js +37 -40
- package/dist/esm/data/value.js +104 -112
- package/dist/esm/react/daemon.js +30 -40
- package/dist/esm/rpc/http.js +73 -131
- package/dist/esm/rpc/parse_json/parse_json.js +1 -1
- package/dist/esm/rpc/websocket.js +126 -197
- package/dist/esm/wallet/rpc.js +93 -113
- package/dist/esm/wallet/websocket.js +101 -124
- package/dist/esm/xswd/relayer/app.js +54 -34
- package/dist/esm/xswd/relayer/index.js +22 -24
- package/dist/esm/xswd/websocket.js +10 -29
- package/dist/types/contract/contract.d.ts +80 -0
- package/dist/types/contract/typed_contract.d.ts +94 -0
- package/dist/types/contract/xvm_serializer.d.ts +69 -0
- package/dist/types/daemon/rpc.d.ts +5 -2
- package/dist/types/daemon/types.d.ts +97 -18
- package/dist/types/daemon/websocket.d.ts +5 -2
- package/package.json +1 -1
package/dist/esm/data/value.js
CHANGED
|
@@ -4,7 +4,7 @@ var ErrMaxStringSize = "string max limit is 255 bytes";
|
|
|
4
4
|
var MaxBlobSize = 65535;
|
|
5
5
|
var ErrMaxBlobSize = "blob max size is 65535 bytes";
|
|
6
6
|
function ErrUnsupportedValue(value) {
|
|
7
|
-
return
|
|
7
|
+
return `unsupported value type ${value}`;
|
|
8
8
|
}
|
|
9
9
|
function getUIntTypeByValue(value) {
|
|
10
10
|
if (value < 0)
|
|
@@ -33,16 +33,16 @@ export var ValueType;
|
|
|
33
33
|
ValueType[ValueType["Hash"] = 7] = "Hash";
|
|
34
34
|
ValueType[ValueType["Blob"] = 8] = "Blob";
|
|
35
35
|
})(ValueType || (ValueType = {}));
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
export class Value {
|
|
37
|
+
constructor(vType, data) {
|
|
38
38
|
this.vType = vType;
|
|
39
39
|
this.data = data;
|
|
40
40
|
}
|
|
41
|
-
|
|
42
|
-
if (typeof data ===
|
|
41
|
+
static new(data) {
|
|
42
|
+
if (typeof data === `string`) {
|
|
43
43
|
return new Value(ValueType.String, data);
|
|
44
44
|
}
|
|
45
|
-
else if (typeof data ===
|
|
45
|
+
else if (typeof data === `boolean`) {
|
|
46
46
|
return new Value(ValueType.Bool, data);
|
|
47
47
|
}
|
|
48
48
|
else if (Array.isArray(data)) {
|
|
@@ -52,7 +52,7 @@ var Value = /** @class */ (function () {
|
|
|
52
52
|
return new Value(ValueType.Hash, data);
|
|
53
53
|
}
|
|
54
54
|
else if (typeof data === "number" || typeof data === "bigint") {
|
|
55
|
-
|
|
55
|
+
let eType = getUIntTypeByValue(data);
|
|
56
56
|
switch (eType) {
|
|
57
57
|
case ValueType.U8:
|
|
58
58
|
return new Value(ValueType.U8, data);
|
|
@@ -69,81 +69,79 @@ var Value = /** @class */ (function () {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
throw "unsupported data type";
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
var ValueReader = /** @class */ (function () {
|
|
77
|
-
function ValueReader(data) {
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export class ValueReader {
|
|
75
|
+
constructor(data) {
|
|
78
76
|
this.data = Array.from(data);
|
|
79
77
|
}
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
read() {
|
|
79
|
+
let eType = this.readByte();
|
|
82
80
|
switch (eType) {
|
|
83
81
|
case ElementType.Value:
|
|
84
82
|
return Element.value(this.readValue());
|
|
85
83
|
case ElementType.Array:
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
for (
|
|
84
|
+
let arrSize = this.readByte();
|
|
85
|
+
let elements = [];
|
|
86
|
+
for (let i = 0; i < arrSize; i++) {
|
|
89
87
|
elements.push(this.read());
|
|
90
88
|
}
|
|
91
89
|
return Element.array(elements);
|
|
92
90
|
case ElementType.Fields:
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
for (
|
|
91
|
+
let fieldsSize = this.readByte();
|
|
92
|
+
let map = new Map();
|
|
93
|
+
for (let i = 0; i < fieldsSize; i++) {
|
|
96
94
|
map.set(this.readValue(), this.read());
|
|
97
95
|
}
|
|
98
96
|
return Element.fields(map);
|
|
99
97
|
default:
|
|
100
98
|
throw "invalid element type";
|
|
101
99
|
}
|
|
102
|
-
}
|
|
103
|
-
|
|
100
|
+
}
|
|
101
|
+
readByte() {
|
|
104
102
|
return this.data.splice(0, 1)[0];
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
103
|
+
}
|
|
104
|
+
readU16() {
|
|
105
|
+
let arr = new Uint8Array(this.data.splice(0, 2));
|
|
106
|
+
let view = new DataView(arr.buffer);
|
|
109
107
|
return view.getUint16(0, false);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
108
|
+
}
|
|
109
|
+
readU32() {
|
|
110
|
+
let arr = new Uint8Array(this.data.splice(0, 4));
|
|
111
|
+
let view = new DataView(arr.buffer);
|
|
114
112
|
return view.getUint32(0, false);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
113
|
+
}
|
|
114
|
+
readU64() {
|
|
115
|
+
let arr = new Uint8Array(this.data.splice(0, 8));
|
|
116
|
+
let view = new DataView(arr.buffer);
|
|
119
117
|
return view.getBigUint64(0, false);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
for (
|
|
118
|
+
}
|
|
119
|
+
readU128() {
|
|
120
|
+
let data = this.data.splice(0, 16);
|
|
121
|
+
let value = BigInt(0);
|
|
122
|
+
for (let i = 0; i < 16; i++) {
|
|
125
123
|
value = (value << BigInt(8)) | BigInt(data[i]);
|
|
126
124
|
}
|
|
127
125
|
return value;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
126
|
+
}
|
|
127
|
+
readString() {
|
|
128
|
+
let size = this.readByte();
|
|
129
|
+
let decoder = new TextDecoder();
|
|
130
|
+
let data = new Uint8Array(this.data.splice(0, size));
|
|
133
131
|
return decoder.decode(data);
|
|
134
|
-
}
|
|
135
|
-
|
|
132
|
+
}
|
|
133
|
+
readBool() {
|
|
136
134
|
return this.readByte() === 1 ? true : false;
|
|
137
|
-
}
|
|
138
|
-
|
|
135
|
+
}
|
|
136
|
+
readHash() {
|
|
139
137
|
return this.data.splice(0, 32);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
|
|
138
|
+
}
|
|
139
|
+
readBlob() {
|
|
140
|
+
let size = this.readByte();
|
|
143
141
|
return this.data.splice(0, size);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
|
|
142
|
+
}
|
|
143
|
+
readValue() {
|
|
144
|
+
let vType = this.readByte();
|
|
147
145
|
switch (vType) {
|
|
148
146
|
case ValueType.U8:
|
|
149
147
|
return new Value(vType, this.readByte());
|
|
@@ -166,17 +164,14 @@ var ValueReader = /** @class */ (function () {
|
|
|
166
164
|
default:
|
|
167
165
|
throw "";
|
|
168
166
|
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
var ValueWriter = /** @class */ (function () {
|
|
174
|
-
function ValueWriter() {
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
export class ValueWriter {
|
|
170
|
+
constructor() {
|
|
175
171
|
this.data = [];
|
|
176
172
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
var eType = dataElement.validate();
|
|
173
|
+
write(dataElement) {
|
|
174
|
+
let eType = dataElement.validate();
|
|
180
175
|
switch (eType) {
|
|
181
176
|
case ElementType.Value:
|
|
182
177
|
this.writeU8(ElementType.Value);
|
|
@@ -184,100 +179,99 @@ var ValueWriter = /** @class */ (function () {
|
|
|
184
179
|
break;
|
|
185
180
|
case ElementType.Array:
|
|
186
181
|
this.writeU8(ElementType.Array);
|
|
187
|
-
|
|
182
|
+
let array = dataElement.array;
|
|
188
183
|
this.writeU8(array.length);
|
|
189
|
-
array.forEach(
|
|
190
|
-
|
|
184
|
+
array.forEach((element) => {
|
|
185
|
+
this.write(element);
|
|
191
186
|
});
|
|
192
187
|
break;
|
|
193
188
|
case ElementType.Fields:
|
|
194
189
|
this.writeU8(ElementType.Fields);
|
|
195
|
-
|
|
190
|
+
let fields = dataElement.fields;
|
|
196
191
|
this.writeU8(fields.size);
|
|
197
|
-
fields.forEach(
|
|
198
|
-
|
|
199
|
-
|
|
192
|
+
fields.forEach((element, key) => {
|
|
193
|
+
this.writeValue(key);
|
|
194
|
+
this.write(element);
|
|
200
195
|
});
|
|
201
196
|
break;
|
|
202
197
|
}
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
ValueWriter.prototype.appendBuffer = function (buf) {
|
|
198
|
+
}
|
|
199
|
+
appendData(data) {
|
|
200
|
+
this.data.push(...Array.from(data));
|
|
201
|
+
}
|
|
202
|
+
appendBuffer(buf) {
|
|
209
203
|
this.appendData(new Uint8Array(buf));
|
|
210
|
-
}
|
|
211
|
-
|
|
204
|
+
}
|
|
205
|
+
writeU8(value) {
|
|
212
206
|
if (typeof value !== "number") {
|
|
213
207
|
throw "value is not a number";
|
|
214
208
|
}
|
|
215
209
|
this.appendBuffer(new Uint8Array([value]));
|
|
216
|
-
}
|
|
217
|
-
|
|
210
|
+
}
|
|
211
|
+
writeU16(value) {
|
|
218
212
|
if (typeof value !== "number") {
|
|
219
213
|
throw "value is not a number";
|
|
220
214
|
}
|
|
221
|
-
|
|
222
|
-
|
|
215
|
+
let buf = new ArrayBuffer(2);
|
|
216
|
+
let view = new DataView(buf);
|
|
223
217
|
view.setUint16(0, value, false);
|
|
224
218
|
this.appendBuffer(buf);
|
|
225
|
-
}
|
|
226
|
-
|
|
219
|
+
}
|
|
220
|
+
writeU32(value) {
|
|
227
221
|
if (typeof value !== "number") {
|
|
228
222
|
throw "value is not a number";
|
|
229
223
|
}
|
|
230
|
-
|
|
231
|
-
|
|
224
|
+
let buf = new ArrayBuffer(4);
|
|
225
|
+
let view = new DataView(buf);
|
|
232
226
|
view.setUint32(0, value, false);
|
|
233
227
|
this.appendBuffer(buf);
|
|
234
|
-
}
|
|
235
|
-
|
|
228
|
+
}
|
|
229
|
+
writeU64(value) {
|
|
236
230
|
if (typeof value !== "bigint") {
|
|
237
231
|
throw "value is not a bigint";
|
|
238
232
|
}
|
|
239
|
-
|
|
240
|
-
|
|
233
|
+
let buf = new ArrayBuffer(8);
|
|
234
|
+
let view = new DataView(buf);
|
|
241
235
|
view.setBigUint64(0, value, false);
|
|
242
236
|
this.appendBuffer(buf);
|
|
243
|
-
}
|
|
244
|
-
|
|
237
|
+
}
|
|
238
|
+
writeU128(value) {
|
|
245
239
|
if (typeof value !== "bigint") {
|
|
246
240
|
throw "value is not a bigint";
|
|
247
241
|
}
|
|
248
|
-
|
|
249
|
-
for (
|
|
250
|
-
|
|
242
|
+
let bytes = [];
|
|
243
|
+
for (let i = 0; i < 16; i++) {
|
|
244
|
+
let byte = Number((value >> BigInt(8 * (15 - i))) & BigInt(0xFF));
|
|
251
245
|
bytes.push(byte);
|
|
252
246
|
}
|
|
253
247
|
this.appendData(new Uint8Array(bytes));
|
|
254
|
-
}
|
|
255
|
-
|
|
248
|
+
}
|
|
249
|
+
writeString(value) {
|
|
256
250
|
if (typeof value !== "string") {
|
|
257
251
|
throw "value is not string";
|
|
258
252
|
}
|
|
259
|
-
|
|
260
|
-
|
|
253
|
+
let encoder = new TextEncoder();
|
|
254
|
+
let data = encoder.encode(value);
|
|
261
255
|
if (data.length > MaxStringSize) {
|
|
262
256
|
throw ErrMaxStringSize;
|
|
263
257
|
}
|
|
264
258
|
this.writeU8(data.length);
|
|
265
259
|
this.appendData(data);
|
|
266
|
-
}
|
|
267
|
-
|
|
260
|
+
}
|
|
261
|
+
writeBool(value) {
|
|
268
262
|
if (typeof value !== "boolean") {
|
|
269
263
|
throw "value is not a boolean";
|
|
270
264
|
}
|
|
271
265
|
this.writeU8(value ? 1 : 0);
|
|
272
|
-
}
|
|
273
|
-
|
|
266
|
+
}
|
|
267
|
+
writeBlob(value) {
|
|
274
268
|
this.writeU8(value.length);
|
|
275
269
|
this.appendData(new Uint8Array(value));
|
|
276
|
-
}
|
|
277
|
-
|
|
270
|
+
}
|
|
271
|
+
writeHash(value) {
|
|
278
272
|
this.appendData(value);
|
|
279
|
-
}
|
|
280
|
-
|
|
273
|
+
}
|
|
274
|
+
writeValue(value) {
|
|
281
275
|
switch (value.vType) {
|
|
282
276
|
case ValueType.Bool:
|
|
283
277
|
this.writeU8(ValueType.Bool);
|
|
@@ -318,7 +312,5 @@ var ValueWriter = /** @class */ (function () {
|
|
|
318
312
|
default:
|
|
319
313
|
throw ErrUnsupportedValue(value);
|
|
320
314
|
}
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
}());
|
|
324
|
-
export { ValueWriter };
|
|
315
|
+
}
|
|
316
|
+
}
|
package/dist/esm/react/daemon.js
CHANGED
|
@@ -1,86 +1,76 @@
|
|
|
1
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
2
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
3
|
-
if (ar || !(i in from)) {
|
|
4
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
5
|
-
ar[i] = from[i];
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
9
|
-
};
|
|
10
1
|
import React, { createContext, useContext, useEffect, useState } from 'react';
|
|
11
2
|
import DaemonWS from '../daemon/websocket.js';
|
|
12
|
-
export
|
|
13
|
-
|
|
3
|
+
export const INITIATING = -1;
|
|
4
|
+
const Context = createContext({
|
|
14
5
|
err: undefined,
|
|
15
6
|
daemon: undefined,
|
|
16
7
|
readyState: INITIATING
|
|
17
8
|
});
|
|
18
|
-
export
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
useEffect(
|
|
24
|
-
|
|
9
|
+
export const NodeSocketProvider = (props) => {
|
|
10
|
+
const { children, endpoint, timeout } = props;
|
|
11
|
+
const [readyState, setReadyState] = useState(INITIATING);
|
|
12
|
+
const [err, setErr] = useState();
|
|
13
|
+
const [daemon, setDaemon] = useState();
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
const daemon = new DaemonWS(endpoint);
|
|
25
16
|
setDaemon(daemon);
|
|
26
|
-
return
|
|
17
|
+
return () => daemon.socket.close();
|
|
27
18
|
}, [endpoint]);
|
|
28
|
-
useEffect(
|
|
19
|
+
useEffect(() => {
|
|
29
20
|
if (!timeout)
|
|
30
21
|
return;
|
|
31
22
|
if (daemon)
|
|
32
23
|
daemon.callTimeout = timeout;
|
|
33
24
|
}, [timeout]);
|
|
34
|
-
useEffect(
|
|
25
|
+
useEffect(() => {
|
|
35
26
|
if (!daemon)
|
|
36
27
|
return;
|
|
37
28
|
setReadyState(daemon.socket.readyState);
|
|
38
|
-
|
|
29
|
+
const onOpen = () => {
|
|
39
30
|
setReadyState(daemon.socket.readyState);
|
|
40
31
|
setErr(undefined);
|
|
41
32
|
};
|
|
42
|
-
|
|
33
|
+
const onClose = (event) => {
|
|
43
34
|
if (!daemon.socket)
|
|
44
35
|
return;
|
|
45
36
|
setReadyState(daemon.socket.readyState);
|
|
46
37
|
setErr(new Error(event.reason));
|
|
47
38
|
};
|
|
48
|
-
|
|
39
|
+
const onError = (err) => {
|
|
49
40
|
if (!daemon.socket)
|
|
50
41
|
return;
|
|
51
42
|
setReadyState(daemon.socket.readyState);
|
|
52
43
|
setErr(new Error(err.message));
|
|
53
44
|
};
|
|
54
|
-
daemon.socket.addEventListener(
|
|
55
|
-
daemon.socket.addEventListener(
|
|
56
|
-
daemon.socket.addEventListener(
|
|
57
|
-
return
|
|
45
|
+
daemon.socket.addEventListener(`open`, onOpen);
|
|
46
|
+
daemon.socket.addEventListener(`close`, onClose);
|
|
47
|
+
daemon.socket.addEventListener(`error`, onError);
|
|
48
|
+
return () => {
|
|
58
49
|
if (!daemon.socket)
|
|
59
50
|
return;
|
|
60
|
-
daemon.socket.removeEventListener(
|
|
61
|
-
daemon.socket.removeEventListener(
|
|
62
|
-
daemon.socket.removeEventListener(
|
|
51
|
+
daemon.socket.removeEventListener(`open`, onOpen);
|
|
52
|
+
daemon.socket.removeEventListener(`close`, onClose);
|
|
53
|
+
daemon.socket.removeEventListener(`error`, onError);
|
|
63
54
|
};
|
|
64
55
|
}, [daemon]);
|
|
65
|
-
return React.createElement(Context.Provider, { value: { daemon
|
|
56
|
+
return React.createElement(Context.Provider, { value: { daemon, err, readyState } }, children);
|
|
66
57
|
};
|
|
67
|
-
export
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
useEffect(function () {
|
|
58
|
+
export const useNodeSocketSubscribe = ({ event, onLoad, onData }, dependencies) => {
|
|
59
|
+
const nodeSocket = useNodeSocket();
|
|
60
|
+
useEffect(() => {
|
|
71
61
|
if (!nodeSocket.daemon)
|
|
72
62
|
return;
|
|
73
63
|
if (nodeSocket.readyState !== WebSocket.OPEN)
|
|
74
64
|
return;
|
|
75
|
-
if (typeof onLoad ===
|
|
65
|
+
if (typeof onLoad === `function`)
|
|
76
66
|
onLoad();
|
|
77
67
|
nodeSocket.daemon.listen(event, onData);
|
|
78
|
-
return
|
|
68
|
+
return () => {
|
|
79
69
|
if (!nodeSocket.daemon)
|
|
80
70
|
return;
|
|
81
71
|
nodeSocket.daemon.closeListener(event, onData);
|
|
82
72
|
};
|
|
83
|
-
},
|
|
73
|
+
}, [nodeSocket, ...dependencies]);
|
|
84
74
|
};
|
|
85
|
-
export
|
|
75
|
+
export const useNodeSocket = () => useContext(Context);
|
|
86
76
|
export default useNodeSocket;
|