@transia/ripple-binary-codec 2.5.5-alpha.0 → 2.5.5-alpha.2

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 (86) hide show
  1. package/dist/enums/definitions.json +1313 -959
  2. package/dist/enums/src/enums/definitions.json +1318 -959
  3. package/dist/index.js +0 -3
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/enums/definitions.json +1313 -959
  6. package/dist/src/index.js +0 -3
  7. package/dist/src/index.js.map +1 -1
  8. package/dist/src/types/hash-128.js +1 -1
  9. package/dist/src/types/hash-128.js.map +1 -1
  10. package/dist/src/types/hash-160.js +1 -1
  11. package/dist/src/types/hash-160.js.map +1 -1
  12. package/dist/src/types/hash-192.js +1 -1
  13. package/dist/src/types/hash-192.js.map +1 -1
  14. package/dist/src/types/index.d.ts +2 -1
  15. package/dist/src/types/index.js +4 -1
  16. package/dist/src/types/index.js.map +1 -1
  17. package/dist/src/types/int-32.d.ts +33 -0
  18. package/dist/src/types/int-32.js +64 -0
  19. package/dist/src/types/int-32.js.map +1 -0
  20. package/dist/src/types/int.d.ts +38 -0
  21. package/dist/src/types/int.js +57 -0
  22. package/dist/src/types/int.js.map +1 -0
  23. package/dist/src/types/issue.d.ts +10 -13
  24. package/dist/src/types/issue.js +42 -29
  25. package/dist/src/types/issue.js.map +1 -1
  26. package/dist/src/types/st-number.js +88 -33
  27. package/dist/src/types/st-number.js.map +1 -1
  28. package/dist/src/types/st-object.d.ts +3 -3
  29. package/dist/src/types/st-object.js +12 -12
  30. package/dist/src/types/st-object.js.map +1 -1
  31. package/dist/src/types/uint-16.js +2 -2
  32. package/dist/src/types/uint-16.js.map +1 -1
  33. package/dist/src/types/uint-32.js +1 -1
  34. package/dist/src/types/uint-32.js.map +1 -1
  35. package/dist/src/types/uint-64.js +1 -1
  36. package/dist/src/types/uint-64.js.map +1 -1
  37. package/dist/src/types/uint-8.js +1 -1
  38. package/dist/src/types/uint-8.js.map +1 -1
  39. package/dist/tsconfig.tsbuildinfo +1 -1
  40. package/dist/types/hash-128.js +1 -1
  41. package/dist/types/hash-128.js.map +1 -1
  42. package/dist/types/hash-160.js +1 -1
  43. package/dist/types/hash-160.js.map +1 -1
  44. package/dist/types/hash-192.js +1 -1
  45. package/dist/types/hash-192.js.map +1 -1
  46. package/dist/types/index.d.ts +2 -1
  47. package/dist/types/index.js +4 -1
  48. package/dist/types/index.js.map +1 -1
  49. package/dist/types/int-32.d.ts +33 -0
  50. package/dist/types/int-32.js +64 -0
  51. package/dist/types/int-32.js.map +1 -0
  52. package/dist/types/int.d.ts +38 -0
  53. package/dist/types/int.js +57 -0
  54. package/dist/types/int.js.map +1 -0
  55. package/dist/types/issue.d.ts +10 -13
  56. package/dist/types/issue.js +42 -29
  57. package/dist/types/issue.js.map +1 -1
  58. package/dist/types/st-number.js +88 -33
  59. package/dist/types/st-number.js.map +1 -1
  60. package/dist/types/st-object.d.ts +3 -3
  61. package/dist/types/st-object.js +12 -12
  62. package/dist/types/st-object.js.map +1 -1
  63. package/dist/types/uint-16.js +2 -2
  64. package/dist/types/uint-16.js.map +1 -1
  65. package/dist/types/uint-32.js +1 -1
  66. package/dist/types/uint-32.js.map +1 -1
  67. package/dist/types/uint-64.js +1 -1
  68. package/dist/types/uint-64.js.map +1 -1
  69. package/dist/types/uint-8.js +1 -1
  70. package/dist/types/uint-8.js.map +1 -1
  71. package/package.json +8 -5
  72. package/src/enums/definitions.json +1318 -959
  73. package/src/index.ts +1 -3
  74. package/src/types/hash-128.ts +1 -1
  75. package/src/types/hash-160.ts +1 -1
  76. package/src/types/hash-192.ts +1 -1
  77. package/src/types/index.ts +3 -0
  78. package/src/types/int-32.ts +72 -0
  79. package/src/types/int.ts +75 -0
  80. package/src/types/issue.ts +90 -57
  81. package/src/types/st-number.ts +107 -31
  82. package/src/types/st-object.ts +77 -73
  83. package/src/types/uint-16.ts +2 -2
  84. package/src/types/uint-32.ts +1 -1
  85. package/src/types/uint-64.ts +1 -1
  86. package/src/types/uint-8.ts +1 -1
