@transia/ripple-binary-codec 1.4.4-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/LICENSE +13 -0
- package/README.md +107 -0
- package/dist/binary.d.ts +91 -0
- package/dist/binary.js +128 -0
- package/dist/binary.js.map +1 -0
- package/dist/coretypes.d.ts +9 -0
- package/dist/coretypes.js +48 -0
- package/dist/coretypes.js.map +1 -0
- 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 +2476 -0
- 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.d.ts +13 -0
- package/dist/enums/index.js +53 -0
- package/dist/enums/index.js.map +1 -0
- package/dist/enums/src/enums/definitions.json +2481 -0
- package/dist/enums/utils-renumber.d.ts +101 -0
- package/dist/enums/utils-renumber.js +127 -0
- package/dist/enums/utils-renumber.js.map +1 -0
- package/dist/enums/xrpl-definitions-base.d.ts +45 -0
- package/dist/enums/xrpl-definitions-base.js +63 -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 +6 -0
- package/dist/hash-prefixes.js +41 -0
- package/dist/hash-prefixes.js.map +1 -0
- package/dist/hashes.d.ts +51 -0
- package/dist/hashes.js +77 -0
- package/dist/hashes.js.map +1 -0
- package/dist/index.d.ts +64 -0
- package/dist/index.js +139 -0
- package/dist/index.js.map +1 -0
- package/dist/ledger-hashes.d.ts +49 -0
- package/dist/ledger-hashes.js +160 -0
- package/dist/ledger-hashes.js.map +1 -0
- package/dist/quality.d.ts +22 -0
- package/dist/quality.js +40 -0
- package/dist/quality.js.map +1 -0
- package/dist/serdes/binary-parser.d.ts +101 -0
- package/dist/serdes/binary-parser.js +210 -0
- package/dist/serdes/binary-parser.js.map +1 -0
- package/dist/serdes/binary-serializer.d.ts +82 -0
- package/dist/serdes/binary-serializer.js +172 -0
- package/dist/serdes/binary-serializer.js.map +1 -0
- package/dist/shamap.d.ts +103 -0
- package/dist/shamap.js +172 -0
- package/dist/shamap.js.map +1 -0
- package/dist/types/account-id.d.ts +36 -0
- package/dist/types/account-id.js +71 -0
- package/dist/types/account-id.js.map +1 -0
- package/dist/types/amount.d.ts +68 -0
- package/dist/types/amount.js +207 -0
- package/dist/types/amount.js.map +1 -0
- package/dist/types/blob.d.ts +25 -0
- package/dist/types/blob.js +40 -0
- package/dist/types/blob.js.map +1 -0
- package/dist/types/currency.d.ts +29 -0
- package/dist/types/currency.js +127 -0
- package/dist/types/currency.js.map +1 -0
- package/dist/types/hash-128.d.ts +17 -0
- package/dist/types/hash-128.js +32 -0
- package/dist/types/hash-128.js.map +1 -0
- package/dist/types/hash-160.d.ts +11 -0
- package/dist/types/hash-160.js +20 -0
- package/dist/types/hash-160.js.map +1 -0
- package/dist/types/hash-256.d.ts +11 -0
- package/dist/types/hash-256.js +17 -0
- package/dist/types/hash-256.js.map +1 -0
- package/dist/types/hash.d.ts +41 -0
- package/dist/types/hash.js +72 -0
- package/dist/types/hash.js.map +1 -0
- package/dist/types/index.d.ts +18 -0
- package/dist/types/index.js +57 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/issue.d.ts +39 -0
- package/dist/types/issue.js +81 -0
- package/dist/types/issue.js.map +1 -0
- package/dist/types/path-set.d.ts +36 -0
- package/dist/types/path-set.js +233 -0
- package/dist/types/path-set.js.map +1 -0
- package/dist/types/serialized-type.d.ts +63 -0
- package/dist/types/serialized-type.js +97 -0
- package/dist/types/serialized-type.js.map +1 -0
- package/dist/types/st-array.d.ts +28 -0
- package/dist/types/st-array.js +80 -0
- package/dist/types/st-array.js.map +1 -0
- package/dist/types/st-object.d.ts +32 -0
- package/dist/types/st-object.js +149 -0
- package/dist/types/st-object.js.map +1 -0
- package/dist/types/uint-16.d.ts +25 -0
- package/dist/types/uint-16.js +44 -0
- package/dist/types/uint-16.js.map +1 -0
- package/dist/types/uint-32.d.ts +25 -0
- package/dist/types/uint-32.js +49 -0
- package/dist/types/uint-32.js.map +1 -0
- package/dist/types/uint-64.d.ts +39 -0
- package/dist/types/uint-64.js +87 -0
- package/dist/types/uint-64.js.map +1 -0
- package/dist/types/uint-8.d.ts +25 -0
- package/dist/types/uint-8.js +44 -0
- package/dist/types/uint-8.js.map +1 -0
- package/dist/types/uint.d.ts +30 -0
- package/dist/types/uint.js +42 -0
- package/dist/types/uint.js.map +1 -0
- package/dist/types/vector-256.d.ts +31 -0
- package/dist/types/vector-256.js +75 -0
- package/dist/types/vector-256.js.map +1 -0
- package/package.json +47 -0
- package/test/amount.test.js +43 -0
- package/test/binary-json.test.js +45 -0
- package/test/binary-parser.test.js +396 -0
- package/test/binary-serializer.test.js +289 -0
- package/test/definitions.test.js +100 -0
- package/test/fixtures/account-tx-transactions.db +0 -0
- package/test/fixtures/codec-fixtures.json +4466 -0
- package/test/fixtures/data-driven-tests.json +2919 -0
- package/test/fixtures/delivermin-tx-binary.json +1 -0
- package/test/fixtures/delivermin-tx.json +98 -0
- package/test/fixtures/deposit-preauth-tx-binary.json +1 -0
- package/test/fixtures/deposit-preauth-tx-meta-binary.json +1 -0
- package/test/fixtures/deposit-preauth-tx.json +58 -0
- package/test/fixtures/escrow-cancel-binary.json +1 -0
- package/test/fixtures/escrow-cancel-tx.json +6 -0
- package/test/fixtures/escrow-create-binary.json +1 -0
- package/test/fixtures/escrow-create-tx.json +10 -0
- package/test/fixtures/escrow-finish-binary.json +1 -0
- package/test/fixtures/escrow-finish-meta-binary.json +1 -0
- package/test/fixtures/escrow-finish-tx.json +95 -0
- package/test/fixtures/ledger-full-38129.json +1 -0
- package/test/fixtures/ledger-full-40000.json +1 -0
- package/test/fixtures/negative-unl.json +12 -0
- package/test/fixtures/nf-token.json +547 -0
- package/test/fixtures/payment-channel-claim-binary.json +1 -0
- package/test/fixtures/payment-channel-claim-tx.json +8 -0
- package/test/fixtures/payment-channel-create-binary.json +1 -0
- package/test/fixtures/payment-channel-create-tx.json +11 -0
- package/test/fixtures/payment-channel-fund-binary.json +1 -0
- package/test/fixtures/payment-channel-fund-tx.json +7 -0
- package/test/fixtures/signerlistset-tx-binary.json +1 -0
- package/test/fixtures/signerlistset-tx-meta-binary.json +1 -0
- package/test/fixtures/signerlistset-tx.json +94 -0
- package/test/fixtures/ticket-create-binary.json +1 -0
- package/test/fixtures/ticket-create-tx.json +7 -0
- package/test/fixtures/x-codec-fixtures.json +188 -0
- package/test/hash.test.js +135 -0
- package/test/ledger.test.js +29 -0
- package/test/lower-case-hex.test.js +46 -0
- package/test/pseudo-transaction.test.js +38 -0
- package/test/quality.test.js +15 -0
- package/test/shamap.test.js +89 -0
- package/test/signing-data-encoding.test.js +242 -0
- package/test/tx-encode-decode.test.js +119 -0
- package/test/types.test.js +34 -0
- package/test/uint.test.js +148 -0
- package/test/utils.js +30 -0
- package/test/x-address.test.js +181 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Currency = void 0;
|
|
4
|
+
const hash_160_1 = require("./hash-160");
|
|
5
|
+
const buffer_1 = require("buffer/");
|
|
6
|
+
const XRP_HEX_REGEX = /^0{40}$/;
|
|
7
|
+
const ISO_REGEX = /^[A-Z0-9a-z?!@#$%^&*(){}[\]|]{3}$/;
|
|
8
|
+
const HEX_REGEX = /^[A-F0-9]{40}$/;
|
|
9
|
+
// eslint-disable-next-line no-control-regex
|
|
10
|
+
const STANDARD_FORMAT_HEX_REGEX = /^0{24}[\x00-\x7F]{6}0{10}$/;
|
|
11
|
+
/**
|
|
12
|
+
* Convert an ISO code to a currency bytes representation
|
|
13
|
+
*/
|
|
14
|
+
function isoToBytes(iso) {
|
|
15
|
+
const bytes = buffer_1.Buffer.alloc(20);
|
|
16
|
+
if (iso !== 'XRP') {
|
|
17
|
+
const isoBytes = iso.split('').map((c) => c.charCodeAt(0));
|
|
18
|
+
bytes.set(isoBytes, 12);
|
|
19
|
+
}
|
|
20
|
+
return bytes;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Tests if ISO is a valid iso code
|
|
24
|
+
*/
|
|
25
|
+
function isIsoCode(iso) {
|
|
26
|
+
return ISO_REGEX.test(iso);
|
|
27
|
+
}
|
|
28
|
+
function isoCodeFromHex(code) {
|
|
29
|
+
const iso = code.toString();
|
|
30
|
+
if (iso === 'XRP') {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
if (isIsoCode(iso)) {
|
|
34
|
+
return iso;
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Tests if hex is a valid hex-string
|
|
40
|
+
*/
|
|
41
|
+
function isHex(hex) {
|
|
42
|
+
return HEX_REGEX.test(hex);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Tests if a string is a valid representation of a currency
|
|
46
|
+
*/
|
|
47
|
+
function isStringRepresentation(input) {
|
|
48
|
+
return input.length === 3 || isHex(input);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Tests if a Buffer is a valid representation of a currency
|
|
52
|
+
*/
|
|
53
|
+
function isBytesArray(bytes) {
|
|
54
|
+
return bytes.byteLength === 20;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Ensures that a value is a valid representation of a currency
|
|
58
|
+
*/
|
|
59
|
+
function isValidRepresentation(input) {
|
|
60
|
+
return input instanceof buffer_1.Buffer
|
|
61
|
+
? isBytesArray(input)
|
|
62
|
+
: isStringRepresentation(input);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Generate bytes from a string or buffer representation of a currency
|
|
66
|
+
*/
|
|
67
|
+
function bytesFromRepresentation(input) {
|
|
68
|
+
if (!isValidRepresentation(input)) {
|
|
69
|
+
throw new Error(`Unsupported Currency representation: ${input}`);
|
|
70
|
+
}
|
|
71
|
+
return input.length === 3 ? isoToBytes(input) : buffer_1.Buffer.from(input, 'hex');
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Class defining how to encode and decode Currencies
|
|
75
|
+
*/
|
|
76
|
+
class Currency extends hash_160_1.Hash160 {
|
|
77
|
+
constructor(byteBuf) {
|
|
78
|
+
super(byteBuf !== null && byteBuf !== void 0 ? byteBuf : Currency.XRP.bytes);
|
|
79
|
+
const hex = this.bytes.toString('hex');
|
|
80
|
+
if (XRP_HEX_REGEX.test(hex)) {
|
|
81
|
+
this._iso = 'XRP';
|
|
82
|
+
}
|
|
83
|
+
else if (STANDARD_FORMAT_HEX_REGEX.test(hex)) {
|
|
84
|
+
this._iso = isoCodeFromHex(this.bytes.slice(12, 15));
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
this._iso = null;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Return the ISO code of this currency
|
|
92
|
+
*
|
|
93
|
+
* @returns ISO code if it exists, else null
|
|
94
|
+
*/
|
|
95
|
+
iso() {
|
|
96
|
+
return this._iso;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Constructs a Currency object
|
|
100
|
+
*
|
|
101
|
+
* @param val Currency object or a string representation of a currency
|
|
102
|
+
*/
|
|
103
|
+
static from(value) {
|
|
104
|
+
if (value instanceof Currency) {
|
|
105
|
+
return value;
|
|
106
|
+
}
|
|
107
|
+
if (typeof value === 'string') {
|
|
108
|
+
return new Currency(bytesFromRepresentation(value));
|
|
109
|
+
}
|
|
110
|
+
throw new Error('Cannot construct Currency from value given');
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Gets the JSON representation of a currency
|
|
114
|
+
*
|
|
115
|
+
* @returns JSON representation
|
|
116
|
+
*/
|
|
117
|
+
toJSON() {
|
|
118
|
+
const iso = this.iso();
|
|
119
|
+
if (iso !== null) {
|
|
120
|
+
return iso;
|
|
121
|
+
}
|
|
122
|
+
return this.bytes.toString('hex').toUpperCase();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.Currency = Currency;
|
|
126
|
+
Currency.XRP = new Currency(buffer_1.Buffer.alloc(20));
|
|
127
|
+
//# sourceMappingURL=currency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"currency.js","sourceRoot":"","sources":["../../src/types/currency.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Hash } from './hash';
|
|
2
|
+
import { Buffer } from 'buffer/';
|
|
3
|
+
/**
|
|
4
|
+
* Hash with a width of 128 bits
|
|
5
|
+
*/
|
|
6
|
+
declare class Hash128 extends Hash {
|
|
7
|
+
static readonly width = 16;
|
|
8
|
+
static readonly ZERO_128: Hash128;
|
|
9
|
+
constructor(bytes: Buffer);
|
|
10
|
+
/**
|
|
11
|
+
* Get the hex representation of a hash-128 bytes, allowing unset
|
|
12
|
+
*
|
|
13
|
+
* @returns hex String of this.bytes
|
|
14
|
+
*/
|
|
15
|
+
toHex(): string;
|
|
16
|
+
}
|
|
17
|
+
export { Hash128 };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Hash128 = void 0;
|
|
4
|
+
const hash_1 = require("./hash");
|
|
5
|
+
const buffer_1 = require("buffer/");
|
|
6
|
+
/**
|
|
7
|
+
* Hash with a width of 128 bits
|
|
8
|
+
*/
|
|
9
|
+
class Hash128 extends hash_1.Hash {
|
|
10
|
+
constructor(bytes) {
|
|
11
|
+
if (bytes && bytes.byteLength === 0) {
|
|
12
|
+
bytes = Hash128.ZERO_128.bytes;
|
|
13
|
+
}
|
|
14
|
+
super(bytes !== null && bytes !== void 0 ? bytes : Hash128.ZERO_128.bytes);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Get the hex representation of a hash-128 bytes, allowing unset
|
|
18
|
+
*
|
|
19
|
+
* @returns hex String of this.bytes
|
|
20
|
+
*/
|
|
21
|
+
toHex() {
|
|
22
|
+
const hex = this.toBytes().toString('hex').toUpperCase();
|
|
23
|
+
if (/^0+$/.exec(hex)) {
|
|
24
|
+
return '';
|
|
25
|
+
}
|
|
26
|
+
return hex;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.Hash128 = Hash128;
|
|
30
|
+
Hash128.width = 16;
|
|
31
|
+
Hash128.ZERO_128 = new Hash128(buffer_1.Buffer.alloc(Hash128.width));
|
|
32
|
+
//# sourceMappingURL=hash-128.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash-128.js","sourceRoot":"","sources":["../../src/types/hash-128.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,oCAAgC;AAEhC;;GAEG;AACH,MAAM,OAAQ,SAAQ,WAAI;IAIxB,YAAY,KAAa;QACvB,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE;YACnC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAA;SAC/B;QAED,KAAK,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACxC,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;QACxD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACpB,OAAO,EAAE,CAAA;SACV;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;;AAGM,0BAAO;AAzBE,aAAK,GAAG,EAAE,CAAA;AACV,gBAAQ,GAAY,IAAI,OAAO,CAAC,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Hash } from './hash';
|
|
2
|
+
import { Buffer } from 'buffer/';
|
|
3
|
+
/**
|
|
4
|
+
* Hash with a width of 160 bits
|
|
5
|
+
*/
|
|
6
|
+
declare class Hash160 extends Hash {
|
|
7
|
+
static readonly width = 20;
|
|
8
|
+
static readonly ZERO_160: Hash160;
|
|
9
|
+
constructor(bytes?: Buffer);
|
|
10
|
+
}
|
|
11
|
+
export { Hash160 };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Hash160 = void 0;
|
|
4
|
+
const hash_1 = require("./hash");
|
|
5
|
+
const buffer_1 = require("buffer/");
|
|
6
|
+
/**
|
|
7
|
+
* Hash with a width of 160 bits
|
|
8
|
+
*/
|
|
9
|
+
class Hash160 extends hash_1.Hash {
|
|
10
|
+
constructor(bytes) {
|
|
11
|
+
if (bytes && bytes.byteLength === 0) {
|
|
12
|
+
bytes = Hash160.ZERO_160.bytes;
|
|
13
|
+
}
|
|
14
|
+
super(bytes !== null && bytes !== void 0 ? bytes : Hash160.ZERO_160.bytes);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.Hash160 = Hash160;
|
|
18
|
+
Hash160.width = 20;
|
|
19
|
+
Hash160.ZERO_160 = new Hash160(buffer_1.Buffer.alloc(Hash160.width));
|
|
20
|
+
//# sourceMappingURL=hash-160.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash-160.js","sourceRoot":"","sources":["../../src/types/hash-160.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,oCAAgC;AAEhC;;GAEG;AACH,MAAM,OAAQ,SAAQ,WAAI;IAIxB,YAAY,KAAc;QACxB,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE;YACnC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAA;SAC/B;QAED,KAAK,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACxC,CAAC;;AAGM,0BAAO;AAZE,aAAK,GAAG,EAAE,CAAA;AACV,gBAAQ,GAAY,IAAI,OAAO,CAAC,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Hash } from './hash';
|
|
2
|
+
import { Buffer } from 'buffer/';
|
|
3
|
+
/**
|
|
4
|
+
* Hash with a width of 256 bits
|
|
5
|
+
*/
|
|
6
|
+
declare class Hash256 extends Hash {
|
|
7
|
+
static readonly width = 32;
|
|
8
|
+
static readonly ZERO_256: Hash256;
|
|
9
|
+
constructor(bytes: Buffer);
|
|
10
|
+
}
|
|
11
|
+
export { Hash256 };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Hash256 = void 0;
|
|
4
|
+
const hash_1 = require("./hash");
|
|
5
|
+
const buffer_1 = require("buffer/");
|
|
6
|
+
/**
|
|
7
|
+
* Hash with a width of 256 bits
|
|
8
|
+
*/
|
|
9
|
+
class Hash256 extends hash_1.Hash {
|
|
10
|
+
constructor(bytes) {
|
|
11
|
+
super(bytes !== null && bytes !== void 0 ? bytes : Hash256.ZERO_256.bytes);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.Hash256 = Hash256;
|
|
15
|
+
Hash256.width = 32;
|
|
16
|
+
Hash256.ZERO_256 = new Hash256(buffer_1.Buffer.alloc(Hash256.width));
|
|
17
|
+
//# sourceMappingURL=hash-256.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash-256.js","sourceRoot":"","sources":["../../src/types/hash-256.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,oCAAgC;AAEhC;;GAEG;AACH,MAAM,OAAQ,SAAQ,WAAI;IAIxB,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACxC,CAAC;;AAGM,0BAAO;AARE,aAAK,GAAG,EAAE,CAAA;AACV,gBAAQ,GAAG,IAAI,OAAO,CAAC,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Comparable } from './serialized-type';
|
|
2
|
+
import { BinaryParser } from '../serdes/binary-parser';
|
|
3
|
+
import { Buffer } from 'buffer/';
|
|
4
|
+
/**
|
|
5
|
+
* Base class defining how to encode and decode hashes
|
|
6
|
+
*/
|
|
7
|
+
declare class Hash extends Comparable {
|
|
8
|
+
static readonly width: number;
|
|
9
|
+
constructor(bytes: Buffer);
|
|
10
|
+
/**
|
|
11
|
+
* Construct a Hash object from an existing Hash object or a hex-string
|
|
12
|
+
*
|
|
13
|
+
* @param value A hash object or hex-string of a hash
|
|
14
|
+
*/
|
|
15
|
+
static from<T extends Hash | string>(value: T): Hash;
|
|
16
|
+
/**
|
|
17
|
+
* Read a Hash object from a BinaryParser
|
|
18
|
+
*
|
|
19
|
+
* @param parser BinaryParser to read the hash from
|
|
20
|
+
* @param hint length of the bytes to read, optional
|
|
21
|
+
*/
|
|
22
|
+
static fromParser(parser: BinaryParser, hint?: number): Hash;
|
|
23
|
+
/**
|
|
24
|
+
* Overloaded operator for comparing two hash objects
|
|
25
|
+
*
|
|
26
|
+
* @param other The Hash to compare this to
|
|
27
|
+
*/
|
|
28
|
+
compareTo(other: Hash): number;
|
|
29
|
+
/**
|
|
30
|
+
* @returns the hex-string representation of this Hash
|
|
31
|
+
*/
|
|
32
|
+
toString(): string;
|
|
33
|
+
/**
|
|
34
|
+
* Returns four bits at the specified depth within a hash
|
|
35
|
+
*
|
|
36
|
+
* @param depth The depth of the four bits
|
|
37
|
+
* @returns The number represented by the four bits
|
|
38
|
+
*/
|
|
39
|
+
nibblet(depth: number): number;
|
|
40
|
+
}
|
|
41
|
+
export { Hash };
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Hash = void 0;
|
|
4
|
+
const serialized_type_1 = require("./serialized-type");
|
|
5
|
+
const buffer_1 = require("buffer/");
|
|
6
|
+
/**
|
|
7
|
+
* Base class defining how to encode and decode hashes
|
|
8
|
+
*/
|
|
9
|
+
class Hash extends serialized_type_1.Comparable {
|
|
10
|
+
constructor(bytes) {
|
|
11
|
+
super(bytes);
|
|
12
|
+
if (this.bytes.byteLength !== this.constructor.width) {
|
|
13
|
+
throw new Error(`Invalid Hash length ${this.bytes.byteLength}`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Construct a Hash object from an existing Hash object or a hex-string
|
|
18
|
+
*
|
|
19
|
+
* @param value A hash object or hex-string of a hash
|
|
20
|
+
*/
|
|
21
|
+
static from(value) {
|
|
22
|
+
if (value instanceof this) {
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
if (typeof value === 'string') {
|
|
26
|
+
return new this(buffer_1.Buffer.from(value, 'hex'));
|
|
27
|
+
}
|
|
28
|
+
throw new Error('Cannot construct Hash from given value');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Read a Hash object from a BinaryParser
|
|
32
|
+
*
|
|
33
|
+
* @param parser BinaryParser to read the hash from
|
|
34
|
+
* @param hint length of the bytes to read, optional
|
|
35
|
+
*/
|
|
36
|
+
static fromParser(parser, hint) {
|
|
37
|
+
return new this(parser.read(hint !== null && hint !== void 0 ? hint : this.width));
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Overloaded operator for comparing two hash objects
|
|
41
|
+
*
|
|
42
|
+
* @param other The Hash to compare this to
|
|
43
|
+
*/
|
|
44
|
+
compareTo(other) {
|
|
45
|
+
return this.bytes.compare(this.constructor.from(other).bytes);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* @returns the hex-string representation of this Hash
|
|
49
|
+
*/
|
|
50
|
+
toString() {
|
|
51
|
+
return this.toHex();
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Returns four bits at the specified depth within a hash
|
|
55
|
+
*
|
|
56
|
+
* @param depth The depth of the four bits
|
|
57
|
+
* @returns The number represented by the four bits
|
|
58
|
+
*/
|
|
59
|
+
nibblet(depth) {
|
|
60
|
+
const byteIx = depth > 0 ? (depth / 2) | 0 : 0;
|
|
61
|
+
let b = this.bytes[byteIx];
|
|
62
|
+
if (depth % 2 === 0) {
|
|
63
|
+
b = (b & 0xf0) >>> 4;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
b = b & 0x0f;
|
|
67
|
+
}
|
|
68
|
+
return b;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.Hash = Hash;
|
|
72
|
+
//# sourceMappingURL=hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/types/hash.ts"],"names":[],"mappings":";;;AAAA,uDAA8C;AAE9C,oCAAgC;AAEhC;;GAEG;AACH,MAAM,IAAK,SAAQ,4BAAU;IAG3B,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,CAAC,CAAA;QACZ,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAM,IAAI,CAAC,WAA2B,CAAC,KAAK,EAAE;YACrE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAA;SAChE;IACH,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAA0B,KAAQ;QAC3C,IAAI,KAAK,YAAY,IAAI,EAAE;YACzB,OAAO,KAAK,CAAA;SACb;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,OAAO,IAAI,IAAI,CAAC,eAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;SAC3C;QAED,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC3D,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,MAAoB,EAAE,IAAa;QACnD,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAClD,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,KAAW;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CACtB,IAAI,CAAC,WAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CACpD,CAAA;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,KAAa;QACnB,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9C,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC1B,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE;YACnB,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;SACrB;aAAM;YACL,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;SACb;QACD,OAAO,CAAC,CAAA;IACV,CAAC;CACF;AAEQ,oBAAI"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AccountID } from './account-id';
|
|
2
|
+
import { Amount } from './amount';
|
|
3
|
+
import { Blob } from './blob';
|
|
4
|
+
import { Currency } from './currency';
|
|
5
|
+
import { Hash128 } from './hash-128';
|
|
6
|
+
import { Hash160 } from './hash-160';
|
|
7
|
+
import { Hash256 } from './hash-256';
|
|
8
|
+
import { PathSet } from './path-set';
|
|
9
|
+
import { STArray } from './st-array';
|
|
10
|
+
import { STObject } from './st-object';
|
|
11
|
+
import { UInt16 } from './uint-16';
|
|
12
|
+
import { UInt32 } from './uint-32';
|
|
13
|
+
import { UInt64 } from './uint-64';
|
|
14
|
+
import { UInt8 } from './uint-8';
|
|
15
|
+
import { Vector256 } from './vector-256';
|
|
16
|
+
import { type SerializedType } from './serialized-type';
|
|
17
|
+
declare const coreTypes: Record<string, typeof SerializedType>;
|
|
18
|
+
export { coreTypes, AccountID, Amount, Blob, Currency, Hash128, Hash160, Hash256, PathSet, STArray, STObject, UInt8, UInt16, UInt32, UInt64, Vector256, };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Vector256 = exports.UInt64 = exports.UInt32 = exports.UInt16 = exports.UInt8 = exports.STObject = exports.STArray = exports.PathSet = exports.Hash256 = exports.Hash160 = exports.Hash128 = exports.Currency = exports.Blob = exports.Amount = exports.AccountID = exports.coreTypes = void 0;
|
|
4
|
+
const account_id_1 = require("./account-id");
|
|
5
|
+
Object.defineProperty(exports, "AccountID", { enumerable: true, get: function () { return account_id_1.AccountID; } });
|
|
6
|
+
const amount_1 = require("./amount");
|
|
7
|
+
Object.defineProperty(exports, "Amount", { enumerable: true, get: function () { return amount_1.Amount; } });
|
|
8
|
+
const blob_1 = require("./blob");
|
|
9
|
+
Object.defineProperty(exports, "Blob", { enumerable: true, get: function () { return blob_1.Blob; } });
|
|
10
|
+
const currency_1 = require("./currency");
|
|
11
|
+
Object.defineProperty(exports, "Currency", { enumerable: true, get: function () { return currency_1.Currency; } });
|
|
12
|
+
const hash_128_1 = require("./hash-128");
|
|
13
|
+
Object.defineProperty(exports, "Hash128", { enumerable: true, get: function () { return hash_128_1.Hash128; } });
|
|
14
|
+
const hash_160_1 = require("./hash-160");
|
|
15
|
+
Object.defineProperty(exports, "Hash160", { enumerable: true, get: function () { return hash_160_1.Hash160; } });
|
|
16
|
+
const hash_256_1 = require("./hash-256");
|
|
17
|
+
Object.defineProperty(exports, "Hash256", { enumerable: true, get: function () { return hash_256_1.Hash256; } });
|
|
18
|
+
const path_set_1 = require("./path-set");
|
|
19
|
+
Object.defineProperty(exports, "PathSet", { enumerable: true, get: function () { return path_set_1.PathSet; } });
|
|
20
|
+
const st_array_1 = require("./st-array");
|
|
21
|
+
Object.defineProperty(exports, "STArray", { enumerable: true, get: function () { return st_array_1.STArray; } });
|
|
22
|
+
const st_object_1 = require("./st-object");
|
|
23
|
+
Object.defineProperty(exports, "STObject", { enumerable: true, get: function () { return st_object_1.STObject; } });
|
|
24
|
+
const uint_16_1 = require("./uint-16");
|
|
25
|
+
Object.defineProperty(exports, "UInt16", { enumerable: true, get: function () { return uint_16_1.UInt16; } });
|
|
26
|
+
const uint_32_1 = require("./uint-32");
|
|
27
|
+
Object.defineProperty(exports, "UInt32", { enumerable: true, get: function () { return uint_32_1.UInt32; } });
|
|
28
|
+
const uint_64_1 = require("./uint-64");
|
|
29
|
+
Object.defineProperty(exports, "UInt64", { enumerable: true, get: function () { return uint_64_1.UInt64; } });
|
|
30
|
+
const uint_8_1 = require("./uint-8");
|
|
31
|
+
Object.defineProperty(exports, "UInt8", { enumerable: true, get: function () { return uint_8_1.UInt8; } });
|
|
32
|
+
const vector_256_1 = require("./vector-256");
|
|
33
|
+
Object.defineProperty(exports, "Vector256", { enumerable: true, get: function () { return vector_256_1.Vector256; } });
|
|
34
|
+
const enums_1 = require("../enums");
|
|
35
|
+
const coreTypes = {
|
|
36
|
+
AccountID: account_id_1.AccountID,
|
|
37
|
+
Amount: amount_1.Amount,
|
|
38
|
+
Blob: blob_1.Blob,
|
|
39
|
+
Currency: currency_1.Currency,
|
|
40
|
+
Hash128: hash_128_1.Hash128,
|
|
41
|
+
Hash160: hash_160_1.Hash160,
|
|
42
|
+
Hash256: hash_256_1.Hash256,
|
|
43
|
+
PathSet: path_set_1.PathSet,
|
|
44
|
+
STArray: st_array_1.STArray,
|
|
45
|
+
STObject: st_object_1.STObject,
|
|
46
|
+
UInt8: uint_8_1.UInt8,
|
|
47
|
+
UInt16: uint_16_1.UInt16,
|
|
48
|
+
UInt32: uint_32_1.UInt32,
|
|
49
|
+
UInt64: uint_64_1.UInt64,
|
|
50
|
+
Vector256: vector_256_1.Vector256,
|
|
51
|
+
};
|
|
52
|
+
exports.coreTypes = coreTypes;
|
|
53
|
+
// Ensures that the DEFAULT_DEFINITIONS object connects these types to fields for serializing/deserializing
|
|
54
|
+
// This is done here instead of in enums/index.ts to avoid a circular dependency
|
|
55
|
+
// because some of the above types depend on BinarySerailizer which depends on enums/index.ts.
|
|
56
|
+
enums_1.DEFAULT_DEFINITIONS.associateTypes(coreTypes);
|
|
57
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;AAAA,6CAAwC;AA2CtC,0FA3CO,sBAAS,OA2CP;AA1CX,qCAAiC;AA2C/B,uFA3CO,eAAM,OA2CP;AA1CR,iCAA6B;AA2C3B,qFA3CO,WAAI,OA2CP;AA1CN,yCAAqC;AA2CnC,yFA3CO,mBAAQ,OA2CP;AA1CV,yCAAoC;AA2ClC,wFA3CO,kBAAO,OA2CP;AA1CT,yCAAoC;AA2ClC,wFA3CO,kBAAO,OA2CP;AA1CT,yCAAoC;AA2ClC,wFA3CO,kBAAO,OA2CP;AA1CT,yCAAoC;AA2ClC,wFA3CO,kBAAO,OA2CP;AA1CT,yCAAoC;AA2ClC,wFA3CO,kBAAO,OA2CP;AA1CT,2CAAsC;AA2CpC,yFA3CO,oBAAQ,OA2CP;AA1CV,uCAAkC;AA4ChC,uFA5CO,gBAAM,OA4CP;AA3CR,uCAAkC;AA4ChC,uFA5CO,gBAAM,OA4CP;AA3CR,uCAAkC;AA4ChC,uFA5CO,gBAAM,OA4CP;AA3CR,qCAAgC;AAwC9B,sFAxCO,cAAK,OAwCP;AAvCP,6CAAwC;AA2CtC,0FA3CO,sBAAS,OA2CP;AAzCX,oCAA8C;AAE9C,MAAM,SAAS,GAA0C;IACvD,SAAS,EAAT,sBAAS;IACT,MAAM,EAAN,eAAM;IACN,IAAI,EAAJ,WAAI;IACJ,QAAQ,EAAR,mBAAQ;IACR,OAAO,EAAP,kBAAO;IACP,OAAO,EAAP,kBAAO;IACP,OAAO,EAAP,kBAAO;IACP,OAAO,EAAP,kBAAO;IACP,OAAO,EAAP,kBAAO;IACP,QAAQ,EAAR,oBAAQ;IACR,KAAK,EAAL,cAAK;IACL,MAAM,EAAN,gBAAM;IACN,MAAM,EAAN,gBAAM;IACN,MAAM,EAAN,gBAAM;IACN,SAAS,EAAT,sBAAS;CACV,CAAA;AAQC,8BAAS;AANX,2GAA2G;AAC3G,gFAAgF;AAChF,8FAA8F;AAC9F,2BAAmB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { BinaryParser } from '../serdes/binary-parser';
|
|
2
|
+
import { JsonObject, SerializedType } from './serialized-type';
|
|
3
|
+
import { Buffer } from 'buffer/';
|
|
4
|
+
/**
|
|
5
|
+
* Interface for JSON objects that represent amounts
|
|
6
|
+
*/
|
|
7
|
+
interface IssueObject extends JsonObject {
|
|
8
|
+
currency: string;
|
|
9
|
+
issuer?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Class for serializing/Deserializing Amounts
|
|
13
|
+
*/
|
|
14
|
+
declare class Issue extends SerializedType {
|
|
15
|
+
static readonly ZERO_ISSUED_CURRENCY: Issue;
|
|
16
|
+
constructor(bytes: Buffer);
|
|
17
|
+
/**
|
|
18
|
+
* Construct an amount from an IOU or string amount
|
|
19
|
+
*
|
|
20
|
+
* @param value An Amount, object representing an IOU, or a string
|
|
21
|
+
* representing an integer amount
|
|
22
|
+
* @returns An Amount object
|
|
23
|
+
*/
|
|
24
|
+
static from<T extends Issue | IssueObject>(value: T): Issue;
|
|
25
|
+
/**
|
|
26
|
+
* Read an amount from a BinaryParser
|
|
27
|
+
*
|
|
28
|
+
* @param parser BinaryParser to read the Amount from
|
|
29
|
+
* @returns An Amount object
|
|
30
|
+
*/
|
|
31
|
+
static fromParser(parser: BinaryParser): Issue;
|
|
32
|
+
/**
|
|
33
|
+
* Get the JSON representation of this Amount
|
|
34
|
+
*
|
|
35
|
+
* @returns the JSON interpretation of this.bytes
|
|
36
|
+
*/
|
|
37
|
+
toJSON(): IssueObject;
|
|
38
|
+
}
|
|
39
|
+
export { Issue, IssueObject };
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Issue = void 0;
|
|
4
|
+
const binary_parser_1 = require("../serdes/binary-parser");
|
|
5
|
+
const account_id_1 = require("./account-id");
|
|
6
|
+
const currency_1 = require("./currency");
|
|
7
|
+
const serialized_type_1 = require("./serialized-type");
|
|
8
|
+
const buffer_1 = require("buffer/");
|
|
9
|
+
/**
|
|
10
|
+
* Type guard for AmountObject
|
|
11
|
+
*/
|
|
12
|
+
function isIssueObject(arg) {
|
|
13
|
+
const keys = Object.keys(arg).sort();
|
|
14
|
+
if (keys.length === 1) {
|
|
15
|
+
return keys[0] === 'currency';
|
|
16
|
+
}
|
|
17
|
+
return keys.length === 2 && keys[0] === 'currency' && keys[1] === 'issuer';
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Class for serializing/Deserializing Amounts
|
|
21
|
+
*/
|
|
22
|
+
class Issue extends serialized_type_1.SerializedType {
|
|
23
|
+
constructor(bytes) {
|
|
24
|
+
super(bytes !== null && bytes !== void 0 ? bytes : Issue.ZERO_ISSUED_CURRENCY.bytes);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Construct an amount from an IOU or string amount
|
|
28
|
+
*
|
|
29
|
+
* @param value An Amount, object representing an IOU, or a string
|
|
30
|
+
* representing an integer amount
|
|
31
|
+
* @returns An Amount object
|
|
32
|
+
*/
|
|
33
|
+
static from(value) {
|
|
34
|
+
if (value instanceof Issue) {
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
if (isIssueObject(value)) {
|
|
38
|
+
const currency = currency_1.Currency.from(value.currency).toBytes();
|
|
39
|
+
if (value.issuer == null) {
|
|
40
|
+
return new Issue(currency);
|
|
41
|
+
}
|
|
42
|
+
const issuer = account_id_1.AccountID.from(value.issuer).toBytes();
|
|
43
|
+
return new Issue(buffer_1.Buffer.concat([currency, issuer]));
|
|
44
|
+
}
|
|
45
|
+
throw new Error('Invalid type to construct an Amount');
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Read an amount from a BinaryParser
|
|
49
|
+
*
|
|
50
|
+
* @param parser BinaryParser to read the Amount from
|
|
51
|
+
* @returns An Amount object
|
|
52
|
+
*/
|
|
53
|
+
static fromParser(parser) {
|
|
54
|
+
const currency = parser.read(20);
|
|
55
|
+
if (new currency_1.Currency(currency).toJSON() === 'XRP') {
|
|
56
|
+
return new Issue(currency);
|
|
57
|
+
}
|
|
58
|
+
const currencyAndIssuer = [currency, parser.read(20)];
|
|
59
|
+
return new Issue(buffer_1.Buffer.concat(currencyAndIssuer));
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get the JSON representation of this Amount
|
|
63
|
+
*
|
|
64
|
+
* @returns the JSON interpretation of this.bytes
|
|
65
|
+
*/
|
|
66
|
+
toJSON() {
|
|
67
|
+
const parser = new binary_parser_1.BinaryParser(this.toString());
|
|
68
|
+
const currency = currency_1.Currency.fromParser(parser);
|
|
69
|
+
if (currency.toJSON() === 'XRP') {
|
|
70
|
+
return { currency: currency.toJSON() };
|
|
71
|
+
}
|
|
72
|
+
const issuer = account_id_1.AccountID.fromParser(parser);
|
|
73
|
+
return {
|
|
74
|
+
currency: currency.toJSON(),
|
|
75
|
+
issuer: issuer.toJSON(),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.Issue = Issue;
|
|
80
|
+
Issue.ZERO_ISSUED_CURRENCY = new Issue(buffer_1.Buffer.alloc(20));
|
|
81
|
+
//# sourceMappingURL=issue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../../src/types/issue.ts"],"names":[],"mappings":";;;AAAA,2DAAsD;AAEtD,6CAAwC;AACxC,yCAAqC;AACrC,uDAA8D;AAC9D,oCAAgC;AAUhC;;GAEG;AACH,SAAS,aAAa,CAAC,GAAG;IACxB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IACpC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,CAAA;KAC9B;IACD,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAA;AAC5E,CAAC;AAED;;GAEG;AACH,MAAM,KAAM,SAAQ,gCAAc;IAGhC,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;IAClD,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,CAAgC,KAAQ;QACjD,IAAI,KAAK,YAAY,KAAK,EAAE;YAC1B,OAAO,KAAK,CAAA;SACb;QAED,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;YACxB,MAAM,QAAQ,GAAG,mBAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAA;YACxD,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;gBACxB,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAA;aAC3B;YACD,MAAM,MAAM,GAAG,sBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAA;YACrD,OAAO,IAAI,KAAK,CAAC,eAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;SACpD;QAED,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACxD,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,MAAoB;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAChC,IAAI,IAAI,mBAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,KAAK,KAAK,EAAE;YAC7C,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAA;SAC3B;QACD,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;QACrD,OAAO,IAAI,KAAK,CAAC,eAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAA;IACpD,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,MAAM,MAAM,GAAG,IAAI,4BAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;QAChD,MAAM,QAAQ,GAAG,mBAAQ,CAAC,UAAU,CAAC,MAAM,CAAa,CAAA;QACxD,IAAI,QAAQ,CAAC,MAAM,EAAE,KAAK,KAAK,EAAE;YAC/B,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAA;SACvC;QACD,MAAM,MAAM,GAAG,sBAAS,CAAC,UAAU,CAAC,MAAM,CAAc,CAAA;QAExD,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;SACxB,CAAA;IACH,CAAC;;AAGM,sBAAK;AAjEI,0BAAoB,GAAU,IAAI,KAAK,CAAC,eAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { BinaryParser } from '../serdes/binary-parser';
|
|
2
|
+
import { SerializedType, JsonObject } from './serialized-type';
|
|
3
|
+
/**
|
|
4
|
+
* The object representation of a Hop, an issuer AccountID, an account AccountID, and a Currency
|
|
5
|
+
*/
|
|
6
|
+
interface HopObject extends JsonObject {
|
|
7
|
+
issuer?: string;
|
|
8
|
+
account?: string;
|
|
9
|
+
currency?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Deserialize and Serialize the PathSet type
|
|
13
|
+
*/
|
|
14
|
+
declare class PathSet extends SerializedType {
|
|
15
|
+
/**
|
|
16
|
+
* Construct a PathSet from an Array of Arrays representing paths
|
|
17
|
+
*
|
|
18
|
+
* @param value A PathSet or Array of Array of HopObjects
|
|
19
|
+
* @returns the PathSet constructed from value
|
|
20
|
+
*/
|
|
21
|
+
static from<T extends PathSet | Array<Array<HopObject>>>(value: T): PathSet;
|
|
22
|
+
/**
|
|
23
|
+
* Construct a PathSet from a BinaryParser
|
|
24
|
+
*
|
|
25
|
+
* @param parser A BinaryParser to read PathSet from
|
|
26
|
+
* @returns the PathSet read from parser
|
|
27
|
+
*/
|
|
28
|
+
static fromParser(parser: BinaryParser): PathSet;
|
|
29
|
+
/**
|
|
30
|
+
* Get the JSON representation of this PathSet
|
|
31
|
+
*
|
|
32
|
+
* @returns an Array of Array of HopObjects, representing this PathSet
|
|
33
|
+
*/
|
|
34
|
+
toJSON(): Array<Array<HopObject>>;
|
|
35
|
+
}
|
|
36
|
+
export { PathSet };
|