ripple-binary-codec 1.0.4-beta.1 → 1.0.4-mpt-beta
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/README.md +3 -3
- package/dist/binary.d.ts +34 -20
- package/dist/binary.js +51 -36
- package/dist/binary.js.map +1 -1
- package/dist/coretypes.d.ts +9 -9
- package/dist/coretypes.js +33 -9
- package/dist/coretypes.js.map +1 -1
- package/dist/enums/bytes.d.ts +25 -0
- package/dist/enums/bytes.js +63 -0
- package/dist/enums/bytes.js.map +1 -0
- package/dist/enums/constants.d.ts +4 -0
- package/dist/enums/constants.js +8 -0
- package/dist/enums/constants.js.map +1 -0
- package/dist/enums/definitions.json +3066 -1780
- package/dist/enums/field.d.ts +28 -0
- package/dist/enums/field.js +58 -0
- package/dist/enums/field.js.map +1 -0
- package/dist/enums/index.d.ts +12 -46
- package/dist/enums/index.js +22 -111
- package/dist/enums/index.js.map +1 -1
- package/dist/enums/src/enums/definitions.json +3073 -0
- package/dist/enums/utils-renumber.js +20 -20
- package/dist/enums/utils-renumber.js.map +1 -1
- package/dist/enums/xrpl-definitions-base.d.ts +44 -0
- package/dist/enums/xrpl-definitions-base.js +59 -0
- package/dist/enums/xrpl-definitions-base.js.map +1 -0
- package/dist/enums/xrpl-definitions.d.ts +21 -0
- package/dist/enums/xrpl-definitions.js +29 -0
- package/dist/enums/xrpl-definitions.js.map +1 -0
- package/dist/hash-prefixes.d.ts +1 -2
- package/dist/hash-prefixes.js +7 -7
- package/dist/hash-prefixes.js.map +1 -1
- package/dist/hashes.d.ts +7 -8
- package/dist/hashes.js +23 -44
- package/dist/hashes.js.map +1 -1
- package/dist/index.d.ts +16 -17
- package/dist/index.js +65 -40
- package/dist/index.js.map +1 -1
- package/dist/ledger-hashes.d.ts +7 -5
- package/dist/ledger-hashes.js +40 -34
- package/dist/ledger-hashes.js.map +1 -1
- package/dist/quality.d.ts +3 -4
- package/dist/quality.js +20 -21
- package/dist/quality.js.map +1 -1
- package/dist/serdes/binary-parser.d.ts +8 -6
- package/dist/serdes/binary-parser.js +74 -65
- package/dist/serdes/binary-parser.js.map +1 -1
- package/dist/serdes/binary-serializer.d.ts +10 -11
- package/dist/serdes/binary-serializer.js +50 -49
- package/dist/serdes/binary-serializer.js.map +1 -1
- package/dist/shamap.d.ts +6 -7
- package/dist/shamap.js +74 -98
- package/dist/shamap.js.map +1 -1
- package/dist/src/binary.d.ts +90 -0
- package/dist/src/binary.js +128 -0
- package/dist/src/binary.js.map +1 -0
- package/dist/src/coretypes.d.ts +9 -0
- package/dist/src/coretypes.js +48 -0
- package/dist/src/coretypes.js.map +1 -0
- package/dist/src/enums/bytes.d.ts +25 -0
- package/dist/src/enums/bytes.js +63 -0
- package/dist/src/enums/bytes.js.map +1 -0
- package/dist/src/enums/constants.d.ts +4 -0
- package/dist/src/enums/constants.js +8 -0
- package/dist/src/enums/constants.js.map +1 -0
- package/dist/src/enums/definitions.json +3068 -0
- package/dist/src/enums/field.d.ts +28 -0
- package/dist/src/enums/field.js +58 -0
- package/dist/src/enums/field.js.map +1 -0
- package/dist/src/enums/index.d.ts +12 -0
- package/dist/src/enums/index.js +31 -0
- package/dist/src/enums/index.js.map +1 -0
- package/dist/src/enums/utils-renumber.d.ts +101 -0
- package/dist/src/enums/utils-renumber.js +127 -0
- package/dist/src/enums/utils-renumber.js.map +1 -0
- package/dist/src/enums/xrpl-definitions-base.d.ts +44 -0
- package/dist/src/enums/xrpl-definitions-base.js +59 -0
- package/dist/src/enums/xrpl-definitions-base.js.map +1 -0
- package/dist/src/enums/xrpl-definitions.d.ts +21 -0
- package/dist/src/enums/xrpl-definitions.js +29 -0
- package/dist/src/enums/xrpl-definitions.js.map +1 -0
- package/dist/src/hash-prefixes.d.ts +5 -0
- package/dist/src/hash-prefixes.js +41 -0
- package/dist/src/hash-prefixes.js.map +1 -0
- package/dist/src/hashes.d.ts +50 -0
- package/dist/src/hashes.js +76 -0
- package/dist/src/hashes.js.map +1 -0
- package/dist/src/index.d.ts +64 -0
- package/dist/src/index.js +123 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/ledger-hashes.d.ts +48 -0
- package/dist/src/ledger-hashes.js +141 -0
- package/dist/src/ledger-hashes.js.map +1 -0
- package/dist/src/quality.d.ts +21 -0
- package/dist/src/quality.js +42 -0
- package/dist/src/quality.js.map +1 -0
- package/dist/src/serdes/binary-parser.d.ts +100 -0
- package/dist/src/serdes/binary-parser.js +194 -0
- package/dist/src/serdes/binary-parser.js.map +1 -0
- package/dist/src/serdes/binary-serializer.d.ts +81 -0
- package/dist/src/serdes/binary-serializer.js +149 -0
- package/dist/src/serdes/binary-serializer.js.map +1 -0
- package/dist/src/shamap.d.ts +102 -0
- package/dist/src/shamap.js +172 -0
- package/dist/src/shamap.js.map +1 -0
- package/dist/src/types/account-id.d.ts +35 -0
- package/dist/src/types/account-id.js +69 -0
- package/dist/src/types/account-id.js.map +1 -0
- package/dist/src/types/amount.d.ts +91 -0
- package/dist/src/types/amount.js +289 -0
- package/dist/src/types/amount.js.map +1 -0
- package/dist/src/types/blob.d.ts +24 -0
- package/dist/src/types/blob.js +43 -0
- package/dist/src/types/blob.js.map +1 -0
- package/dist/src/types/currency.d.ts +28 -0
- package/dist/src/types/currency.js +127 -0
- package/dist/src/types/currency.js.map +1 -0
- package/dist/src/types/hash-128.d.ts +16 -0
- package/dist/src/types/hash-128.js +32 -0
- package/dist/src/types/hash-128.js.map +1 -0
- package/dist/src/types/hash-160.d.ts +10 -0
- package/dist/src/types/hash-160.js +19 -0
- package/dist/src/types/hash-160.js.map +1 -0
- package/dist/src/types/hash-192.d.ts +10 -0
- package/dist/src/types/hash-192.js +19 -0
- package/dist/src/types/hash-192.js.map +1 -0
- package/dist/src/types/hash-256.d.ts +10 -0
- package/dist/src/types/hash-256.js +16 -0
- package/dist/src/types/hash-256.js.map +1 -0
- package/dist/src/types/hash.d.ts +40 -0
- package/dist/src/types/hash.js +73 -0
- package/dist/src/types/hash.js.map +1 -0
- package/dist/src/types/index.d.ts +19 -0
- package/dist/src/types/index.js +64 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/issue.d.ts +38 -0
- package/dist/src/types/issue.js +81 -0
- package/dist/src/types/issue.js.map +1 -0
- package/dist/src/types/path-set.d.ts +36 -0
- package/dist/src/types/path-set.js +233 -0
- package/dist/src/types/path-set.js.map +1 -0
- package/dist/src/types/serialized-type.d.ts +70 -0
- package/dist/src/types/serialized-type.js +105 -0
- package/dist/src/types/serialized-type.js.map +1 -0
- package/dist/src/types/st-array.d.ts +31 -0
- package/dist/src/types/st-array.js +86 -0
- package/dist/src/types/st-array.js.map +1 -0
- package/dist/src/types/st-object.d.ts +32 -0
- package/dist/src/types/st-object.js +155 -0
- package/dist/src/types/st-object.js.map +1 -0
- package/dist/src/types/uint-16.d.ts +24 -0
- package/dist/src/types/uint-16.js +45 -0
- package/dist/src/types/uint-16.js.map +1 -0
- package/dist/src/types/uint-32.d.ts +24 -0
- package/dist/src/types/uint-32.js +50 -0
- package/dist/src/types/uint-32.js.map +1 -0
- package/dist/src/types/uint-64.d.ts +37 -0
- package/dist/src/types/uint-64.js +86 -0
- package/dist/src/types/uint-64.js.map +1 -0
- package/dist/src/types/uint-8.d.ts +24 -0
- package/dist/src/types/uint-8.js +46 -0
- package/dist/src/types/uint-8.js.map +1 -0
- package/dist/src/types/uint.d.ts +29 -0
- package/dist/src/types/uint.js +47 -0
- package/dist/src/types/uint.js.map +1 -0
- package/dist/src/types/vector-256.d.ts +30 -0
- package/dist/src/types/vector-256.js +73 -0
- package/dist/src/types/vector-256.js.map +1 -0
- package/dist/src/types/xchain-bridge.d.ts +44 -0
- package/dist/src/types/xchain-bridge.js +102 -0
- package/dist/src/types/xchain-bridge.js.map +1 -0
- package/dist/src/utils.d.ts +47 -0
- package/dist/src/utils.js +137 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/account-id.d.ts +2 -3
- package/dist/types/account-id.js +29 -40
- package/dist/types/account-id.js.map +1 -1
- package/dist/types/amount.d.ts +33 -10
- package/dist/types/amount.js +181 -114
- package/dist/types/amount.js.map +1 -1
- package/dist/types/blob.d.ts +3 -4
- package/dist/types/blob.js +16 -28
- package/dist/types/blob.js.map +1 -1
- package/dist/types/currency.d.ts +5 -13
- package/dist/types/currency.js +53 -67
- package/dist/types/currency.js.map +1 -1
- package/dist/types/hash-128.d.ts +8 -3
- package/dist/types/hash-128.js +23 -23
- package/dist/types/hash-128.js.map +1 -1
- package/dist/types/hash-160.d.ts +2 -3
- package/dist/types/hash-160.js +7 -25
- package/dist/types/hash-160.js.map +1 -1
- package/dist/types/hash-192.d.ts +10 -0
- package/dist/types/hash-192.js +19 -0
- package/dist/types/hash-192.js.map +1 -0
- package/dist/types/hash-256.d.ts +2 -3
- package/dist/types/hash-256.js +7 -23
- package/dist/types/hash-256.js.map +1 -1
- package/dist/types/hash.d.ts +4 -5
- package/dist/types/hash.js +25 -40
- package/dist/types/hash.js.map +1 -1
- package/dist/types/index.d.ts +19 -33
- package/dist/types/index.js +44 -24
- package/dist/types/index.js.map +1 -1
- package/dist/types/issue.d.ts +38 -0
- package/dist/types/issue.js +81 -0
- package/dist/types/issue.js.map +1 -0
- package/dist/types/path-set.d.ts +2 -2
- package/dist/types/path-set.js +73 -95
- package/dist/types/path-set.js.map +1 -1
- package/dist/types/serialized-type.d.ts +27 -20
- package/dist/types/serialized-type.js +50 -61
- package/dist/types/serialized-type.js.map +1 -1
- package/dist/types/st-array.d.ts +7 -4
- package/dist/types/st-array.js +36 -48
- package/dist/types/st-array.js.map +1 -1
- package/dist/types/st-object.d.ts +8 -5
- package/dist/types/st-object.js +73 -75
- package/dist/types/st-object.js.map +1 -1
- package/dist/types/uint-16.d.ts +3 -4
- package/dist/types/uint-16.js +20 -34
- package/dist/types/uint-16.js.map +1 -1
- package/dist/types/uint-32.d.ts +3 -4
- package/dist/types/uint-32.js +23 -37
- package/dist/types/uint-32.js.map +1 -1
- package/dist/types/uint-64.d.ts +6 -8
- package/dist/types/uint-64.js +43 -58
- package/dist/types/uint-64.js.map +1 -1
- package/dist/types/uint-8.d.ts +3 -4
- package/dist/types/uint-8.js +21 -34
- package/dist/types/uint-8.js.map +1 -1
- package/dist/types/uint.d.ts +6 -7
- package/dist/types/uint.js +16 -26
- package/dist/types/uint.js.map +1 -1
- package/dist/types/vector-256.d.ts +3 -4
- package/dist/types/vector-256.js +28 -45
- package/dist/types/vector-256.js.map +1 -1
- package/dist/types/xchain-bridge.d.ts +44 -0
- package/dist/types/xchain-bridge.js +102 -0
- package/dist/types/xchain-bridge.js.map +1 -0
- package/dist/utils.d.ts +47 -0
- package/dist/utils.js +137 -0
- package/dist/utils.js.map +1 -0
- package/package.json +23 -36
- package/src/README.md +5 -0
- package/src/binary.ts +194 -0
- package/src/coretypes.ts +31 -0
- package/src/enums/README.md +144 -0
- package/src/enums/bytes.ts +74 -0
- package/src/enums/constants.ts +4 -0
- package/src/enums/definitions.json +3073 -0
- package/src/enums/field.ts +84 -0
- package/src/enums/index.ts +34 -0
- package/src/enums/utils-renumber.ts +134 -0
- package/src/enums/xrpl-definitions-base.ts +111 -0
- package/src/enums/xrpl-definitions.ts +32 -0
- package/src/hash-prefixes.ts +40 -0
- package/src/hashes.ts +75 -0
- package/src/index.ts +153 -0
- package/src/ledger-hashes.ts +191 -0
- package/src/quality.ts +38 -0
- package/src/serdes/binary-parser.ts +228 -0
- package/src/serdes/binary-serializer.ts +166 -0
- package/src/shamap.ts +186 -0
- package/src/types/account-id.ts +86 -0
- package/src/types/amount.ts +362 -0
- package/src/types/blob.ts +46 -0
- package/src/types/currency.ts +140 -0
- package/src/types/hash-128.ts +33 -0
- package/src/types/hash-160.ts +19 -0
- package/src/types/hash-192.ts +19 -0
- package/src/types/hash-256.ts +15 -0
- package/src/types/hash.ts +83 -0
- package/src/types/index.ts +66 -0
- package/src/types/issue.ts +96 -0
- package/src/types/path-set.ts +290 -0
- package/src/types/serialized-type.ts +122 -0
- package/src/types/st-array.ts +113 -0
- package/src/types/st-object.ts +192 -0
- package/src/types/uint-16.ts +53 -0
- package/src/types/uint-32.ts +59 -0
- package/src/types/uint-64.ts +104 -0
- package/src/types/uint-8.ts +52 -0
- package/src/types/uint.ts +60 -0
- package/src/types/vector-256.ts +79 -0
- package/src/types/xchain-bridge.ts +128 -0
- package/src/utils.ts +152 -0
- package/HISTORY.md +0 -74
- package/dist/index.js.LICENSE.txt +0 -17
- package/test/amount.test.js +0 -43
- package/test/binary-json.test.js +0 -47
- package/test/binary-parser.test.js +0 -398
- package/test/binary-serializer.test.js +0 -264
- package/test/fixtures/account-tx-transactions.db +0 -0
- package/test/fixtures/codec-fixtures.json +0 -4466
- package/test/fixtures/data-driven-tests.json +0 -3721
- package/test/fixtures/delivermin-tx-binary.json +0 -1
- package/test/fixtures/delivermin-tx.json +0 -98
- package/test/fixtures/deposit-preauth-tx-binary.json +0 -1
- package/test/fixtures/deposit-preauth-tx-meta-binary.json +0 -1
- package/test/fixtures/deposit-preauth-tx.json +0 -58
- package/test/fixtures/escrow-cancel-binary.json +0 -1
- package/test/fixtures/escrow-cancel-tx.json +0 -6
- package/test/fixtures/escrow-create-binary.json +0 -1
- package/test/fixtures/escrow-create-tx.json +0 -10
- package/test/fixtures/escrow-finish-binary.json +0 -1
- package/test/fixtures/escrow-finish-meta-binary.json +0 -1
- package/test/fixtures/escrow-finish-tx.json +0 -95
- package/test/fixtures/ledger-full-38129.json +0 -1
- package/test/fixtures/ledger-full-40000.json +0 -1
- package/test/fixtures/negative-unl.json +0 -12
- package/test/fixtures/payment-channel-claim-binary.json +0 -1
- package/test/fixtures/payment-channel-claim-tx.json +0 -8
- package/test/fixtures/payment-channel-create-binary.json +0 -1
- package/test/fixtures/payment-channel-create-tx.json +0 -11
- package/test/fixtures/payment-channel-fund-binary.json +0 -1
- package/test/fixtures/payment-channel-fund-tx.json +0 -7
- package/test/fixtures/signerlistset-tx-binary.json +0 -1
- package/test/fixtures/signerlistset-tx-meta-binary.json +0 -1
- package/test/fixtures/signerlistset-tx.json +0 -94
- package/test/fixtures/ticket-create-binary.json +0 -1
- package/test/fixtures/ticket-create-tx.json +0 -7
- package/test/fixtures/x-codec-fixtures.json +0 -188
- package/test/hash.test.js +0 -83
- package/test/ledger.test.js +0 -29
- package/test/lower-case-hex.test.js +0 -45
- package/test/pseudo-transaction.test.js +0 -38
- package/test/quality.test.js +0 -15
- package/test/shamap.test.js +0 -89
- package/test/signing-data-encoding.test.js +0 -129
- package/test/tx-encode-decode.test.js +0 -97
- package/test/types.test.js +0 -34
- package/test/uint.test.js +0 -40
- package/test/utils.js +0 -30
- package/test/x-address.test.js +0 -147
|
@@ -1,185 +1,194 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BinaryParser = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var buffer_1 = require("buffer/");
|
|
4
|
+
const enums_1 = require("../enums");
|
|
5
|
+
const utils_1 = require("@xrplf/isomorphic/utils");
|
|
7
6
|
/**
|
|
8
7
|
* BinaryParser is used to compute fields and values from a HexString
|
|
9
8
|
*/
|
|
10
|
-
|
|
9
|
+
class BinaryParser {
|
|
11
10
|
/**
|
|
12
11
|
* Initialize bytes to a hex string
|
|
13
12
|
*
|
|
14
13
|
* @param hexBytes a hex string
|
|
14
|
+
* @param definitions Rippled definitions used to parse the values of transaction types and such.
|
|
15
|
+
* Can be customized for sidechains and amendments.
|
|
15
16
|
*/
|
|
16
|
-
|
|
17
|
-
this.bytes =
|
|
17
|
+
constructor(hexBytes, definitions = enums_1.DEFAULT_DEFINITIONS) {
|
|
18
|
+
this.bytes = (0, utils_1.hexToBytes)(hexBytes);
|
|
19
|
+
this.definitions = definitions;
|
|
18
20
|
}
|
|
19
21
|
/**
|
|
20
22
|
* Peek the first byte of the BinaryParser
|
|
21
23
|
*
|
|
22
24
|
* @returns The first byte of the BinaryParser
|
|
23
25
|
*/
|
|
24
|
-
|
|
25
|
-
|
|
26
|
+
peek() {
|
|
27
|
+
if (this.bytes.byteLength === 0) {
|
|
28
|
+
throw new Error();
|
|
29
|
+
}
|
|
26
30
|
return this.bytes[0];
|
|
27
|
-
}
|
|
31
|
+
}
|
|
28
32
|
/**
|
|
29
33
|
* Consume the first n bytes of the BinaryParser
|
|
30
34
|
*
|
|
31
35
|
* @param n the number of bytes to skip
|
|
32
36
|
*/
|
|
33
|
-
|
|
34
|
-
|
|
37
|
+
skip(n) {
|
|
38
|
+
if (n > this.bytes.byteLength) {
|
|
39
|
+
throw new Error();
|
|
40
|
+
}
|
|
35
41
|
this.bytes = this.bytes.slice(n);
|
|
36
|
-
}
|
|
42
|
+
}
|
|
37
43
|
/**
|
|
38
44
|
* read the first n bytes from the BinaryParser
|
|
39
45
|
*
|
|
40
46
|
* @param n The number of bytes to read
|
|
41
47
|
* @return The bytes
|
|
42
48
|
*/
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
49
|
+
read(n) {
|
|
50
|
+
if (n > this.bytes.byteLength) {
|
|
51
|
+
throw new Error();
|
|
52
|
+
}
|
|
53
|
+
const slice = this.bytes.slice(0, n);
|
|
46
54
|
this.skip(n);
|
|
47
55
|
return slice;
|
|
48
|
-
}
|
|
56
|
+
}
|
|
49
57
|
/**
|
|
50
58
|
* Read an integer of given size
|
|
51
59
|
*
|
|
52
60
|
* @param n The number of bytes to read
|
|
53
61
|
* @return The number represented by those bytes
|
|
54
62
|
*/
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
63
|
+
readUIntN(n) {
|
|
64
|
+
if (0 >= n || n > 4) {
|
|
65
|
+
throw new Error('invalid n');
|
|
66
|
+
}
|
|
67
|
+
return this.read(n).reduce((a, b) => (a << 8) | b) >>> 0;
|
|
68
|
+
}
|
|
69
|
+
readUInt8() {
|
|
60
70
|
return this.readUIntN(1);
|
|
61
|
-
}
|
|
62
|
-
|
|
71
|
+
}
|
|
72
|
+
readUInt16() {
|
|
63
73
|
return this.readUIntN(2);
|
|
64
|
-
}
|
|
65
|
-
|
|
74
|
+
}
|
|
75
|
+
readUInt32() {
|
|
66
76
|
return this.readUIntN(4);
|
|
67
|
-
}
|
|
68
|
-
|
|
77
|
+
}
|
|
78
|
+
size() {
|
|
69
79
|
return this.bytes.byteLength;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
80
|
+
}
|
|
81
|
+
end(customEnd) {
|
|
82
|
+
const length = this.bytes.byteLength;
|
|
73
83
|
return length === 0 || (customEnd !== undefined && length <= customEnd);
|
|
74
|
-
}
|
|
84
|
+
}
|
|
75
85
|
/**
|
|
76
86
|
* Reads variable length encoded bytes
|
|
77
87
|
*
|
|
78
88
|
* @return The variable length bytes
|
|
79
89
|
*/
|
|
80
|
-
|
|
90
|
+
readVariableLength() {
|
|
81
91
|
return this.read(this.readVariableLengthLength());
|
|
82
|
-
}
|
|
92
|
+
}
|
|
83
93
|
/**
|
|
84
94
|
* Reads the length of the variable length encoded bytes
|
|
85
95
|
*
|
|
86
96
|
* @return The length of the variable length encoded bytes
|
|
87
97
|
*/
|
|
88
|
-
|
|
89
|
-
|
|
98
|
+
readVariableLengthLength() {
|
|
99
|
+
const b1 = this.readUInt8();
|
|
90
100
|
if (b1 <= 192) {
|
|
91
101
|
return b1;
|
|
92
102
|
}
|
|
93
103
|
else if (b1 <= 240) {
|
|
94
|
-
|
|
104
|
+
const b2 = this.readUInt8();
|
|
95
105
|
return 193 + (b1 - 193) * 256 + b2;
|
|
96
106
|
}
|
|
97
107
|
else if (b1 <= 254) {
|
|
98
|
-
|
|
99
|
-
|
|
108
|
+
const b2 = this.readUInt8();
|
|
109
|
+
const b3 = this.readUInt8();
|
|
100
110
|
return 12481 + (b1 - 241) * 65536 + b2 * 256 + b3;
|
|
101
111
|
}
|
|
102
|
-
throw new Error(
|
|
103
|
-
}
|
|
112
|
+
throw new Error('Invalid variable length indicator');
|
|
113
|
+
}
|
|
104
114
|
/**
|
|
105
115
|
* Reads the field ordinal from the BinaryParser
|
|
106
116
|
*
|
|
107
117
|
* @return Field ordinal
|
|
108
118
|
*/
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
119
|
+
readFieldOrdinal() {
|
|
120
|
+
let type = this.readUInt8();
|
|
121
|
+
let nth = type & 15;
|
|
112
122
|
type >>= 4;
|
|
113
123
|
if (type === 0) {
|
|
114
124
|
type = this.readUInt8();
|
|
115
125
|
if (type === 0 || type < 16) {
|
|
116
|
-
throw new Error(
|
|
126
|
+
throw new Error(`Cannot read FieldOrdinal, type_code ${type} out of range`);
|
|
117
127
|
}
|
|
118
128
|
}
|
|
119
129
|
if (nth === 0) {
|
|
120
130
|
nth = this.readUInt8();
|
|
121
131
|
if (nth === 0 || nth < 16) {
|
|
122
|
-
throw new Error(
|
|
132
|
+
throw new Error(`Cannot read FieldOrdinal, field_code ${nth} out of range`);
|
|
123
133
|
}
|
|
124
134
|
}
|
|
125
135
|
return (type << 16) | nth;
|
|
126
|
-
}
|
|
136
|
+
}
|
|
127
137
|
/**
|
|
128
138
|
* Read the field from the BinaryParser
|
|
129
139
|
*
|
|
130
140
|
* @return The field represented by the bytes at the head of the BinaryParser
|
|
131
141
|
*/
|
|
132
|
-
|
|
133
|
-
return
|
|
134
|
-
}
|
|
142
|
+
readField() {
|
|
143
|
+
return this.definitions.field.fromString(this.readFieldOrdinal().toString());
|
|
144
|
+
}
|
|
135
145
|
/**
|
|
136
146
|
* Read a given type from the BinaryParser
|
|
137
147
|
*
|
|
138
148
|
* @param type The type that you want to read from the BinaryParser
|
|
139
149
|
* @return The instance of that type read from the BinaryParser
|
|
140
150
|
*/
|
|
141
|
-
|
|
151
|
+
readType(type) {
|
|
142
152
|
return type.fromParser(this);
|
|
143
|
-
}
|
|
153
|
+
}
|
|
144
154
|
/**
|
|
145
155
|
* Get the type associated with a given field
|
|
146
156
|
*
|
|
147
157
|
* @param field The field that you wan to get the type of
|
|
148
158
|
* @return The type associated with the given field
|
|
149
159
|
*/
|
|
150
|
-
|
|
160
|
+
typeForField(field) {
|
|
151
161
|
return field.associatedType;
|
|
152
|
-
}
|
|
162
|
+
}
|
|
153
163
|
/**
|
|
154
164
|
* Read value of the type specified by field from the BinaryParser
|
|
155
165
|
*
|
|
156
166
|
* @param field The field that you want to get the associated value for
|
|
157
167
|
* @return The value associated with the given field
|
|
158
168
|
*/
|
|
159
|
-
|
|
160
|
-
|
|
169
|
+
readFieldValue(field) {
|
|
170
|
+
const type = this.typeForField(field);
|
|
161
171
|
if (!type) {
|
|
162
|
-
throw new Error(
|
|
172
|
+
throw new Error(`unsupported: (${field.name}, ${field.type.name})`);
|
|
163
173
|
}
|
|
164
|
-
|
|
174
|
+
const sizeHint = field.isVariableLengthEncoded
|
|
165
175
|
? this.readVariableLengthLength()
|
|
166
176
|
: undefined;
|
|
167
|
-
|
|
177
|
+
const value = type.fromParser(this, sizeHint);
|
|
168
178
|
if (value === undefined) {
|
|
169
|
-
throw new Error(
|
|
179
|
+
throw new Error(`fromParser for (${field.name}, ${field.type.name}) -> undefined `);
|
|
170
180
|
}
|
|
171
181
|
return value;
|
|
172
|
-
}
|
|
182
|
+
}
|
|
173
183
|
/**
|
|
174
184
|
* Get the next field and value from the BinaryParser
|
|
175
185
|
*
|
|
176
186
|
* @return The field and value
|
|
177
187
|
*/
|
|
178
|
-
|
|
179
|
-
|
|
188
|
+
readFieldAndValue() {
|
|
189
|
+
const field = this.readField();
|
|
180
190
|
return [field, this.readFieldValue(field)];
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
}());
|
|
191
|
+
}
|
|
192
|
+
}
|
|
184
193
|
exports.BinaryParser = BinaryParser;
|
|
185
194
|
//# sourceMappingURL=binary-parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binary-parser.js","sourceRoot":"","sources":["../../src/serdes/binary-parser.ts"],"names":[],"mappings":";;;AAAA
|
|
1
|
+
{"version":3,"file":"binary-parser.js","sourceRoot":"","sources":["../../src/serdes/binary-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { FieldInstance } from
|
|
2
|
-
import { SerializedType } from
|
|
3
|
-
import { Buffer } from "buffer/";
|
|
1
|
+
import { FieldInstance } from '../enums';
|
|
2
|
+
import { type SerializedType } from '../types/serialized-type';
|
|
4
3
|
/**
|
|
5
|
-
* Bytes list is a collection of
|
|
4
|
+
* Bytes list is a collection of Uint8Array objects
|
|
6
5
|
*/
|
|
7
6
|
declare class BytesList {
|
|
8
7
|
private bytesArray;
|
|
@@ -15,21 +14,21 @@ declare class BytesList {
|
|
|
15
14
|
/**
|
|
16
15
|
* Put bytes in the BytesList
|
|
17
16
|
*
|
|
18
|
-
* @param bytesArg A
|
|
17
|
+
* @param bytesArg A Uint8Array
|
|
19
18
|
* @return this BytesList
|
|
20
19
|
*/
|
|
21
|
-
put(bytesArg:
|
|
20
|
+
put(bytesArg: Uint8Array): BytesList;
|
|
22
21
|
/**
|
|
23
22
|
* Write this BytesList to the back of another bytes list
|
|
24
23
|
*
|
|
25
24
|
* @param list The BytesList to write to
|
|
26
25
|
*/
|
|
27
26
|
toBytesSink(list: BytesList): void;
|
|
28
|
-
toBytes():
|
|
27
|
+
toBytes(): Uint8Array;
|
|
29
28
|
toHex(): string;
|
|
30
29
|
}
|
|
31
30
|
/**
|
|
32
|
-
* BinarySerializer is used to write fields and values to
|
|
31
|
+
* BinarySerializer is used to write fields and values to Uint8Arrays
|
|
33
32
|
*/
|
|
34
33
|
declare class BinarySerializer {
|
|
35
34
|
private sink;
|
|
@@ -45,7 +44,7 @@ declare class BinarySerializer {
|
|
|
45
44
|
*
|
|
46
45
|
* @param bytes the bytes to write
|
|
47
46
|
*/
|
|
48
|
-
put(bytes:
|
|
47
|
+
put(bytes: Uint8Array): void;
|
|
49
48
|
/**
|
|
50
49
|
* Write a value of a given type to this BinarySerializer
|
|
51
50
|
*
|
|
@@ -71,12 +70,12 @@ declare class BinarySerializer {
|
|
|
71
70
|
* @param field field to write to BinarySerializer
|
|
72
71
|
* @param value value to write to BinarySerializer
|
|
73
72
|
*/
|
|
74
|
-
writeFieldAndValue(field: FieldInstance, value: SerializedType): void;
|
|
73
|
+
writeFieldAndValue(field: FieldInstance, value: SerializedType, isUnlModifyWorkaround?: boolean): void;
|
|
75
74
|
/**
|
|
76
75
|
* Write a variable length encoded value to the BinarySerializer
|
|
77
76
|
*
|
|
78
77
|
* @param value length encoded value to write to BytesList
|
|
79
78
|
*/
|
|
80
|
-
writeLengthEncoded(value: SerializedType): void;
|
|
79
|
+
writeLengthEncoded(value: SerializedType, isUnlModifyWorkaround?: boolean): void;
|
|
81
80
|
}
|
|
82
81
|
export { BytesList, BinarySerializer };
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BinarySerializer = exports.BytesList = void 0;
|
|
4
|
-
|
|
5
|
-
var buffer_1 = require("buffer/");
|
|
4
|
+
const utils_1 = require("@xrplf/isomorphic/utils");
|
|
6
5
|
/**
|
|
7
|
-
* Bytes list is a collection of
|
|
6
|
+
* Bytes list is a collection of Uint8Array objects
|
|
8
7
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
class BytesList {
|
|
9
|
+
constructor() {
|
|
11
10
|
this.bytesArray = [];
|
|
12
11
|
}
|
|
13
12
|
/**
|
|
@@ -15,42 +14,41 @@ var BytesList = /** @class */ (function () {
|
|
|
15
14
|
*
|
|
16
15
|
* @return the number of bytes
|
|
17
16
|
*/
|
|
18
|
-
|
|
19
|
-
return
|
|
20
|
-
}
|
|
17
|
+
getLength() {
|
|
18
|
+
return (0, utils_1.concat)(this.bytesArray).byteLength;
|
|
19
|
+
}
|
|
21
20
|
/**
|
|
22
21
|
* Put bytes in the BytesList
|
|
23
22
|
*
|
|
24
|
-
* @param bytesArg A
|
|
23
|
+
* @param bytesArg A Uint8Array
|
|
25
24
|
* @return this BytesList
|
|
26
25
|
*/
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
put(bytesArg) {
|
|
27
|
+
const bytes = Uint8Array.from(bytesArg); // Temporary, to catch instances of Uint8Array being passed in
|
|
29
28
|
this.bytesArray.push(bytes);
|
|
30
29
|
return this;
|
|
31
|
-
}
|
|
30
|
+
}
|
|
32
31
|
/**
|
|
33
32
|
* Write this BytesList to the back of another bytes list
|
|
34
33
|
*
|
|
35
34
|
* @param list The BytesList to write to
|
|
36
35
|
*/
|
|
37
|
-
|
|
36
|
+
toBytesSink(list) {
|
|
38
37
|
list.put(this.toBytes());
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return this.toBytes()
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
}());
|
|
38
|
+
}
|
|
39
|
+
toBytes() {
|
|
40
|
+
return (0, utils_1.concat)(this.bytesArray);
|
|
41
|
+
}
|
|
42
|
+
toHex() {
|
|
43
|
+
return (0, utils_1.bytesToHex)(this.toBytes());
|
|
44
|
+
}
|
|
45
|
+
}
|
|
48
46
|
exports.BytesList = BytesList;
|
|
49
47
|
/**
|
|
50
|
-
* BinarySerializer is used to write fields and values to
|
|
48
|
+
* BinarySerializer is used to write fields and values to Uint8Arrays
|
|
51
49
|
*/
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
class BinarySerializer {
|
|
51
|
+
constructor(sink) {
|
|
54
52
|
this.sink = new BytesList();
|
|
55
53
|
this.sink = sink;
|
|
56
54
|
}
|
|
@@ -59,41 +57,41 @@ var BinarySerializer = /** @class */ (function () {
|
|
|
59
57
|
*
|
|
60
58
|
* @param value a SerializedType value
|
|
61
59
|
*/
|
|
62
|
-
|
|
60
|
+
write(value) {
|
|
63
61
|
value.toBytesSink(this.sink);
|
|
64
|
-
}
|
|
62
|
+
}
|
|
65
63
|
/**
|
|
66
64
|
* Write bytes to this BinarySerializer
|
|
67
65
|
*
|
|
68
66
|
* @param bytes the bytes to write
|
|
69
67
|
*/
|
|
70
|
-
|
|
68
|
+
put(bytes) {
|
|
71
69
|
this.sink.put(bytes);
|
|
72
|
-
}
|
|
70
|
+
}
|
|
73
71
|
/**
|
|
74
72
|
* Write a value of a given type to this BinarySerializer
|
|
75
73
|
*
|
|
76
74
|
* @param type the type to write
|
|
77
75
|
* @param value a value of that type
|
|
78
76
|
*/
|
|
79
|
-
|
|
77
|
+
writeType(type, value) {
|
|
80
78
|
this.write(type.from(value));
|
|
81
|
-
}
|
|
79
|
+
}
|
|
82
80
|
/**
|
|
83
81
|
* Write BytesList to this BinarySerializer
|
|
84
82
|
*
|
|
85
83
|
* @param bl BytesList to write to BinarySerializer
|
|
86
84
|
*/
|
|
87
|
-
|
|
85
|
+
writeBytesList(bl) {
|
|
88
86
|
bl.toBytesSink(this.sink);
|
|
89
|
-
}
|
|
87
|
+
}
|
|
90
88
|
/**
|
|
91
89
|
* Calculate the header of Variable Length encoded bytes
|
|
92
90
|
*
|
|
93
91
|
* @param length the length of the bytes
|
|
94
92
|
*/
|
|
95
|
-
|
|
96
|
-
|
|
93
|
+
encodeVariableLength(length) {
|
|
94
|
+
const lenBytes = new Uint8Array(3);
|
|
97
95
|
if (length <= 192) {
|
|
98
96
|
lenBytes[0] = length;
|
|
99
97
|
return lenBytes.slice(0, 1);
|
|
@@ -111,38 +109,41 @@ var BinarySerializer = /** @class */ (function () {
|
|
|
111
109
|
lenBytes[2] = length & 0xff;
|
|
112
110
|
return lenBytes.slice(0, 3);
|
|
113
111
|
}
|
|
114
|
-
throw new Error(
|
|
115
|
-
}
|
|
112
|
+
throw new Error('Overflow error');
|
|
113
|
+
}
|
|
116
114
|
/**
|
|
117
115
|
* Write field and value to BinarySerializer
|
|
118
116
|
*
|
|
119
117
|
* @param field field to write to BinarySerializer
|
|
120
118
|
* @param value value to write to BinarySerializer
|
|
121
119
|
*/
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
120
|
+
writeFieldAndValue(field, value, isUnlModifyWorkaround = false) {
|
|
121
|
+
const associatedValue = field.associatedType.from(value);
|
|
122
|
+
if (associatedValue.toBytesSink === undefined || field.name === undefined) {
|
|
123
|
+
throw new Error();
|
|
124
|
+
}
|
|
126
125
|
this.sink.put(field.header);
|
|
127
126
|
if (field.isVariableLengthEncoded) {
|
|
128
|
-
this.writeLengthEncoded(associatedValue);
|
|
127
|
+
this.writeLengthEncoded(associatedValue, isUnlModifyWorkaround);
|
|
129
128
|
}
|
|
130
129
|
else {
|
|
131
130
|
associatedValue.toBytesSink(this.sink);
|
|
132
131
|
}
|
|
133
|
-
}
|
|
132
|
+
}
|
|
134
133
|
/**
|
|
135
134
|
* Write a variable length encoded value to the BinarySerializer
|
|
136
135
|
*
|
|
137
136
|
* @param value length encoded value to write to BytesList
|
|
138
137
|
*/
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
138
|
+
writeLengthEncoded(value, isUnlModifyWorkaround = false) {
|
|
139
|
+
const bytes = new BytesList();
|
|
140
|
+
if (!isUnlModifyWorkaround) {
|
|
141
|
+
// this part doesn't happen for the Account field in a UNLModify transaction
|
|
142
|
+
value.toBytesSink(bytes);
|
|
143
|
+
}
|
|
142
144
|
this.put(this.encodeVariableLength(bytes.getLength()));
|
|
143
145
|
this.writeBytesList(bytes);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
}());
|
|
146
|
+
}
|
|
147
|
+
}
|
|
147
148
|
exports.BinarySerializer = BinarySerializer;
|
|
148
149
|
//# sourceMappingURL=binary-serializer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binary-serializer.js","sourceRoot":"","sources":["../../src/serdes/binary-serializer.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"binary-serializer.js","sourceRoot":"","sources":["../../src/serdes/binary-serializer.ts"],"names":[],"mappings":"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"}
|
package/dist/shamap.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { Hash256 } from
|
|
2
|
-
import { BytesList } from
|
|
3
|
-
import { Buffer } from "buffer/";
|
|
1
|
+
import { Hash256 } from './types/hash-256';
|
|
2
|
+
import { BytesList } from './serdes/binary-serializer';
|
|
4
3
|
/**
|
|
5
4
|
* Abstract class describing a SHAMapNode
|
|
6
5
|
*/
|
|
7
6
|
declare abstract class ShaMapNode {
|
|
8
|
-
abstract hashPrefix():
|
|
7
|
+
abstract hashPrefix(): Uint8Array;
|
|
9
8
|
abstract isLeaf(): boolean;
|
|
10
9
|
abstract isInner(): boolean;
|
|
11
10
|
abstract toBytesSink(list: BytesList): void;
|
|
@@ -29,9 +28,9 @@ declare class ShaMapLeaf extends ShaMapNode {
|
|
|
29
28
|
/**
|
|
30
29
|
* Get the prefix of the this.item
|
|
31
30
|
*
|
|
32
|
-
* @returns The hash prefix, unless this.item is undefined, then it returns an empty
|
|
31
|
+
* @returns The hash prefix, unless this.item is undefined, then it returns an empty Uint8Array
|
|
33
32
|
*/
|
|
34
|
-
hashPrefix():
|
|
33
|
+
hashPrefix(): Uint8Array;
|
|
35
34
|
/**
|
|
36
35
|
* Hash the bytes representation of this
|
|
37
36
|
*
|
|
@@ -65,7 +64,7 @@ declare class ShaMapInner extends ShaMapNode {
|
|
|
65
64
|
*
|
|
66
65
|
* @returns hash prefix describing an inner node
|
|
67
66
|
*/
|
|
68
|
-
hashPrefix():
|
|
67
|
+
hashPrefix(): Uint8Array;
|
|
69
68
|
/**
|
|
70
69
|
* Set a branch of this node to be another node
|
|
71
70
|
*
|