ripple-binary-codec 1.6.0-beta.0 → 1.6.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.
Files changed (117) hide show
  1. package/dist/binary.d.ts +21 -6
  2. package/dist/binary.js +47 -32
  3. package/dist/binary.js.map +1 -1
  4. package/dist/coretypes.d.ts +2 -2
  5. package/dist/coretypes.js +33 -9
  6. package/dist/coretypes.js.map +1 -1
  7. package/dist/enums/bytes.d.ts +26 -0
  8. package/dist/enums/bytes.js +64 -0
  9. package/dist/enums/bytes.js.map +1 -0
  10. package/dist/enums/constants.d.ts +4 -0
  11. package/dist/enums/constants.js +8 -0
  12. package/dist/enums/constants.js.map +1 -0
  13. package/dist/enums/definitions.json +1 -572
  14. package/dist/enums/field.d.ts +29 -0
  15. package/dist/enums/field.js +59 -0
  16. package/dist/enums/field.js.map +1 -0
  17. package/dist/enums/index.d.ts +12 -48
  18. package/dist/enums/index.js +42 -124
  19. package/dist/enums/index.js.map +1 -1
  20. package/dist/enums/src/enums/definitions.json +1 -572
  21. package/dist/enums/utils-renumber.js +14 -14
  22. package/dist/enums/utils-renumber.js.map +1 -1
  23. package/dist/enums/xrpl-definitions-base.d.ts +44 -0
  24. package/dist/enums/xrpl-definitions-base.js +59 -0
  25. package/dist/enums/xrpl-definitions-base.js.map +1 -0
  26. package/dist/enums/xrpl-definitions.d.ts +21 -0
  27. package/dist/enums/xrpl-definitions.js +29 -0
  28. package/dist/enums/xrpl-definitions.js.map +1 -0
  29. package/dist/hash-prefixes.js +3 -3
  30. package/dist/hash-prefixes.js.map +1 -1
  31. package/dist/hashes.js +21 -43
  32. package/dist/hashes.js.map +1 -1
  33. package/dist/index.d.ts +14 -16
  34. package/dist/index.js +62 -24
  35. package/dist/index.js.map +1 -1
  36. package/dist/ledger-hashes.d.ts +5 -2
  37. package/dist/ledger-hashes.js +54 -29
  38. package/dist/ledger-hashes.js.map +1 -1
  39. package/dist/quality.js +18 -21
  40. package/dist/quality.js.map +1 -1
  41. package/dist/serdes/binary-parser.d.ts +6 -3
  42. package/dist/serdes/binary-parser.js +82 -57
  43. package/dist/serdes/binary-parser.js.map +1 -1
  44. package/dist/serdes/binary-serializer.d.ts +1 -1
  45. package/dist/serdes/binary-serializer.js +59 -40
  46. package/dist/serdes/binary-serializer.js.map +1 -1
  47. package/dist/shamap.js +72 -98
  48. package/dist/shamap.js.map +1 -1
  49. package/dist/types/account-id.js +18 -35
  50. package/dist/types/account-id.js.map +1 -1
  51. package/dist/types/amount.js +71 -88
  52. package/dist/types/amount.js.map +1 -1
  53. package/dist/types/blob.js +10 -27
  54. package/dist/types/blob.js.map +1 -1
  55. package/dist/types/currency.js +26 -44
  56. package/dist/types/currency.js.map +1 -1
  57. package/dist/types/hash-128.d.ts +6 -0
  58. package/dist/types/hash-128.js +23 -25
  59. package/dist/types/hash-128.js.map +1 -1
  60. package/dist/types/hash-160.js +8 -25
  61. package/dist/types/hash-160.js.map +1 -1
  62. package/dist/types/hash-256.js +8 -25
  63. package/dist/types/hash-256.js.map +1 -1
  64. package/dist/types/hash.js +20 -38
  65. package/dist/types/hash.js.map +1 -1
  66. package/dist/types/index.d.ts +3 -24
  67. package/dist/types/index.js +37 -30
  68. package/dist/types/index.js.map +1 -1
  69. package/dist/types/issue.js +24 -41
  70. package/dist/types/issue.js.map +1 -1
  71. package/dist/types/path-set.js +57 -87
  72. package/dist/types/path-set.js.map +1 -1
  73. package/dist/types/serialized-type.d.ts +3 -3
  74. package/dist/types/serialized-type.js +35 -56
  75. package/dist/types/serialized-type.js.map +1 -1
  76. package/dist/types/st-array.js +26 -46
  77. package/dist/types/st-array.js.map +1 -1
  78. package/dist/types/st-object.d.ts +6 -3
  79. package/dist/types/st-object.js +52 -74
  80. package/dist/types/st-object.js.map +1 -1
  81. package/dist/types/uint-16.js +15 -32
  82. package/dist/types/uint-16.js.map +1 -1
  83. package/dist/types/uint-32.js +16 -33
  84. package/dist/types/uint-32.js.map +1 -1
  85. package/dist/types/uint-64.d.ts +1 -1
  86. package/dist/types/uint-64.js +30 -47
  87. package/dist/types/uint-64.js.map +1 -1
  88. package/dist/types/uint-8.js +15 -32
  89. package/dist/types/uint-8.js.map +1 -1
  90. package/dist/types/uint.d.ts +1 -1
  91. package/dist/types/uint.js +10 -27
  92. package/dist/types/uint.js.map +1 -1
  93. package/dist/types/vector-256.js +23 -40
  94. package/dist/types/vector-256.js.map +1 -1
  95. package/dist/types/xchain-bridge.js +44 -61
  96. package/dist/types/xchain-bridge.js.map +1 -1
  97. package/package.json +7 -7
  98. package/test/amount.test.js +1 -1
  99. package/test/binary-json.test.js +1 -1
  100. package/test/binary-parser.test.js +4 -4
  101. package/test/binary-serializer.test.js +3 -3
  102. package/test/definitions.test.js +100 -0
  103. package/test/fixtures/codec-fixtures.json +14 -468
  104. package/test/hash.test.js +28 -2
  105. package/test/ledger.test.js +1 -1
  106. package/test/lower-case-hex.test.js +1 -1
  107. package/test/pseudo-transaction.test.js +1 -1
  108. package/test/quality.test.js +1 -1
  109. package/test/shamap.test.js +3 -3
  110. package/test/signing-data-encoding.test.js +104 -2
  111. package/test/tx-encode-decode.test.js +1 -1
  112. package/test/types.test.js +2 -2
  113. package/test/uint.test.js +2 -2
  114. package/test/x-address.test.js +1 -1
  115. package/dist/types/xchain-attestation-batch.d.ts +0 -44
  116. package/dist/types/xchain-attestation-batch.js +0 -107
  117. package/dist/types/xchain-attestation-batch.js.map +0 -1
