@transia/ripple-binary-codec 1.4.6-alpha.9 → 2.5.2-alpha.0
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.d.ts +30 -16
- package/dist/binary.js +36 -16
- package/dist/binary.js.map +1 -1
- package/dist/enums/bytes.d.ts +1 -2
- package/dist/enums/bytes.js +3 -2
- package/dist/enums/bytes.js.map +1 -1
- package/dist/enums/constants.d.ts +1 -0
- package/dist/enums/constants.js +6 -5
- package/dist/enums/constants.js.map +1 -1
- package/dist/enums/definitions.json +1604 -969
- package/dist/enums/field.d.ts +1 -2
- package/dist/enums/field.js +1 -2
- package/dist/enums/field.js.map +1 -1
- package/dist/enums/index.d.ts +1 -2
- package/dist/enums/index.js +5 -27
- package/dist/enums/index.js.map +1 -1
- package/dist/enums/src/enums/definitions.json +1606 -971
- package/dist/enums/xrpl-definitions-base.d.ts +5 -3
- package/dist/enums/xrpl-definitions-base.js +26 -6
- package/dist/enums/xrpl-definitions-base.js.map +1 -1
- package/dist/enums/xrpl-definitions.d.ts +2 -1
- package/dist/enums/xrpl-definitions.js +2 -1
- package/dist/enums/xrpl-definitions.js.map +1 -1
- package/dist/hash-prefixes.d.ts +1 -2
- package/dist/hash-prefixes.js +8 -6
- package/dist/hash-prefixes.js.map +1 -1
- package/dist/hashes.d.ts +6 -7
- package/dist/hashes.js +6 -7
- package/dist/hashes.js.map +1 -1
- package/dist/index.d.ts +16 -11
- package/dist/index.js +53 -58
- package/dist/index.js.map +1 -1
- package/dist/ledger-hashes.d.ts +1 -2
- package/dist/ledger-hashes.js +11 -30
- package/dist/ledger-hashes.js.map +1 -1
- package/dist/quality.d.ts +3 -4
- package/dist/quality.js +10 -8
- package/dist/quality.js.map +1 -1
- package/dist/serdes/binary-parser.d.ts +2 -3
- package/dist/serdes/binary-parser.js +16 -32
- package/dist/serdes/binary-parser.js.map +1 -1
- package/dist/serdes/binary-serializer.d.ts +7 -8
- package/dist/serdes/binary-serializer.js +14 -37
- package/dist/serdes/binary-serializer.js.map +1 -1
- package/dist/shamap.d.ts +4 -5
- package/dist/shamap.js +5 -5
- package/dist/shamap.js.map +1 -1
- package/dist/src/binary.d.ts +106 -0
- package/dist/src/binary.js +154 -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 +65 -0
- package/dist/src/enums/bytes.js.map +1 -0
- package/dist/src/enums/constants.d.ts +5 -0
- package/dist/src/enums/constants.js +9 -0
- package/dist/src/enums/constants.js.map +1 -0
- package/dist/src/enums/definitions.json +3404 -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 +47 -0
- package/dist/src/enums/xrpl-definitions-base.js +83 -0
- package/dist/src/enums/xrpl-definitions-base.js.map +1 -0
- package/dist/src/enums/xrpl-definitions.d.ts +22 -0
- package/dist/src/enums/xrpl-definitions.js +30 -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 +43 -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 +69 -0
- package/dist/src/index.js +134 -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 +37 -0
- package/dist/src/types/account-id.js +73 -0
- package/dist/src/types/account-id.js.map +1 -0
- package/dist/src/types/amount.d.ts +92 -0
- package/dist/src/types/amount.js +292 -0
- package/dist/src/types/amount.js.map +1 -0
- package/dist/src/types/blob.d.ts +25 -0
- package/dist/src/types/blob.js +46 -0
- package/dist/src/types/blob.js.map +1 -0
- package/dist/src/types/currency.d.ts +30 -0
- package/dist/src/types/currency.js +131 -0
- package/dist/src/types/currency.js.map +1 -0
- package/dist/src/types/data.d.ts +104 -0
- package/dist/src/types/data.js +387 -0
- package/dist/src/types/data.js.map +1 -0
- package/dist/src/types/dataType.d.ts +94 -0
- package/dist/src/types/dataType.js +145 -0
- package/dist/src/types/dataType.js.map +1 -0
- package/dist/src/types/hash-128.d.ts +18 -0
- package/dist/src/types/hash-128.js +36 -0
- package/dist/src/types/hash-128.js.map +1 -0
- package/dist/src/types/hash-160.d.ts +12 -0
- package/dist/src/types/hash-160.js +23 -0
- package/dist/src/types/hash-160.js.map +1 -0
- package/dist/src/types/hash-192.d.ts +12 -0
- package/dist/src/types/hash-192.js +23 -0
- package/dist/src/types/hash-192.js.map +1 -0
- package/dist/src/types/hash-256.d.ts +12 -0
- package/dist/src/types/hash-256.js +20 -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 +76 -0
- package/dist/src/types/hash.js.map +1 -0
- package/dist/src/types/index.d.ts +21 -0
- package/dist/src/types/index.js +72 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/issue.d.ts +49 -0
- package/dist/src/types/issue.js +107 -0
- package/dist/src/types/issue.js.map +1 -0
- package/dist/src/types/json.d.ts +169 -0
- package/dist/src/types/json.js +529 -0
- package/dist/src/types/json.js.map +1 -0
- package/dist/src/types/path-set.d.ts +37 -0
- package/dist/src/types/path-set.js +236 -0
- package/dist/src/types/path-set.js.map +1 -0
- package/dist/src/types/serialized-type.d.ts +117 -0
- package/dist/src/types/serialized-type.js +242 -0
- package/dist/src/types/serialized-type.js.map +1 -0
- package/dist/src/types/st-array.d.ts +32 -0
- package/dist/src/types/st-array.js +89 -0
- package/dist/src/types/st-array.js.map +1 -0
- package/dist/src/types/st-number.d.ts +55 -0
- package/dist/src/types/st-number.js +212 -0
- package/dist/src/types/st-number.js.map +1 -0
- package/dist/src/types/st-object.d.ts +33 -0
- package/dist/src/types/st-object.js +176 -0
- package/dist/src/types/st-object.js.map +1 -0
- package/dist/src/types/uint-16.d.ts +26 -0
- package/dist/src/types/uint-16.js +49 -0
- package/dist/src/types/uint-16.js.map +1 -0
- package/dist/src/types/uint-32.d.ts +26 -0
- package/dist/src/types/uint-32.js +54 -0
- package/dist/src/types/uint-32.js.map +1 -0
- package/dist/src/types/uint-64.d.ts +40 -0
- package/dist/src/types/uint-64.js +112 -0
- package/dist/src/types/uint-64.js.map +1 -0
- package/dist/src/types/uint-8.d.ts +26 -0
- package/dist/src/types/uint-8.js +50 -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 +31 -0
- package/dist/src/types/vector-256.js +76 -0
- package/dist/src/types/vector-256.js.map +1 -0
- package/dist/src/types/xchain-bridge.d.ts +45 -0
- package/dist/src/types/xchain-bridge.js +105 -0
- package/dist/src/types/xchain-bridge.js.map +1 -0
- package/dist/src/utils.d.ts +79 -0
- package/dist/src/utils.js +181 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/account-id.d.ts +3 -2
- package/dist/types/account-id.js +8 -6
- package/dist/types/account-id.js.map +1 -1
- package/dist/types/amount.d.ts +33 -9
- package/dist/types/amount.js +128 -43
- package/dist/types/amount.js.map +1 -1
- package/dist/types/blob.d.ts +3 -3
- package/dist/types/blob.js +8 -2
- package/dist/types/blob.js.map +1 -1
- package/dist/types/currency.d.ts +3 -2
- package/dist/types/currency.js +17 -13
- package/dist/types/currency.js.map +1 -1
- package/dist/types/data.d.ts +104 -0
- package/dist/types/data.js +387 -0
- package/dist/types/data.js.map +1 -0
- package/dist/types/dataType.d.ts +94 -0
- package/dist/types/dataType.js +145 -0
- package/dist/types/dataType.js.map +1 -0
- package/dist/types/hash-128.d.ts +3 -2
- package/dist/types/hash-128.js +7 -3
- package/dist/types/hash-128.js.map +1 -1
- package/dist/types/hash-160.d.ts +3 -2
- package/dist/types/hash-160.js +5 -2
- package/dist/types/hash-160.js.map +1 -1
- package/dist/types/hash-192.d.ts +12 -0
- package/dist/types/hash-192.js +23 -0
- package/dist/types/hash-192.js.map +1 -0
- package/dist/types/hash-256.d.ts +3 -2
- package/dist/types/hash-256.js +5 -2
- package/dist/types/hash-256.js.map +1 -1
- package/dist/types/hash.d.ts +2 -3
- package/dist/types/hash.js +8 -4
- package/dist/types/hash.js.map +1 -1
- package/dist/types/index.d.ts +4 -1
- package/dist/types/index.js +17 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/issue.d.ts +49 -0
- package/dist/types/issue.js +107 -0
- package/dist/types/issue.js.map +1 -0
- package/dist/types/json.d.ts +169 -0
- package/dist/types/json.js +529 -0
- package/dist/types/json.js.map +1 -0
- package/dist/types/path-set.d.ts +2 -1
- package/dist/types/path-set.js +15 -12
- package/dist/types/path-set.js.map +1 -1
- package/dist/types/serialized-type.d.ts +70 -16
- package/dist/types/serialized-type.js +153 -8
- package/dist/types/serialized-type.js.map +1 -1
- package/dist/types/st-array.d.ts +7 -3
- package/dist/types/st-array.js +20 -11
- package/dist/types/st-array.js.map +1 -1
- package/dist/types/st-number.d.ts +55 -0
- package/dist/types/st-number.js +212 -0
- package/dist/types/st-number.js.map +1 -0
- package/dist/types/st-object.d.ts +2 -1
- package/dist/types/st-object.js +35 -8
- package/dist/types/st-object.js.map +1 -1
- package/dist/types/uint-16.d.ts +3 -2
- package/dist/types/uint-16.js +10 -5
- package/dist/types/uint-16.js.map +1 -1
- package/dist/types/uint-32.d.ts +3 -2
- package/dist/types/uint-32.js +11 -6
- package/dist/types/uint-32.js.map +1 -1
- package/dist/types/uint-64.d.ts +8 -7
- package/dist/types/uint-64.js +49 -24
- package/dist/types/uint-64.js.map +1 -1
- package/dist/types/uint-8.d.ts +3 -2
- package/dist/types/uint-8.js +11 -5
- package/dist/types/uint-8.js.map +1 -1
- package/dist/types/uint.d.ts +5 -6
- package/dist/types/uint.js +5 -0
- package/dist/types/uint.js.map +1 -1
- package/dist/types/vector-256.d.ts +3 -3
- package/dist/types/vector-256.js +5 -4
- package/dist/types/vector-256.js.map +1 -1
- package/dist/types/xchain-bridge.d.ts +45 -0
- package/dist/types/xchain-bridge.js +105 -0
- package/dist/types/xchain-bridge.js.map +1 -0
- package/dist/utils.d.ts +79 -0
- package/dist/utils.js +181 -0
- package/dist/utils.js.map +1 -0
- package/package.json +21 -17
- package/src/README.md +5 -0
- package/src/binary.ts +235 -0
- package/src/coretypes.ts +31 -0
- package/src/enums/README.md +144 -0
- package/src/enums/bytes.ts +80 -0
- package/src/enums/constants.ts +5 -0
- package/src/enums/definitions.json +3409 -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 +150 -0
- package/src/enums/xrpl-definitions.ts +33 -0
- package/src/hash-prefixes.ts +42 -0
- package/src/hashes.ts +75 -0
- package/src/index.ts +166 -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 +189 -0
- package/src/types/account-id.ts +91 -0
- package/src/types/amount.ts +366 -0
- package/src/types/blob.ts +50 -0
- package/src/types/currency.ts +145 -0
- package/src/types/data.ts +496 -0
- package/src/types/dataType.ts +178 -0
- package/src/types/hash-128.ts +38 -0
- package/src/types/hash-160.ts +24 -0
- package/src/types/hash-192.ts +24 -0
- package/src/types/hash-256.ts +20 -0
- package/src/types/hash.ts +86 -0
- package/src/types/index.ts +74 -0
- package/src/types/issue.ts +140 -0
- package/src/types/json.ts +641 -0
- package/src/types/path-set.ts +294 -0
- package/src/types/serialized-type.ts +271 -0
- package/src/types/st-array.ts +117 -0
- package/src/types/st-number.ts +238 -0
- package/src/types/st-object.ts +219 -0
- package/src/types/uint-16.ts +58 -0
- package/src/types/uint-32.ts +64 -0
- package/src/types/uint-64.ts +141 -0
- package/src/types/uint-8.ts +57 -0
- package/src/types/uint.ts +60 -0
- package/src/types/vector-256.ts +83 -0
- package/src/types/xchain-bridge.ts +132 -0
- package/src/utils.ts +220 -0
- package/test/amount.test.js +0 -43
- package/test/binary-json.test.js +0 -45
- package/test/binary-parser.test.js +0 -396
- package/test/binary-serializer.test.js +0 -319
- package/test/definitions.test.js +0 -100
- 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 -2919
- 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/nf-token.json +0 -547
- 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/remit-binary.json +0 -1
- package/test/fixtures/remit-tx.json +0 -39
- 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/unl-report-binary.json +0 -1
- package/test/fixtures/unl-report-meta-binary.json +0 -1
- package/test/fixtures/unl-report.json +0 -89
- package/test/fixtures/x-codec-fixtures.json +0 -188
- package/test/hash.test.js +0 -135
- package/test/ledger.test.js +0 -29
- package/test/lower-case-hex.test.js +0 -46
- 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 -213
- package/test/tx-encode-decode.test.js +0 -119
- package/test/types.test.js +0 -34
- package/test/uint.test.js +0 -148
- package/test/utils.js +0 -30
- package/test/x-address.test.js +0 -181
|
@@ -0,0 +1,529 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.STJson = void 0;
|
|
4
|
+
/* eslint-disable max-lines */
|
|
5
|
+
/* eslint-disable complexity */
|
|
6
|
+
const binary_parser_1 = require("../serdes/binary-parser");
|
|
7
|
+
const serialized_type_1 = require("./serialized-type");
|
|
8
|
+
const utils_1 = require("@transia/isomorphic/utils");
|
|
9
|
+
const binary_serializer_1 = require("../serdes/binary-serializer");
|
|
10
|
+
/**
|
|
11
|
+
* STJson: Serialized Type for JSON-like structures (objects or arrays).
|
|
12
|
+
*
|
|
13
|
+
* Supports two modes:
|
|
14
|
+
* - Object: Key-value pairs where keys are VL-encoded strings
|
|
15
|
+
* - Array: Ordered list of values
|
|
16
|
+
*
|
|
17
|
+
* Values are [SType marker][VL-encoded SType serialization].
|
|
18
|
+
* Values can be any SType, including nested STJson.
|
|
19
|
+
*
|
|
20
|
+
* Serialization format: [type_byte][VL_length][data...]
|
|
21
|
+
* - type_byte: 0x00 = Object, 0x01 = Array
|
|
22
|
+
*
|
|
23
|
+
* Depth constraint: Maximum nesting depth of 1 level
|
|
24
|
+
*/
|
|
25
|
+
class STJson extends serialized_type_1.SerializedType {
|
|
26
|
+
/**
|
|
27
|
+
* Construct STJson from bytes
|
|
28
|
+
* @param bytes - Uint8Array containing serialized JSON
|
|
29
|
+
*/
|
|
30
|
+
constructor(bytes) {
|
|
31
|
+
super(bytes);
|
|
32
|
+
this.default_ = false;
|
|
33
|
+
this.data = new Map();
|
|
34
|
+
this.jsonType = STJson.JsonType.Object;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Parse STJson from BinaryParser
|
|
38
|
+
*
|
|
39
|
+
* @param parser - BinaryParser positioned at the start of STJson
|
|
40
|
+
* @returns STJson instance
|
|
41
|
+
*/
|
|
42
|
+
static fromParser(parser) {
|
|
43
|
+
const dataLength = parser.readVariableLengthLength();
|
|
44
|
+
if (dataLength < 0) {
|
|
45
|
+
throw new Error('Invalid STJson length');
|
|
46
|
+
}
|
|
47
|
+
if (dataLength === 0) {
|
|
48
|
+
const json = new STJson(new Uint8Array());
|
|
49
|
+
json.data = new Map();
|
|
50
|
+
return json;
|
|
51
|
+
}
|
|
52
|
+
// Read type byte
|
|
53
|
+
const typeByte = parser.read(1)[0];
|
|
54
|
+
const type = typeByte;
|
|
55
|
+
const initialBytesLeft = parser.size();
|
|
56
|
+
if (type === STJson.JsonType.Array) {
|
|
57
|
+
const array = [];
|
|
58
|
+
while (parser.size() > 0 &&
|
|
59
|
+
initialBytesLeft - parser.size() < dataLength) {
|
|
60
|
+
const valueVL = parser.readVariableLength();
|
|
61
|
+
if (valueVL.length > 0) {
|
|
62
|
+
const valueSit = new binary_parser_1.BinaryParser((0, utils_1.bytesToHex)(valueVL));
|
|
63
|
+
const value = STJson.makeValueFromVLWithType(valueSit);
|
|
64
|
+
array.push(value);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
array.push(null);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const json = new STJson(new Uint8Array());
|
|
71
|
+
json.data = array;
|
|
72
|
+
json.jsonType = STJson.JsonType.Array;
|
|
73
|
+
return json;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
// JsonType.Object
|
|
77
|
+
const map = new Map();
|
|
78
|
+
while (parser.size() > 0 &&
|
|
79
|
+
initialBytesLeft - parser.size() < dataLength) {
|
|
80
|
+
const [key, value] = STJson.parsePair(parser);
|
|
81
|
+
map.set(key, value);
|
|
82
|
+
}
|
|
83
|
+
const json = new STJson(new Uint8Array());
|
|
84
|
+
json.data = map;
|
|
85
|
+
json.jsonType = STJson.JsonType.Object;
|
|
86
|
+
return json;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Parse a single key-value pair from the parser
|
|
91
|
+
*/
|
|
92
|
+
static parsePair(parser) {
|
|
93
|
+
const keyVL = parser.readVariableLength();
|
|
94
|
+
const key = new TextDecoder().decode(keyVL);
|
|
95
|
+
const valueVL = parser.readVariableLength();
|
|
96
|
+
let value = null;
|
|
97
|
+
if (valueVL.length > 0) {
|
|
98
|
+
const valueSit = new binary_parser_1.BinaryParser((0, utils_1.bytesToHex)(valueVL));
|
|
99
|
+
value = STJson.makeValueFromVLWithType(valueSit);
|
|
100
|
+
}
|
|
101
|
+
return [key, value];
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Factory for SType value from VL blob (with SType marker)
|
|
105
|
+
*/
|
|
106
|
+
static makeValueFromVLWithType(parser) {
|
|
107
|
+
if (parser.size() === 0) {
|
|
108
|
+
throw new Error('Empty data when parsing STJson value');
|
|
109
|
+
}
|
|
110
|
+
const typeId = parser.read(1)[0];
|
|
111
|
+
// Delegate to appropriate type's fromParser
|
|
112
|
+
// This is a placeholder - actual implementation would dispatch to concrete types
|
|
113
|
+
// For now, we create an STJson if type is Object or Array
|
|
114
|
+
if (typeId === STJson.JsonType.Object || typeId === STJson.JsonType.Array) {
|
|
115
|
+
return STJson.fromParser(parser);
|
|
116
|
+
}
|
|
117
|
+
throw new Error(`Unsupported type ID in STJson: ${typeId}`);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Check if this is an array type
|
|
121
|
+
*/
|
|
122
|
+
isArray() {
|
|
123
|
+
return this.jsonType === STJson.JsonType.Array;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Check if this is an object type
|
|
127
|
+
*/
|
|
128
|
+
isObject() {
|
|
129
|
+
return this.jsonType === STJson.JsonType.Object;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get the JSON type
|
|
133
|
+
*/
|
|
134
|
+
getType() {
|
|
135
|
+
return this.jsonType;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Get nesting depth (0 = no nesting, 1 = one level of nesting)
|
|
139
|
+
*/
|
|
140
|
+
getDepth() {
|
|
141
|
+
if (this.isArray()) {
|
|
142
|
+
const array = this.data;
|
|
143
|
+
for (const value of array) {
|
|
144
|
+
if (value && value instanceof STJson) {
|
|
145
|
+
return 1 + value.getDepth();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return 0;
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
// isObject()
|
|
152
|
+
const map = this.data;
|
|
153
|
+
for (const value of map.values()) {
|
|
154
|
+
if (value && value instanceof STJson) {
|
|
155
|
+
return 1 + value.getDepth();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return 0;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Validate nesting depth (max 1 level)
|
|
163
|
+
*/
|
|
164
|
+
validateDepth(value, currentDepth) {
|
|
165
|
+
if (!value) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (!(value instanceof STJson)) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
const valueDepth = value.getDepth();
|
|
172
|
+
if (currentDepth + valueDepth > 1) {
|
|
173
|
+
throw new Error('STJson nesting depth exceeds maximum of 1');
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Set a field in an object
|
|
178
|
+
*/
|
|
179
|
+
setObjectField(key, value) {
|
|
180
|
+
if (!this.isObject()) {
|
|
181
|
+
throw new Error('STJson::setObjectField called on non-object');
|
|
182
|
+
}
|
|
183
|
+
this.validateDepth(value, 0);
|
|
184
|
+
this.data.set(key, value);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Get a field from an object
|
|
188
|
+
*/
|
|
189
|
+
getObjectField(key) {
|
|
190
|
+
if (!this.isObject()) {
|
|
191
|
+
return undefined;
|
|
192
|
+
}
|
|
193
|
+
return this.data.get(key);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Set a nested object field (one level deep)
|
|
197
|
+
*/
|
|
198
|
+
setNestedObjectField(key, nestedKey, value) {
|
|
199
|
+
if (!this.isObject()) {
|
|
200
|
+
throw new Error('STJson::setNestedObjectField called on non-object');
|
|
201
|
+
}
|
|
202
|
+
const map = this.data;
|
|
203
|
+
let nestedObj = map.get(key);
|
|
204
|
+
if (!nestedObj || !(nestedObj instanceof STJson) || !nestedObj.isObject()) {
|
|
205
|
+
const newNested = new STJson(new Uint8Array());
|
|
206
|
+
newNested.data = new Map();
|
|
207
|
+
newNested.jsonType = STJson.JsonType.Object;
|
|
208
|
+
map.set(key, newNested);
|
|
209
|
+
nestedObj = newNested;
|
|
210
|
+
}
|
|
211
|
+
if (nestedObj instanceof STJson) {
|
|
212
|
+
nestedObj.setObjectField(nestedKey, value);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Get a nested object field
|
|
217
|
+
*/
|
|
218
|
+
getNestedObjectField(key, nestedKey) {
|
|
219
|
+
if (!this.isObject()) {
|
|
220
|
+
return undefined;
|
|
221
|
+
}
|
|
222
|
+
const nestedObj = this.data.get(key);
|
|
223
|
+
if (nestedObj instanceof STJson && nestedObj.isObject()) {
|
|
224
|
+
return nestedObj.getObjectField(nestedKey);
|
|
225
|
+
}
|
|
226
|
+
return undefined;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Get the inner data as a Map (for objects)
|
|
230
|
+
*/
|
|
231
|
+
getMap() {
|
|
232
|
+
if (!this.isObject()) {
|
|
233
|
+
throw new Error('STJson is not an object type');
|
|
234
|
+
}
|
|
235
|
+
return this.data;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Get the inner data as an array
|
|
239
|
+
*/
|
|
240
|
+
getArray() {
|
|
241
|
+
if (!this.isArray()) {
|
|
242
|
+
throw new Error('STJson is not an array type');
|
|
243
|
+
}
|
|
244
|
+
return this.data;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Push an element to an array
|
|
248
|
+
*/
|
|
249
|
+
pushArrayElement(value) {
|
|
250
|
+
if (!this.isArray()) {
|
|
251
|
+
throw new Error('STJson::pushArrayElement called on non-array');
|
|
252
|
+
}
|
|
253
|
+
this.validateDepth(value, 0);
|
|
254
|
+
this.data.push(value);
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Get an array element by index
|
|
258
|
+
*/
|
|
259
|
+
getArrayElement(index) {
|
|
260
|
+
if (!this.isArray()) {
|
|
261
|
+
return undefined;
|
|
262
|
+
}
|
|
263
|
+
const array = this.data;
|
|
264
|
+
return array[index];
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Set an array element by index
|
|
268
|
+
*/
|
|
269
|
+
setArrayElement(index, value) {
|
|
270
|
+
if (!this.isArray()) {
|
|
271
|
+
throw new Error('STJson::setArrayElement called on non-array');
|
|
272
|
+
}
|
|
273
|
+
this.validateDepth(value, 0);
|
|
274
|
+
const array = this.data;
|
|
275
|
+
// Auto-resize with nulls if needed
|
|
276
|
+
if (index >= array.length) {
|
|
277
|
+
array.length = index + 1;
|
|
278
|
+
array.fill(null);
|
|
279
|
+
}
|
|
280
|
+
array[index] = value;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Set a field within an array element (element must be an object)
|
|
284
|
+
*/
|
|
285
|
+
setArrayElementField(index, key, value) {
|
|
286
|
+
if (!this.isArray()) {
|
|
287
|
+
throw new Error('STJson::setArrayElementField called on non-array');
|
|
288
|
+
}
|
|
289
|
+
this.validateDepth(value, 1);
|
|
290
|
+
const array = this.data;
|
|
291
|
+
// Auto-resize with nulls if needed
|
|
292
|
+
if (index >= array.length) {
|
|
293
|
+
array.length = index + 1;
|
|
294
|
+
array.fill(null);
|
|
295
|
+
}
|
|
296
|
+
let element = array[index];
|
|
297
|
+
if (!element || !(element instanceof STJson) || !element.isObject()) {
|
|
298
|
+
const newElement = new STJson(new Uint8Array());
|
|
299
|
+
newElement.data = new Map();
|
|
300
|
+
newElement.jsonType = STJson.JsonType.Object;
|
|
301
|
+
array[index] = newElement;
|
|
302
|
+
element = newElement;
|
|
303
|
+
}
|
|
304
|
+
if (element instanceof STJson) {
|
|
305
|
+
element.setObjectField(key, value);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Get a field within an array element
|
|
310
|
+
*/
|
|
311
|
+
getArrayElementField(index, key) {
|
|
312
|
+
if (!this.isArray()) {
|
|
313
|
+
return undefined;
|
|
314
|
+
}
|
|
315
|
+
const array = this.data;
|
|
316
|
+
if (index >= array.length) {
|
|
317
|
+
return undefined;
|
|
318
|
+
}
|
|
319
|
+
const element = array[index];
|
|
320
|
+
if (element instanceof STJson && element.isObject()) {
|
|
321
|
+
return element.getObjectField(key);
|
|
322
|
+
}
|
|
323
|
+
return undefined;
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Get the size of the array
|
|
327
|
+
*/
|
|
328
|
+
arraySize() {
|
|
329
|
+
if (!this.isArray()) {
|
|
330
|
+
return 0;
|
|
331
|
+
}
|
|
332
|
+
return this.data.length;
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Set a nested array element (array stored in object field)
|
|
336
|
+
*/
|
|
337
|
+
setNestedArrayElement(key, index, value) {
|
|
338
|
+
if (!this.isObject()) {
|
|
339
|
+
throw new Error('STJson::setNestedArrayElement called on non-object');
|
|
340
|
+
}
|
|
341
|
+
this.validateDepth(value, 1);
|
|
342
|
+
const map = this.data;
|
|
343
|
+
let arrayJson = map.get(key);
|
|
344
|
+
if (!arrayJson || !(arrayJson instanceof STJson) || !arrayJson.isArray()) {
|
|
345
|
+
const newArray = new STJson(new Uint8Array());
|
|
346
|
+
newArray.data = [];
|
|
347
|
+
newArray.jsonType = STJson.JsonType.Array;
|
|
348
|
+
map.set(key, newArray);
|
|
349
|
+
arrayJson = newArray;
|
|
350
|
+
}
|
|
351
|
+
if (arrayJson instanceof STJson) {
|
|
352
|
+
arrayJson.setArrayElement(index, value);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Set a field within a nested array element
|
|
357
|
+
*/
|
|
358
|
+
setNestedArrayElementField(key, index, nestedKey, value) {
|
|
359
|
+
if (!this.isObject()) {
|
|
360
|
+
throw new Error('STJson::setNestedArrayElementField called on non-object');
|
|
361
|
+
}
|
|
362
|
+
this.validateDepth(value, 1);
|
|
363
|
+
const map = this.data;
|
|
364
|
+
let arrayJson = map.get(key);
|
|
365
|
+
if (!arrayJson || !(arrayJson instanceof STJson) || !arrayJson.isArray()) {
|
|
366
|
+
const newArray = new STJson(new Uint8Array());
|
|
367
|
+
newArray.data = [];
|
|
368
|
+
newArray.jsonType = STJson.JsonType.Array;
|
|
369
|
+
map.set(key, newArray);
|
|
370
|
+
arrayJson = newArray;
|
|
371
|
+
}
|
|
372
|
+
if (arrayJson instanceof STJson) {
|
|
373
|
+
arrayJson.setArrayElementField(index, nestedKey, value);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Get a nested array element
|
|
378
|
+
*/
|
|
379
|
+
getNestedArrayElement(key, index) {
|
|
380
|
+
if (!this.isObject()) {
|
|
381
|
+
return undefined;
|
|
382
|
+
}
|
|
383
|
+
const arrayJson = this.data.get(key);
|
|
384
|
+
if (arrayJson instanceof STJson && arrayJson.isArray()) {
|
|
385
|
+
return arrayJson.getArrayElement(index);
|
|
386
|
+
}
|
|
387
|
+
return undefined;
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Get a field within a nested array element
|
|
391
|
+
*/
|
|
392
|
+
getNestedArrayElementField(key, index, nestedKey) {
|
|
393
|
+
if (!this.isObject()) {
|
|
394
|
+
return undefined;
|
|
395
|
+
}
|
|
396
|
+
const arrayJson = this.data.get(key);
|
|
397
|
+
if (arrayJson instanceof STJson && arrayJson.isArray()) {
|
|
398
|
+
return arrayJson.getArrayElementField(index, nestedKey);
|
|
399
|
+
}
|
|
400
|
+
return undefined;
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Serialize to binary
|
|
404
|
+
*/
|
|
405
|
+
add(s) {
|
|
406
|
+
const bytesList = new binary_serializer_1.BytesList();
|
|
407
|
+
const tmp = new binary_serializer_1.BinarySerializer(bytesList);
|
|
408
|
+
// Add type byte
|
|
409
|
+
tmp.put(new Uint8Array([this.jsonType]));
|
|
410
|
+
if (this.isArray()) {
|
|
411
|
+
const array = this.data;
|
|
412
|
+
for (const value of array) {
|
|
413
|
+
STJson.addVLValue(tmp, value);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
else {
|
|
417
|
+
// isObject()
|
|
418
|
+
const map = this.data;
|
|
419
|
+
for (const [key, value] of map.entries()) {
|
|
420
|
+
STJson.addVLKey(tmp, key);
|
|
421
|
+
STJson.addVLValue(tmp, value);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
const innerBytes = bytesList.toBytes();
|
|
425
|
+
const lengthBytes = binary_serializer_1.BinarySerializer.encodeVariableLength(innerBytes.length);
|
|
426
|
+
s.put(lengthBytes);
|
|
427
|
+
s.put(innerBytes);
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Encode a key as VL
|
|
431
|
+
*/
|
|
432
|
+
static addVLKey(s, str) {
|
|
433
|
+
const keyBytes = new TextEncoder().encode(str);
|
|
434
|
+
const lengthBytes = binary_serializer_1.BinarySerializer.encodeVariableLength(keyBytes.length);
|
|
435
|
+
s.put(lengthBytes);
|
|
436
|
+
s.put(keyBytes);
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Encode a value as [SType marker][VL]
|
|
440
|
+
*/
|
|
441
|
+
static addVLValue(s, value) {
|
|
442
|
+
if (!value) {
|
|
443
|
+
s.put(binary_serializer_1.BinarySerializer.encodeVariableLength(0));
|
|
444
|
+
return;
|
|
445
|
+
}
|
|
446
|
+
const bytesList = new binary_serializer_1.BytesList();
|
|
447
|
+
const tmp = new binary_serializer_1.BinarySerializer(bytesList);
|
|
448
|
+
tmp.put(new Uint8Array([value.getSType()]));
|
|
449
|
+
value.toBytesSink(bytesList);
|
|
450
|
+
const innerBytes = bytesList.toBytes();
|
|
451
|
+
const lengthBytes = binary_serializer_1.BinarySerializer.encodeVariableLength(innerBytes.length);
|
|
452
|
+
s.put(lengthBytes);
|
|
453
|
+
s.put(innerBytes);
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Convert to JSON representation
|
|
457
|
+
*/
|
|
458
|
+
toJSON() {
|
|
459
|
+
if (this.isArray()) {
|
|
460
|
+
const array = this.data;
|
|
461
|
+
return array.map((item) => (item ? item.toJSON() : null));
|
|
462
|
+
}
|
|
463
|
+
else {
|
|
464
|
+
// isObject()
|
|
465
|
+
const map = this.data;
|
|
466
|
+
const result = {};
|
|
467
|
+
for (const [key, value] of map.entries()) {
|
|
468
|
+
result[key] = value ? value.toJSON() : null;
|
|
469
|
+
}
|
|
470
|
+
return result;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Compare with another STJson for equivalence
|
|
475
|
+
*/
|
|
476
|
+
isEquivalent(t) {
|
|
477
|
+
if (!(t instanceof STJson)) {
|
|
478
|
+
return false;
|
|
479
|
+
}
|
|
480
|
+
return (0, utils_1.bytesToHex)(this.bytes) === (0, utils_1.bytesToHex)(t.bytes);
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Check if this is the default value
|
|
484
|
+
*/
|
|
485
|
+
isDefault() {
|
|
486
|
+
return this.default_;
|
|
487
|
+
}
|
|
488
|
+
/**
|
|
489
|
+
* Get blob representation
|
|
490
|
+
*/
|
|
491
|
+
toBlob() {
|
|
492
|
+
const bytesList = new binary_serializer_1.BytesList();
|
|
493
|
+
const s = new binary_serializer_1.BinarySerializer(bytesList);
|
|
494
|
+
this.add(s);
|
|
495
|
+
return bytesList.toBytes();
|
|
496
|
+
}
|
|
497
|
+
/**
|
|
498
|
+
* Get the size (number of bytes in serialized form)
|
|
499
|
+
*/
|
|
500
|
+
size() {
|
|
501
|
+
const bytesList = new binary_serializer_1.BytesList();
|
|
502
|
+
const s = new binary_serializer_1.BinarySerializer(bytesList);
|
|
503
|
+
this.add(s);
|
|
504
|
+
return bytesList.getLength();
|
|
505
|
+
}
|
|
506
|
+
/**
|
|
507
|
+
* Set the value from another STJson
|
|
508
|
+
*/
|
|
509
|
+
setValue(v) {
|
|
510
|
+
if (!(v instanceof STJson)) {
|
|
511
|
+
throw new Error('setValue: value must be STJson');
|
|
512
|
+
}
|
|
513
|
+
;
|
|
514
|
+
this.data = v.data;
|
|
515
|
+
this.jsonType = v.jsonType;
|
|
516
|
+
}
|
|
517
|
+
/**
|
|
518
|
+
* Get serialized type ID
|
|
519
|
+
*/
|
|
520
|
+
getSType() {
|
|
521
|
+
return serialized_type_1.SerializedTypeID.STI_JSON;
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
exports.STJson = STJson;
|
|
525
|
+
STJson.JsonType = {
|
|
526
|
+
Object: 0x00,
|
|
527
|
+
Array: 0x01,
|
|
528
|
+
};
|
|
529
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/types/json.ts"],"names":[],"mappings":"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"}
|
package/dist/types/path-set.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BinaryParser } from '../serdes/binary-parser';
|
|
2
|
-
import { SerializedType, JsonObject } from './serialized-type';
|
|
2
|
+
import { SerializedType, JsonObject, SerializedTypeID } from './serialized-type';
|
|
3
3
|
/**
|
|
4
4
|
* The object representation of a Hop, an issuer AccountID, an account AccountID, and a Currency
|
|
5
5
|
*/
|
|
@@ -32,5 +32,6 @@ declare class PathSet extends SerializedType {
|
|
|
32
32
|
* @returns an Array of Array of HopObjects, representing this PathSet
|
|
33
33
|
*/
|
|
34
34
|
toJSON(): Array<Array<HopObject>>;
|
|
35
|
+
getSType(): SerializedTypeID;
|
|
35
36
|
}
|
|
36
37
|
export { PathSet };
|
package/dist/types/path-set.js
CHANGED
|
@@ -5,7 +5,7 @@ const account_id_1 = require("./account-id");
|
|
|
5
5
|
const currency_1 = require("./currency");
|
|
6
6
|
const binary_parser_1 = require("../serdes/binary-parser");
|
|
7
7
|
const serialized_type_1 = require("./serialized-type");
|
|
8
|
-
const
|
|
8
|
+
const utils_1 = require("@transia/isomorphic/utils");
|
|
9
9
|
/**
|
|
10
10
|
* Constants for separating Paths in a PathSet
|
|
11
11
|
*/
|
|
@@ -47,7 +47,7 @@ class Hop extends serialized_type_1.SerializedType {
|
|
|
47
47
|
if (value instanceof Hop) {
|
|
48
48
|
return value;
|
|
49
49
|
}
|
|
50
|
-
const bytes = [
|
|
50
|
+
const bytes = [Uint8Array.from([0])];
|
|
51
51
|
if (value.account) {
|
|
52
52
|
bytes.push(account_id_1.AccountID.from(value.account).toBytes());
|
|
53
53
|
bytes[0][0] |= TYPE_ACCOUNT;
|
|
@@ -60,7 +60,7 @@ class Hop extends serialized_type_1.SerializedType {
|
|
|
60
60
|
bytes.push(account_id_1.AccountID.from(value.issuer).toBytes());
|
|
61
61
|
bytes[0][0] |= TYPE_ISSUER;
|
|
62
62
|
}
|
|
63
|
-
return new Hop(
|
|
63
|
+
return new Hop((0, utils_1.concat)(bytes));
|
|
64
64
|
}
|
|
65
65
|
/**
|
|
66
66
|
* Construct a Hop from a BinaryParser
|
|
@@ -70,7 +70,7 @@ class Hop extends serialized_type_1.SerializedType {
|
|
|
70
70
|
*/
|
|
71
71
|
static fromParser(parser) {
|
|
72
72
|
const type = parser.readUInt8();
|
|
73
|
-
const bytes = [
|
|
73
|
+
const bytes = [Uint8Array.from([type])];
|
|
74
74
|
if (type & TYPE_ACCOUNT) {
|
|
75
75
|
bytes.push(parser.read(account_id_1.AccountID.width));
|
|
76
76
|
}
|
|
@@ -80,7 +80,7 @@ class Hop extends serialized_type_1.SerializedType {
|
|
|
80
80
|
if (type & TYPE_ISSUER) {
|
|
81
81
|
bytes.push(parser.read(account_id_1.AccountID.width));
|
|
82
82
|
}
|
|
83
|
-
return new Hop(
|
|
83
|
+
return new Hop((0, utils_1.concat)(bytes));
|
|
84
84
|
}
|
|
85
85
|
/**
|
|
86
86
|
* Get the JSON interpretation of this hop
|
|
@@ -88,7 +88,7 @@ class Hop extends serialized_type_1.SerializedType {
|
|
|
88
88
|
* @returns a HopObject, an JS object with optional account, issuer, and currency
|
|
89
89
|
*/
|
|
90
90
|
toJSON() {
|
|
91
|
-
const hopParser = new binary_parser_1.BinaryParser(this.bytes
|
|
91
|
+
const hopParser = new binary_parser_1.BinaryParser((0, utils_1.bytesToHex)(this.bytes));
|
|
92
92
|
const type = hopParser.readUInt8();
|
|
93
93
|
let account, currency, issuer;
|
|
94
94
|
if (type & TYPE_ACCOUNT) {
|
|
@@ -139,7 +139,7 @@ class Path extends serialized_type_1.SerializedType {
|
|
|
139
139
|
value.forEach((hop) => {
|
|
140
140
|
bytes.push(Hop.from(hop).toBytes());
|
|
141
141
|
});
|
|
142
|
-
return new Path(
|
|
142
|
+
return new Path((0, utils_1.concat)(bytes));
|
|
143
143
|
}
|
|
144
144
|
/**
|
|
145
145
|
* Read a Path from a BinaryParser
|
|
@@ -156,7 +156,7 @@ class Path extends serialized_type_1.SerializedType {
|
|
|
156
156
|
break;
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
|
-
return new Path(
|
|
159
|
+
return new Path((0, utils_1.concat)(bytes));
|
|
160
160
|
}
|
|
161
161
|
/**
|
|
162
162
|
* Get the JSON representation of this Path
|
|
@@ -190,10 +190,10 @@ class PathSet extends serialized_type_1.SerializedType {
|
|
|
190
190
|
const bytes = [];
|
|
191
191
|
value.forEach((path) => {
|
|
192
192
|
bytes.push(Path.from(path).toBytes());
|
|
193
|
-
bytes.push(
|
|
193
|
+
bytes.push(Uint8Array.from([PATH_SEPARATOR_BYTE]));
|
|
194
194
|
});
|
|
195
|
-
bytes[bytes.length - 1] =
|
|
196
|
-
return new PathSet(
|
|
195
|
+
bytes[bytes.length - 1] = Uint8Array.from([PATHSET_END_BYTE]);
|
|
196
|
+
return new PathSet((0, utils_1.concat)(bytes));
|
|
197
197
|
}
|
|
198
198
|
throw new Error('Cannot construct PathSet from given value');
|
|
199
199
|
}
|
|
@@ -212,7 +212,7 @@ class PathSet extends serialized_type_1.SerializedType {
|
|
|
212
212
|
break;
|
|
213
213
|
}
|
|
214
214
|
}
|
|
215
|
-
return new PathSet(
|
|
215
|
+
return new PathSet((0, utils_1.concat)(bytes));
|
|
216
216
|
}
|
|
217
217
|
/**
|
|
218
218
|
* Get the JSON representation of this PathSet
|
|
@@ -228,6 +228,9 @@ class PathSet extends serialized_type_1.SerializedType {
|
|
|
228
228
|
}
|
|
229
229
|
return json;
|
|
230
230
|
}
|
|
231
|
+
getSType() {
|
|
232
|
+
return serialized_type_1.SerializedTypeID.STI_PATHSET;
|
|
233
|
+
}
|
|
231
234
|
}
|
|
232
235
|
exports.PathSet = PathSet;
|
|
233
236
|
//# sourceMappingURL=path-set.js.map
|