ripple-binary-codec 1.4.2 → 1.4.3
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/binary.js +25 -29
- package/dist/binary.js.map +1 -1
- package/dist/coretypes.js +31 -8
- package/dist/coretypes.js.map +1 -1
- package/dist/enums/bytes.d.ts +26 -0
- package/dist/enums/bytes.js +64 -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 +2330 -1971
- package/dist/enums/field.d.ts +29 -0
- package/dist/enums/field.js +59 -0
- package/dist/enums/field.js.map +1 -0
- package/dist/enums/index.js +69 -60
- package/dist/enums/index.js.map +1 -1
- package/dist/enums/src/enums/definitions.json +2337 -0
- package/dist/enums/utils-renumber.js +14 -14
- 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 +64 -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 +28 -0
- package/dist/enums/xrpl-definitions.js.map +1 -0
- package/dist/hash-prefixes.js +3 -3
- package/dist/hash-prefixes.js.map +1 -1
- package/dist/hashes.js +21 -43
- package/dist/hashes.js.map +1 -1
- package/dist/index.d.ts +2 -12
- package/dist/index.js +39 -16
- package/dist/index.js.map +1 -1
- package/dist/ledger-hashes.d.ts +1 -1
- package/dist/ledger-hashes.js +51 -28
- package/dist/ledger-hashes.js.map +1 -1
- package/dist/quality.js +18 -21
- package/dist/quality.js.map +1 -1
- package/dist/serdes/binary-parser.js +78 -56
- package/dist/serdes/binary-parser.js.map +1 -1
- package/dist/serdes/binary-serializer.js +59 -40
- package/dist/serdes/binary-serializer.js.map +1 -1
- package/dist/shamap.js +70 -98
- package/dist/shamap.js.map +1 -1
- package/dist/types/account-id.js +18 -35
- package/dist/types/account-id.js.map +1 -1
- package/dist/types/amount.js +71 -88
- package/dist/types/amount.js.map +1 -1
- package/dist/types/blob.js +10 -27
- package/dist/types/blob.js.map +1 -1
- package/dist/types/currency.js +26 -44
- package/dist/types/currency.js.map +1 -1
- package/dist/types/hash-128.d.ts +6 -0
- package/dist/types/hash-128.js +23 -25
- package/dist/types/hash-128.js.map +1 -1
- package/dist/types/hash-160.js +8 -25
- package/dist/types/hash-160.js.map +1 -1
- package/dist/types/hash-256.js +8 -25
- package/dist/types/hash-256.js.map +1 -1
- package/dist/types/hash.js +20 -38
- package/dist/types/hash.js.map +1 -1
- package/dist/types/index.js +18 -18
- package/dist/types/index.js.map +1 -1
- package/dist/types/path-set.js +57 -87
- package/dist/types/path-set.js.map +1 -1
- package/dist/types/serialized-type.d.ts +3 -3
- package/dist/types/serialized-type.js +35 -56
- package/dist/types/serialized-type.js.map +1 -1
- package/dist/types/st-array.js +26 -46
- package/dist/types/st-array.js.map +1 -1
- package/dist/types/st-object.js +49 -73
- package/dist/types/st-object.js.map +1 -1
- package/dist/types/uint-16.js +15 -32
- package/dist/types/uint-16.js.map +1 -1
- package/dist/types/uint-32.js +16 -33
- package/dist/types/uint-32.js.map +1 -1
- package/dist/types/uint-64.d.ts +1 -1
- package/dist/types/uint-64.js +30 -47
- package/dist/types/uint-64.js.map +1 -1
- package/dist/types/uint-8.js +15 -32
- package/dist/types/uint-8.js.map +1 -1
- package/dist/types/uint.d.ts +1 -1
- package/dist/types/uint.js +10 -27
- package/dist/types/uint.js.map +1 -1
- package/dist/types/vector-256.js +23 -40
- package/dist/types/vector-256.js.map +1 -1
- package/package.json +6 -8
- package/test/amount.test.js +1 -1
- package/test/binary-json.test.js +1 -1
- package/test/binary-parser.test.js +4 -4
- package/test/binary-serializer.test.js +3 -3
- package/test/fixtures/data-driven-tests.json +0 -14
- package/test/hash.test.js +28 -2
- package/test/ledger.test.js +1 -1
- package/test/lower-case-hex.test.js +1 -1
- package/test/pseudo-transaction.test.js +1 -1
- package/test/quality.test.js +1 -1
- package/test/shamap.test.js +3 -3
- package/test/signing-data-encoding.test.js +1 -1
- package/test/tx-encode-decode.test.js +1 -1
- package/test/types.test.js +2 -2
- package/test/uint.test.js +2 -2
- package/test/x-address.test.js +1 -1
package/dist/ledger-hashes.js
CHANGED
|
@@ -1,18 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
26
|
exports.decodeLedgerData = exports.ledgerHash = exports.transactionTreeHash = exports.accountStateHash = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
27
|
+
const assert = __importStar(require("assert"));
|
|
28
|
+
const shamap_1 = require("./shamap");
|
|
29
|
+
const hash_prefixes_1 = require("./hash-prefixes");
|
|
30
|
+
const hashes_1 = require("./hashes");
|
|
31
|
+
const binary_1 = require("./binary");
|
|
32
|
+
const hash_256_1 = require("./types/hash-256");
|
|
33
|
+
const st_object_1 = require("./types/st-object");
|
|
34
|
+
const uint_64_1 = require("./types/uint-64");
|
|
35
|
+
const uint_32_1 = require("./types/uint-32");
|
|
36
|
+
const uint_8_1 = require("./types/uint-8");
|
|
37
|
+
const binary_parser_1 = require("./serdes/binary-parser");
|
|
38
|
+
const bigInt = require("big-integer");
|
|
16
39
|
/**
|
|
17
40
|
* Computes the hash of a list of objects
|
|
18
41
|
*
|
|
@@ -21,8 +44,8 @@ var bigInt = require("big-integer");
|
|
|
21
44
|
* @returns the hash of the SHAMap
|
|
22
45
|
*/
|
|
23
46
|
function computeHash(itemizer, itemsJson) {
|
|
24
|
-
|
|
25
|
-
itemsJson.forEach(
|
|
47
|
+
const map = new shamap_1.ShaMap();
|
|
48
|
+
itemsJson.forEach((item) => map.addItem(...itemizer(item)));
|
|
26
49
|
return map.hash();
|
|
27
50
|
}
|
|
28
51
|
/**
|
|
@@ -33,13 +56,13 @@ function computeHash(itemizer, itemsJson) {
|
|
|
33
56
|
*/
|
|
34
57
|
function transactionItemizer(json) {
|
|
35
58
|
assert.ok(json.hash);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
hashPrefix
|
|
59
|
+
const index = hash_256_1.Hash256.from(json.hash);
|
|
60
|
+
const item = {
|
|
61
|
+
hashPrefix() {
|
|
39
62
|
return hash_prefixes_1.HashPrefix.transaction;
|
|
40
63
|
},
|
|
41
|
-
toBytesSink
|
|
42
|
-
|
|
64
|
+
toBytesSink(sink) {
|
|
65
|
+
const serializer = new binary_1.BinarySerializer(sink);
|
|
43
66
|
serializer.writeLengthEncoded(st_object_1.STObject.from(json));
|
|
44
67
|
serializer.writeLengthEncoded(st_object_1.STObject.from(json.metaData));
|
|
45
68
|
},
|
|
@@ -53,13 +76,13 @@ function transactionItemizer(json) {
|
|
|
53
76
|
* @returns a tuple of index and item to be added to SHAMap
|
|
54
77
|
*/
|
|
55
78
|
function entryItemizer(json) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
hashPrefix
|
|
79
|
+
const index = hash_256_1.Hash256.from(json.index);
|
|
80
|
+
const bytes = (0, binary_1.serializeObject)(json);
|
|
81
|
+
const item = {
|
|
82
|
+
hashPrefix() {
|
|
60
83
|
return hash_prefixes_1.HashPrefix.accountStateEntry;
|
|
61
84
|
},
|
|
62
|
-
toBytesSink
|
|
85
|
+
toBytesSink(sink) {
|
|
63
86
|
sink.put(bytes);
|
|
64
87
|
},
|
|
65
88
|
};
|
|
@@ -72,7 +95,7 @@ function entryItemizer(json) {
|
|
|
72
95
|
* @returns A Hash256 object
|
|
73
96
|
*/
|
|
74
97
|
function transactionTreeHash(param) {
|
|
75
|
-
|
|
98
|
+
const itemizer = transactionItemizer;
|
|
76
99
|
return computeHash(itemizer, param);
|
|
77
100
|
}
|
|
78
101
|
exports.transactionTreeHash = transactionTreeHash;
|
|
@@ -83,7 +106,7 @@ exports.transactionTreeHash = transactionTreeHash;
|
|
|
83
106
|
* @returns A Hash256 object
|
|
84
107
|
*/
|
|
85
108
|
function accountStateHash(param) {
|
|
86
|
-
|
|
109
|
+
const itemizer = entryItemizer;
|
|
87
110
|
return computeHash(itemizer, param);
|
|
88
111
|
}
|
|
89
112
|
exports.accountStateHash = accountStateHash;
|
|
@@ -94,7 +117,7 @@ exports.accountStateHash = accountStateHash;
|
|
|
94
117
|
* @returns the hash of header
|
|
95
118
|
*/
|
|
96
119
|
function ledgerHash(header) {
|
|
97
|
-
|
|
120
|
+
const hash = new hashes_1.Sha512Half();
|
|
98
121
|
hash.put(hash_prefixes_1.HashPrefix.ledgerHeader);
|
|
99
122
|
assert.ok(header.parent_close_time !== undefined);
|
|
100
123
|
assert.ok(header.close_flags !== undefined);
|
|
@@ -118,7 +141,7 @@ exports.ledgerHash = ledgerHash;
|
|
|
118
141
|
*/
|
|
119
142
|
function decodeLedgerData(binary) {
|
|
120
143
|
assert.ok(typeof binary === 'string', 'binary must be a hex string');
|
|
121
|
-
|
|
144
|
+
const parser = new binary_parser_1.BinaryParser(binary);
|
|
122
145
|
return {
|
|
123
146
|
ledger_index: parser.readUInt32(),
|
|
124
147
|
total_coins: parser.readType(uint_64_1.UInt64).valueOf().toString(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger-hashes.js","sourceRoot":"","sources":["../src/ledger-hashes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ledger-hashes.js","sourceRoot":"","sources":["../src/ledger-hashes.ts"],"names":[],"mappings":"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"}
|
package/dist/quality.js
CHANGED
|
@@ -1,43 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.quality = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
const types_1 = require("./types");
|
|
5
|
+
const decimal_js_1 = require("decimal.js");
|
|
6
|
+
const bigInt = require("big-integer");
|
|
7
|
+
const buffer_1 = require("buffer/");
|
|
8
8
|
/**
|
|
9
9
|
* class for encoding and decoding quality
|
|
10
10
|
*/
|
|
11
|
-
|
|
12
|
-
function quality() {
|
|
13
|
-
}
|
|
11
|
+
class quality {
|
|
14
12
|
/**
|
|
15
13
|
* Encode quality amount
|
|
16
14
|
*
|
|
17
15
|
* @param arg string representation of an amount
|
|
18
16
|
* @returns Serialized quality
|
|
19
17
|
*/
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
18
|
+
static encode(quality) {
|
|
19
|
+
const decimal = new decimal_js_1.Decimal(quality);
|
|
20
|
+
const exponent = decimal.e - 15;
|
|
21
|
+
const qualityString = decimal.times(`1e${-exponent}`).abs().toString();
|
|
22
|
+
const bytes = types_1.coreTypes.UInt64.from(bigInt(qualityString)).toBytes();
|
|
25
23
|
bytes[0] = exponent + 100;
|
|
26
24
|
return bytes;
|
|
27
|
-
}
|
|
25
|
+
}
|
|
28
26
|
/**
|
|
29
27
|
* Decode quality amount
|
|
30
28
|
*
|
|
31
29
|
* @param arg hex-string denoting serialized quality
|
|
32
30
|
* @returns deserialized quality
|
|
33
31
|
*/
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return mantissa.times(
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
}());
|
|
32
|
+
static decode(quality) {
|
|
33
|
+
const bytes = buffer_1.Buffer.from(quality, 'hex').slice(-8);
|
|
34
|
+
const exponent = bytes[0] - 100;
|
|
35
|
+
const mantissa = new decimal_js_1.Decimal(`0x${bytes.slice(1).toString('hex')}`);
|
|
36
|
+
return mantissa.times(`1e${exponent}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
42
39
|
exports.quality = quality;
|
|
43
40
|
//# sourceMappingURL=quality.js.map
|
package/dist/quality.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quality.js","sourceRoot":"","sources":["../src/quality.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"quality.js","sourceRoot":"","sources":["../src/quality.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AACnC,2CAAoC;AACpC,sCAAsC;AACtC,oCAAgC;AAEhC;;GAEG;AACH,MAAM,OAAO;IACX;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,OAAe;QAC3B,MAAM,OAAO,GAAG,IAAI,oBAAO,CAAC,OAAO,CAAC,CAAA;QACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,GAAG,EAAE,CAAA;QAC/B,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAA;QACtE,MAAM,KAAK,GAAG,iBAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;QACpE,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,GAAG,CAAA;QACzB,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,OAAe;QAC3B,MAAM,KAAK,GAAG,eAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;QAC/B,MAAM,QAAQ,GAAG,IAAI,oBAAO,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACnE,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAA;IACxC,CAAC;CACF;AAEQ,0BAAO"}
|
|
@@ -1,19 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
26
|
exports.BinaryParser = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
27
|
+
const assert = __importStar(require("assert"));
|
|
28
|
+
const enums_1 = require("../enums");
|
|
29
|
+
const buffer_1 = require("buffer/");
|
|
7
30
|
/**
|
|
8
31
|
* BinaryParser is used to compute fields and values from a HexString
|
|
9
32
|
*/
|
|
10
|
-
|
|
33
|
+
class BinaryParser {
|
|
11
34
|
/**
|
|
12
35
|
* Initialize bytes to a hex string
|
|
13
36
|
*
|
|
14
37
|
* @param hexBytes a hex string
|
|
15
38
|
*/
|
|
16
|
-
|
|
39
|
+
constructor(hexBytes) {
|
|
17
40
|
this.bytes = buffer_1.Buffer.from(hexBytes, 'hex');
|
|
18
41
|
}
|
|
19
42
|
/**
|
|
@@ -21,94 +44,94 @@ var BinaryParser = /** @class */ (function () {
|
|
|
21
44
|
*
|
|
22
45
|
* @returns The first byte of the BinaryParser
|
|
23
46
|
*/
|
|
24
|
-
|
|
47
|
+
peek() {
|
|
25
48
|
assert.ok(this.bytes.byteLength !== 0);
|
|
26
49
|
return this.bytes[0];
|
|
27
|
-
}
|
|
50
|
+
}
|
|
28
51
|
/**
|
|
29
52
|
* Consume the first n bytes of the BinaryParser
|
|
30
53
|
*
|
|
31
54
|
* @param n the number of bytes to skip
|
|
32
55
|
*/
|
|
33
|
-
|
|
56
|
+
skip(n) {
|
|
34
57
|
assert.ok(n <= this.bytes.byteLength);
|
|
35
58
|
this.bytes = this.bytes.slice(n);
|
|
36
|
-
}
|
|
59
|
+
}
|
|
37
60
|
/**
|
|
38
61
|
* read the first n bytes from the BinaryParser
|
|
39
62
|
*
|
|
40
63
|
* @param n The number of bytes to read
|
|
41
64
|
* @return The bytes
|
|
42
65
|
*/
|
|
43
|
-
|
|
66
|
+
read(n) {
|
|
44
67
|
assert.ok(n <= this.bytes.byteLength);
|
|
45
|
-
|
|
68
|
+
const slice = this.bytes.slice(0, n);
|
|
46
69
|
this.skip(n);
|
|
47
70
|
return slice;
|
|
48
|
-
}
|
|
71
|
+
}
|
|
49
72
|
/**
|
|
50
73
|
* Read an integer of given size
|
|
51
74
|
*
|
|
52
75
|
* @param n The number of bytes to read
|
|
53
76
|
* @return The number represented by those bytes
|
|
54
77
|
*/
|
|
55
|
-
|
|
78
|
+
readUIntN(n) {
|
|
56
79
|
assert.ok(0 < n && n <= 4, 'invalid n');
|
|
57
|
-
return this.read(n).reduce(
|
|
58
|
-
}
|
|
59
|
-
|
|
80
|
+
return this.read(n).reduce((a, b) => (a << 8) | b) >>> 0;
|
|
81
|
+
}
|
|
82
|
+
readUInt8() {
|
|
60
83
|
return this.readUIntN(1);
|
|
61
|
-
}
|
|
62
|
-
|
|
84
|
+
}
|
|
85
|
+
readUInt16() {
|
|
63
86
|
return this.readUIntN(2);
|
|
64
|
-
}
|
|
65
|
-
|
|
87
|
+
}
|
|
88
|
+
readUInt32() {
|
|
66
89
|
return this.readUIntN(4);
|
|
67
|
-
}
|
|
68
|
-
|
|
90
|
+
}
|
|
91
|
+
size() {
|
|
69
92
|
return this.bytes.byteLength;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
93
|
+
}
|
|
94
|
+
end(customEnd) {
|
|
95
|
+
const length = this.bytes.byteLength;
|
|
73
96
|
return length === 0 || (customEnd !== undefined && length <= customEnd);
|
|
74
|
-
}
|
|
97
|
+
}
|
|
75
98
|
/**
|
|
76
99
|
* Reads variable length encoded bytes
|
|
77
100
|
*
|
|
78
101
|
* @return The variable length bytes
|
|
79
102
|
*/
|
|
80
|
-
|
|
103
|
+
readVariableLength() {
|
|
81
104
|
return this.read(this.readVariableLengthLength());
|
|
82
|
-
}
|
|
105
|
+
}
|
|
83
106
|
/**
|
|
84
107
|
* Reads the length of the variable length encoded bytes
|
|
85
108
|
*
|
|
86
109
|
* @return The length of the variable length encoded bytes
|
|
87
110
|
*/
|
|
88
|
-
|
|
89
|
-
|
|
111
|
+
readVariableLengthLength() {
|
|
112
|
+
const b1 = this.readUInt8();
|
|
90
113
|
if (b1 <= 192) {
|
|
91
114
|
return b1;
|
|
92
115
|
}
|
|
93
116
|
else if (b1 <= 240) {
|
|
94
|
-
|
|
117
|
+
const b2 = this.readUInt8();
|
|
95
118
|
return 193 + (b1 - 193) * 256 + b2;
|
|
96
119
|
}
|
|
97
120
|
else if (b1 <= 254) {
|
|
98
|
-
|
|
99
|
-
|
|
121
|
+
const b2 = this.readUInt8();
|
|
122
|
+
const b3 = this.readUInt8();
|
|
100
123
|
return 12481 + (b1 - 241) * 65536 + b2 * 256 + b3;
|
|
101
124
|
}
|
|
102
125
|
throw new Error('Invalid variable length indicator');
|
|
103
|
-
}
|
|
126
|
+
}
|
|
104
127
|
/**
|
|
105
128
|
* Reads the field ordinal from the BinaryParser
|
|
106
129
|
*
|
|
107
130
|
* @return Field ordinal
|
|
108
131
|
*/
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
132
|
+
readFieldOrdinal() {
|
|
133
|
+
let type = this.readUInt8();
|
|
134
|
+
let nth = type & 15;
|
|
112
135
|
type >>= 4;
|
|
113
136
|
if (type === 0) {
|
|
114
137
|
type = this.readUInt8();
|
|
@@ -123,63 +146,62 @@ var BinaryParser = /** @class */ (function () {
|
|
|
123
146
|
}
|
|
124
147
|
}
|
|
125
148
|
return (type << 16) | nth;
|
|
126
|
-
}
|
|
149
|
+
}
|
|
127
150
|
/**
|
|
128
151
|
* Read the field from the BinaryParser
|
|
129
152
|
*
|
|
130
153
|
* @return The field represented by the bytes at the head of the BinaryParser
|
|
131
154
|
*/
|
|
132
|
-
|
|
155
|
+
readField() {
|
|
133
156
|
return enums_1.Field.fromString(this.readFieldOrdinal().toString());
|
|
134
|
-
}
|
|
157
|
+
}
|
|
135
158
|
/**
|
|
136
159
|
* Read a given type from the BinaryParser
|
|
137
160
|
*
|
|
138
161
|
* @param type The type that you want to read from the BinaryParser
|
|
139
162
|
* @return The instance of that type read from the BinaryParser
|
|
140
163
|
*/
|
|
141
|
-
|
|
164
|
+
readType(type) {
|
|
142
165
|
return type.fromParser(this);
|
|
143
|
-
}
|
|
166
|
+
}
|
|
144
167
|
/**
|
|
145
168
|
* Get the type associated with a given field
|
|
146
169
|
*
|
|
147
170
|
* @param field The field that you wan to get the type of
|
|
148
171
|
* @return The type associated with the given field
|
|
149
172
|
*/
|
|
150
|
-
|
|
173
|
+
typeForField(field) {
|
|
151
174
|
return field.associatedType;
|
|
152
|
-
}
|
|
175
|
+
}
|
|
153
176
|
/**
|
|
154
177
|
* Read value of the type specified by field from the BinaryParser
|
|
155
178
|
*
|
|
156
179
|
* @param field The field that you want to get the associated value for
|
|
157
180
|
* @return The value associated with the given field
|
|
158
181
|
*/
|
|
159
|
-
|
|
160
|
-
|
|
182
|
+
readFieldValue(field) {
|
|
183
|
+
const type = this.typeForField(field);
|
|
161
184
|
if (!type) {
|
|
162
|
-
throw new Error(
|
|
185
|
+
throw new Error(`unsupported: (${field.name}, ${field.type.name})`);
|
|
163
186
|
}
|
|
164
|
-
|
|
187
|
+
const sizeHint = field.isVariableLengthEncoded
|
|
165
188
|
? this.readVariableLengthLength()
|
|
166
189
|
: undefined;
|
|
167
|
-
|
|
190
|
+
const value = type.fromParser(this, sizeHint);
|
|
168
191
|
if (value === undefined) {
|
|
169
|
-
throw new Error(
|
|
192
|
+
throw new Error(`fromParser for (${field.name}, ${field.type.name}) -> undefined `);
|
|
170
193
|
}
|
|
171
194
|
return value;
|
|
172
|
-
}
|
|
195
|
+
}
|
|
173
196
|
/**
|
|
174
197
|
* Get the next field and value from the BinaryParser
|
|
175
198
|
*
|
|
176
199
|
* @return The field and value
|
|
177
200
|
*/
|
|
178
|
-
|
|
179
|
-
|
|
201
|
+
readFieldAndValue() {
|
|
202
|
+
const field = this.readField();
|
|
180
203
|
return [field, this.readFieldValue(field)];
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
}());
|
|
204
|
+
}
|
|
205
|
+
}
|
|
184
206
|
exports.BinaryParser = BinaryParser;
|
|
185
207
|
//# sourceMappingURL=binary-parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binary-parser.js","sourceRoot":"","sources":["../../src/serdes/binary-parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"binary-parser.js","sourceRoot":"","sources":["../../src/serdes/binary-parser.ts"],"names":[],"mappings":"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"}
|