@@ -3,25 +3,29 @@ import {
3
3
  FieldInstance,
4
4
  Bytes,
5
5
  XrplDefinitionsBase,
6
- } from '../enums'
7
- import { SerializedType, JsonObject, SerializedTypeID } from './serialized-type'
6
+ } from "../enums";
7
+ import {
8
+ SerializedType,
9
+ JsonObject,
10
+ SerializedTypeID,
11
+ } from "./serialized-type";
8
12
  import {
9
13
  xAddressToClassicAddress,
10
14
  isValidXAddress,
11
- } from '@transia/ripple-address-codec'
12
- import { BinaryParser } from '../serdes/binary-parser'
13
- import { BinarySerializer, BytesList } from '../serdes/binary-serializer'
15
+ } from "@transia/ripple-address-codec";
16
+ import { BinaryParser } from "../serdes/binary-parser";
17
+ import { BinarySerializer, BytesList } from "../serdes/binary-serializer";
14
18
 
15
- import { STArray } from './st-array'
16
- import { UInt64 } from './uint-64'
19
+ import { STArray } from "./st-array";
20
+ import { UInt64 } from "./uint-64";
17
21
 
18
- const OBJECT_END_MARKER_BYTE = Uint8Array.from([0xe1])
19
- const OBJECT_END_MARKER = 'ObjectEndMarker'
20
- const ST_OBJECT = 'STObject'
21
- const DESTINATION = 'Destination'
22
- const ACCOUNT = 'Account'
23
- const SOURCE_TAG = 'SourceTag'
24
- const DEST_TAG = 'DestinationTag'
22
+ const OBJECT_END_MARKER_BYTE = Uint8Array.from([0xe1]);
23
+ const OBJECT_END_MARKER = "ObjectEndMarker";
24
+ const ST_OBJECT = "STObject";
25
+ const DESTINATION = "Destination";
26
+ const ACCOUNT = "Account";
27
+ const SOURCE_TAG = "SourceTag";
28
+ const DEST_TAG = "DestinationTag";
25
29
 
26
30
  /**
27
31
  * Break down an X-Address into an account and a tag
@@ -30,17 +34,17 @@ const DEST_TAG = 'DestinationTag'
30
34
  * @param xAddress X-Address corresponding to the field
31
35
  */
32
36
  function handleXAddress(field: string, xAddress: string): JsonObject {
33
- const decoded = xAddressToClassicAddress(xAddress)
37
+ const decoded = xAddressToClassicAddress(xAddress);
34
38
 
35
- let tagName
36
- if (field === DESTINATION) tagName = DEST_TAG
37
- else if (field === ACCOUNT) tagName = SOURCE_TAG
39
+ let tagName;
40
+ if (field === DESTINATION) tagName = DEST_TAG;
41
+ else if (field === ACCOUNT) tagName = SOURCE_TAG;
38
42
  else if (decoded.tag !== false)
39
- throw new Error(`${field} cannot have an associated tag`)
43
+ throw new Error(`${field} cannot have an associated tag`);
40
44
 
41
45
  return decoded.tag !== false
42
46
  ? { [field]: decoded.classicAddress, [tagName]: decoded.tag }
43
- : { [field]: decoded.classicAddress }
47
+ : { [field]: decoded.classicAddress };
44
48
  }
45
49
 
46
50
  /**
@@ -52,9 +56,9 @@ function handleXAddress(field: string, xAddress: string): JsonObject {
52
56
  */
53
57
  function checkForDuplicateTags(obj1: JsonObject, obj2: JsonObject): void {
54
58
  if (!(obj1[SOURCE_TAG] === undefined || obj2[SOURCE_TAG] === undefined))
55
- throw new Error('Cannot have Account X-Address and SourceTag')
59
+ throw new Error("Cannot have Account X-Address and SourceTag");
56
60
  if (!(obj1[DEST_TAG] === undefined || obj2[DEST_TAG] === undefined))
57
- throw new Error('Cannot have Destination X-Address and DestinationTag')
61
+ throw new Error("Cannot have Destination X-Address and DestinationTag");
58
62
  }
59
63
 
60
64
  /**
@@ -68,24 +72,24 @@ class STObject extends SerializedType {
68
72
  * @returns A STObject object
69
73
  */