package/dist/binary.d.ts CHANGED
@@ -2,29 +2,36 @@ import { BinaryParser } from './serdes/binary-parser';
2
2
  import { AccountID } from './types/account-id';
3
3
  import { BinarySerializer, BytesList } from './serdes/binary-serializer';
4
4
  import { sha512Half, transactionID } from './hashes';
5
+ import { type XrplDefinitionsBase } from './enums';
5
6
  import { JsonObject } from './types/serialized-type';
6
7
  import { Buffer } from 'buffer/';
7
8
  /**
8
9
  * Construct a BinaryParser
9
10
  *
10
11
  * @param bytes hex-string to construct BinaryParser from
12
+ * @param definitions rippled definitions used to parse the values of transaction types and such.
13
+ * Can be customized for sidechains and amendments.
11
14
  * @returns A BinaryParser
12
15
  */
13
- declare const makeParser: (bytes: string) => BinaryParser;
16
+ declare const makeParser: (bytes: string, definitions?: XrplDefinitionsBase) => BinaryParser;
14
17
  /**
15
18
  * Parse BinaryParser into JSON
16
19
  *
17
20
  * @param parser BinaryParser object
21
+ * @param definitions rippled definitions used to parse the values of transaction types and such.
22
+ * Can be customized for sidechains and amendments.
18
23
  * @returns JSON for the bytes in the BinaryParser
19
24
  */
