@solana/codecs-numbers 2.0.0-experimental.bfaffe0 → 2.0.0-experimental.c067018

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 (49) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +112 -4
  3. package/dist/index.browser.cjs +104 -116
  4. package/dist/index.browser.cjs.map +1 -1
  5. package/dist/index.browser.js +105 -117
  6. package/dist/index.browser.js.map +1 -1
  7. package/dist/index.native.js +105 -117
  8. package/dist/index.native.js.map +1 -1
  9. package/dist/index.node.cjs +104 -116
  10. package/dist/index.node.cjs.map +1 -1
  11. package/dist/index.node.js +105 -117
  12. package/dist/index.node.js.map +1 -1
  13. package/dist/types/assertions.d.ts.map +1 -0
  14. package/dist/types/common.d.ts +9 -5
  15. package/dist/types/common.d.ts.map +1 -0
  16. package/dist/types/f32.d.ts +5 -5
  17. package/dist/types/f32.d.ts.map +1 -0
  18. package/dist/types/f64.d.ts +5 -5
  19. package/dist/types/f64.d.ts.map +1 -0
  20. package/dist/types/i128.d.ts +5 -5
  21. package/dist/types/i128.d.ts.map +1 -0
  22. package/dist/types/i16.d.ts +5 -5
  23. package/dist/types/i16.d.ts.map +1 -0
  24. package/dist/types/i32.d.ts +5 -5
  25. package/dist/types/i32.d.ts.map +1 -0
  26. package/dist/types/i64.d.ts +5 -5
  27. package/dist/types/i64.d.ts.map +1 -0
  28. package/dist/types/i8.d.ts +4 -5
  29. package/dist/types/i8.d.ts.map +1 -0
  30. package/dist/types/index.d.ts +15 -15
  31. package/dist/types/index.d.ts.map +1 -0
  32. package/dist/types/short-u16.d.ts +4 -8
  33. package/dist/types/short-u16.d.ts.map +1 -0
  34. package/dist/types/u128.d.ts +5 -5
  35. package/dist/types/u128.d.ts.map +1 -0
  36. package/dist/types/u16.d.ts +5 -5
  37. package/dist/types/u16.d.ts.map +1 -0
  38. package/dist/types/u32.d.ts +5 -5
  39. package/dist/types/u32.d.ts.map +1 -0
  40. package/dist/types/u64.d.ts +5 -5
  41. package/dist/types/u64.d.ts.map +1 -0
  42. package/dist/types/u8.d.ts +4 -5
  43. package/dist/types/u8.d.ts.map +1 -0
  44. package/dist/types/utils.d.ts +11 -11
  45. package/dist/types/utils.d.ts.map +1 -0
  46. package/package.json +13 -33
  47. package/dist/index.development.js +0 -412
  48. package/dist/index.development.js.map +0 -1
  49. package/dist/index.production.min.js +0 -51
package/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2018 Solana Labs, Inc
1
+ Copyright (c) 2023 Solana Labs, Inc
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
package/README.md CHANGED
@@ -16,10 +16,118 @@
16
16
 