70
74
  static fromParser(parser: BinaryParser): STObject {
71
- const list: BytesList = new BytesList()
72
- const bytes: BinarySerializer = new BinarySerializer(list)
75
+ const list: BytesList = new BytesList();
76
+ const bytes: BinarySerializer = new BinarySerializer(list);
73
77
 
74
78
  while (!parser.end()) {
75
- const field = parser.readField()
79
+ const field = parser.readField();
76
80
  if (field.name === OBJECT_END_MARKER) {
77
- break
81
+ break;
78
82
  }
79
83
 
80
- const associatedValue = parser.readFieldValue(field)
84
+ const associatedValue = parser.readFieldValue(field);
81
85
 
82
- bytes.writeFieldAndValue(field, associatedValue)
86
+ bytes.writeFieldAndValue(field, associatedValue);
83
87
  if (field.type.name === ST_OBJECT) {
84
- bytes.put(OBJECT_END_MARKER_BYTE)
88
+ bytes.put(OBJECT_END_MARKER_BYTE);
85
89
  }
86
90
  }
87
91
 
88
- return new STObject(list.toBytes())
92
+ return new STObject(list.toBytes());
89
93
  }
90
94
 
91
95
  /**
@@ -102,22 +106,22 @@ class STObject extends SerializedType {
102
106
  definitions: XrplDefinitionsBase = DEFAULT_DEFINITIONS,
103
107
  ): STObject {
104
108
  if (value instanceof STObject) {
105
- return value
109
+ return value;
106
110
  }
107
111
 
108
- const list: BytesList = new BytesList()
109
- const bytes: BinarySerializer = new BinarySerializer(list)
112
+ const list: BytesList = new BytesList();
113
+ const bytes: BinarySerializer = new BinarySerializer(list);
110
114
 
111
- let isUnlModify = false
115
+ let isUnlModify = false;
112
116
 
113
117
  const xAddressDecoded = Object.entries(value).reduce((acc, [key, val]) => {
114
- let handled: JsonObject | undefined = undefined
118
+ let handled: JsonObject | undefined = undefined;
115
119
  if (val && isValidXAddress(val.toString())) {
116
- handled = handleXAddress(key, val.toString())
117
- checkForDuplicateTags(handled, value)
120
+ handled = handleXAddress(key, val.toString());
121
+ checkForDuplicateTags(handled, value);
118
122
  }
119
- return Object.assign(acc, handled ?? { [key]: val })
120
- }, {})
123
+ return Object.assign(acc, handled ?? { [key]: val });
124
+ }, {});
121
125
 
122
126
  function isValidFieldInstance(
123
127
  f: FieldInstance | undefined,
@@ -126,65 +130,65 @@ class STObject extends SerializedType {
126
130
  f !== undefined &&
127
131
  xAddressDecoded[f.name] !== undefined &&
128
132
  f.isSerialized
129
- )
133
+ );
130
134
  }
131
135
 
132
136
  let sorted = Object.keys(xAddressDecoded)
133
137
  .map((f: string): FieldInstance | undefined => {
134
138
  if (!(f in definitions.field)) {
135
- if (f[0] === f[0].toLowerCase()) return undefined
136
- throw new Error(`Field ${f} is not defined in the definitions`)
139
+ if (f[0] === f[0].toLowerCase()) return undefined;
140
+ throw new Error(`Field ${f} is not defined in the definitions`);
137
141
  }
138
- return definitions.field[f] as FieldInstance
142
+ return definitions.field[f] as FieldInstance;
139
143
  })
140
144
  .filter(isValidFieldInstance)
141
145
  .sort((a, b) => {
142
- return a.ordinal - b.ordinal
143
- })
146
+ return a.ordinal - b.ordinal;
147
+ });
144
148
 
145
149
  if (filter !== undefined) {
146
- sorted = sorted.filter(filter)
150
+ sorted = sorted.filter(filter);
147
151
  }
148
152
 
149
153
  sorted.forEach((field) => {
150
154
  const associatedValue =
151
155
  field.type.name === ST_OBJECT
152
156
  ? this.from(xAddressDecoded[field.name], undefined, definitions)
153
- : field.type.name === 'STArray'
154
- ? STArray.from(xAddressDecoded[field.name], definitions)
155
- : field.type.name === 'UInt64'
156
- ? UInt64.from(xAddressDecoded[field.name], field.name)
157
- : field.associatedType?.from
158
- ? field.associatedType.from(xAddressDecoded[field.name])
159
- : (() => {
160
- throw new Error(
161
- `Type ${field.type.name} for field ${field.name} is missing associatedType.from`,
162
- )
163
- })()
157
+ : field.type.name === "STArray"
158
+ ? STArray.from(xAddressDecoded[field.name], definitions)
159
+ : field.type.name === "UInt64"
160
+ ? UInt64.from(xAddressDecoded[field.name], field.name)
161
+ : field.associatedType?.from
162
+ ? field.associatedType.from(xAddressDecoded[field.name])
163
+ : (() => {
164
+ throw new Error(
165
+ `Type ${field.type.name} for field ${field.name} is missing associatedType.from`,
166
+ );
167
+ })();
164
168
 
165
169
  if (associatedValue == undefined) {
166
170
  throw new TypeError(
167
171
  `Unable to interpret "${field.name}: ${
168
172
  xAddressDecoded[field.name]
169
173
  }".`,
170
- )
174
+ );
171
175
  }
172
176
 
173
- if ((associatedValue as unknown as Bytes).name === 'UNLModify') {
177
+ if ((associatedValue as unknown as Bytes).name === "UNLModify") {
174
178
  // triggered when the TransactionType field has a value of 'UNLModify'
175
- isUnlModify = true
179
+ isUnlModify = true;
176
180
  }
177
181
  // true when in the UNLModify pseudotransaction (after the transaction type has been processed) and working with the
178
182
  // Account field
179
183
  // The Account field must not be a part of the UNLModify pseudotransaction encoding, due to a bug in rippled
180
- const isUnlModifyWorkaround = field.name == 'Account' && isUnlModify
181
- bytes.writeFieldAndValue(field, associatedValue, isUnlModifyWorkaround)
184
+ const isUnlModifyWorkaround = field.name == "Account" && isUnlModify;
185
+ bytes.writeFieldAndValue(field, associatedValue, isUnlModifyWorkaround);
182
186
  if (field.type.name === ST_OBJECT) {
183
- bytes.put(OBJECT_END_MARKER_BYTE)
187
+ bytes.put(OBJECT_END_MARKER_BYTE);
184
188
  }
185
- })
189
+ });
186
190
 
187
- return new STObject(list.toBytes())
191
+ return new STObject(list.toBytes());
188
192
  }
189
193
 
190
194
  /**
@@ -194,26 +198,26 @@ class STObject extends SerializedType {
194
198
  * @returns a JSON object
195
199
  */