20
- declare const readJSON: (parser: BinaryParser) => JsonObject;
25
+ declare const readJSON: (parser: BinaryParser, definitions?: XrplDefinitionsBase) => JsonObject;
21
26
  /**
22
27
  * Parse a hex-string into its JSON interpretation
23
28
  *
24
29
  * @param bytes hex-string to parse into JSON
30
+ * @param definitions rippled definitions used to parse the values of transaction types and such.
31
+ * Can be customized for sidechains and amendments.
25
32
  * @returns JSON
26
33
  */
27
- declare const binaryToJSON: (bytes: string) => JsonObject;
34
+ declare const binaryToJSON: (bytes: string, definitions?: XrplDefinitionsBase) => JsonObject;
28
35
  /**
29
36
  * Interface for passing parameters to SerializeObject
30
37
  *
@@ -34,12 +41,13 @@ interface OptionObject {
34
41
  prefix?: Buffer;
35
42
  suffix?: Buffer;
36
43
  signingFieldsOnly?: boolean;
44
+ definitions?: XrplDefinitionsBase;
37
45
  }
38
46
  /**
39
47
  * Function to serialize JSON object representing a transaction
40
48
  *
41
49
  * @param object JSON object to serialize
42
- * @param opts options for serializing, including optional prefix, suffix, and signingFieldOnly
50
+ * @param opts options for serializing, including optional prefix, suffix, signingFieldOnly, and definitions
43
51
  * @returns A Buffer containing the serialized object
44
52
  */
45
53
  declare function serializeObject(object: JsonObject, opts?: OptionObject): Buffer;
@@ -48,9 +56,12 @@ declare function serializeObject(object: JsonObject, opts?: OptionObject): Buffe
48
56
  *
49
57
  * @param transaction Transaction to serialize
50
58
  * @param prefix Prefix bytes to put before the serialized object
59
+ * @param opts.definitions Custom rippled types to use instead of the default. Used for sidechains and amendments.
51
60
  * @returns A Buffer with the serialized object
52
61
  */
53
- declare function signingData(transaction: JsonObject, prefix?: Buffer): Buffer;
62
+ declare function signingData(transaction: JsonObject, prefix?: Buffer, opts?: {
63
+ definitions?: XrplDefinitionsBase;
64
+ }): Buffer;
54
65
  /**
55
66
  * Interface describing fields required for a Claim
56
67
  */