17
17
  This package contains codecs for numbers of different sizes and endianness. It can be used standalone, but it is also exported as part of the Solana JavaScript SDK [`@solana/web3.js@experimental`](https://github.com/solana-labs/solana-web3.js/tree/master/packages/library).
18
18
 
19
- ## Types
19
+ This package is also part of the [`@solana/codecs` package](https://github.com/solana-labs/solana-web3.js/tree/master/packages/codecs) which acts as an entry point for all codec packages as well as for their documentation.
20
20
 
21
- TODO
21
+ ## Integer codecs
22
22
 
23
- ## Functions
23
+ This package provides ten codecs of five different byte sizes for integers. Five of them store unsigned integers and the other five store signed integers.
24
24
 
25
- TODO
25
+ ```ts
26
+ // Unsigned integers.
27
+ getU8Codec().encode(42); // 0x2a
28
+ getU16Codec().encode(42); // 0x2a00
29
+ getU32Codec().encode(42); // 0x2a000000
30
+ getU64Codec().encode(42); // 0x2a00000000000000
31
+ getU128Codec().encode(42); // 0x2a000000000000000000000000000000
32
+
33
+ // Signed integers.
34
+ getI8Codec().encode(-42); // 0xd6
35
+ getI16Codec().encode(-42); // 0xd6ff
36
+ getI32Codec().encode(-42); // 0xd6ffffff
37
+ getI64Codec().encode(-42); // 0xd6ffffffffffffff
38
+ getI128Codec().encode(-42); // 0xd6ffffffffffffffffffffffffffffff
39
+ ```
40
+
41
+ By default, integers are stored using little endianness but you may change this behaviour via the `endian` option. This option is available for every codec that uses more than a single byte.
42
+
43
+ ```ts
44
+ // Big-endian unsigned integers.
45
+ getU16Codec({ endian: Endian.BIG }).encode(42); // 0x002a
46
+ getU32Codec({ endian: Endian.BIG }).encode(42); // 0x0000002a
47
+ getU64Codec({ endian: Endian.BIG }).encode(42); // 0x000000000000002a
48
+ getU128Codec({ endian: Endian.BIG }).encode(42); // 0x0000000000000000000000000000002a
49
+
50
+ // Big-endian signed integers.
51
+ getI16Codec({ endian: Endian.BIG }).encode(-42); // 0xffd6
52
+ getI32Codec({ endian: Endian.BIG }).encode(-42); // 0xffffffd6
53
+ getI64Codec({ endian: Endian.BIG }).encode(-42); // 0xffffffffffffffd6
54
+ getI128Codec({ endian: Endian.BIG }).encode(-42); // 0xffffffffffffffffffffffffffffffd6
55
+ ```
56
+
57
+ All integer codecs are of type `Codec<number>` except for the `u64`, `u128`, `i64` and `i128` codecs which are of type `Codec<number | bigint, bigint>`. This means we can provide either a `number` of a `bigint` value to encode but the decoded value will always be a `bigint`. This is because JavaScript's native `number` type does not support numbers larger than `2^53 - 1` and these large integer codecs have the potential to go over that value.
58
+
59
+ ```ts
60
+ const bytesFromNumber = getU64Codec().encode(42);
61
+ getU64Codec().decode(bytesFromNumber); // BigInt(42)
62
+
63
+ // OR
64
+ const bytesFromBigInt = getU64Codec().encode(BigInt(42));
65
+ getU64Codec().decode(bytesFromBigInt); // BigInt(42)
66
+ ```
67
+
68
+ Finally, for each of these `get*Codec` functions, separate `get*Encoder` and `get*Decoder` functions exist to focus on only one side of the serialization and tree-shake the rest of the functions away.
69
+
70
+ ```ts
71
+ const bytes = getU8Encoder().encode(42);
72
+ const value = getU8Decoder().decode(bytes);
73
+ ```
74
+
75
+ ## Decimal number codecs
76
+
77
+ This package also provides two codecs for floating numbers. One using 32 bits and one using 64 bits.
78
+
79
+ ```ts
80
+ getF32Codec().encode(-1.5); // 0x0000c0bf
81
+ getF64Codec().encode(-1.5); // 0x000000000000f8bf
82
+ ```
83
+
84
+ Similarly to the integer codecs, they are stored in little-endian by default but may be stored in big-endian using the `endian` option.
85
+
86
+ ```ts
87
+ getF32Codec({ endian: Endian.BIG }).encode(-1.5); // 0xbfc00000
88
+ getF64Codec({ endian: Endian.BIG }).encode(-1.5); // 0xbff8000000000000
89
+ ```
90
+
91
+ Note that based on the selected codec, some of the precision of the number you are encoding may be lost when decoding it. For instance, when storing `3.1415` using a `f32` codec, you will not get the exact same number back.
92
+
93
+ ```ts
94
+ const bytes = getF32Codec().encode(3.1415); // 0x560e4940
95
+ const value = getF32Codec().decode(bytes); // 3.1414999961853027 !== 3.1415
96
+ ```
97
+
98
+ As usual, separate encoder and decoder functions are available for these codecs.
99
+
100
+ ```ts
101
+ getF32Encoder().encode(-1.5);
102
+ getF32Decoder().decode(new Uint8Array([...]));
103
+
104
+ getF64Encoder().encode(-1.5);
105
+ getF64Decoder().decode(new Uint8Array([...]));
106
+ ```
107
+
108
+ ## Short u16 codec
109
+
110
+ This last integer codec is less common `VariableSizeCodec` that stores an unsigned integer using between 1 to 3 bytes depending on the value of that integer.
111
+
112
+ ```ts
113
+ const bytes = getShortU16Codec().encode(42); // 0x2a
114
+ const value = getShortU16Codec().decode(bytes); // 42
115
+ ```
116
+
117
+ If the provided integer is equal to or lower than `0x7f`, it will be stored as-is, using a single byte. However, if the integer is above `0x7f`, then the top bit is set and the remaining value is stored in the next bytes. Each byte follows the same pattern until the third byte. The third byte, if needed, uses all 8 bits to store the last byte of the original value.
118
+
119
+ In other words, this codec provides an extendable size that adapts based on the integer. In the illustration below, you can see the `0` and `1` byte flags for each scenario as well as the available bits to store the integer marked with `X`.
120
+
121
+ ```
122
+ 0XXXXXXX <- From 0 to 127.
123
+ 1XXXXXXX 0XXXXXXX <- From 128 to 16,383.
124
+ 1XXXXXXX 1XXXXXXX XXXXXXXX <- From 16,384 to 4,194,303.
125
+ ```
126
+
127
+ This codec is mainly used internally when encoding and decoding Solana transactions.
128
+
129
+ Separate encoder and decoder functions are also available via `getShortU16Encoder` and `getShortU16Decoder` respectively.
130
+
131
+ ---
132
+
133
+ To read more about the available codecs and how to use them, check out the documentation of the main [`@solana/codecs` package](https://github.com/solana-labs/solana-web3.js/tree/master/packages/codecs).
@@ -1,13 +1,17 @@
1
1
  'use strict';
2
2
 
3
+ var errors = require('@solana/errors');
3
4
  var codecsCore = require('@solana/codecs-core');
4
5
 
5
6
  // src/assertions.ts
6
7
  function assertNumberIsBetweenForCodec(codecDescription, min, max, value) {
7
8
  if (value < min || value > max) {
8
- throw new Error(
9
- `Codec [${codecDescription}] expected number to be in the range [${min}, ${max}], got ${value}.`
10
- );
9
+ throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS_NUMBER_OUT_OF_RANGE, {
10
+ codecDescription,
11
+ max,
12
+ min,
13
+ value
14
+ });
11
15
  }
12
16
  }
13
17
 
@@ -17,49 +21,33 @@ var Endian = /* @__PURE__ */ ((Endian2) => {
17
21
  Endian2[Endian2["BIG"] = 1] = "BIG";
18
22
  return Endian2;
19
23
  })(Endian || {});
20
- function sharedNumberFactory(input) {
21
- let littleEndian;
22
- let defaultDescription = input.name;
23
- if (input.size > 1) {
24
- littleEndian = !("endian" in input.options) || input.options.endian === 0 /* LITTLE */;
25
- defaultDescription += littleEndian ? "(le)" : "(be)";
26
- }
27
- return {
28
- description: input.options.description ?? defaultDescription,
29
- fixedSize: input.size,
30
- littleEndian,
31
- maxSize: input.size
32
- };
24
+ function isLittleEndian(config) {
25
+ return config?.endian === 1 /* BIG */ ? false : true;
33
26
  }
34
27
  function numberEncoderFactory(input) {
35
- const codecData = sharedNumberFactory(input);
36
- return {
37
- description: codecData.description,
38
- encode(value) {
28
+ return codecsCore.createEncoder({
29
+ fixedSize: input.size,
30
+ write(value, bytes, offset) {
39
31
  if (input.range) {
40
32
  assertNumberIsBetweenForCodec(input.name, input.range[0], input.range[1], value);
41
33
  }
42
34
  const arrayBuffer = new ArrayBuffer(input.size);
43
- input.set(new DataView(arrayBuffer), value, codecData.littleEndian);
44
- return new Uint8Array(arrayBuffer);
45
- },
46
- fixedSize: codecData.fixedSize,
47
- maxSize: codecData.maxSize
48
- };
35
+ input.set(new DataView(arrayBuffer), value, isLittleEndian(input.config));
36
+ bytes.set(new Uint8Array(arrayBuffer), offset);
37
+ return offset + input.size;
38
+ }
39
+ });
49
40
  }
50
41
  function numberDecoderFactory(input) {
51
- const codecData = sharedNumberFactory(input);
52
- return {
53
- decode(bytes, offset = 0) {
54
- codecsCore.assertByteArrayIsNotEmptyForCodec(codecData.description, bytes, offset);
55
- codecsCore.assertByteArrayHasEnoughBytesForCodec(codecData.description, input.size, bytes, offset);
42
+ return codecsCore.createDecoder({
43
+ fixedSize: input.size,
44
+ read(bytes, offset = 0) {
45
+ codecsCore.assertByteArrayIsNotEmptyForCodec(input.name, bytes, offset);
46
+ codecsCore.assertByteArrayHasEnoughBytesForCodec(input.name, input.size, bytes, offset);
56
47
  const view = new DataView(toArrayBuffer(bytes, offset, input.size));
57
- return [input.get(view, codecData.littleEndian), offset + input.size];
58
- },
59
- description: codecData.description,
60
- fixedSize: codecData.fixedSize,
61
- maxSize: codecData.maxSize
62
- };
48
+ return [input.get(view, isLittleEndian(input.config)), offset + input.size];
49
+ }
50
+ });
63
51
  }
64
52
  function toArrayBuffer(bytes, offset, length) {
65
53
  const bytesOffset = bytes.byteOffset + (offset ?? 0);
@@ -68,35 +56,35 @@ function toArrayBuffer(bytes, offset, length) {
68
56
  }
69
57
 
70
58
  // src/f32.ts
71
- var getF32Encoder = (options = {}) => numberEncoderFactory({
59
+ var getF32Encoder = (config = {}) => numberEncoderFactory({
60
+ config,
72
61
  name: "f32",
73
- options,
74
62
  set: (view, value, le) => view.setFloat32(0, value, le),
75
63
  size: 4
76
64
  });
77
- var getF32Decoder = (options = {}) => numberDecoderFactory({
65
+ var getF32Decoder = (config = {}) => numberDecoderFactory({
66
+ config,
78
67
  get: (view, le) => view.getFloat32(0, le),
79
68
  name: "f32",
80
- options,
81
69
  size: 4
82
70
  });
83
- var getF32Codec = (options = {}) => codecsCore.combineCodec(getF32Encoder(options), getF32Decoder(options));
84
- var getF64Encoder = (options = {}) => numberEncoderFactory({
71
+ var getF32Codec = (config = {}) => codecsCore.combineCodec(getF32Encoder(config), getF32Decoder(config));
72
+ var getF64Encoder = (config = {}) => numberEncoderFactory({
73
+ config,
85
74
  name: "f64",
86
- options,
87
75
  set: (view, value, le) => view.setFloat64(0, value, le),
88
76
  size: 8
89
77
  });
90
- var getF64Decoder = (options = {}) => numberDecoderFactory({
78
+ var getF64Decoder = (config = {}) => numberDecoderFactory({
79
+ config,
91
80
  get: (view, le) => view.getFloat64(0, le),
92
81
  name: "f64",
93
- options,
94
82
  size: 8
95
83
  });
96
- var getF64Codec = (options = {}) => codecsCore.combineCodec(getF64Encoder(options), getF64Decoder(options));
97
- var getI128Encoder = (options = {}) => numberEncoderFactory({
84
+ var getF64Codec = (config = {}) => codecsCore.combineCodec(getF64Encoder(config), getF64Decoder(config));
85
+ var getI128Encoder = (config = {}) => numberEncoderFactory({
86
+ config,
98
87
  name: "i128",
99
- options,
100
88
  range: [-BigInt("0x7fffffffffffffffffffffffffffffff") - 1n, BigInt("0x7fffffffffffffffffffffffffffffff")],
101
89
  set: (view, value, le) => {
102
90
  const leftOffset = le ? 8 : 0;
@@ -107,7 +95,8 @@ var getI128Encoder = (options = {}) => numberEncoderFactory({
107
95
  },
108
96
  size: 16
109
97
  });
110
- var getI128Decoder = (options = {}) => numberDecoderFactory({
98
+ var getI128Decoder = (config = {}) => numberDecoderFactory({
99
+ config,
111
100
  get: (view, le) => {
112
101
  const leftOffset = le ? 8 : 0;
113
102
  const rightOffset = le ? 0 : 8;
@@ -116,89 +105,93 @@ var getI128Decoder = (options = {}) => numberDecoderFactory({
116
105
  return (left << 64n) + right;
117
106
  },
118
107
  name: "i128",
119
- options,
120
108
  size: 16
121
109
  });
122
- var getI128Codec = (options = {}) => codecsCore.combineCodec(getI128Encoder(options), getI128Decoder(options));
123
- var getI16Encoder = (options = {}) => numberEncoderFactory({
110
+ var getI128Codec = (config = {}) => codecsCore.combineCodec(getI128Encoder(config), getI128Decoder(config));
111
+ var getI16Encoder = (config = {}) => numberEncoderFactory({
112
+ config,
124
113
  name: "i16",
125
- options,
126
114
  range: [-Number("0x7fff") - 1, Number("0x7fff")],
127
115
  set: (view, value, le) => view.setInt16(0, value, le),
128
116
  size: 2
129
117
  });
130
- var getI16Decoder = (options = {}) => numberDecoderFactory({
118
+ var getI16Decoder = (config = {}) => numberDecoderFactory({
119
+ config,
131
120
  get: (view, le) => view.getInt16(0, le),
132
121
  name: "i16",
133
- options,
134
122
  size: 2
135
123
  });
136
- var getI16Codec = (options = {}) => codecsCore.combineCodec(getI16Encoder(options), getI16Decoder(options));
137
- var getI32Encoder = (options = {}) => numberEncoderFactory({
124
+ var getI16Codec = (config = {}) => codecsCore.combineCodec(getI16Encoder(config), getI16Decoder(config));
125
+ var getI32Encoder = (config = {}) => numberEncoderFactory({
126
+ config,
138
127
  name: "i32",
139
- options,
140
128
  range: [-Number("0x7fffffff") - 1, Number("0x7fffffff")],
141
129
  set: (view, value, le) => view.setInt32(0, value, le),
142
130
  size: 4
143
131
  });
144
- var getI32Decoder = (options = {}) => numberDecoderFactory({
132
+ var getI32Decoder = (config = {}) => numberDecoderFactory({
133
+ config,
145
134
  get: (view, le) => view.getInt32(0, le),
146
135
  name: "i32",
147
- options,
148
136
  size: 4
149
137
  });
150
- var getI32Codec = (options = {}) => codecsCore.combineCodec(getI32Encoder(options), getI32Decoder(options));
151
- var getI64Encoder = (options = {}) => numberEncoderFactory({
138
+ var getI32Codec = (config = {}) => codecsCore.combineCodec(getI32Encoder(config), getI32Decoder(config));
139
+ var getI64Encoder = (config = {}) => numberEncoderFactory({
140
+ config,
152
141
  name: "i64",
153
- options,
154
142
  range: [-BigInt("0x7fffffffffffffff") - 1n, BigInt("0x7fffffffffffffff")],
155
143
  set: (view, value, le) => view.setBigInt64(0, BigInt(value), le),
156
144
  size: 8
157
145
  });
158
- var getI64Decoder = (options = {}) => numberDecoderFactory({
146
+ var getI64Decoder = (config = {}) => numberDecoderFactory({
147
+ config,
159
148
  get: (view, le) => view.getBigInt64(0, le),
160
149
  name: "i64",
161
- options,
162
150
  size: 8
163
151
  });
164
- var getI64Codec = (options = {}) => codecsCore.combineCodec(getI64Encoder(options), getI64Decoder(options));
165
- var getI8Encoder = (options = {}) => numberEncoderFactory({
152
+ var getI64Codec = (config = {}) => codecsCore.combineCodec(getI64Encoder(config), getI64Decoder(config));
153
+ var getI8Encoder = () => numberEncoderFactory({
166
154
  name: "i8",
167
- options,
168
155
  range: [-Number("0x7f") - 1, Number("0x7f")],
169
156
  set: (view, value) => view.setInt8(0, value),
170
157
  size: 1
171
158
  });
172
- var getI8Decoder = (options = {}) => numberDecoderFactory({
159
+ var getI8Decoder = () => numberDecoderFactory({
173
160
  get: (view) => view.getInt8(0),
174
161
  name: "i8",
175
- options,
176
162
  size: 1
177
163
  });
178
- var getI8Codec = (options = {}) => codecsCore.combineCodec(getI8Encoder(options), getI8Decoder(options));
179
- var getShortU16Encoder = (options = {}) => ({
180
- description: options.description ?? "shortU16",
181
- encode: (value) => {
164
+ var getI8Codec = () => codecsCore.combineCodec(getI8Encoder(), getI8Decoder());
165
+ var getShortU16Encoder = () => codecsCore.createEncoder({
166
+ getSizeFromValue: (value) => {
167
+ if (value <= 127)
168
+ return 1;
169
+ if (value <= 16383)
170
+ return 2;
171
+ return 3;
172
+ },
173
+ maxSize: 3,
174
+ write: (value, bytes, offset) => {
182
175
  assertNumberIsBetweenForCodec("shortU16", 0, 65535, value);
183
- const bytes = [0];
176
+ const shortU16Bytes = [0];
184
177
  for (let ii = 0; ; ii += 1) {
185
178
  const alignedValue = value >> ii * 7;
186
179
  if (alignedValue === 0) {
187
180
  break;
188
181
  }
189
182
  const nextSevenBits = 127 & alignedValue;
190
- bytes[ii] = nextSevenBits;
183
+ shortU16Bytes[ii] = nextSevenBits;
191
184
  if (ii > 0) {
192
- bytes[ii - 1] |= 128;
185
+ shortU16Bytes[ii - 1] |= 128;
193
186
  }
194
187
  }
195
- return new Uint8Array(bytes);
196
- },
197
- fixedSize: null,
198
- maxSize: 3
188
+ bytes.set(shortU16Bytes, offset);
189
+ return offset + shortU16Bytes.length;
190
+ }
199
191
  });
200
- var getShortU16Decoder = (options = {}) => ({
201
- decode: (bytes, offset = 0) => {
192
+ var getShortU16Decoder = () => codecsCore.createDecoder({
193
+ maxSize: 3,
194
+ read: (bytes, offset) => {
202
195
  let value = 0;
203
196
  let byteCount = 0;
204
197
  while (++byteCount) {
@@ -211,16 +204,13 @@ var getShortU16Decoder = (options = {}) => ({
211
204
  }
212
205
  }
213
206
  return [value, offset + byteCount];
214
- },
215
- description: options.description ?? "shortU16",
216
- fixedSize: null,
217
- maxSize: 3
207
+ }
218
208
  });
219
- var getShortU16Codec = (options = {}) => codecsCore.combineCodec(getShortU16Encoder(options), getShortU16Decoder(options));
220
- var getU128Encoder = (options = {}) => numberEncoderFactory({
209
+ var getShortU16Codec = () => codecsCore.combineCodec(getShortU16Encoder(), getShortU16Decoder());
210
+ var getU128Encoder = (config = {}) => numberEncoderFactory({
211
+ config,
221
212
  name: "u128",
222
- options,
223
- range: [0, BigInt("0xffffffffffffffffffffffffffffffff")],
213
+ range: [0n, BigInt("0xffffffffffffffffffffffffffffffff")],
224
214
  set: (view, value, le) => {
225
215
  const leftOffset = le ? 8 : 0;
226
216
  const rightOffset = le ? 0 : 8;
@@ -230,7 +220,8 @@ var getU128Encoder = (options = {}) => numberEncoderFactory({
230
220
  },
231
221
  size: 16
232
222
  });
233
- var getU128Decoder = (options = {}) => numberDecoderFactory({
223
+ var getU128Decoder = (config = {}) => numberDecoderFactory({
224
+ config,
234
225
  get: (view, le) => {
235
226
  const leftOffset = le ? 8 : 0;
236
227
  const rightOffset = le ? 0 : 8;
@@ -239,66 +230,63 @@ var getU128Decoder = (options = {}) => numberDecoderFactory({
239
230
  return (left << 64n) + right;
240
231
  },
241
232
  name: "u128",
242
- options,
243
233
  size: 16
244
234
  });
245
- var getU128Codec = (options = {}) => codecsCore.combineCodec(getU128Encoder(options), getU128Decoder(options));
246
- var getU16Encoder = (options = {}) => numberEncoderFactory({
235
+ var getU128Codec = (config = {}) => codecsCore.combineCodec(getU128Encoder(config), getU128Decoder(config));
236
+ var getU16Encoder = (config = {}) => numberEncoderFactory({
237
+ config,
247
238
  name: "u16",
248
- options,
249
239
  range: [0, Number("0xffff")],
250
240
  set: (view, value, le) => view.setUint16(0, value, le),
251
241
  size: 2
252
242
  });
253
- var getU16Decoder = (options = {}) => numberDecoderFactory({
243
+ var getU16Decoder = (config = {}) => numberDecoderFactory({
244
+ config,
254
245
  get: (view, le) => view.getUint16(0, le),
255
246
  name: "u16",
256
- options,
257
247
  size: 2
258
248
  });
259
- var getU16Codec = (options = {}) => codecsCore.combineCodec(getU16Encoder(options), getU16Decoder(options));
260
- var getU32Encoder = (options = {}) => numberEncoderFactory({
249
+ var getU16Codec = (config = {}) => codecsCore.combineCodec(getU16Encoder(config), getU16Decoder(config));
250
+ var getU32Encoder = (config = {}) => numberEncoderFactory({
251
+ config,
261
252
  name: "u32",
262
- options,
263
253
  range: [0, Number("0xffffffff")],
264
254
  set: (view, value, le) => view.setUint32(0, value, le),
265
255
  size: 4
266
256
  });
267
- var getU32Decoder = (options = {}) => numberDecoderFactory({
257
+ var getU32Decoder = (config = {}) => numberDecoderFactory({
258
+ config,
268
259
  get: (view, le) => view.getUint32(0, le),
269
260
  name: "u32",
270
- options,
271
261
  size: 4
272
262
  });
273
- var getU32Codec = (options = {}) => codecsCore.combineCodec(getU32Encoder(options), getU32Decoder(options));
274
- var getU64Encoder = (options = {}) => numberEncoderFactory({
263
+ var getU32Codec = (config = {}) => codecsCore.combineCodec(getU32Encoder(config), getU32Decoder(config));
264
+ var getU64Encoder = (config = {}) => numberEncoderFactory({
265
+ config,
275
266
  name: "u64",
276
- options,
277
- range: [0, BigInt("0xffffffffffffffff")],
267
+ range: [0n, BigInt("0xffffffffffffffff")],
278
268
  set: (view, value, le) => view.setBigUint64(0, BigInt(value), le),
279
269
  size: 8
280
270
  });
281
- var getU64Decoder = (options = {}) => numberDecoderFactory({
271
+ var getU64Decoder = (config = {}) => numberDecoderFactory({
272
+ config,
282
273
  get: (view, le) => view.getBigUint64(0, le),
283
274
  name: "u64",
284
- options,
285
275
  size: 8
286
276
  });
287
- var getU64Codec = (options = {}) => codecsCore.combineCodec(getU64Encoder(options), getU64Decoder(options));
288
- var getU8Encoder = (options = {}) => numberEncoderFactory({
277
+ var getU64Codec = (config = {}) => codecsCore.combineCodec(getU64Encoder(config), getU64Decoder(config));
278
+ var getU8Encoder = () => numberEncoderFactory({
289
279
  name: "u8",
290
- options,
291
280
  range: [0, Number("0xff")],
292
281
  set: (view, value) => view.setUint8(0, value),
293
282
  size: 1
294
283
  });
295
- var getU8Decoder = (options = {}) => numberDecoderFactory({
284
+ var getU8Decoder = () => numberDecoderFactory({
296
285
  get: (view) => view.getUint8(0),
297
286
  name: "u8",
298
- options,
299
287
  size: 1
300
288
  });
301
- var getU8Codec = (options = {}) => codecsCore.combineCodec(getU8Encoder(options), getU8Decoder(options));
289
+ var getU8Codec = () => codecsCore.combineCodec(getU8Encoder(), getU8Decoder());
302
290
 
303
291
  exports.Endian = Endian;
304
292
  exports.assertNumberIsBetweenForCodec = assertNumberIsBetweenForCodec;