196
200
  toJSON(definitions?: XrplDefinitionsBase): JsonObject {
197
- const objectParser = new BinaryParser(this.toString(), definitions)
198
- const accumulator = {}
201
+ const objectParser = new BinaryParser(this.toString(), definitions);
202
+ const accumulator = {};
199
203
 
200
204
  while (!objectParser.end()) {
201
- const field = objectParser.readField()
205
+ const field = objectParser.readField();
202
206
  if (field.name === OBJECT_END_MARKER) {
203
- break
207
+ break;
204
208
  }
205
209
 
206
210
  accumulator[field.name] = objectParser
207
211
  .readFieldValue(field)
208
- .toJSON(definitions, field.name)
212
+ .toJSON(definitions, field.name);
209
213
  }
210
214
 
211
- return accumulator
215
+ return accumulator;
212
216
  }
213
217
 
214
218
  getSType(): SerializedTypeID {
215
- return SerializedTypeID.STI_OBJECT
219
+ return SerializedTypeID.STI_OBJECT;
216
220
  }
217
221
  }
218
222
 
219
- export { STObject }
223
+ export { STObject };
@@ -30,7 +30,7 @@ class UInt16 extends UInt {
30
30
  return val
31
31
  }
32
32
 
33
- if (typeof val === 'number') {
33
+ if (typeof val === 'number' && Number.isInteger(val)) {
34
34
  UInt16.checkUintRange(val, 0, 0xffff)
35
35
 
36
36
  const buf = new Uint8Array(UInt16.width)
@@ -38,7 +38,7 @@ class UInt16 extends UInt {
38
38
  return new UInt16(buf)
39
39
  }
40
40
 
41
- throw new Error('Can not construct UInt16 with given value')
41
+ throw new Error('Cannot construct UInt16 from given value')
42
42
  }
43
43
 
44
44
  /**
@@ -38,7 +38,7 @@ class UInt32 extends UInt {
38
38
  return new UInt32(buf)
39
39
  }
40
40
 
41
- if (typeof val === 'number') {
41
+ if (typeof val === 'number' && Number.isInteger(val)) {
42
42
  UInt32.checkUintRange(val, 0, 0xffffffff)
43
43
  writeUInt32BE(buf, val, 0)
44
44
  return new UInt32(buf)
@@ -54,7 +54,7 @@ class UInt64 extends UInt {
54
54
 
55
55
  let buf = new Uint8Array(UInt64.width)
56
56
 
57
- if (typeof val === 'number') {
57
+ if (typeof val === 'number' && Number.isInteger(val)) {
58
58
  if (val < 0) {
59
59
  throw new Error('value must be an unsigned integer')
60
60
  }
@@ -29,7 +29,7 @@ class UInt8 extends UInt {
29
29
  return val
30
30
  }
31
31
 
32
- if (typeof val === 'number') {
32
+ if (typeof val === 'number' && Number.isInteger(val)) {
33
33
  UInt8.checkUintRange(val, 0, 0xff)
34
34
 
35
35
  const buf = new Uint8Array(UInt8.width)