@@ -62,6 +73,7 @@ interface ClaimObject extends JsonObject {
62
73
  * Serialize a signingClaim
63
74
  *
64
75
  * @param claim A claim object to serialize
76
+ * @param opts.definitions Custom rippled types to use instead of the default. Used for sidechains and amendments.
65
77
  * @returns the serialized object with appropriate prefix
66
78
  */
67
79
  declare function signingClaimData(claim: ClaimObject): Buffer;
@@ -70,7 +82,10 @@ declare function signingClaimData(claim: ClaimObject): Buffer;
70
82
  *
71
83
  * @param transaction transaction to serialize
72
84
  * @param signingAccount Account to sign the transaction with
85
+ * @param opts.definitions Custom rippled types to use instead of the default. Used for sidechains and amendments.
73
86
  * @returns serialized transaction with appropriate prefix and suffix
74
87
  */
75
- declare function multiSigningData(transaction: JsonObject, signingAccount: string | AccountID): Buffer;
88
+ declare function multiSigningData(transaction: JsonObject, signingAccount: string | AccountID, opts?: {
89
+ definitions: XrplDefinitionsBase;
90
+ }): Buffer;
76
91
  export { BinaryParser, BinarySerializer, BytesList, ClaimObject, makeParser, serializeObject, readJSON, multiSigningData, signingData, signingClaimData, binaryToJSON, sha512Half, transactionID, };
package/dist/binary.js CHANGED
@@ -2,61 +2,67 @@
2
2
  /* eslint-disable func-style */
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.transactionID = exports.sha512Half = exports.binaryToJSON = exports.signingClaimData = exports.signingData = exports.multiSigningData = exports.readJSON = exports.serializeObject = exports.makeParser = exports.BytesList = exports.BinarySerializer = exports.BinaryParser = void 0;
5
- var types_1 = require("./types");
6
- var binary_parser_1 = require("./serdes/binary-parser");
5
+ const types_1 = require("./types");
6
+ const binary_parser_1 = require("./serdes/binary-parser");
7
7
  Object.defineProperty(exports, "BinaryParser", { enumerable: true, get: function () { return binary_parser_1.BinaryParser; } });
8
- var hash_prefixes_1 = require("./hash-prefixes");
9
- var binary_serializer_1 = require("./serdes/binary-serializer");
8
+ const hash_prefixes_1 = require("./hash-prefixes");
9
+ const binary_serializer_1 = require("./serdes/binary-serializer");
10
10
  Object.defineProperty(exports, "BinarySerializer", { enumerable: true, get: function () { return binary_serializer_1.BinarySerializer; } });
11
11
  Object.defineProperty(exports, "BytesList", { enumerable: true, get: function () { return binary_serializer_1.BytesList; } });
12
- var hashes_1 = require("./hashes");
12
+ const hashes_1 = require("./hashes");
13
13
  Object.defineProperty(exports, "sha512Half", { enumerable: true, get: function () { return hashes_1.sha512Half; } });
14
14
  Object.defineProperty(exports, "transactionID", { enumerable: true, get: function () { return hashes_1.transactionID; } });
15
- var bigInt = require("big-integer");
15
+ const enums_1 = require("./enums");
16
+ const bigInt = require("big-integer");
16
17
  /**
17
18
  * Construct a BinaryParser
18
19
  *
19
20
  * @param bytes hex-string to construct BinaryParser from
21
+ * @param definitions rippled definitions used to parse the values of transaction types and such.
22
+ * Can be customized for sidechains and amendments.
20
23
  * @returns A BinaryParser
21
24
  */
22
- var makeParser = function (bytes) { return new binary_parser_1.BinaryParser(bytes); };
25
+ const makeParser = (bytes, definitions) => new binary_parser_1.BinaryParser(bytes, definitions);
23
26
  exports.makeParser = makeParser;
24
27
  /**
25
28
  * Parse BinaryParser into JSON
26
29
  *
27
30
  * @param parser BinaryParser object
31
+ * @param definitions rippled definitions used to parse the values of transaction types and such.
32
+ * Can be customized for sidechains and amendments.
28
33
  * @returns JSON for the bytes in the BinaryParser
29
34
  */
30
- var readJSON = function (parser) {
31
- return parser.readType(types_1.coreTypes.STObject).toJSON();
32
- };
35
+ const readJSON = (parser, definitions = enums_1.DEFAULT_DEFINITIONS) => parser.readType(types_1.coreTypes.STObject).toJSON(definitions);
33
36
  exports.readJSON = readJSON;
34
37
  /**
35
38
  * Parse a hex-string into its JSON interpretation
36
39
  *
37
40
  * @param bytes hex-string to parse into JSON
41
+ * @param definitions rippled definitions used to parse the values of transaction types and such.
42
+ * Can be customized for sidechains and amendments.
38
43
  * @returns JSON
39
44
  */
40
- var binaryToJSON = function (bytes) { return readJSON(makeParser(bytes)); };
45
+ const binaryToJSON = (bytes, definitions) => readJSON(makeParser(bytes, definitions), definitions);
41
46
  exports.binaryToJSON = binaryToJSON;
42
47
  /**
43
48
  * Function to serialize JSON object representing a transaction
44
49
  *
45
50
  * @param object JSON object to serialize
46
- * @param opts options for serializing, including optional prefix, suffix, and signingFieldOnly
51
+ * @param opts options for serializing, including optional prefix, suffix, signingFieldOnly, and definitions
47
52
  * @returns A Buffer containing the serialized object
48
53
  */
49
- function serializeObject(object, opts) {
50
- if (opts === void 0) { opts = {}; }
51
- var prefix = opts.prefix, suffix = opts.suffix, _a = opts.signingFieldsOnly, signingFieldsOnly = _a === void 0 ? false : _a;
52
- var bytesList = new binary_serializer_1.BytesList();
54
+ function serializeObject(object, opts = {}) {
55
+ const { prefix, suffix, signingFieldsOnly = false, definitions } = opts;
56
+ const bytesList = new binary_serializer_1.BytesList();
53
57
  if (prefix) {
54
58
  bytesList.put(prefix);
55
59
  }
56
- var filter = signingFieldsOnly
57
- ? function (f) { return f.isSigningField; }
60
+ const filter = signingFieldsOnly
61
+ ? (f) => f.isSigningField
58
62
  : undefined;
59
- types_1.coreTypes.STObject.from(object, filter).toBytesSink(bytesList);
63
+ types_1.coreTypes.STObject
64
+ .from(object, filter, definitions)
65
+ .toBytesSink(bytesList);
60
66
  if (suffix) {
61
67
  bytesList.put(suffix);
62
68
  }
@@ -68,25 +74,30 @@ exports.serializeObject = serializeObject;
68
74
  *
69
75
  * @param transaction Transaction to serialize
70
76
  * @param prefix Prefix bytes to put before the serialized object
77
+ * @param opts.definitions Custom rippled types to use instead of the default. Used for sidechains and amendments.
71
78
  * @returns A Buffer with the serialized object
72
79
  */
73
- function signingData(transaction, prefix) {
74
- if (prefix === void 0) { prefix = hash_prefixes_1.HashPrefix.transactionSig; }
75
- return serializeObject(transaction, { prefix: prefix, signingFieldsOnly: true });
80
+ function signingData(transaction, prefix = hash_prefixes_1.HashPrefix.transactionSig, opts = {}) {
81
+ return serializeObject(transaction, {
82
+ prefix,
83
+ signingFieldsOnly: true,
84
+ definitions: opts.definitions,
85
+ });
76
86
  }
77
87
  exports.signingData = signingData;
78
88
  /**
79
89
  * Serialize a signingClaim
80
90
  *
81
91
  * @param claim A claim object to serialize
92
+ * @param opts.definitions Custom rippled types to use instead of the default. Used for sidechains and amendments.
82
93
  * @returns the serialized object with appropriate prefix
83
94
  */
84
95
  function signingClaimData(claim) {
85
- var num = bigInt(String(claim.amount));
86
- var prefix = hash_prefixes_1.HashPrefix.paymentChannelClaim;
87
- var channel = types_1.coreTypes.Hash256.from(claim.channel).toBytes();
88
- var amount = types_1.coreTypes.UInt64.from(num).toBytes();
89
- var bytesList = new binary_serializer_1.BytesList();
96
+ const num = bigInt(String(claim.amount));
97
+ const prefix = hash_prefixes_1.HashPrefix.paymentChannelClaim;
98
+ const channel = types_1.coreTypes.Hash256.from(claim.channel).toBytes();
99
+ const amount = types_1.coreTypes.UInt64.from(num).toBytes();
100
+ const bytesList = new binary_serializer_1.BytesList();
90
101
  bytesList.put(prefix);
91
102
  bytesList.put(channel);
92
103
  bytesList.put(amount);
@@ -98,15 +109,19 @@ exports.signingClaimData = signingClaimData;
98
109
  *
99
110
  * @param transaction transaction to serialize
100
111
  * @param signingAccount Account to sign the transaction with
112
+ * @param opts.definitions Custom rippled types to use instead of the default. Used for sidechains and amendments.
101
113
  * @returns serialized transaction with appropriate prefix and suffix
102
114
  */
103
- function multiSigningData(transaction, signingAccount) {
104
- var prefix = hash_prefixes_1.HashPrefix.transactionMultiSig;
105
- var suffix = types_1.coreTypes.AccountID.from(signingAccount).toBytes();
115
+ function multiSigningData(transaction, signingAccount, opts = {
116
+ definitions: enums_1.DEFAULT_DEFINITIONS,
117
+ }) {
118
+ const prefix = hash_prefixes_1.HashPrefix.transactionMultiSig;
119
+ const suffix = types_1.coreTypes.AccountID.from(signingAccount).toBytes();
106
120
  return serializeObject(transaction, {
107
- prefix: prefix,
108
- suffix: suffix,
121
+ prefix,
122
+ suffix,
109
123
  signingFieldsOnly: true,
124
+ definitions: opts.definitions,
110
125
  });
111
126
  }
112
127
  exports.multiSigningData = multiSigningData;
@@ -1 +1 @@
1
- {"version":3,"file":"binary.js","sourceRoot":"","sources":["../src/binary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binary.js","sourceRoot":"","sources":["../src/binary.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Field, TransactionType, LedgerEntryType, Type, TransactionResult } from './enums';
1
+ import { DEFAULT_DEFINITIONS, Field, TransactionType, LedgerEntryType, Type, TransactionResult } from './enums';
2
2
  import * as types from './types';
3
3
  import * as binary from './binary';
4
4
  import { ShaMap } from './shamap';
@@ -6,4 +6,4 @@ import * as ledgerHashes from './ledger-hashes';
6
6
  import * as hashes from './hashes';
7
7
  import { quality } from './quality';
8
8
  import { HashPrefix } from './hash-prefixes';
9
- export { hashes, binary, ledgerHashes, Field, TransactionType, LedgerEntryType, Type, TransactionResult, quality, HashPrefix, ShaMap, types, };
9
+ export { hashes, binary, ledgerHashes, DEFAULT_DEFINITIONS, Field, TransactionType, LedgerEntryType, Type, TransactionResult, quality, HashPrefix, ShaMap, types, };
package/dist/coretypes.js CHANGED
@@ -1,24 +1,48 @@
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
- exports.types = exports.ShaMap = exports.HashPrefix = exports.quality = exports.TransactionResult = exports.Type = exports.LedgerEntryType = exports.TransactionType = exports.Field = exports.ledgerHashes = exports.binary = exports.hashes = void 0;
4
- var enums_1 = require("./enums");
26
+ exports.types = exports.ShaMap = exports.HashPrefix = exports.quality = exports.TransactionResult = exports.Type = exports.LedgerEntryType = exports.TransactionType = exports.Field = exports.DEFAULT_DEFINITIONS = exports.ledgerHashes = exports.binary = exports.hashes = void 0;
27
+ const enums_1 = require("./enums");
28
+ Object.defineProperty(exports, "DEFAULT_DEFINITIONS", { enumerable: true, get: function () { return enums_1.DEFAULT_DEFINITIONS; } });
5
29
  Object.defineProperty(exports, "Field", { enumerable: true, get: function () { return enums_1.Field; } });
6
30
  Object.defineProperty(exports, "TransactionType", { enumerable: true, get: function () { return enums_1.TransactionType; } });
7
31
  Object.defineProperty(exports, "LedgerEntryType", { enumerable: true, get: function () { return enums_1.LedgerEntryType; } });
8
32
  Object.defineProperty(exports, "Type", { enumerable: true, get: function () { return enums_1.Type; } });
9
33
  Object.defineProperty(exports, "TransactionResult", { enumerable: true, get: function () { return enums_1.TransactionResult; } });
10
- var types = require("./types");
34
+ const types = __importStar(require("./types"));
11
35
  exports.types = types;
12
- var binary = require("./binary");
36
+ const binary = __importStar(require("./binary"));
13
37
  exports.binary = binary;
14
- var shamap_1 = require("./shamap");
38
+ const shamap_1 = require("./shamap");
15
39
  Object.defineProperty(exports, "ShaMap", { enumerable: true, get: function () { return shamap_1.ShaMap; } });
16
- var ledgerHashes = require("./ledger-hashes");
40
+ const ledgerHashes = __importStar(require("./ledger-hashes"));
17
41
  exports.ledgerHashes = ledgerHashes;
18
- var hashes = require("./hashes");
42
+ const hashes = __importStar(require("./hashes"));
19
43
  exports.hashes = hashes;
20
- var quality_1 = require("./quality");
44
+ const quality_1 = require("./quality");
21
45
  Object.defineProperty(exports, "quality", { enumerable: true, get: function () { return quality_1.quality; } });
22
- var hash_prefixes_1 = require("./hash-prefixes");
46
+ const hash_prefixes_1 = require("./hash-prefixes");
23
47
  Object.defineProperty(exports, "HashPrefix", { enumerable: true, get: function () { return hash_prefixes_1.HashPrefix; } });
24
48
  //# sourceMappingURL=coretypes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coretypes.js","sourceRoot":"","sources":["../src/coretypes.ts"],"names":[],"mappings":";;;AAAA,iCAMgB;AAad,sFAlBA,aAAK,OAkBA;AACL,gGAlBA,uBAAe,OAkBA;AACf,gGAlBA,uBAAe,OAkBA;AACf,qFAlBA,YAAI,OAkBA;AACJ,kGAlBA,yBAAiB,OAkBA;AAhBnB,+BAAgC;AAoB9B,sBAAK;AAnBP,iCAAkC;AAShC,wBAAM;AARR,mCAAiC;AAiB/B,uFAjBO,eAAM,OAiBP;AAhBR,8CAA+C;AAQ7C,oCAAY;AAPd,iCAAkC;AAKhC,wBAAM;AAJR,qCAAmC;AAYjC,wFAZO,iBAAO,OAYP;AAXT,iDAA4C;AAY1C,2FAZO,0BAAU,OAYP"}
1
+ {"version":3,"file":"coretypes.js","sourceRoot":"","sources":["../src/coretypes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAOgB;AAad,oGAnBA,2BAAmB,OAmBA;AACnB,sFAnBA,aAAK,OAmBA;AACL,gGAnBA,uBAAe,OAmBA;AACf,gGAnBA,uBAAe,OAmBA;AACf,qFAnBA,YAAI,OAmBA;AACJ,kGAnBA,yBAAiB,OAmBA;AAjBnB,+CAAgC;AAqB9B,sBAAK;AApBP,iDAAkC;AAShC,wBAAM;AARR,qCAAiC;AAkB/B,uFAlBO,eAAM,OAkBP;AAjBR,8DAA+C;AAQ7C,oCAAY;AAPd,iDAAkC;AAKhC,wBAAM;AAJR,uCAAmC;AAajC,wFAbO,iBAAO,OAaP;AAZT,mDAA4C;AAa1C,2FAbO,0BAAU,OAaP"}
@@ -0,0 +1,26 @@
1
+ import { BytesList, BinaryParser } from '../binary';
2
+ import { Buffer } from 'buffer/';
3
+ export declare class Bytes {
4
+ readonly name: string;
5
+ readonly ordinal: number;
6
+ readonly ordinalWidth: number;
7
+ readonly bytes: Buffer;
8
+ constructor(name: string, ordinal: number, ordinalWidth: number);
9
+ toJSON(): string;
10
+ toBytesSink(sink: BytesList): void;
11
+ toBytes(): Uint8Array;
12
+ }
13
+ export declare class BytesLookup {
14
+ readonly ordinalWidth: number;
15
+ constructor(types: Record<string, number>, ordinalWidth: number);
16
+ /**
17
+ * Add a new name value pair to the BytesLookup.
18
+ *
19
+ * @param name - A human readable name for the field.
20
+ * @param value - The numeric value for the field.
21
+ * @throws if the name or value already exist in the lookup because it's unclear how to decode.
22
+ */
23
+ add(name: string, value: number): void;
24
+ from(value: Bytes | string): Bytes;
25
+ fromParser(parser: BinaryParser): Bytes;
26
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BytesLookup = exports.Bytes = void 0;
4
+ const buffer_1 = require("buffer/");
5
+ /*
6
+ * @brief: Bytes, name, and ordinal representing one type, ledger_type, transaction type, or result
7
+ */
8
+ class Bytes {
9
+ constructor(name, ordinal, ordinalWidth) {
10
+ this.name = name;
11
+ this.ordinal = ordinal;
12
+ this.ordinalWidth = ordinalWidth;
13
+ this.bytes = buffer_1.Buffer.alloc(ordinalWidth);
14
+ for (let i = 0; i < ordinalWidth; i++) {
15
+ this.bytes[ordinalWidth - i - 1] = (ordinal >>> (i * 8)) & 0xff;
16
+ }
17
+ }
18
+ toJSON() {
19
+ return this.name;
20
+ }
21
+ toBytesSink(sink) {
22
+ sink.put(this.bytes);
23
+ }
24
+ toBytes() {
25
+ return this.bytes;
26
+ }
27
+ }
28
+ exports.Bytes = Bytes;
29
+ /*
30
+ * @brief: Collection of Bytes objects, mapping bidirectionally
31
+ */
32
+ class BytesLookup {
33
+ constructor(types, ordinalWidth) {
34
+ this.ordinalWidth = ordinalWidth;
35
+ Object.entries(types).forEach(([k, v]) => {
36
+ this.add(k, v);
37
+ });
38
+ }
39
+ /**
40
+ * Add a new name value pair to the BytesLookup.
41
+ *
42
+ * @param name - A human readable name for the field.
43
+ * @param value - The numeric value for the field.
44
+ * @throws if the name or value already exist in the lookup because it's unclear how to decode.
45
+ */
46
+ add(name, value) {
47
+ if (this[name]) {
48
+ throw new SyntaxError(`Attempted to add a value with a duplicate name "${name}". This is not allowed because it is unclear how to decode.`);
49
+ }
50
+ if (this[value.toString()]) {
51
+ throw new SyntaxError(`Attempted to add a duplicate value under a different name (Given name: "${name}" and previous name: "${this[value.toString()]}. This is not allowed because it is unclear how to decode.\nGiven value: ${value.toString()}`);
52
+ }
53
+ this[name] = new Bytes(name, value, this.ordinalWidth);
54
+ this[value.toString()] = this[name];
55
+ }
56
+ from(value) {
57
+ return value instanceof Bytes ? value : this[value];
58
+ }
59
+ fromParser(parser) {
60
+ return this.from(parser.readUIntN(this.ordinalWidth).toString());
61
+ }
62
+ }
63
+ exports.BytesLookup = BytesLookup;
64
+ //# sourceMappingURL=bytes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/enums/bytes.ts"],"names":[],"mappings":";;;AACA,oCAAgC;AAEhC;;GAEG;AACH,MAAa,KAAK;IAGhB,YACW,IAAY,EACZ,OAAe,EACf,YAAoB;QAFpB,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAQ;QACf,iBAAY,GAAZ,YAAY,CAAQ;QAE7B,IAAI,CAAC,KAAK,GAAG,eAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;SAChE;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED,WAAW,CAAC,IAAe;QACzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;CACF;AAzBD,sBAyBC;AAED;;GAEG;AACH,MAAa,WAAW;IACtB,YAAY,KAA6B,EAAW,YAAoB;QAApB,iBAAY,GAAZ,YAAY,CAAQ;QACtE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;YACvC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;OAMG;IACH,GAAG,CAAC,IAAY,EAAE,KAAa;QAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE;YACd,MAAM,IAAI,WAAW,CACnB,mDAAmD,IAAI,6DAA6D,CACrH,CAAA;SACF;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE;YAC1B,MAAM,IAAI,WAAW,CACnB,2EAA2E,IAAI,yBAC7E,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CACvB,4EAA4E,KAAK,CAAC,QAAQ,EAAE,EAAE,CAC/F,CAAA;SACF;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;QACtD,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC;IAED,IAAI,CAAC,KAAqB;QACxB,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAW,CAAA;IAChE,CAAC;IAED,UAAU,CAAC,MAAoB;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;IAClE,CAAC;CACF;AAtCD,kCAsCC"}
@@ -0,0 +1,4 @@
1
+ export declare const TYPE_WIDTH = 2;
2
+ export declare const LEDGER_ENTRY_WIDTH = 2;
3
+ export declare const TRANSACTION_TYPE_WIDTH = 2;
4
+ export declare const TRANSACTION_RESULT_WIDTH = 1;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TRANSACTION_RESULT_WIDTH = exports.TRANSACTION_TYPE_WIDTH = exports.LEDGER_ENTRY_WIDTH = exports.TYPE_WIDTH = void 0;
4
+ exports.TYPE_WIDTH = 2;
5
+ exports.LEDGER_ENTRY_WIDTH = 2;
6
+ exports.TRANSACTION_TYPE_WIDTH = 2;
7
+ exports.TRANSACTION_RESULT_WIDTH = 1;
8
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/enums/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,CAAC,CAAA;AACd,QAAA,kBAAkB,GAAG,CAAC,CAAA;AACtB,QAAA,sBAAsB,GAAG,CAAC,CAAA;AAC1B,QAAA,wBAAwB,GAAG,CAAC,CAAA"}