@solana/codecs-numbers 2.0.0-experimental.4366e2e → 2.0.0-experimental.45c014d
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 +1 -1
- package/dist/index.browser.cjs +67 -67
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.js +67 -67
- package/dist/index.browser.js.map +1 -1
- package/dist/index.development.js +111 -104
- package/dist/index.development.js.map +1 -1
- package/dist/index.native.js +69 -67
- package/dist/index.native.js.map +1 -1
- package/dist/index.node.cjs +67 -67
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.js +67 -67
- package/dist/index.node.js.map +1 -1
- package/dist/index.production.min.js +41 -41
- package/dist/types/assertions.d.ts.map +1 -0
- package/dist/types/common.d.ts +5 -5
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/f32.d.ts +4 -4
- package/dist/types/f32.d.ts.map +1 -0
- package/dist/types/f64.d.ts +4 -4
- package/dist/types/f64.d.ts.map +1 -0
- package/dist/types/i128.d.ts +4 -4
- package/dist/types/i128.d.ts.map +1 -0
- package/dist/types/i16.d.ts +4 -4
- package/dist/types/i16.d.ts.map +1 -0
- package/dist/types/i32.d.ts +4 -4
- package/dist/types/i32.d.ts.map +1 -0
- package/dist/types/i64.d.ts +4 -4
- package/dist/types/i64.d.ts.map +1 -0
- package/dist/types/i8.d.ts +4 -4
- package/dist/types/i8.d.ts.map +1 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/short-u16.d.ts +6 -6
- package/dist/types/short-u16.d.ts.map +1 -0
- package/dist/types/u128.d.ts +4 -4
- package/dist/types/u128.d.ts.map +1 -0
- package/dist/types/u16.d.ts +4 -4
- package/dist/types/u16.d.ts.map +1 -0
- package/dist/types/u32.d.ts +4 -4
- package/dist/types/u32.d.ts.map +1 -0
- package/dist/types/u64.d.ts +4 -4
- package/dist/types/u64.d.ts.map +1 -0
- package/dist/types/u8.d.ts +4 -4
- package/dist/types/u8.d.ts.map +1 -0
- package/dist/types/utils.d.ts +2 -2
- package/dist/types/utils.d.ts.map +1 -0
- package/package.json +11 -11
package/LICENSE
CHANGED
package/dist/index.browser.cjs
CHANGED
|
@@ -21,11 +21,11 @@ function sharedNumberFactory(input) {
|
|
|
21
21
|
let littleEndian;
|
|
22
22
|
let defaultDescription = input.name;
|
|
23
23
|
if (input.size > 1) {
|
|
24
|
-
littleEndian = !("endian" in input.
|
|
24
|
+
littleEndian = !("endian" in input.config) || input.config.endian === 0 /* LITTLE */;
|
|
25
25
|
defaultDescription += littleEndian ? "(le)" : "(be)";
|
|
26
26
|
}
|
|
27
27
|
return {
|
|
28
|
-
description: input.
|
|
28
|
+
description: input.config.description ?? defaultDescription,
|
|
29
29
|
fixedSize: input.size,
|
|
30
30
|
littleEndian,
|
|
31
31
|
maxSize: input.size
|
|
@@ -68,35 +68,35 @@ function toArrayBuffer(bytes, offset, length) {
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
// src/f32.ts
|
|
71
|
-
var getF32Encoder = (
|
|
71
|
+
var getF32Encoder = (config = {}) => numberEncoderFactory({
|
|
72
|
+
config,
|
|
72
73
|
name: "f32",
|
|
73
|
-
options,
|
|
74
74
|
set: (view, value, le) => view.setFloat32(0, value, le),
|
|
75
75
|
size: 4
|
|
76
76
|
});
|
|
77
|
-
var getF32Decoder = (
|
|
77
|
+
var getF32Decoder = (config = {}) => numberDecoderFactory({
|
|
78
|
+
config,
|
|
78
79
|
get: (view, le) => view.getFloat32(0, le),
|
|
79
80
|
name: "f32",
|
|
80
|
-
options,
|
|
81
81
|
size: 4
|
|
82
82
|
});
|
|
83
|
-
var getF32Codec = (
|
|
84
|
-
var getF64Encoder = (
|
|
83
|
+
var getF32Codec = (config = {}) => codecsCore.combineCodec(getF32Encoder(config), getF32Decoder(config));
|
|
84
|
+
var getF64Encoder = (config = {}) => numberEncoderFactory({
|
|
85
|
+
config,
|
|
85
86
|
name: "f64",
|
|
86
|
-
options,
|
|
87
87
|
set: (view, value, le) => view.setFloat64(0, value, le),
|
|
88
88
|
size: 8
|
|
89
89
|
});
|
|
90
|
-
var getF64Decoder = (
|
|
90
|
+
var getF64Decoder = (config = {}) => numberDecoderFactory({
|
|
91
|
+
config,
|
|
91
92
|
get: (view, le) => view.getFloat64(0, le),
|
|
92
93
|
name: "f64",
|
|
93
|
-
options,
|
|
94
94
|
size: 8
|
|
95
95
|
});
|
|
96
|
-
var getF64Codec = (
|
|
97
|
-
var getI128Encoder = (
|
|
96
|
+
var getF64Codec = (config = {}) => codecsCore.combineCodec(getF64Encoder(config), getF64Decoder(config));
|
|
97
|
+
var getI128Encoder = (config = {}) => numberEncoderFactory({
|
|
98
|
+
config,
|
|
98
99
|
name: "i128",
|
|
99
|
-
options,
|
|
100
100
|
range: [-BigInt("0x7fffffffffffffffffffffffffffffff") - 1n, BigInt("0x7fffffffffffffffffffffffffffffff")],
|
|
101
101
|
set: (view, value, le) => {
|
|
102
102
|
const leftOffset = le ? 8 : 0;
|
|
@@ -107,7 +107,8 @@ var getI128Encoder = (options = {}) => numberEncoderFactory({
|
|
|
107
107
|
},
|
|
108
108
|
size: 16
|
|
109
109
|
});
|
|
110
|
-
var getI128Decoder = (
|
|
110
|
+
var getI128Decoder = (config = {}) => numberDecoderFactory({
|
|
111
|
+
config,
|
|
111
112
|
get: (view, le) => {
|
|
112
113
|
const leftOffset = le ? 8 : 0;
|
|
113
114
|
const rightOffset = le ? 0 : 8;
|
|
@@ -116,68 +117,67 @@ var getI128Decoder = (options = {}) => numberDecoderFactory({
|
|
|
116
117
|
return (left << 64n) + right;
|
|
117
118
|
},
|
|
118
119
|
name: "i128",
|
|
119
|
-
options,
|
|
120
120
|
size: 16
|
|
121
121
|
});
|
|
122
|
-
var getI128Codec = (
|
|
123
|
-
var getI16Encoder = (
|
|
122
|
+
var getI128Codec = (config = {}) => codecsCore.combineCodec(getI128Encoder(config), getI128Decoder(config));
|
|
123
|
+
var getI16Encoder = (config = {}) => numberEncoderFactory({
|
|
124
|
+
config,
|
|
124
125
|
name: "i16",
|
|
125
|
-
options,
|
|
126
126
|
range: [-Number("0x7fff") - 1, Number("0x7fff")],
|
|
127
127
|
set: (view, value, le) => view.setInt16(0, value, le),
|
|
128
128
|
size: 2
|
|
129
129
|
});
|
|
130
|
-
var getI16Decoder = (
|
|
130
|
+
var getI16Decoder = (config = {}) => numberDecoderFactory({
|
|
131
|
+
config,
|
|
131
132
|
get: (view, le) => view.getInt16(0, le),
|
|
132
133
|
name: "i16",
|
|
133
|
-
options,
|
|
134
134
|
size: 2
|
|
135
135
|
});
|
|
136
|
-
var getI16Codec = (
|
|
137
|
-
var getI32Encoder = (
|
|
136
|
+
var getI16Codec = (config = {}) => codecsCore.combineCodec(getI16Encoder(config), getI16Decoder(config));
|
|
137
|
+
var getI32Encoder = (config = {}) => numberEncoderFactory({
|
|
138
|
+
config,
|
|
138
139
|
name: "i32",
|
|
139
|
-
options,
|
|
140
140
|
range: [-Number("0x7fffffff") - 1, Number("0x7fffffff")],
|
|
141
141
|
set: (view, value, le) => view.setInt32(0, value, le),
|
|
142
142
|
size: 4
|
|
143
143
|
});
|
|
144
|
-
var getI32Decoder = (
|
|
144
|
+
var getI32Decoder = (config = {}) => numberDecoderFactory({
|
|
145
|
+
config,
|
|
145
146
|
get: (view, le) => view.getInt32(0, le),
|
|
146
147
|
name: "i32",
|
|
147
|
-
options,
|
|
148
148
|
size: 4
|
|
149
149
|
});
|
|
150
|
-
var getI32Codec = (
|
|
151
|
-
var getI64Encoder = (
|
|
150
|
+
var getI32Codec = (config = {}) => codecsCore.combineCodec(getI32Encoder(config), getI32Decoder(config));
|
|
151
|
+
var getI64Encoder = (config = {}) => numberEncoderFactory({
|
|
152
|
+
config,
|
|
152
153
|
name: "i64",
|
|
153
|
-
options,
|
|
154
154
|
range: [-BigInt("0x7fffffffffffffff") - 1n, BigInt("0x7fffffffffffffff")],
|
|
155
155
|
set: (view, value, le) => view.setBigInt64(0, BigInt(value), le),
|
|
156
156
|
size: 8
|
|
157
157
|
});
|
|
158
|
-
var getI64Decoder = (
|
|
158
|
+
var getI64Decoder = (config = {}) => numberDecoderFactory({
|
|
159
|
+
config,
|
|
159
160
|
get: (view, le) => view.getBigInt64(0, le),
|
|
160
161
|
name: "i64",
|
|
161
|
-
options,
|
|
162
162
|
size: 8
|
|
163
163
|
});
|
|
164
|
-
var getI64Codec = (
|
|
165
|
-
var getI8Encoder = (
|
|
164
|
+
var getI64Codec = (config = {}) => codecsCore.combineCodec(getI64Encoder(config), getI64Decoder(config));
|
|
165
|
+
var getI8Encoder = (config = {}) => numberEncoderFactory({
|
|
166
|
+
config,
|
|
166
167
|
name: "i8",
|
|
167
|
-
options,
|
|
168
168
|
range: [-Number("0x7f") - 1, Number("0x7f")],
|
|
169
169
|
set: (view, value) => view.setInt8(0, value),
|
|
170
170
|
size: 1
|
|
171
171
|
});
|
|
172
|
-
var getI8Decoder = (
|
|
172
|
+
var getI8Decoder = (config = {}) => numberDecoderFactory({
|
|
173
|
+
config,
|
|
173
174
|
get: (view) => view.getInt8(0),
|
|
174
175
|
name: "i8",
|
|
175
|
-
options,
|
|
176
176
|
size: 1
|
|
177
177
|
});
|
|
178
|
-
var getI8Codec = (
|
|
179
|
-
var getShortU16Encoder = (
|
|
180
|
-
description:
|
|
178
|
+
var getI8Codec = (config = {}) => codecsCore.combineCodec(getI8Encoder(config), getI8Decoder(config));
|
|
179
|
+
var getShortU16Encoder = (config = {}) => ({
|
|
180
|
+
description: config.description ?? "shortU16",
|
|
181
181
|
encode: (value) => {
|
|
182
182
|
assertNumberIsBetweenForCodec("shortU16", 0, 65535, value);
|
|
183
183
|
const bytes = [0];
|
|
@@ -197,7 +197,7 @@ var getShortU16Encoder = (options = {}) => ({
|
|
|
197
197
|
fixedSize: null,
|
|
198
198
|
maxSize: 3
|
|
199
199
|
});
|
|
200
|
-
var getShortU16Decoder = (
|
|
200
|
+
var getShortU16Decoder = (config = {}) => ({
|
|
201
201
|
decode: (bytes, offset = 0) => {
|
|
202
202
|
let value = 0;
|
|
203
203
|
let byteCount = 0;
|
|
@@ -212,14 +212,14 @@ var getShortU16Decoder = (options = {}) => ({
|
|
|
212
212
|
}
|
|
213
213
|
return [value, offset + byteCount];
|
|
214
214
|
},
|
|
215
|
-
description:
|
|
215
|
+
description: config.description ?? "shortU16",
|
|
216
216
|
fixedSize: null,
|
|
217
217
|
maxSize: 3
|
|
218
218
|
});
|
|
219
|
-
var getShortU16Codec = (
|
|
220
|
-
var getU128Encoder = (
|
|
219
|
+
var getShortU16Codec = (config = {}) => codecsCore.combineCodec(getShortU16Encoder(config), getShortU16Decoder(config));
|
|
220
|
+
var getU128Encoder = (config = {}) => numberEncoderFactory({
|
|
221
|
+
config,
|
|
221
222
|
name: "u128",
|
|
222
|
-
options,
|
|
223
223
|
range: [0, BigInt("0xffffffffffffffffffffffffffffffff")],
|
|
224
224
|
set: (view, value, le) => {
|
|
225
225
|
const leftOffset = le ? 8 : 0;
|
|
@@ -230,7 +230,8 @@ var getU128Encoder = (options = {}) => numberEncoderFactory({
|
|
|
230
230
|
},
|
|
231
231
|
size: 16
|
|
232
232
|
});
|
|
233
|
-
var getU128Decoder = (
|
|
233
|
+
var getU128Decoder = (config = {}) => numberDecoderFactory({
|
|
234
|
+
config,
|
|
234
235
|
get: (view, le) => {
|
|
235
236
|
const leftOffset = le ? 8 : 0;
|
|
236
237
|
const rightOffset = le ? 0 : 8;
|
|
@@ -239,66 +240,65 @@ var getU128Decoder = (options = {}) => numberDecoderFactory({
|
|
|
239
240
|
return (left << 64n) + right;
|
|
240
241
|
},
|
|
241
242
|
name: "u128",
|
|
242
|
-
options,
|
|
243
243
|
size: 16
|
|
244
244
|
});
|
|
245
|
-
var getU128Codec = (
|
|
246
|
-
var getU16Encoder = (
|
|
245
|
+
var getU128Codec = (config = {}) => codecsCore.combineCodec(getU128Encoder(config), getU128Decoder(config));
|
|
246
|
+
var getU16Encoder = (config = {}) => numberEncoderFactory({
|
|
247
|
+
config,
|
|
247
248
|
name: "u16",
|
|
248
|
-
options,
|
|
249
249
|
range: [0, Number("0xffff")],
|
|
250
250
|
set: (view, value, le) => view.setUint16(0, value, le),
|
|
251
251
|
size: 2
|
|
252
252
|
});
|
|
253
|
-
var getU16Decoder = (
|
|
253
|
+
var getU16Decoder = (config = {}) => numberDecoderFactory({
|
|
254
|
+
config,
|
|
254
255
|
get: (view, le) => view.getUint16(0, le),
|
|
255
256
|
name: "u16",
|
|
256
|
-
options,
|
|
257
257
|
size: 2
|
|
258
258
|
});
|
|
259
|
-
var getU16Codec = (
|
|
260
|
-
var getU32Encoder = (
|
|
259
|
+
var getU16Codec = (config = {}) => codecsCore.combineCodec(getU16Encoder(config), getU16Decoder(config));
|
|
260
|
+
var getU32Encoder = (config = {}) => numberEncoderFactory({
|
|
261
|
+
config,
|
|
261
262
|
name: "u32",
|
|
262
|
-
options,
|
|
263
263
|
range: [0, Number("0xffffffff")],
|
|
264
264
|
set: (view, value, le) => view.setUint32(0, value, le),
|
|
265
265
|
size: 4
|
|
266
266
|
});
|
|
267
|
-
var getU32Decoder = (
|
|
267
|
+
var getU32Decoder = (config = {}) => numberDecoderFactory({
|
|
268
|
+
config,
|
|
268
269
|
get: (view, le) => view.getUint32(0, le),
|
|
269
270
|
name: "u32",
|
|
270
|
-
options,
|
|
271
271
|
size: 4
|
|
272
272
|
});
|
|
273
|
-
var getU32Codec = (
|
|
274
|
-
var getU64Encoder = (
|
|
273
|
+
var getU32Codec = (config = {}) => codecsCore.combineCodec(getU32Encoder(config), getU32Decoder(config));
|
|
274
|
+
var getU64Encoder = (config = {}) => numberEncoderFactory({
|
|
275
|
+
config,
|
|
275
276
|
name: "u64",
|
|
276
|
-
options,
|
|
277
277
|
range: [0, BigInt("0xffffffffffffffff")],
|
|
278
278
|
set: (view, value, le) => view.setBigUint64(0, BigInt(value), le),
|
|
279
279
|
size: 8
|
|
280
280
|
});
|
|
281
|
-
var getU64Decoder = (
|
|
281
|
+
var getU64Decoder = (config = {}) => numberDecoderFactory({
|
|
282
|
+
config,
|
|
282
283
|
get: (view, le) => view.getBigUint64(0, le),
|
|
283
284
|
name: "u64",
|
|
284
|
-
options,
|
|
285
285
|
size: 8
|
|
286
286
|
});
|
|
287
|
-
var getU64Codec = (
|
|
288
|
-
var getU8Encoder = (
|
|
287
|
+
var getU64Codec = (config = {}) => codecsCore.combineCodec(getU64Encoder(config), getU64Decoder(config));
|
|
288
|
+
var getU8Encoder = (config = {}) => numberEncoderFactory({
|
|
289
|
+
config,
|
|
289
290
|
name: "u8",
|
|
290
|
-
options,
|
|
291
291
|
range: [0, Number("0xff")],
|
|
292
292
|
set: (view, value) => view.setUint8(0, value),
|
|
293
293
|
size: 1
|
|
294
294
|
});
|
|
295
|
-
var getU8Decoder = (
|
|
295
|
+
var getU8Decoder = (config = {}) => numberDecoderFactory({
|
|
296
|
+
config,
|
|
296
297
|
get: (view) => view.getUint8(0),
|
|
297
298
|
name: "u8",
|
|
298
|
-
options,
|
|
299
299
|
size: 1
|
|
300
300
|
});
|
|
301
|
-
var getU8Codec = (
|
|
301
|
+
var getU8Codec = (config = {}) => codecsCore.combineCodec(getU8Encoder(config), getU8Decoder(config));
|
|
302
302
|
|
|
303
303
|
exports.Endian = Endian;
|
|
304
304
|
exports.assertNumberIsBetweenForCodec = assertNumberIsBetweenForCodec;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/assertions.ts","../src/common.ts","../src/f32.ts","../src/utils.ts","../src/f64.ts","../src/i128.ts","../src/i16.ts","../src/i32.ts","../src/i64.ts","../src/i8.ts","../src/short-u16.ts","../src/u128.ts","../src/u16.ts","../src/u32.ts","../src/u64.ts","../src/u8.ts"],"names":["Endian","combineCodec"],"mappings":"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","sourcesContent":["/**\n * Asserts that a given number is between a given range.\n */\nexport function assertNumberIsBetweenForCodec(\n codecDescription: string,\n min: number | bigint,\n max: number | bigint,\n value: number | bigint\n) {\n if (value < min || value > max) {\n // TODO: Coded error.\n throw new Error(\n `Codec [${codecDescription}] expected number to be in the range [${min}, ${max}], got ${value}.`\n );\n }\n}\n","import { BaseCodecOptions, Codec, Decoder, Encoder } from '@solana/codecs-core';\n\n/** Defines a encoder for numbers and bigints. */\nexport type NumberEncoder = Encoder<number> | Encoder<number | bigint>;\n\n/** Defines a decoder for numbers and bigints. */\nexport type NumberDecoder = Decoder<number> | Decoder<bigint>;\n\n/** Defines a codec for numbers and bigints. */\nexport type NumberCodec = Codec<number> | Codec<number | bigint, bigint>;\n\n/** Defines the options for u8 and i8 codecs. */\nexport type SingleByteNumberCodecOptions = BaseCodecOptions;\n\n/** Defines the options for number codecs that use more than one byte. */\nexport type NumberCodecOptions = BaseCodecOptions & {\n /**\n * Whether the serializer should use little-endian or big-endian encoding.\n * @defaultValue `Endian.LITTLE`\n */\n endian?: Endian;\n};\n\n/** Defines the endianness of a number serializer. */\nexport enum Endian {\n LITTLE,\n BIG,\n}\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { NumberCodecOptions } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getF32Encoder = (options: NumberCodecOptions = {}): Encoder<number> =>\n numberEncoderFactory({\n name: 'f32',\n options,\n set: (view, value, le) => view.setFloat32(0, value, le),\n size: 4,\n });\n\nexport const getF32Decoder = (options: NumberCodecOptions = {}): Decoder<number> =>\n numberDecoderFactory({\n get: (view, le) => view.getFloat32(0, le),\n name: 'f32',\n options,\n size: 4,\n });\n\nexport const getF32Codec = (options: NumberCodecOptions = {}): Codec<number> =>\n combineCodec(getF32Encoder(options), getF32Decoder(options));\n","import {\n assertByteArrayHasEnoughBytesForCodec,\n assertByteArrayIsNotEmptyForCodec,\n CodecData,\n Decoder,\n Encoder,\n} from '@solana/codecs-core';\n\nimport { assertNumberIsBetweenForCodec } from './assertions';\nimport { Endian, NumberCodecOptions, SingleByteNumberCodecOptions } from './common';\n\ntype NumberFactorySharedInput = {\n name: string;\n size: number;\n options: SingleByteNumberCodecOptions | NumberCodecOptions;\n};\n\ntype NumberFactoryEncoderInput<T> = NumberFactorySharedInput & {\n range?: [number | bigint, number | bigint];\n set: (view: DataView, value: T, littleEndian?: boolean) => void;\n};\n\ntype NumberFactoryDecoderInput<T> = NumberFactorySharedInput & {\n get: (view: DataView, littleEndian?: boolean) => T;\n};\n\nfunction sharedNumberFactory(input: NumberFactorySharedInput): CodecData & { littleEndian: boolean | undefined } {\n let littleEndian: boolean | undefined;\n let defaultDescription: string = input.name;\n\n if (input.size > 1) {\n littleEndian = !('endian' in input.options) || input.options.endian === Endian.LITTLE;\n defaultDescription += littleEndian ? '(le)' : '(be)';\n }\n\n return {\n description: input.options.description ?? defaultDescription,\n fixedSize: input.size,\n littleEndian,\n maxSize: input.size,\n };\n}\n\nexport function numberEncoderFactory<T extends number | bigint>(input: NumberFactoryEncoderInput<T>): Encoder<T> {\n const codecData = sharedNumberFactory(input);\n\n return {\n description: codecData.description,\n encode(value: T): Uint8Array {\n if (input.range) {\n assertNumberIsBetweenForCodec(input.name, input.range[0], input.range[1], value);\n }\n const arrayBuffer = new ArrayBuffer(input.size);\n input.set(new DataView(arrayBuffer), value, codecData.littleEndian);\n return new Uint8Array(arrayBuffer);\n },\n fixedSize: codecData.fixedSize,\n maxSize: codecData.maxSize,\n };\n}\n\nexport function numberDecoderFactory<T extends number | bigint>(input: NumberFactoryDecoderInput<T>): Decoder<T> {\n const codecData = sharedNumberFactory(input);\n\n return {\n decode(bytes, offset = 0): [T, number] {\n assertByteArrayIsNotEmptyForCodec(codecData.description, bytes, offset);\n assertByteArrayHasEnoughBytesForCodec(codecData.description, input.size, bytes, offset);\n const view = new DataView(toArrayBuffer(bytes, offset, input.size));\n return [input.get(view, codecData.littleEndian), offset + input.size];\n },\n description: codecData.description,\n fixedSize: codecData.fixedSize,\n maxSize: codecData.maxSize,\n };\n}\n\n/**\n * Helper function to ensure that the ArrayBuffer is converted properly from a Uint8Array\n * Source: https://stackoverflow.com/questions/37228285/uint8array-to-arraybuffer\n */\nfunction toArrayBuffer(bytes: Uint8Array, offset?: number, length?: number): ArrayBuffer {\n const bytesOffset = bytes.byteOffset + (offset ?? 0);\n const bytesLength = length ?? bytes.byteLength;\n return bytes.buffer.slice(bytesOffset, bytesOffset + bytesLength);\n}\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { NumberCodecOptions } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getF64Encoder = (options: NumberCodecOptions = {}): Encoder<number> =>\n numberEncoderFactory({\n name: 'f64',\n options,\n set: (view, value, le) => view.setFloat64(0, value, le),\n size: 8,\n });\n\nexport const getF64Decoder = (options: NumberCodecOptions = {}): Decoder<number> =>\n numberDecoderFactory({\n get: (view, le) => view.getFloat64(0, le),\n name: 'f64',\n options,\n size: 8,\n });\n\nexport const getF64Codec = (options: NumberCodecOptions = {}): Codec<number> =>\n combineCodec(getF64Encoder(options), getF64Decoder(options));\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { NumberCodecOptions } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI128Encoder = (options: NumberCodecOptions = {}): Encoder<number | bigint> =>\n numberEncoderFactory({\n name: 'i128',\n options,\n range: [-BigInt('0x7fffffffffffffffffffffffffffffff') - 1n, BigInt('0x7fffffffffffffffffffffffffffffff')],\n set: (view, value, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const rightMask = 0xffffffffffffffffn;\n view.setBigInt64(leftOffset, BigInt(value) >> 64n, le);\n view.setBigUint64(rightOffset, BigInt(value) & rightMask, le);\n },\n size: 16,\n });\n\nexport const getI128Decoder = (options: NumberCodecOptions = {}): Decoder<bigint> =>\n numberDecoderFactory({\n get: (view, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const left = view.getBigInt64(leftOffset, le);\n const right = view.getBigUint64(rightOffset, le);\n return (left << 64n) + right;\n },\n name: 'i128',\n options,\n size: 16,\n });\n\nexport const getI128Codec = (options: NumberCodecOptions = {}): Codec<number | bigint, bigint> =>\n combineCodec(getI128Encoder(options), getI128Decoder(options));\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { NumberCodecOptions } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI16Encoder = (options: NumberCodecOptions = {}): Encoder<number> =>\n numberEncoderFactory({\n name: 'i16',\n options,\n range: [-Number('0x7fff') - 1, Number('0x7fff')],\n set: (view, value, le) => view.setInt16(0, value, le),\n size: 2,\n });\n\nexport const getI16Decoder = (options: NumberCodecOptions = {}): Decoder<number> =>\n numberDecoderFactory({\n get: (view, le) => view.getInt16(0, le),\n name: 'i16',\n options,\n size: 2,\n });\n\nexport const getI16Codec = (options: NumberCodecOptions = {}): Codec<number> =>\n combineCodec(getI16Encoder(options), getI16Decoder(options));\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { NumberCodecOptions } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI32Encoder = (options: NumberCodecOptions = {}): Encoder<number> =>\n numberEncoderFactory({\n name: 'i32',\n options,\n range: [-Number('0x7fffffff') - 1, Number('0x7fffffff')],\n set: (view, value, le) => view.setInt32(0, value, le),\n size: 4,\n });\n\nexport const getI32Decoder = (options: NumberCodecOptions = {}): Decoder<number> =>\n numberDecoderFactory({\n get: (view, le) => view.getInt32(0, le),\n name: 'i32',\n options,\n size: 4,\n });\n\nexport const getI32Codec = (options: NumberCodecOptions = {}): Codec<number> =>\n combineCodec(getI32Encoder(options), getI32Decoder(options));\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { NumberCodecOptions } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI64Encoder = (options: NumberCodecOptions = {}): Encoder<number | bigint> =>\n numberEncoderFactory({\n name: 'i64',\n options,\n range: [-BigInt('0x7fffffffffffffff') - 1n, BigInt('0x7fffffffffffffff')],\n set: (view, value, le) => view.setBigInt64(0, BigInt(value), le),\n size: 8,\n });\n\nexport const getI64Decoder = (options: NumberCodecOptions = {}): Decoder<bigint> =>\n numberDecoderFactory({\n get: (view, le) => view.getBigInt64(0, le),\n name: 'i64',\n options,\n size: 8,\n });\n\nexport const getI64Codec = (options: NumberCodecOptions = {}): Codec<number | bigint, bigint> =>\n combineCodec(getI64Encoder(options), getI64Decoder(options));\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { SingleByteNumberCodecOptions } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI8Encoder = (options: SingleByteNumberCodecOptions = {}): Encoder<number> =>\n numberEncoderFactory({\n name: 'i8',\n options,\n range: [-Number('0x7f') - 1, Number('0x7f')],\n set: (view, value) => view.setInt8(0, value),\n size: 1,\n });\n\nexport const getI8Decoder = (options: SingleByteNumberCodecOptions = {}): Decoder<number> =>\n numberDecoderFactory({\n get: view => view.getInt8(0),\n name: 'i8',\n options,\n size: 1,\n });\n\nexport const getI8Codec = (options: SingleByteNumberCodecOptions = {}): Codec<number> =>\n combineCodec(getI8Encoder(options), getI8Decoder(options));\n","import { BaseCodecOptions, Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { assertNumberIsBetweenForCodec } from './assertions';\n\n/**\n * Defines the options for the shortU16 serializer.\n */\nexport type ShortU16CodecOptions = BaseCodecOptions;\n\n/**\n * Encodes short u16 numbers.\n * @see {@link getShortU16Codec} for a more detailed description.\n */\nexport const getShortU16Encoder = (options: ShortU16CodecOptions = {}): Encoder<number> => ({\n description: options.description ?? 'shortU16',\n encode: (value: number): Uint8Array => {\n assertNumberIsBetweenForCodec('shortU16', 0, 65535, value);\n const bytes = [0];\n for (let ii = 0; ; ii += 1) {\n // Shift the bits of the value over such that the next 7 bits are at the right edge.\n const alignedValue = value >> (ii * 7);\n if (alignedValue === 0) {\n // No more bits to consume.\n break;\n }\n // Extract those 7 bits using a mask.\n const nextSevenBits = 0b1111111 & alignedValue;\n bytes[ii] = nextSevenBits;\n if (ii > 0) {\n // Set the continuation bit of the previous slice.\n bytes[ii - 1] |= 0b10000000;\n }\n }\n return new Uint8Array(bytes);\n },\n fixedSize: null,\n maxSize: 3,\n});\n\n/**\n * Decodes short u16 numbers.\n * @see {@link getShortU16Codec} for a more detailed description.\n */\nexport const getShortU16Decoder = (options: ShortU16CodecOptions = {}): Decoder<number> => ({\n decode: (bytes: Uint8Array, offset = 0): [number, number] => {\n let value = 0;\n let byteCount = 0;\n while (++byteCount) {\n const byteIndex = byteCount - 1;\n const currentByte = bytes[offset + byteIndex];\n const nextSevenBits = 0b1111111 & currentByte;\n // Insert the next group of seven bits into the correct slot of the output value.\n value |= nextSevenBits << (byteIndex * 7);\n if ((currentByte & 0b10000000) === 0) {\n // This byte does not have its continuation bit set. We're done.\n break;\n }\n }\n return [value, offset + byteCount];\n },\n description: options.description ?? 'shortU16',\n fixedSize: null,\n maxSize: 3,\n});\n\n/**\n * Encodes and decodes short u16 numbers.\n *\n * Short u16 numbers are the same as u16, but serialized with 1 to 3 bytes.\n * If the value is above 0x7f, the top bit is set and the remaining\n * value is stored in the next bytes. Each byte follows the same\n * pattern until the 3rd byte. The 3rd byte, if needed, uses\n * all 8 bits to store the last byte of the original value.\n */\nexport const getShortU16Codec = (options: ShortU16CodecOptions = {}): Codec<number> =>\n combineCodec(getShortU16Encoder(options), getShortU16Decoder(options));\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { NumberCodecOptions } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU128Encoder = (options: NumberCodecOptions = {}): Encoder<number | bigint> =>\n numberEncoderFactory({\n name: 'u128',\n options,\n range: [0, BigInt('0xffffffffffffffffffffffffffffffff')],\n set: (view, value, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const rightMask = 0xffffffffffffffffn;\n view.setBigUint64(leftOffset, BigInt(value) >> 64n, le);\n view.setBigUint64(rightOffset, BigInt(value) & rightMask, le);\n },\n size: 16,\n });\n\nexport const getU128Decoder = (options: NumberCodecOptions = {}): Decoder<bigint> =>\n numberDecoderFactory({\n get: (view, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const left = view.getBigUint64(leftOffset, le);\n const right = view.getBigUint64(rightOffset, le);\n return (left << 64n) + right;\n },\n name: 'u128',\n options,\n size: 16,\n });\n\nexport const getU128Codec = (options: NumberCodecOptions = {}): Codec<number | bigint, bigint> =>\n combineCodec(getU128Encoder(options), getU128Decoder(options));\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { NumberCodecOptions } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU16Encoder = (options: NumberCodecOptions = {}): Encoder<number> =>\n numberEncoderFactory({\n name: 'u16',\n options,\n range: [0, Number('0xffff')],\n set: (view, value, le) => view.setUint16(0, value, le),\n size: 2,\n });\n\nexport const getU16Decoder = (options: NumberCodecOptions = {}): Decoder<number> =>\n numberDecoderFactory({\n get: (view, le) => view.getUint16(0, le),\n name: 'u16',\n options,\n size: 2,\n });\n\nexport const getU16Codec = (options: NumberCodecOptions = {}): Codec<number> =>\n combineCodec(getU16Encoder(options), getU16Decoder(options));\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { NumberCodecOptions } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU32Encoder = (options: NumberCodecOptions = {}): Encoder<number> =>\n numberEncoderFactory({\n name: 'u32',\n options,\n range: [0, Number('0xffffffff')],\n set: (view, value, le) => view.setUint32(0, value, le),\n size: 4,\n });\n\nexport const getU32Decoder = (options: NumberCodecOptions = {}): Decoder<number> =>\n numberDecoderFactory({\n get: (view, le) => view.getUint32(0, le),\n name: 'u32',\n options,\n size: 4,\n });\n\nexport const getU32Codec = (options: NumberCodecOptions = {}): Codec<number> =>\n combineCodec(getU32Encoder(options), getU32Decoder(options));\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { NumberCodecOptions } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU64Encoder = (options: NumberCodecOptions = {}): Encoder<number | bigint> =>\n numberEncoderFactory({\n name: 'u64',\n options,\n range: [0, BigInt('0xffffffffffffffff')],\n set: (view, value, le) => view.setBigUint64(0, BigInt(value), le),\n size: 8,\n });\n\nexport const getU64Decoder = (options: NumberCodecOptions = {}): Decoder<bigint> =>\n numberDecoderFactory({\n get: (view, le) => view.getBigUint64(0, le),\n name: 'u64',\n options,\n size: 8,\n });\n\nexport const getU64Codec = (options: NumberCodecOptions = {}): Codec<number | bigint, bigint> =>\n combineCodec(getU64Encoder(options), getU64Decoder(options));\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { SingleByteNumberCodecOptions } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU8Encoder = (options: SingleByteNumberCodecOptions = {}): Encoder<number> =>\n numberEncoderFactory({\n name: 'u8',\n options,\n range: [0, Number('0xff')],\n set: (view, value) => view.setUint8(0, value),\n size: 1,\n });\n\nexport const getU8Decoder = (options: SingleByteNumberCodecOptions = {}): Decoder<number> =>\n numberDecoderFactory({\n get: view => view.getUint8(0),\n name: 'u8',\n options,\n size: 1,\n });\n\nexport const getU8Codec = (options: SingleByteNumberCodecOptions = {}): Codec<number> =>\n combineCodec(getU8Encoder(options), getU8Decoder(options));\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/assertions.ts","../src/common.ts","../src/f32.ts","../src/utils.ts","../src/f64.ts","../src/i128.ts","../src/i16.ts","../src/i32.ts","../src/i64.ts","../src/i8.ts","../src/short-u16.ts","../src/u128.ts","../src/u16.ts","../src/u32.ts","../src/u64.ts","../src/u8.ts"],"names":["Endian","combineCodec"],"mappings":"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","sourcesContent":["/**\n * Asserts that a given number is between a given range.\n */\nexport function assertNumberIsBetweenForCodec(\n codecDescription: string,\n min: number | bigint,\n max: number | bigint,\n value: number | bigint\n) {\n if (value < min || value > max) {\n // TODO: Coded error.\n throw new Error(\n `Codec [${codecDescription}] expected number to be in the range [${min}, ${max}], got ${value}.`\n );\n }\n}\n","import { BaseCodecConfig, Codec, Decoder, Encoder } from '@solana/codecs-core';\n\n/** Defines a encoder for numbers and bigints. */\nexport type NumberEncoder = Encoder<number> | Encoder<number | bigint>;\n\n/** Defines a decoder for numbers and bigints. */\nexport type NumberDecoder = Decoder<number> | Decoder<bigint>;\n\n/** Defines a codec for numbers and bigints. */\nexport type NumberCodec = Codec<number> | Codec<number | bigint, bigint>;\n\n/** Defines the config for u8 and i8 codecs. */\nexport type SingleByteNumberCodecConfig = BaseCodecConfig;\n\n/** Defines the config for number codecs that use more than one byte. */\nexport type NumberCodecConfig = BaseCodecConfig & {\n /**\n * Whether the serializer should use little-endian or big-endian encoding.\n * @defaultValue `Endian.LITTLE`\n */\n endian?: Endian;\n};\n\n/** Defines the endianness of a number serializer. */\nexport enum Endian {\n LITTLE,\n BIG,\n}\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getF32Encoder = (config: NumberCodecConfig = {}): Encoder<number> =>\n numberEncoderFactory({\n config,\n name: 'f32',\n set: (view, value, le) => view.setFloat32(0, value, le),\n size: 4,\n });\n\nexport const getF32Decoder = (config: NumberCodecConfig = {}): Decoder<number> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getFloat32(0, le),\n name: 'f32',\n size: 4,\n });\n\nexport const getF32Codec = (config: NumberCodecConfig = {}): Codec<number> =>\n combineCodec(getF32Encoder(config), getF32Decoder(config));\n","import {\n assertByteArrayHasEnoughBytesForCodec,\n assertByteArrayIsNotEmptyForCodec,\n CodecData,\n Decoder,\n Encoder,\n} from '@solana/codecs-core';\n\nimport { assertNumberIsBetweenForCodec } from './assertions';\nimport { Endian, NumberCodecConfig, SingleByteNumberCodecConfig } from './common';\n\ntype NumberFactorySharedInput = {\n name: string;\n size: number;\n config: SingleByteNumberCodecConfig | NumberCodecConfig;\n};\n\ntype NumberFactoryEncoderInput<T> = NumberFactorySharedInput & {\n range?: [number | bigint, number | bigint];\n set: (view: DataView, value: T, littleEndian?: boolean) => void;\n};\n\ntype NumberFactoryDecoderInput<T> = NumberFactorySharedInput & {\n get: (view: DataView, littleEndian?: boolean) => T;\n};\n\nfunction sharedNumberFactory(input: NumberFactorySharedInput): CodecData & { littleEndian: boolean | undefined } {\n let littleEndian: boolean | undefined;\n let defaultDescription: string = input.name;\n\n if (input.size > 1) {\n littleEndian = !('endian' in input.config) || input.config.endian === Endian.LITTLE;\n defaultDescription += littleEndian ? '(le)' : '(be)';\n }\n\n return {\n description: input.config.description ?? defaultDescription,\n fixedSize: input.size,\n littleEndian,\n maxSize: input.size,\n };\n}\n\nexport function numberEncoderFactory<T extends number | bigint>(input: NumberFactoryEncoderInput<T>): Encoder<T> {\n const codecData = sharedNumberFactory(input);\n\n return {\n description: codecData.description,\n encode(value: T): Uint8Array {\n if (input.range) {\n assertNumberIsBetweenForCodec(input.name, input.range[0], input.range[1], value);\n }\n const arrayBuffer = new ArrayBuffer(input.size);\n input.set(new DataView(arrayBuffer), value, codecData.littleEndian);\n return new Uint8Array(arrayBuffer);\n },\n fixedSize: codecData.fixedSize,\n maxSize: codecData.maxSize,\n };\n}\n\nexport function numberDecoderFactory<T extends number | bigint>(input: NumberFactoryDecoderInput<T>): Decoder<T> {\n const codecData = sharedNumberFactory(input);\n\n return {\n decode(bytes, offset = 0): [T, number] {\n assertByteArrayIsNotEmptyForCodec(codecData.description, bytes, offset);\n assertByteArrayHasEnoughBytesForCodec(codecData.description, input.size, bytes, offset);\n const view = new DataView(toArrayBuffer(bytes, offset, input.size));\n return [input.get(view, codecData.littleEndian), offset + input.size];\n },\n description: codecData.description,\n fixedSize: codecData.fixedSize,\n maxSize: codecData.maxSize,\n };\n}\n\n/**\n * Helper function to ensure that the ArrayBuffer is converted properly from a Uint8Array\n * Source: https://stackoverflow.com/questions/37228285/uint8array-to-arraybuffer\n */\nfunction toArrayBuffer(bytes: Uint8Array, offset?: number, length?: number): ArrayBuffer {\n const bytesOffset = bytes.byteOffset + (offset ?? 0);\n const bytesLength = length ?? bytes.byteLength;\n return bytes.buffer.slice(bytesOffset, bytesOffset + bytesLength);\n}\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getF64Encoder = (config: NumberCodecConfig = {}): Encoder<number> =>\n numberEncoderFactory({\n config,\n name: 'f64',\n set: (view, value, le) => view.setFloat64(0, value, le),\n size: 8,\n });\n\nexport const getF64Decoder = (config: NumberCodecConfig = {}): Decoder<number> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getFloat64(0, le),\n name: 'f64',\n size: 8,\n });\n\nexport const getF64Codec = (config: NumberCodecConfig = {}): Codec<number> =>\n combineCodec(getF64Encoder(config), getF64Decoder(config));\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI128Encoder = (config: NumberCodecConfig = {}): Encoder<number | bigint> =>\n numberEncoderFactory({\n config,\n name: 'i128',\n range: [-BigInt('0x7fffffffffffffffffffffffffffffff') - 1n, BigInt('0x7fffffffffffffffffffffffffffffff')],\n set: (view, value, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const rightMask = 0xffffffffffffffffn;\n view.setBigInt64(leftOffset, BigInt(value) >> 64n, le);\n view.setBigUint64(rightOffset, BigInt(value) & rightMask, le);\n },\n size: 16,\n });\n\nexport const getI128Decoder = (config: NumberCodecConfig = {}): Decoder<bigint> =>\n numberDecoderFactory({\n config,\n get: (view, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const left = view.getBigInt64(leftOffset, le);\n const right = view.getBigUint64(rightOffset, le);\n return (left << 64n) + right;\n },\n name: 'i128',\n size: 16,\n });\n\nexport const getI128Codec = (config: NumberCodecConfig = {}): Codec<number | bigint, bigint> =>\n combineCodec(getI128Encoder(config), getI128Decoder(config));\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI16Encoder = (config: NumberCodecConfig = {}): Encoder<number> =>\n numberEncoderFactory({\n config,\n name: 'i16',\n range: [-Number('0x7fff') - 1, Number('0x7fff')],\n set: (view, value, le) => view.setInt16(0, value, le),\n size: 2,\n });\n\nexport const getI16Decoder = (config: NumberCodecConfig = {}): Decoder<number> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getInt16(0, le),\n name: 'i16',\n size: 2,\n });\n\nexport const getI16Codec = (config: NumberCodecConfig = {}): Codec<number> =>\n combineCodec(getI16Encoder(config), getI16Decoder(config));\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI32Encoder = (config: NumberCodecConfig = {}): Encoder<number> =>\n numberEncoderFactory({\n config,\n name: 'i32',\n range: [-Number('0x7fffffff') - 1, Number('0x7fffffff')],\n set: (view, value, le) => view.setInt32(0, value, le),\n size: 4,\n });\n\nexport const getI32Decoder = (config: NumberCodecConfig = {}): Decoder<number> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getInt32(0, le),\n name: 'i32',\n size: 4,\n });\n\nexport const getI32Codec = (config: NumberCodecConfig = {}): Codec<number> =>\n combineCodec(getI32Encoder(config), getI32Decoder(config));\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI64Encoder = (config: NumberCodecConfig = {}): Encoder<number | bigint> =>\n numberEncoderFactory({\n config,\n name: 'i64',\n range: [-BigInt('0x7fffffffffffffff') - 1n, BigInt('0x7fffffffffffffff')],\n set: (view, value, le) => view.setBigInt64(0, BigInt(value), le),\n size: 8,\n });\n\nexport const getI64Decoder = (config: NumberCodecConfig = {}): Decoder<bigint> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getBigInt64(0, le),\n name: 'i64',\n size: 8,\n });\n\nexport const getI64Codec = (config: NumberCodecConfig = {}): Codec<number | bigint, bigint> =>\n combineCodec(getI64Encoder(config), getI64Decoder(config));\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { SingleByteNumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI8Encoder = (config: SingleByteNumberCodecConfig = {}): Encoder<number> =>\n numberEncoderFactory({\n config,\n name: 'i8',\n range: [-Number('0x7f') - 1, Number('0x7f')],\n set: (view, value) => view.setInt8(0, value),\n size: 1,\n });\n\nexport const getI8Decoder = (config: SingleByteNumberCodecConfig = {}): Decoder<number> =>\n numberDecoderFactory({\n config,\n get: view => view.getInt8(0),\n name: 'i8',\n size: 1,\n });\n\nexport const getI8Codec = (config: SingleByteNumberCodecConfig = {}): Codec<number> =>\n combineCodec(getI8Encoder(config), getI8Decoder(config));\n","import { BaseCodecConfig, Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { assertNumberIsBetweenForCodec } from './assertions';\n\n/**\n * Defines the config for the shortU16 serializer.\n */\nexport type ShortU16CodecConfig = BaseCodecConfig;\n\n/**\n * Encodes short u16 numbers.\n * @see {@link getShortU16Codec} for a more detailed description.\n */\nexport const getShortU16Encoder = (config: ShortU16CodecConfig = {}): Encoder<number> => ({\n description: config.description ?? 'shortU16',\n encode: (value: number): Uint8Array => {\n assertNumberIsBetweenForCodec('shortU16', 0, 65535, value);\n const bytes = [0];\n for (let ii = 0; ; ii += 1) {\n // Shift the bits of the value over such that the next 7 bits are at the right edge.\n const alignedValue = value >> (ii * 7);\n if (alignedValue === 0) {\n // No more bits to consume.\n break;\n }\n // Extract those 7 bits using a mask.\n const nextSevenBits = 0b1111111 & alignedValue;\n bytes[ii] = nextSevenBits;\n if (ii > 0) {\n // Set the continuation bit of the previous slice.\n bytes[ii - 1] |= 0b10000000;\n }\n }\n return new Uint8Array(bytes);\n },\n fixedSize: null,\n maxSize: 3,\n});\n\n/**\n * Decodes short u16 numbers.\n * @see {@link getShortU16Codec} for a more detailed description.\n */\nexport const getShortU16Decoder = (config: ShortU16CodecConfig = {}): Decoder<number> => ({\n decode: (bytes: Uint8Array, offset = 0): [number, number] => {\n let value = 0;\n let byteCount = 0;\n while (++byteCount) {\n const byteIndex = byteCount - 1;\n const currentByte = bytes[offset + byteIndex];\n const nextSevenBits = 0b1111111 & currentByte;\n // Insert the next group of seven bits into the correct slot of the output value.\n value |= nextSevenBits << (byteIndex * 7);\n if ((currentByte & 0b10000000) === 0) {\n // This byte does not have its continuation bit set. We're done.\n break;\n }\n }\n return [value, offset + byteCount];\n },\n description: config.description ?? 'shortU16',\n fixedSize: null,\n maxSize: 3,\n});\n\n/**\n * Encodes and decodes short u16 numbers.\n *\n * Short u16 numbers are the same as u16, but serialized with 1 to 3 bytes.\n * If the value is above 0x7f, the top bit is set and the remaining\n * value is stored in the next bytes. Each byte follows the same\n * pattern until the 3rd byte. The 3rd byte, if needed, uses\n * all 8 bits to store the last byte of the original value.\n */\nexport const getShortU16Codec = (config: ShortU16CodecConfig = {}): Codec<number> =>\n combineCodec(getShortU16Encoder(config), getShortU16Decoder(config));\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU128Encoder = (config: NumberCodecConfig = {}): Encoder<number | bigint> =>\n numberEncoderFactory({\n config,\n name: 'u128',\n range: [0, BigInt('0xffffffffffffffffffffffffffffffff')],\n set: (view, value, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const rightMask = 0xffffffffffffffffn;\n view.setBigUint64(leftOffset, BigInt(value) >> 64n, le);\n view.setBigUint64(rightOffset, BigInt(value) & rightMask, le);\n },\n size: 16,\n });\n\nexport const getU128Decoder = (config: NumberCodecConfig = {}): Decoder<bigint> =>\n numberDecoderFactory({\n config,\n get: (view, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const left = view.getBigUint64(leftOffset, le);\n const right = view.getBigUint64(rightOffset, le);\n return (left << 64n) + right;\n },\n name: 'u128',\n size: 16,\n });\n\nexport const getU128Codec = (config: NumberCodecConfig = {}): Codec<number | bigint, bigint> =>\n combineCodec(getU128Encoder(config), getU128Decoder(config));\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU16Encoder = (config: NumberCodecConfig = {}): Encoder<number> =>\n numberEncoderFactory({\n config,\n name: 'u16',\n range: [0, Number('0xffff')],\n set: (view, value, le) => view.setUint16(0, value, le),\n size: 2,\n });\n\nexport const getU16Decoder = (config: NumberCodecConfig = {}): Decoder<number> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getUint16(0, le),\n name: 'u16',\n size: 2,\n });\n\nexport const getU16Codec = (config: NumberCodecConfig = {}): Codec<number> =>\n combineCodec(getU16Encoder(config), getU16Decoder(config));\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU32Encoder = (config: NumberCodecConfig = {}): Encoder<number> =>\n numberEncoderFactory({\n config,\n name: 'u32',\n range: [0, Number('0xffffffff')],\n set: (view, value, le) => view.setUint32(0, value, le),\n size: 4,\n });\n\nexport const getU32Decoder = (config: NumberCodecConfig = {}): Decoder<number> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getUint32(0, le),\n name: 'u32',\n size: 4,\n });\n\nexport const getU32Codec = (config: NumberCodecConfig = {}): Codec<number> =>\n combineCodec(getU32Encoder(config), getU32Decoder(config));\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU64Encoder = (config: NumberCodecConfig = {}): Encoder<number | bigint> =>\n numberEncoderFactory({\n config,\n name: 'u64',\n range: [0, BigInt('0xffffffffffffffff')],\n set: (view, value, le) => view.setBigUint64(0, BigInt(value), le),\n size: 8,\n });\n\nexport const getU64Decoder = (config: NumberCodecConfig = {}): Decoder<bigint> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getBigUint64(0, le),\n name: 'u64',\n size: 8,\n });\n\nexport const getU64Codec = (config: NumberCodecConfig = {}): Codec<number | bigint, bigint> =>\n combineCodec(getU64Encoder(config), getU64Decoder(config));\n","import { Codec, combineCodec, Decoder, Encoder } from '@solana/codecs-core';\n\nimport { SingleByteNumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU8Encoder = (config: SingleByteNumberCodecConfig = {}): Encoder<number> =>\n numberEncoderFactory({\n config,\n name: 'u8',\n range: [0, Number('0xff')],\n set: (view, value) => view.setUint8(0, value),\n size: 1,\n });\n\nexport const getU8Decoder = (config: SingleByteNumberCodecConfig = {}): Decoder<number> =>\n numberDecoderFactory({\n config,\n get: view => view.getUint8(0),\n name: 'u8',\n size: 1,\n });\n\nexport const getU8Codec = (config: SingleByteNumberCodecConfig = {}): Codec<number> =>\n combineCodec(getU8Encoder(config), getU8Decoder(config));\n"]}
|