@solana/codecs-numbers 2.0.0-experimental.e1ca396 → 2.0.0-experimental.e58bb22

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/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).
@@ -283,3 +283,5 @@ var getU8Decoder = () => numberDecoderFactory({
283
283
  var getU8Codec = () => combineCodec(getU8Encoder(), getU8Decoder());
284
284
 
285
285
  export { Endian, assertNumberIsBetweenForCodec, getF32Codec, getF32Decoder, getF32Encoder, getF64Codec, getF64Decoder, getF64Encoder, getI128Codec, getI128Decoder, getI128Encoder, getI16Codec, getI16Decoder, getI16Encoder, getI32Codec, getI32Decoder, getI32Encoder, getI64Codec, getI64Decoder, getI64Encoder, getI8Codec, getI8Decoder, getI8Encoder, getShortU16Codec, getShortU16Decoder, getShortU16Encoder, getU128Codec, getU128Decoder, getU128Encoder, getU16Codec, getU16Decoder, getU16Encoder, getU32Codec, getU32Decoder, getU32Encoder, getU64Codec, getU64Decoder, getU64Encoder, getU8Codec, getU8Decoder, getU8Encoder };
286
+ //# sourceMappingURL=out.js.map
287
+ //# sourceMappingURL=index.browser.js.map
@@ -325,3 +325,5 @@ exports.getU64Encoder = getU64Encoder;
325
325
  exports.getU8Codec = getU8Codec;
326
326
  exports.getU8Decoder = getU8Decoder;
327
327
  exports.getU8Encoder = getU8Encoder;
328
+ //# sourceMappingURL=out.js.map
329
+ //# sourceMappingURL=index.node.cjs.map
@@ -283,3 +283,5 @@ var getU8Decoder = () => numberDecoderFactory({
283
283
  var getU8Codec = () => combineCodec(getU8Encoder(), getU8Decoder());
284
284
 
285
285
  export { Endian, assertNumberIsBetweenForCodec, getF32Codec, getF32Decoder, getF32Encoder, getF64Codec, getF64Decoder, getF64Encoder, getI128Codec, getI128Decoder, getI128Encoder, getI16Codec, getI16Decoder, getI16Encoder, getI32Codec, getI32Decoder, getI32Encoder, getI64Codec, getI64Decoder, getI64Encoder, getI8Codec, getI8Decoder, getI8Encoder, getShortU16Codec, getShortU16Decoder, getShortU16Encoder, getU128Codec, getU128Decoder, getU128Encoder, getU16Codec, getU16Decoder, getU16Encoder, getU32Codec, getU32Decoder, getU32Encoder, getU64Codec, getU64Decoder, getU64Encoder, getU8Codec, getU8Decoder, getU8Encoder };
286
+ //# sourceMappingURL=out.js.map
287
+ //# sourceMappingURL=index.node.js.map
@@ -1,5 +1,5 @@
1
1
  import { FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';
2
- import { NumberCodecConfig } from './common';
2
+ import { NumberCodecConfig } from './common.js';
3
3
  export declare const getF32Encoder: (config?: NumberCodecConfig) => FixedSizeEncoder<number, 4>;
4
4
  export declare const getF32Decoder: (config?: NumberCodecConfig) => FixedSizeDecoder<number, 4>;
5
5
  export declare const getF32Codec: (config?: NumberCodecConfig) => FixedSizeCodec<number, number, 4>;
@@ -1,5 +1,5 @@
1
1
  import { FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';
2
- import { NumberCodecConfig } from './common';
2
+ import { NumberCodecConfig } from './common.js';
3
3
  export declare const getF64Encoder: (config?: NumberCodecConfig) => FixedSizeEncoder<number, 8>;
4
4
  export declare const getF64Decoder: (config?: NumberCodecConfig) => FixedSizeDecoder<number, 8>;
5
5
  export declare const getF64Codec: (config?: NumberCodecConfig) => FixedSizeCodec<number, number, 8>;
@@ -1,5 +1,5 @@
1
1
  import { FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';
2
- import { NumberCodecConfig } from './common';
2
+ import { NumberCodecConfig } from './common.js';
3
3
  export declare const getI128Encoder: (config?: NumberCodecConfig) => FixedSizeEncoder<number | bigint, 16>;
4
4
  export declare const getI128Decoder: (config?: NumberCodecConfig) => FixedSizeDecoder<bigint, 16>;
5
5
  export declare const getI128Codec: (config?: NumberCodecConfig) => FixedSizeCodec<number | bigint, bigint, 16>;
@@ -1,5 +1,5 @@
1
1
  import { FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';
2
- import { NumberCodecConfig } from './common';
2
+ import { NumberCodecConfig } from './common.js';
3
3
  export declare const getI16Encoder: (config?: NumberCodecConfig) => FixedSizeEncoder<number, 2>;
4
4
  export declare const getI16Decoder: (config?: NumberCodecConfig) => FixedSizeDecoder<number, 2>;
5
5
  export declare const getI16Codec: (config?: NumberCodecConfig) => FixedSizeCodec<number, number, 2>;
@@ -1,5 +1,5 @@
1
1
  import { FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';
2
- import { NumberCodecConfig } from './common';
2
+ import { NumberCodecConfig } from './common.js';
3
3
  export declare const getI32Encoder: (config?: NumberCodecConfig) => FixedSizeEncoder<number, 4>;
4
4
  export declare const getI32Decoder: (config?: NumberCodecConfig) => FixedSizeDecoder<number, 4>;
5
5
  export declare const getI32Codec: (config?: NumberCodecConfig) => FixedSizeCodec<number, number, 4>;
@@ -1,5 +1,5 @@
1
1
  import { FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';
2
- import { NumberCodecConfig } from './common';
2
+ import { NumberCodecConfig } from './common.js';
3
3
  export declare const getI64Encoder: (config?: NumberCodecConfig) => FixedSizeEncoder<number | bigint, 8>;
4
4
  export declare const getI64Decoder: (config?: NumberCodecConfig) => FixedSizeDecoder<bigint, 8>;
5
5
  export declare const getI64Codec: (config?: NumberCodecConfig) => FixedSizeCodec<number | bigint, bigint, 8>;
@@ -1,16 +1,16 @@
1
- export * from './assertions';
2
- export * from './common';
3
- export * from './f32';
4
- export * from './f64';
5
- export * from './i128';
6
- export * from './i16';
7
- export * from './i32';
8
- export * from './i64';
9
- export * from './i8';
10
- export * from './short-u16';
11
- export * from './u128';
12
- export * from './u16';
13
- export * from './u32';
14
- export * from './u64';
15
- export * from './u8';
1
+ export * from './assertions.js';
2
+ export * from './common.js';
3
+ export * from './f32.js';
4
+ export * from './f64.js';
5
+ export * from './i128.js';
6
+ export * from './i16.js';
7
+ export * from './i32.js';
8
+ export * from './i64.js';
9
+ export * from './i8.js';
10
+ export * from './short-u16.js';
11
+ export * from './u128.js';
12
+ export * from './u16.js';
13
+ export * from './u32.js';
14
+ export * from './u64.js';
15
+ export * from './u8.js';
16
16
  //# sourceMappingURL=index.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import { FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';
2
- import { NumberCodecConfig } from './common';
2
+ import { NumberCodecConfig } from './common.js';
3
3
  export declare const getU128Encoder: (config?: NumberCodecConfig) => FixedSizeEncoder<number | bigint, 16>;
4
4
  export declare const getU128Decoder: (config?: NumberCodecConfig) => FixedSizeDecoder<bigint, 16>;
5
5
  export declare const getU128Codec: (config?: NumberCodecConfig) => FixedSizeCodec<number | bigint, bigint, 16>;
@@ -1,5 +1,5 @@
1
1
  import { FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';
2
- import { NumberCodecConfig } from './common';
2
+ import { NumberCodecConfig } from './common.js';
3
3
  export declare const getU16Encoder: (config?: NumberCodecConfig) => FixedSizeEncoder<number, 2>;
4
4
  export declare const getU16Decoder: (config?: NumberCodecConfig) => FixedSizeDecoder<number, 2>;
5
5
  export declare const getU16Codec: (config?: NumberCodecConfig) => FixedSizeCodec<number, number, 2>;
@@ -1,5 +1,5 @@
1
1
  import { FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';
2
- import { NumberCodecConfig } from './common';
2
+ import { NumberCodecConfig } from './common.js';
3
3
  export declare const getU32Encoder: (config?: NumberCodecConfig) => FixedSizeEncoder<number, 4>;
4
4
  export declare const getU32Decoder: (config?: NumberCodecConfig) => FixedSizeDecoder<number, 4>;
5
5
  export declare const getU32Codec: (config?: NumberCodecConfig) => FixedSizeCodec<number, number, 4>;
@@ -1,5 +1,5 @@
1
1
  import { FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';
2
- import { NumberCodecConfig } from './common';
2
+ import { NumberCodecConfig } from './common.js';
3
3
  export declare const getU64Encoder: (config?: NumberCodecConfig) => FixedSizeEncoder<number | bigint, 8>;
4
4
  export declare const getU64Decoder: (config?: NumberCodecConfig) => FixedSizeDecoder<bigint, 8>;
5
5
  export declare const getU64Codec: (config?: NumberCodecConfig) => FixedSizeCodec<number | bigint, bigint, 8>;
@@ -1,5 +1,5 @@
1
1
  import { FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';
2
- import { NumberCodecConfig } from './common';
2
+ import { NumberCodecConfig } from './common.js';
3
3
  type NumberFactorySharedInput<TSize extends number> = {
4
4
  name: string;
5
5
  size: TSize;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solana/codecs-numbers",
3
- "version": "2.0.0-experimental.e1ca396",
3
+ "version": "2.0.0-experimental.e58bb22",
4
4
  "description": "Codecs for numbers of different sizes and endianness",
5
5
  "exports": {
6
6
  "browser": {
@@ -49,13 +49,13 @@
49
49
  "node": ">=17.4"
50
50
  },
51
51
  "dependencies": {
52
- "@solana/codecs-core": "2.0.0-experimental.e1ca396"
52
+ "@solana/codecs-core": "2.0.0-experimental.e58bb22"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@solana/eslint-config-solana": "^1.0.2",
56
56
  "@swc/jest": "^0.2.29",
57
- "@types/jest": "^29.5.6",
58
- "@typescript-eslint/eslint-plugin": "^6.7.0",
57
+ "@types/jest": "^29.5.11",
58
+ "@typescript-eslint/eslint-plugin": "^6.13.2",
59
59
  "@typescript-eslint/parser": "^6.3.0",
60
60
  "agadoo": "^3.0.0",
61
61
  "eslint": "^8.45.0",
@@ -82,8 +82,8 @@
82
82
  ]
83
83
  },
84
84
  "scripts": {
85
- "compile:js": "tsup --config build-scripts/tsup.config.library.ts",
86
- "compile:typedefs": "tsc -p ./tsconfig.declarations.json",
85
+ "compile:js": "tsup --config build-scripts/tsup.config.package.ts",
86
+ "compile:typedefs": "tsc -p ./tsconfig.declarations.json && node node_modules/build-scripts/add-js-extension-to-types.mjs",
87
87
  "dev": "jest -c node_modules/test-config/jest-dev.config.ts --rootDir . --watch",
88
88
  "publish-packages": "pnpm publish --tag experimental --access public --no-git-checks",
89
89
  "style:fix": "pnpm eslint --fix src/* && pnpm prettier -w src/* package.json",
@@ -1,417 +0,0 @@
1
- this.globalThis = this.globalThis || {};
2
- this.globalThis.solanaWeb3 = (function (exports) {
3
- 'use strict';
4
-
5
- // src/assertions.ts
6
- function assertNumberIsBetweenForCodec(codecDescription, min, max, value) {
7
- if (value < min || value > max) {
8
- throw new Error(
9
- `Codec [${codecDescription}] expected number to be in the range [${min}, ${max}], got ${value}.`
10
- );
11
- }
12
- }
13
-
14
- // src/common.ts
15
- var Endian = /* @__PURE__ */ ((Endian2) => {
16
- Endian2[Endian2["LITTLE"] = 0] = "LITTLE";
17
- Endian2[Endian2["BIG"] = 1] = "BIG";
18
- return Endian2;
19
- })(Endian || {});
20
-
21
- // ../codecs-core/dist/index.browser.js
22
- function assertByteArrayIsNotEmptyForCodec(codecDescription, bytes, offset = 0) {
23
- if (bytes.length - offset <= 0) {
24
- throw new Error(`Codec [${codecDescription}] cannot decode empty byte arrays.`);
25
- }
26
- }
27
- function assertByteArrayHasEnoughBytesForCodec(codecDescription, expected, bytes, offset = 0) {
28
- const bytesLength = bytes.length - offset;
29
- if (bytesLength < expected) {
30
- throw new Error(`Codec [${codecDescription}] expected ${expected} bytes, got ${bytesLength}.`);
31
- }
32
- }
33
- function getEncodedSize(value, encoder) {
34
- return "fixedSize" in encoder ? encoder.fixedSize : encoder.getSizeFromValue(value);
35
- }
36
- function createEncoder(encoder) {
37
- return Object.freeze({
38
- ...encoder,
39
- encode: (value) => {
40
- const bytes = new Uint8Array(getEncodedSize(value, encoder));
41
- encoder.write(value, bytes, 0);
42
- return bytes;
43
- }
44
- });
45
- }
46
- function createDecoder(decoder) {
47
- return Object.freeze({
48
- ...decoder,
49
- decode: (bytes, offset = 0) => decoder.read(bytes, offset)[0]
50
- });
51
- }
52
- function isFixedSize(codec) {
53
- return "fixedSize" in codec && typeof codec.fixedSize === "number";
54
- }
55
- function combineCodec(encoder, decoder) {
56
- if (isFixedSize(encoder) !== isFixedSize(decoder)) {
57
- throw new Error(`Encoder and decoder must either both be fixed-size or variable-size.`);
58
- }
59
- if (isFixedSize(encoder) && isFixedSize(decoder) && encoder.fixedSize !== decoder.fixedSize) {
60
- throw new Error(
61
- `Encoder and decoder must have the same fixed size, got [${encoder.fixedSize}] and [${decoder.fixedSize}].`
62
- );
63
- }
64
- if (!isFixedSize(encoder) && !isFixedSize(decoder) && encoder.maxSize !== decoder.maxSize) {
65
- throw new Error(
66
- `Encoder and decoder must have the same max size, got [${encoder.maxSize}] and [${decoder.maxSize}].`
67
- );
68
- }
69
- return {
70
- ...decoder,
71
- ...encoder,
72
- decode: decoder.decode,
73
- encode: encoder.encode,
74
- read: decoder.read,
75
- write: encoder.write
76
- };
77
- }
78
-
79
- // src/utils.ts
80
- function isLittleEndian(config) {
81
- return (config == null ? void 0 : config.endian) === 1 /* BIG */ ? false : true;
82
- }
83
- function numberEncoderFactory(input) {
84
- return createEncoder({
85
- fixedSize: input.size,
86
- write(value, bytes, offset) {
87
- if (input.range) {
88
- assertNumberIsBetweenForCodec(input.name, input.range[0], input.range[1], value);
89
- }
90
- const arrayBuffer = new ArrayBuffer(input.size);
91
- input.set(new DataView(arrayBuffer), value, isLittleEndian(input.config));
92
- bytes.set(new Uint8Array(arrayBuffer), offset);
93
- return offset + input.size;
94
- }
95
- });
96
- }
97
- function numberDecoderFactory(input) {
98
- return createDecoder({
99
- fixedSize: input.size,
100
- read(bytes, offset = 0) {
101
- assertByteArrayIsNotEmptyForCodec(input.name, bytes, offset);
102
- assertByteArrayHasEnoughBytesForCodec(input.name, input.size, bytes, offset);
103
- const view = new DataView(toArrayBuffer(bytes, offset, input.size));
104
- return [input.get(view, isLittleEndian(input.config)), offset + input.size];
105
- }
106
- });
107
- }
108
- function toArrayBuffer(bytes, offset, length) {
109
- const bytesOffset = bytes.byteOffset + (offset != null ? offset : 0);
110
- const bytesLength = length != null ? length : bytes.byteLength;
111
- return bytes.buffer.slice(bytesOffset, bytesOffset + bytesLength);
112
- }
113
-
114
- // src/f32.ts
115
- var getF32Encoder = (config = {}) => numberEncoderFactory({
116
- config,
117
- name: "f32",
118
- set: (view, value, le) => view.setFloat32(0, value, le),
119
- size: 4
120
- });
121
- var getF32Decoder = (config = {}) => numberDecoderFactory({
122
- config,
123
- get: (view, le) => view.getFloat32(0, le),
124
- name: "f32",
125
- size: 4
126
- });
127
- var getF32Codec = (config = {}) => combineCodec(getF32Encoder(config), getF32Decoder(config));
128
-
129
- // src/f64.ts
130
- var getF64Encoder = (config = {}) => numberEncoderFactory({
131
- config,
132
- name: "f64",
133
- set: (view, value, le) => view.setFloat64(0, value, le),
134
- size: 8
135
- });
136
- var getF64Decoder = (config = {}) => numberDecoderFactory({
137
- config,
138
- get: (view, le) => view.getFloat64(0, le),
139
- name: "f64",
140
- size: 8
141
- });
142
- var getF64Codec = (config = {}) => combineCodec(getF64Encoder(config), getF64Decoder(config));
143
-
144
- // src/i128.ts
145
- var getI128Encoder = (config = {}) => numberEncoderFactory({
146
- config,
147
- name: "i128",
148
- range: [-BigInt("0x7fffffffffffffffffffffffffffffff") - 1n, BigInt("0x7fffffffffffffffffffffffffffffff")],
149
- set: (view, value, le) => {
150
- const leftOffset = le ? 8 : 0;
151
- const rightOffset = le ? 0 : 8;
152
- const rightMask = 0xffffffffffffffffn;
153
- view.setBigInt64(leftOffset, BigInt(value) >> 64n, le);
154
- view.setBigUint64(rightOffset, BigInt(value) & rightMask, le);
155
- },
156
- size: 16
157
- });
158
- var getI128Decoder = (config = {}) => numberDecoderFactory({
159
- config,
160
- get: (view, le) => {
161
- const leftOffset = le ? 8 : 0;
162
- const rightOffset = le ? 0 : 8;
163
- const left = view.getBigInt64(leftOffset, le);
164
- const right = view.getBigUint64(rightOffset, le);
165
- return (left << 64n) + right;
166
- },
167
- name: "i128",
168
- size: 16
169
- });
170
- var getI128Codec = (config = {}) => combineCodec(getI128Encoder(config), getI128Decoder(config));
171
-
172
- // src/i16.ts
173
- var getI16Encoder = (config = {}) => numberEncoderFactory({
174
- config,
175
- name: "i16",
176
- range: [-Number("0x7fff") - 1, Number("0x7fff")],
177
- set: (view, value, le) => view.setInt16(0, value, le),
178
- size: 2
179
- });
180
- var getI16Decoder = (config = {}) => numberDecoderFactory({
181
- config,
182
- get: (view, le) => view.getInt16(0, le),
183
- name: "i16",
184
- size: 2
185
- });
186
- var getI16Codec = (config = {}) => combineCodec(getI16Encoder(config), getI16Decoder(config));
187
-
188
- // src/i32.ts
189
- var getI32Encoder = (config = {}) => numberEncoderFactory({
190
- config,
191
- name: "i32",
192
- range: [-Number("0x7fffffff") - 1, Number("0x7fffffff")],
193
- set: (view, value, le) => view.setInt32(0, value, le),
194
- size: 4
195
- });
196
- var getI32Decoder = (config = {}) => numberDecoderFactory({
197
- config,
198
- get: (view, le) => view.getInt32(0, le),
199
- name: "i32",
200
- size: 4
201
- });
202
- var getI32Codec = (config = {}) => combineCodec(getI32Encoder(config), getI32Decoder(config));
203
-
204
- // src/i64.ts
205
- var getI64Encoder = (config = {}) => numberEncoderFactory({
206
- config,
207
- name: "i64",
208
- range: [-BigInt("0x7fffffffffffffff") - 1n, BigInt("0x7fffffffffffffff")],
209
- set: (view, value, le) => view.setBigInt64(0, BigInt(value), le),
210
- size: 8
211
- });
212
- var getI64Decoder = (config = {}) => numberDecoderFactory({
213
- config,
214
- get: (view, le) => view.getBigInt64(0, le),
215
- name: "i64",
216
- size: 8
217
- });
218
- var getI64Codec = (config = {}) => combineCodec(getI64Encoder(config), getI64Decoder(config));
219
-
220
- // src/i8.ts
221
- var getI8Encoder = () => numberEncoderFactory({
222
- name: "i8",
223
- range: [-Number("0x7f") - 1, Number("0x7f")],
224
- set: (view, value) => view.setInt8(0, value),
225
- size: 1
226
- });
227
- var getI8Decoder = () => numberDecoderFactory({
228
- get: (view) => view.getInt8(0),
229
- name: "i8",
230
- size: 1
231
- });
232
- var getI8Codec = () => combineCodec(getI8Encoder(), getI8Decoder());
233
-
234
- // src/short-u16.ts
235
- var getShortU16Encoder = () => createEncoder({
236
- getSizeFromValue: (value) => {
237
- if (value <= 127)
238
- return 1;
239
- if (value <= 16383)
240
- return 2;
241
- return 3;
242
- },
243
- maxSize: 3,
244
- write: (value, bytes, offset) => {
245
- assertNumberIsBetweenForCodec("shortU16", 0, 65535, value);
246
- const shortU16Bytes = [0];
247
- for (let ii = 0; ; ii += 1) {
248
- const alignedValue = value >> ii * 7;
249
- if (alignedValue === 0) {
250
- break;
251
- }
252
- const nextSevenBits = 127 & alignedValue;
253
- shortU16Bytes[ii] = nextSevenBits;
254
- if (ii > 0) {
255
- shortU16Bytes[ii - 1] |= 128;
256
- }
257
- }
258
- bytes.set(shortU16Bytes, offset);
259
- return offset + shortU16Bytes.length;
260
- }
261
- });
262
- var getShortU16Decoder = () => createDecoder({
263
- maxSize: 3,
264
- read: (bytes, offset) => {
265
- let value = 0;
266
- let byteCount = 0;
267
- while (++byteCount) {
268
- const byteIndex = byteCount - 1;
269
- const currentByte = bytes[offset + byteIndex];
270
- const nextSevenBits = 127 & currentByte;
271
- value |= nextSevenBits << byteIndex * 7;
272
- if ((currentByte & 128) === 0) {
273
- break;
274
- }
275
- }
276
- return [value, offset + byteCount];
277
- }
278
- });
279
- var getShortU16Codec = () => combineCodec(getShortU16Encoder(), getShortU16Decoder());
280
-
281
- // src/u128.ts
282
- var getU128Encoder = (config = {}) => numberEncoderFactory({
283
- config,
284
- name: "u128",
285
- range: [0, BigInt("0xffffffffffffffffffffffffffffffff")],
286
- set: (view, value, le) => {
287
- const leftOffset = le ? 8 : 0;
288
- const rightOffset = le ? 0 : 8;
289
- const rightMask = 0xffffffffffffffffn;
290
- view.setBigUint64(leftOffset, BigInt(value) >> 64n, le);
291
- view.setBigUint64(rightOffset, BigInt(value) & rightMask, le);
292
- },
293
- size: 16
294
- });
295
- var getU128Decoder = (config = {}) => numberDecoderFactory({
296
- config,
297
- get: (view, le) => {
298
- const leftOffset = le ? 8 : 0;
299
- const rightOffset = le ? 0 : 8;
300
- const left = view.getBigUint64(leftOffset, le);
301
- const right = view.getBigUint64(rightOffset, le);
302
- return (left << 64n) + right;
303
- },
304
- name: "u128",
305
- size: 16
306
- });
307
- var getU128Codec = (config = {}) => combineCodec(getU128Encoder(config), getU128Decoder(config));
308
-
309
- // src/u16.ts
310
- var getU16Encoder = (config = {}) => numberEncoderFactory({
311
- config,
312
- name: "u16",
313
- range: [0, Number("0xffff")],
314
- set: (view, value, le) => view.setUint16(0, value, le),
315
- size: 2
316
- });
317
- var getU16Decoder = (config = {}) => numberDecoderFactory({
318
- config,
319
- get: (view, le) => view.getUint16(0, le),
320
- name: "u16",
321
- size: 2
322
- });
323
- var getU16Codec = (config = {}) => combineCodec(getU16Encoder(config), getU16Decoder(config));
324
-
325
- // src/u32.ts
326
- var getU32Encoder = (config = {}) => numberEncoderFactory({
327
- config,
328
- name: "u32",
329
- range: [0, Number("0xffffffff")],
330
- set: (view, value, le) => view.setUint32(0, value, le),
331
- size: 4
332
- });
333
- var getU32Decoder = (config = {}) => numberDecoderFactory({
334
- config,
335
- get: (view, le) => view.getUint32(0, le),
336
- name: "u32",
337
- size: 4
338
- });
339
- var getU32Codec = (config = {}) => combineCodec(getU32Encoder(config), getU32Decoder(config));
340
-
341
- // src/u64.ts
342
- var getU64Encoder = (config = {}) => numberEncoderFactory({
343
- config,
344
- name: "u64",
345
- range: [0, BigInt("0xffffffffffffffff")],
346
- set: (view, value, le) => view.setBigUint64(0, BigInt(value), le),
347
- size: 8
348
- });
349
- var getU64Decoder = (config = {}) => numberDecoderFactory({
350
- config,
351
- get: (view, le) => view.getBigUint64(0, le),
352
- name: "u64",
353
- size: 8
354
- });
355
- var getU64Codec = (config = {}) => combineCodec(getU64Encoder(config), getU64Decoder(config));
356
-
357
- // src/u8.ts
358
- var getU8Encoder = () => numberEncoderFactory({
359
- name: "u8",
360
- range: [0, Number("0xff")],
361
- set: (view, value) => view.setUint8(0, value),
362
- size: 1
363
- });
364
- var getU8Decoder = () => numberDecoderFactory({
365
- get: (view) => view.getUint8(0),
366
- name: "u8",
367
- size: 1
368
- });
369
- var getU8Codec = () => combineCodec(getU8Encoder(), getU8Decoder());
370
-
371
- exports.Endian = Endian;
372
- exports.assertNumberIsBetweenForCodec = assertNumberIsBetweenForCodec;
373
- exports.getF32Codec = getF32Codec;
374
- exports.getF32Decoder = getF32Decoder;
375
- exports.getF32Encoder = getF32Encoder;
376
- exports.getF64Codec = getF64Codec;
377
- exports.getF64Decoder = getF64Decoder;
378
- exports.getF64Encoder = getF64Encoder;
379
- exports.getI128Codec = getI128Codec;
380
- exports.getI128Decoder = getI128Decoder;
381
- exports.getI128Encoder = getI128Encoder;
382
- exports.getI16Codec = getI16Codec;
383
- exports.getI16Decoder = getI16Decoder;
384
- exports.getI16Encoder = getI16Encoder;
385
- exports.getI32Codec = getI32Codec;
386
- exports.getI32Decoder = getI32Decoder;
387
- exports.getI32Encoder = getI32Encoder;
388
- exports.getI64Codec = getI64Codec;
389
- exports.getI64Decoder = getI64Decoder;
390
- exports.getI64Encoder = getI64Encoder;
391
- exports.getI8Codec = getI8Codec;
392
- exports.getI8Decoder = getI8Decoder;
393
- exports.getI8Encoder = getI8Encoder;
394
- exports.getShortU16Codec = getShortU16Codec;
395
- exports.getShortU16Decoder = getShortU16Decoder;
396
- exports.getShortU16Encoder = getShortU16Encoder;
397
- exports.getU128Codec = getU128Codec;
398
- exports.getU128Decoder = getU128Decoder;
399
- exports.getU128Encoder = getU128Encoder;
400
- exports.getU16Codec = getU16Codec;
401
- exports.getU16Decoder = getU16Decoder;
402
- exports.getU16Encoder = getU16Encoder;
403
- exports.getU32Codec = getU32Codec;
404
- exports.getU32Decoder = getU32Decoder;
405
- exports.getU32Encoder = getU32Encoder;
406
- exports.getU64Codec = getU64Codec;
407
- exports.getU64Decoder = getU64Decoder;
408
- exports.getU64Encoder = getU64Encoder;
409
- exports.getU8Codec = getU8Codec;
410
- exports.getU8Decoder = getU8Decoder;
411
- exports.getU8Encoder = getU8Encoder;
412
-
413
- return exports;
414
-
415
- })({});
416
- //# sourceMappingURL=out.js.map
417
- //# sourceMappingURL=index.development.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/assertions.ts","../src/common.ts","../../codecs-core/dist/index.browser.js","../src/utils.ts","../src/f32.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"],"mappings":";AAGO,SAAS,8BACZ,kBACA,KACA,KACA,OACF;AACE,MAAI,QAAQ,OAAO,QAAQ,KAAK;AAE5B,UAAM,IAAI;AAAA,MACN,UAAU,gBAAgB,yCAAyC,GAAG,KAAK,GAAG,UAAU,KAAK;AAAA,IACjG;AAAA,EACJ;AACJ;;;ACqBO,IAAK,SAAL,kBAAKA,YAAL;AACH,EAAAA,gBAAA;AACA,EAAAA,gBAAA;AAFQ,SAAAA;AAAA,GAAA;;;ACnCZ,SAAS,kCAAkC,kBAAkB,OAAO,SAAS,GAAG;AAC9E,MAAI,MAAM,SAAS,UAAU,GAAG;AAC9B,UAAM,IAAI,MAAM,UAAU,gBAAgB,oCAAoC;AAAA,EAChF;AACF;AACA,SAAS,sCAAsC,kBAAkB,UAAU,OAAO,SAAS,GAAG;AAC5F,QAAM,cAAc,MAAM,SAAS;AACnC,MAAI,cAAc,UAAU;AAC1B,UAAM,IAAI,MAAM,UAAU,gBAAgB,cAAc,QAAQ,eAAe,WAAW,GAAG;AAAA,EAC/F;AACF;AA8BA,SAAS,eAAe,OAAO,SAAS;AACtC,SAAO,eAAe,UAAU,QAAQ,YAAY,QAAQ,iBAAiB,KAAK;AACpF;AACA,SAAS,cAAc,SAAS;AAC9B,SAAO,OAAO,OAAO;AAAA,IACnB,GAAG;AAAA,IACH,QAAQ,CAAC,UAAU;AACjB,YAAM,QAAQ,IAAI,WAAW,eAAe,OAAO,OAAO,CAAC;AAC3D,cAAQ,MAAM,OAAO,OAAO,CAAC;AAC7B,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACH;AACA,SAAS,cAAc,SAAS;AAC9B,SAAO,OAAO,OAAO;AAAA,IACnB,GAAG;AAAA,IACH,QAAQ,CAAC,OAAO,SAAS,MAAM,QAAQ,KAAK,OAAO,MAAM,EAAE,CAAC;AAAA,EAC9D,CAAC;AACH;AAYA,SAAS,YAAY,OAAO;AAC1B,SAAO,eAAe,SAAS,OAAO,MAAM,cAAc;AAC5D;AAgBA,SAAS,aAAa,SAAS,SAAS;AACtC,MAAI,YAAY,OAAO,MAAM,YAAY,OAAO,GAAG;AACjD,UAAM,IAAI,MAAM,sEAAsE;AAAA,EACxF;AACA,MAAI,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,QAAQ,cAAc,QAAQ,WAAW;AAC3F,UAAM,IAAI;AAAA,MACR,2DAA2D,QAAQ,SAAS,UAAU,QAAQ,SAAS;AAAA,IACzG;AAAA,EACF;AACA,MAAI,CAAC,YAAY,OAAO,KAAK,CAAC,YAAY,OAAO,KAAK,QAAQ,YAAY,QAAQ,SAAS;AACzF,UAAM,IAAI;AAAA,MACR,yDAAyD,QAAQ,OAAO,UAAU,QAAQ,OAAO;AAAA,IACnG;AAAA,EACF;AACA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,QAAQ,QAAQ;AAAA,IAChB,QAAQ,QAAQ;AAAA,IAChB,MAAM,QAAQ;AAAA,IACd,OAAO,QAAQ;AAAA,EACjB;AACF;;;ACnFA,SAAS,eAAe,QAAqC;AACzD,UAAO,iCAAQ,0BAAwB,QAAQ;AACnD;AAEO,SAAS,qBACZ,OAC8B;AAC9B,SAAO,cAAc;AAAA,IACjB,WAAW,MAAM;AAAA,IACjB,MAAM,OAAc,OAAmB,QAAwB;AAC3D,UAAI,MAAM,OAAO;AACb,sCAA8B,MAAM,MAAM,MAAM,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,GAAG,KAAK;AAAA,MACnF;AACA,YAAM,cAAc,IAAI,YAAY,MAAM,IAAI;AAC9C,YAAM,IAAI,IAAI,SAAS,WAAW,GAAG,OAAO,eAAe,MAAM,MAAM,CAAC;AACxE,YAAM,IAAI,IAAI,WAAW,WAAW,GAAG,MAAM;AAC7C,aAAO,SAAS,MAAM;AAAA,IAC1B;AAAA,EACJ,CAAC;AACL;AAEO,SAAS,qBACZ,OAC4B;AAC5B,SAAO,cAAc;AAAA,IACjB,WAAW,MAAM;AAAA,IACjB,KAAK,OAAO,SAAS,GAAkB;AACnC,wCAAkC,MAAM,MAAM,OAAO,MAAM;AAC3D,4CAAsC,MAAM,MAAM,MAAM,MAAM,OAAO,MAAM;AAC3E,YAAM,OAAO,IAAI,SAAS,cAAc,OAAO,QAAQ,MAAM,IAAI,CAAC;AAClE,aAAO,CAAC,MAAM,IAAI,MAAM,eAAe,MAAM,MAAM,CAAC,GAAG,SAAS,MAAM,IAAI;AAAA,IAC9E;AAAA,EACJ,CAAC;AACL;AAMA,SAAS,cAAc,OAAmB,QAAiB,QAA8B;AACrF,QAAM,cAAc,MAAM,cAAc,0BAAU;AAClD,QAAM,cAAc,0BAAU,MAAM;AACpC,SAAO,MAAM,OAAO,MAAM,aAAa,cAAc,WAAW;AACpE;;;AClEO,IAAM,gBAAgB,CAAC,SAA4B,CAAC,MACvD,qBAAqB;AAAA,EACjB;AAAA,EACA,MAAM;AAAA,EACN,KAAK,CAAC,MAAM,OAAO,OAAO,KAAK,WAAW,GAAG,OAAO,EAAE;AAAA,EACtD,MAAM;AACV,CAAC;AAEE,IAAM,gBAAgB,CAAC,SAA4B,CAAC,MACvD,qBAAqB;AAAA,EACjB;AAAA,EACA,KAAK,CAAC,MAAM,OAAO,KAAK,WAAW,GAAG,EAAE;AAAA,EACxC,MAAM;AAAA,EACN,MAAM;AACV,CAAC;AAEE,IAAM,cAAc,CAAC,SAA4B,CAAC,MACrD,aAAa,cAAc,MAAM,GAAG,cAAc,MAAM,CAAC;;;ACjBtD,IAAM,gBAAgB,CAAC,SAA4B,CAAC,MACvD,qBAAqB;AAAA,EACjB;AAAA,EACA,MAAM;AAAA,EACN,KAAK,CAAC,MAAM,OAAO,OAAO,KAAK,WAAW,GAAG,OAAO,EAAE;AAAA,EACtD,MAAM;AACV,CAAC;AAEE,IAAM,gBAAgB,CAAC,SAA4B,CAAC,MACvD,qBAAqB;AAAA,EACjB;AAAA,EACA,KAAK,CAAC,MAAM,OAAO,KAAK,WAAW,GAAG,EAAE;AAAA,EACxC,MAAM;AAAA,EACN,MAAM;AACV,CAAC;AAEE,IAAM,cAAc,CAAC,SAA4B,CAAC,MACrD,aAAa,cAAc,MAAM,GAAG,cAAc,MAAM,CAAC;;;ACjBtD,IAAM,iBAAiB,CAAC,SAA4B,CAAC,MACxD,qBAAqB;AAAA,EACjB;AAAA,EACA,MAAM;AAAA,EACN,OAAO,CAAC,CAAC,OAAO,oCAAoC,IAAI,IAAI,OAAO,oCAAoC,CAAC;AAAA,EACxG,KAAK,CAAC,MAAM,OAAO,OAAO;AACtB,UAAM,aAAa,KAAK,IAAI;AAC5B,UAAM,cAAc,KAAK,IAAI;AAC7B,UAAM,YAAY;AAClB,SAAK,YAAY,YAAY,OAAO,KAAK,KAAK,KAAK,EAAE;AACrD,SAAK,aAAa,aAAa,OAAO,KAAK,IAAI,WAAW,EAAE;AAAA,EAChE;AAAA,EACA,MAAM;AACV,CAAC;AAEE,IAAM,iBAAiB,CAAC,SAA4B,CAAC,MACxD,qBAAqB;AAAA,EACjB;AAAA,EACA,KAAK,CAAC,MAAM,OAAO;AACf,UAAM,aAAa,KAAK,IAAI;AAC5B,UAAM,cAAc,KAAK,IAAI;AAC7B,UAAM,OAAO,KAAK,YAAY,YAAY,EAAE;AAC5C,UAAM,QAAQ,KAAK,aAAa,aAAa,EAAE;AAC/C,YAAQ,QAAQ,OAAO;AAAA,EAC3B;AAAA,EACA,MAAM;AAAA,EACN,MAAM;AACV,CAAC;AAEE,IAAM,eAAe,CAAC,SAA4B,CAAC,MACtD,aAAa,eAAe,MAAM,GAAG,eAAe,MAAM,CAAC;;;AC9BxD,IAAM,gBAAgB,CAAC,SAA4B,CAAC,MACvD,qBAAqB;AAAA,EACjB;AAAA,EACA,MAAM;AAAA,EACN,OAAO,CAAC,CAAC,OAAO,QAAQ,IAAI,GAAG,OAAO,QAAQ,CAAC;AAAA,EAC/C,KAAK,CAAC,MAAM,OAAO,OAAO,KAAK,SAAS,GAAG,OAAO,EAAE;AAAA,EACpD,MAAM;AACV,CAAC;AAEE,IAAM,gBAAgB,CAAC,SAA4B,CAAC,MACvD,qBAAqB;AAAA,EACjB;AAAA,EACA,KAAK,CAAC,MAAM,OAAO,KAAK,SAAS,GAAG,EAAE;AAAA,EACtC,MAAM;AAAA,EACN,MAAM;AACV,CAAC;AAEE,IAAM,cAAc,CAAC,SAA4B,CAAC,MACrD,aAAa,cAAc,MAAM,GAAG,cAAc,MAAM,CAAC;;;AClBtD,IAAM,gBAAgB,CAAC,SAA4B,CAAC,MACvD,qBAAqB;AAAA,EACjB;AAAA,EACA,MAAM;AAAA,EACN,OAAO,CAAC,CAAC,OAAO,YAAY,IAAI,GAAG,OAAO,YAAY,CAAC;AAAA,EACvD,KAAK,CAAC,MAAM,OAAO,OAAO,KAAK,SAAS,GAAG,OAAO,EAAE;AAAA,EACpD,MAAM;AACV,CAAC;AAEE,IAAM,gBAAgB,CAAC,SAA4B,CAAC,MACvD,qBAAqB;AAAA,EACjB;AAAA,EACA,KAAK,CAAC,MAAM,OAAO,KAAK,SAAS,GAAG,EAAE;AAAA,EACtC,MAAM;AAAA,EACN,MAAM;AACV,CAAC;AAEE,IAAM,cAAc,CAAC,SAA4B,CAAC,MACrD,aAAa,cAAc,MAAM,GAAG,cAAc,MAAM,CAAC;;;AClBtD,IAAM,gBAAgB,CAAC,SAA4B,CAAC,MACvD,qBAAqB;AAAA,EACjB;AAAA,EACA,MAAM;AAAA,EACN,OAAO,CAAC,CAAC,OAAO,oBAAoB,IAAI,IAAI,OAAO,oBAAoB,CAAC;AAAA,EACxE,KAAK,CAAC,MAAM,OAAO,OAAO,KAAK,YAAY,GAAG,OAAO,KAAK,GAAG,EAAE;AAAA,EAC/D,MAAM;AACV,CAAC;AAEE,IAAM,gBAAgB,CAAC,SAA4B,CAAC,MACvD,qBAAqB;AAAA,EACjB;AAAA,EACA,KAAK,CAAC,MAAM,OAAO,KAAK,YAAY,GAAG,EAAE;AAAA,EACzC,MAAM;AAAA,EACN,MAAM;AACV,CAAC;AAEE,IAAM,cAAc,CAAC,SAA4B,CAAC,MACrD,aAAa,cAAc,MAAM,GAAG,cAAc,MAAM,CAAC;;;ACnBtD,IAAM,eAAe,MACxB,qBAAqB;AAAA,EACjB,MAAM;AAAA,EACN,OAAO,CAAC,CAAC,OAAO,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC;AAAA,EAC3C,KAAK,CAAC,MAAM,UAAU,KAAK,QAAQ,GAAG,KAAK;AAAA,EAC3C,MAAM;AACV,CAAC;AAEE,IAAM,eAAe,MACxB,qBAAqB;AAAA,EACjB,KAAK,UAAQ,KAAK,QAAQ,CAAC;AAAA,EAC3B,MAAM;AAAA,EACN,MAAM;AACV,CAAC;AAEE,IAAM,aAAa,MAAyC,aAAa,aAAa,GAAG,aAAa,CAAC;;;ACHvG,IAAM,qBAAqB,MAC9B,cAAc;AAAA,EACV,kBAAkB,CAAC,UAA0B;AACzC,QAAI,SAAS;AAAY,aAAO;AAChC,QAAI,SAAS;AAAoB,aAAO;AACxC,WAAO;AAAA,EACX;AAAA,EACA,SAAS;AAAA,EACT,OAAO,CAAC,OAAe,OAAmB,WAA2B;AACjE,kCAA8B,YAAY,GAAG,OAAO,KAAK;AACzD,UAAM,gBAAgB,CAAC,CAAC;AACxB,aAAS,KAAK,KAAK,MAAM,GAAG;AAExB,YAAM,eAAe,SAAU,KAAK;AACpC,UAAI,iBAAiB,GAAG;AAEpB;AAAA,MACJ;AAEA,YAAM,gBAAgB,MAAY;AAClC,oBAAc,EAAE,IAAI;AACpB,UAAI,KAAK,GAAG;AAER,sBAAc,KAAK,CAAC,KAAK;AAAA,MAC7B;AAAA,IACJ;AACA,UAAM,IAAI,eAAe,MAAM;AAC/B,WAAO,SAAS,cAAc;AAAA,EAClC;AACJ,CAAC;AAME,IAAM,qBAAqB,MAC9B,cAAc;AAAA,EACV,SAAS;AAAA,EACT,MAAM,CAAC,OAAmB,WAA6B;AACnD,QAAI,QAAQ;AACZ,QAAI,YAAY;AAChB,WAAO,EAAE,WAAW;AAChB,YAAM,YAAY,YAAY;AAC9B,YAAM,cAAc,MAAM,SAAS,SAAS;AAC5C,YAAM,gBAAgB,MAAY;AAElC,eAAS,iBAAkB,YAAY;AACvC,WAAK,cAAc,SAAgB,GAAG;AAElC;AAAA,MACJ;AAAA,IACJ;AACA,WAAO,CAAC,OAAO,SAAS,SAAS;AAAA,EACrC;AACJ,CAAC;AAWE,IAAM,mBAAmB,MAC5B,aAAa,mBAAmB,GAAG,mBAAmB,CAAC;;;AC7EpD,IAAM,iBAAiB,CAAC,SAA4B,CAAC,MACxD,qBAAqB;AAAA,EACjB;AAAA,EACA,MAAM;AAAA,EACN,OAAO,CAAC,GAAG,OAAO,oCAAoC,CAAC;AAAA,EACvD,KAAK,CAAC,MAAM,OAAO,OAAO;AACtB,UAAM,aAAa,KAAK,IAAI;AAC5B,UAAM,cAAc,KAAK,IAAI;AAC7B,UAAM,YAAY;AAClB,SAAK,aAAa,YAAY,OAAO,KAAK,KAAK,KAAK,EAAE;AACtD,SAAK,aAAa,aAAa,OAAO,KAAK,IAAI,WAAW,EAAE;AAAA,EAChE;AAAA,EACA,MAAM;AACV,CAAC;AAEE,IAAM,iBAAiB,CAAC,SAA4B,CAAC,MACxD,qBAAqB;AAAA,EACjB;AAAA,EACA,KAAK,CAAC,MAAM,OAAO;AACf,UAAM,aAAa,KAAK,IAAI;AAC5B,UAAM,cAAc,KAAK,IAAI;AAC7B,UAAM,OAAO,KAAK,aAAa,YAAY,EAAE;AAC7C,UAAM,QAAQ,KAAK,aAAa,aAAa,EAAE;AAC/C,YAAQ,QAAQ,OAAO;AAAA,EAC3B;AAAA,EACA,MAAM;AAAA,EACN,MAAM;AACV,CAAC;AAEE,IAAM,eAAe,CAAC,SAA4B,CAAC,MACtD,aAAa,eAAe,MAAM,GAAG,eAAe,MAAM,CAAC;;;AC9BxD,IAAM,gBAAgB,CAAC,SAA4B,CAAC,MACvD,qBAAqB;AAAA,EACjB;AAAA,EACA,MAAM;AAAA,EACN,OAAO,CAAC,GAAG,OAAO,QAAQ,CAAC;AAAA,EAC3B,KAAK,CAAC,MAAM,OAAO,OAAO,KAAK,UAAU,GAAG,OAAO,EAAE;AAAA,EACrD,MAAM;AACV,CAAC;AAEE,IAAM,gBAAgB,CAAC,SAA4B,CAAC,MACvD,qBAAqB;AAAA,EACjB;AAAA,EACA,KAAK,CAAC,MAAM,OAAO,KAAK,UAAU,GAAG,EAAE;AAAA,EACvC,MAAM;AAAA,EACN,MAAM;AACV,CAAC;AAEE,IAAM,cAAc,CAAC,SAA4B,CAAC,MACrD,aAAa,cAAc,MAAM,GAAG,cAAc,MAAM,CAAC;;;AClBtD,IAAM,gBAAgB,CAAC,SAA4B,CAAC,MACvD,qBAAqB;AAAA,EACjB;AAAA,EACA,MAAM;AAAA,EACN,OAAO,CAAC,GAAG,OAAO,YAAY,CAAC;AAAA,EAC/B,KAAK,CAAC,MAAM,OAAO,OAAO,KAAK,UAAU,GAAG,OAAO,EAAE;AAAA,EACrD,MAAM;AACV,CAAC;AAEE,IAAM,gBAAgB,CAAC,SAA4B,CAAC,MACvD,qBAAqB;AAAA,EACjB;AAAA,EACA,KAAK,CAAC,MAAM,OAAO,KAAK,UAAU,GAAG,EAAE;AAAA,EACvC,MAAM;AAAA,EACN,MAAM;AACV,CAAC;AAEE,IAAM,cAAc,CAAC,SAA4B,CAAC,MACrD,aAAa,cAAc,MAAM,GAAG,cAAc,MAAM,CAAC;;;AClBtD,IAAM,gBAAgB,CAAC,SAA4B,CAAC,MACvD,qBAAqB;AAAA,EACjB;AAAA,EACA,MAAM;AAAA,EACN,OAAO,CAAC,GAAG,OAAO,oBAAoB,CAAC;AAAA,EACvC,KAAK,CAAC,MAAM,OAAO,OAAO,KAAK,aAAa,GAAG,OAAO,KAAK,GAAG,EAAE;AAAA,EAChE,MAAM;AACV,CAAC;AAEE,IAAM,gBAAgB,CAAC,SAA4B,CAAC,MACvD,qBAAqB;AAAA,EACjB;AAAA,EACA,KAAK,CAAC,MAAM,OAAO,KAAK,aAAa,GAAG,EAAE;AAAA,EAC1C,MAAM;AAAA,EACN,MAAM;AACV,CAAC;AAEE,IAAM,cAAc,CAAC,SAA4B,CAAC,MACrD,aAAa,cAAc,MAAM,GAAG,cAAc,MAAM,CAAC;;;ACnBtD,IAAM,eAAe,MACxB,qBAAqB;AAAA,EACjB,MAAM;AAAA,EACN,OAAO,CAAC,GAAG,OAAO,MAAM,CAAC;AAAA,EACzB,KAAK,CAAC,MAAM,UAAU,KAAK,SAAS,GAAG,KAAK;AAAA,EAC5C,MAAM;AACV,CAAC;AAEE,IAAM,eAAe,MACxB,qBAAqB;AAAA,EACjB,KAAK,UAAQ,KAAK,SAAS,CAAC;AAAA,EAC5B,MAAM;AAAA,EACN,MAAM;AACV,CAAC;AAEE,IAAM,aAAa,MAAyC,aAAa,aAAa,GAAG,aAAa,CAAC","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 { Codec, Decoder, Encoder, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } 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 fixed-size encoder for numbers and bigints. */\nexport type FixedSizeNumberEncoder<TSize extends number = number> =\n | FixedSizeEncoder<number, TSize>\n | FixedSizeEncoder<number | bigint, TSize>;\n\n/** Defines a decoder for numbers and bigints. */\nexport type NumberDecoder = Decoder<number> | Decoder<bigint>;\n\n/** Defines a fixed-size decoder for numbers and bigints. */\nexport type FixedSizeNumberDecoder<TSize extends number = number> =\n | FixedSizeDecoder<number, TSize>\n | FixedSizeDecoder<bigint, TSize>;\n\n/** Defines a codec for numbers and bigints. */\nexport type NumberCodec = Codec<number> | Codec<number | bigint, bigint>;\n\n/** Defines a fixed-size codec for numbers and bigints. */\nexport type FixedSizeNumberCodec<TSize extends number = number> =\n | FixedSizeCodec<number, number, TSize>\n | FixedSizeCodec<number | bigint, bigint, TSize>;\n\n/** Defines the config for number codecs that use more than one byte. */\nexport type NumberCodecConfig = {\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","// src/assertions.ts\nfunction assertByteArrayIsNotEmptyForCodec(codecDescription, bytes, offset = 0) {\n if (bytes.length - offset <= 0) {\n throw new Error(`Codec [${codecDescription}] cannot decode empty byte arrays.`);\n }\n}\nfunction assertByteArrayHasEnoughBytesForCodec(codecDescription, expected, bytes, offset = 0) {\n const bytesLength = bytes.length - offset;\n if (bytesLength < expected) {\n throw new Error(`Codec [${codecDescription}] expected ${expected} bytes, got ${bytesLength}.`);\n }\n}\n\n// src/bytes.ts\nvar mergeBytes = (byteArrays) => {\n const nonEmptyByteArrays = byteArrays.filter((arr) => arr.length);\n if (nonEmptyByteArrays.length === 0) {\n return byteArrays.length ? byteArrays[0] : new Uint8Array();\n }\n if (nonEmptyByteArrays.length === 1) {\n return nonEmptyByteArrays[0];\n }\n const totalLength = nonEmptyByteArrays.reduce((total, arr) => total + arr.length, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n nonEmptyByteArrays.forEach((arr) => {\n result.set(arr, offset);\n offset += arr.length;\n });\n return result;\n};\nvar padBytes = (bytes, length) => {\n if (bytes.length >= length)\n return bytes;\n const paddedBytes = new Uint8Array(length).fill(0);\n paddedBytes.set(bytes);\n return paddedBytes;\n};\nvar fixBytes = (bytes, length) => padBytes(bytes.length <= length ? bytes : bytes.slice(0, length), length);\n\n// src/codec.ts\nfunction getEncodedSize(value, encoder) {\n return \"fixedSize\" in encoder ? encoder.fixedSize : encoder.getSizeFromValue(value);\n}\nfunction createEncoder(encoder) {\n return Object.freeze({\n ...encoder,\n encode: (value) => {\n const bytes = new Uint8Array(getEncodedSize(value, encoder));\n encoder.write(value, bytes, 0);\n return bytes;\n }\n });\n}\nfunction createDecoder(decoder) {\n return Object.freeze({\n ...decoder,\n decode: (bytes, offset = 0) => decoder.read(bytes, offset)[0]\n });\n}\nfunction createCodec(codec) {\n return Object.freeze({\n ...codec,\n decode: (bytes, offset = 0) => codec.read(bytes, offset)[0],\n encode: (value) => {\n const bytes = new Uint8Array(getEncodedSize(value, codec));\n codec.write(value, bytes, 0);\n return bytes;\n }\n });\n}\nfunction isFixedSize(codec) {\n return \"fixedSize\" in codec && typeof codec.fixedSize === \"number\";\n}\nfunction assertIsFixedSize(codec, message) {\n if (!isFixedSize(codec)) {\n throw new Error(message ?? \"Expected a fixed-size codec, got a variable-size one.\");\n }\n}\nfunction isVariableSize(codec) {\n return !isFixedSize(codec);\n}\nfunction assertIsVariableSize(codec, message) {\n if (!isVariableSize(codec)) {\n throw new Error(message ?? \"Expected a variable-size codec, got a fixed-size one.\");\n }\n}\n\n// src/combine-codec.ts\nfunction combineCodec(encoder, decoder) {\n if (isFixedSize(encoder) !== isFixedSize(decoder)) {\n throw new Error(`Encoder and decoder must either both be fixed-size or variable-size.`);\n }\n if (isFixedSize(encoder) && isFixedSize(decoder) && encoder.fixedSize !== decoder.fixedSize) {\n throw new Error(\n `Encoder and decoder must have the same fixed size, got [${encoder.fixedSize}] and [${decoder.fixedSize}].`\n );\n }\n if (!isFixedSize(encoder) && !isFixedSize(decoder) && encoder.maxSize !== decoder.maxSize) {\n throw new Error(\n `Encoder and decoder must have the same max size, got [${encoder.maxSize}] and [${decoder.maxSize}].`\n );\n }\n return {\n ...decoder,\n ...encoder,\n decode: decoder.decode,\n encode: encoder.encode,\n read: decoder.read,\n write: encoder.write\n };\n}\n\n// src/fix-codec.ts\nfunction fixEncoder(encoder, fixedBytes) {\n return createEncoder({\n fixedSize: fixedBytes,\n write: (value, bytes, offset) => {\n const variableByteArray = encoder.encode(value);\n const fixedByteArray = variableByteArray.length > fixedBytes ? variableByteArray.slice(0, fixedBytes) : variableByteArray;\n bytes.set(fixedByteArray, offset);\n return offset + fixedBytes;\n }\n });\n}\nfunction fixDecoder(decoder, fixedBytes) {\n return createDecoder({\n fixedSize: fixedBytes,\n read: (bytes, offset) => {\n assertByteArrayHasEnoughBytesForCodec(\"fixCodec\", fixedBytes, bytes, offset);\n if (offset > 0 || bytes.length > fixedBytes) {\n bytes = bytes.slice(offset, offset + fixedBytes);\n }\n if (isFixedSize(decoder)) {\n bytes = fixBytes(bytes, decoder.fixedSize);\n }\n const [value] = decoder.read(bytes, 0);\n return [value, offset + fixedBytes];\n }\n });\n}\nfunction fixCodec(codec, fixedBytes) {\n return combineCodec(fixEncoder(codec, fixedBytes), fixDecoder(codec, fixedBytes));\n}\n\n// src/map-codec.ts\nfunction mapEncoder(encoder, unmap) {\n return createEncoder({\n ...isVariableSize(encoder) ? { ...encoder, getSizeFromValue: (value) => encoder.getSizeFromValue(unmap(value)) } : encoder,\n write: (value, bytes, offset) => encoder.write(unmap(value), bytes, offset)\n });\n}\nfunction mapDecoder(decoder, map) {\n return createDecoder({\n ...decoder,\n read: (bytes, offset) => {\n const [value, newOffset] = decoder.read(bytes, offset);\n return [map(value, bytes, offset), newOffset];\n }\n });\n}\nfunction mapCodec(codec, unmap, map) {\n return createCodec({\n ...mapEncoder(codec, unmap),\n read: map ? mapDecoder(codec, map).read : codec.read\n });\n}\n\n// src/reverse-codec.ts\nfunction reverseEncoder(encoder) {\n assertIsFixedSize(encoder, \"Cannot reverse a codec of variable size.\");\n return createEncoder({\n ...encoder,\n write: (value, bytes, offset) => {\n const newOffset = encoder.write(value, bytes, offset);\n const slice = bytes.slice(offset, offset + encoder.fixedSize).reverse();\n bytes.set(slice, offset);\n return newOffset;\n }\n });\n}\nfunction reverseDecoder(decoder) {\n assertIsFixedSize(decoder, \"Cannot reverse a codec of variable size.\");\n return createDecoder({\n ...decoder,\n read: (bytes, offset) => {\n const reverseEnd = offset + decoder.fixedSize;\n if (offset === 0 && bytes.length === reverseEnd) {\n return decoder.read(bytes.reverse(), offset);\n }\n const reversedBytes = bytes.slice();\n reversedBytes.set(bytes.slice(offset, reverseEnd).reverse(), offset);\n return decoder.read(reversedBytes, offset);\n }\n });\n}\nfunction reverseCodec(codec) {\n return combineCodec(reverseEncoder(codec), reverseDecoder(codec));\n}\n\nexport { assertByteArrayHasEnoughBytesForCodec, assertByteArrayIsNotEmptyForCodec, assertIsFixedSize, assertIsVariableSize, combineCodec, createCodec, createDecoder, createEncoder, fixBytes, fixCodec, fixDecoder, fixEncoder, getEncodedSize, isFixedSize, isVariableSize, mapCodec, mapDecoder, mapEncoder, mergeBytes, padBytes, reverseCodec, reverseDecoder, reverseEncoder };\n","import {\n assertByteArrayHasEnoughBytesForCodec,\n assertByteArrayIsNotEmptyForCodec,\n createDecoder,\n createEncoder,\n FixedSizeDecoder,\n FixedSizeEncoder,\n Offset,\n} from '@solana/codecs-core';\n\nimport { assertNumberIsBetweenForCodec } from './assertions';\nimport { Endian, NumberCodecConfig } from './common';\n\ntype NumberFactorySharedInput<TSize extends number> = {\n name: string;\n size: TSize;\n config?: NumberCodecConfig;\n};\n\ntype NumberFactoryEncoderInput<TFrom, TSize extends number> = NumberFactorySharedInput<TSize> & {\n range?: [number | bigint, number | bigint];\n set: (view: DataView, value: TFrom, littleEndian?: boolean) => void;\n};\n\ntype NumberFactoryDecoderInput<TTo, TSize extends number> = NumberFactorySharedInput<TSize> & {\n get: (view: DataView, littleEndian?: boolean) => TTo;\n};\n\nfunction isLittleEndian(config?: NumberCodecConfig): boolean {\n return config?.endian === Endian.BIG ? false : true;\n}\n\nexport function numberEncoderFactory<TFrom extends number | bigint, TSize extends number>(\n input: NumberFactoryEncoderInput<TFrom, TSize>,\n): FixedSizeEncoder<TFrom, TSize> {\n return createEncoder({\n fixedSize: input.size,\n write(value: TFrom, bytes: Uint8Array, offset: Offset): Offset {\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, isLittleEndian(input.config));\n bytes.set(new Uint8Array(arrayBuffer), offset);\n return offset + input.size;\n },\n });\n}\n\nexport function numberDecoderFactory<TTo extends number | bigint, TSize extends number>(\n input: NumberFactoryDecoderInput<TTo, TSize>,\n): FixedSizeDecoder<TTo, TSize> {\n return createDecoder({\n fixedSize: input.size,\n read(bytes, offset = 0): [TTo, number] {\n assertByteArrayIsNotEmptyForCodec(input.name, bytes, offset);\n assertByteArrayHasEnoughBytesForCodec(input.name, input.size, bytes, offset);\n const view = new DataView(toArrayBuffer(bytes, offset, input.size));\n return [input.get(view, isLittleEndian(input.config)), offset + input.size];\n },\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 { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getF32Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<number, 4> =>\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 = {}): FixedSizeDecoder<number, 4> =>\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 = {}): FixedSizeCodec<number, number, 4> =>\n combineCodec(getF32Encoder(config), getF32Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getF64Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<number, 8> =>\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 = {}): FixedSizeDecoder<number, 8> =>\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 = {}): FixedSizeCodec<number, number, 8> =>\n combineCodec(getF64Encoder(config), getF64Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI128Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<number | bigint, 16> =>\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 = {}): FixedSizeDecoder<bigint, 16> =>\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 = {}): FixedSizeCodec<number | bigint, bigint, 16> =>\n combineCodec(getI128Encoder(config), getI128Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI16Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<number, 2> =>\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 = {}): FixedSizeDecoder<number, 2> =>\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 = {}): FixedSizeCodec<number, number, 2> =>\n combineCodec(getI16Encoder(config), getI16Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI32Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<number, 4> =>\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 = {}): FixedSizeDecoder<number, 4> =>\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 = {}): FixedSizeCodec<number, number, 4> =>\n combineCodec(getI32Encoder(config), getI32Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI64Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<number | bigint, 8> =>\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 = {}): FixedSizeDecoder<bigint, 8> =>\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 = {}): FixedSizeCodec<number | bigint, bigint, 8> =>\n combineCodec(getI64Encoder(config), getI64Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getI8Encoder = (): FixedSizeEncoder<number, 1> =>\n numberEncoderFactory({\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 = (): FixedSizeDecoder<number, 1> =>\n numberDecoderFactory({\n get: view => view.getInt8(0),\n name: 'i8',\n size: 1,\n });\n\nexport const getI8Codec = (): FixedSizeCodec<number, number, 1> => combineCodec(getI8Encoder(), getI8Decoder());\n","import {\n combineCodec,\n createDecoder,\n createEncoder,\n Offset,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { assertNumberIsBetweenForCodec } from './assertions';\n\n/**\n * Encodes short u16 numbers.\n * @see {@link getShortU16Codec} for a more detailed description.\n */\nexport const getShortU16Encoder = (): VariableSizeEncoder<number> =>\n createEncoder({\n getSizeFromValue: (value: number): number => {\n if (value <= 0b01111111) return 1;\n if (value <= 0b0011111111111111) return 2;\n return 3;\n },\n maxSize: 3,\n write: (value: number, bytes: Uint8Array, offset: Offset): Offset => {\n assertNumberIsBetweenForCodec('shortU16', 0, 65535, value);\n const shortU16Bytes = [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 shortU16Bytes[ii] = nextSevenBits;\n if (ii > 0) {\n // Set the continuation bit of the previous slice.\n shortU16Bytes[ii - 1] |= 0b10000000;\n }\n }\n bytes.set(shortU16Bytes, offset);\n return offset + shortU16Bytes.length;\n },\n });\n\n/**\n * Decodes short u16 numbers.\n * @see {@link getShortU16Codec} for a more detailed description.\n */\nexport const getShortU16Decoder = (): VariableSizeDecoder<number> =>\n createDecoder({\n maxSize: 3,\n read: (bytes: Uint8Array, offset): [number, Offset] => {\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 });\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 = (): VariableSizeCodec<number> =>\n combineCodec(getShortU16Encoder(), getShortU16Decoder());\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU128Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<number | bigint, 16> =>\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 = {}): FixedSizeDecoder<bigint, 16> =>\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 = {}): FixedSizeCodec<number | bigint, bigint, 16> =>\n combineCodec(getU128Encoder(config), getU128Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU16Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<number, 2> =>\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 = {}): FixedSizeDecoder<number, 2> =>\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 = {}): FixedSizeCodec<number, number, 2> =>\n combineCodec(getU16Encoder(config), getU16Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU32Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<number, 4> =>\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 = {}): FixedSizeDecoder<number, 4> =>\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 = {}): FixedSizeCodec<number, number, 4> =>\n combineCodec(getU32Encoder(config), getU32Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU64Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<number | bigint, 8> =>\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 = {}): FixedSizeDecoder<bigint, 8> =>\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 = {}): FixedSizeCodec<number | bigint, bigint, 8> =>\n combineCodec(getU64Encoder(config), getU64Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\nexport const getU8Encoder = (): FixedSizeEncoder<number, 1> =>\n numberEncoderFactory({\n name: 'u8',\n range: [0, Number('0xff')],\n set: (view, value) => view.setUint8(0, value),\n size: 1,\n });\n\nexport const getU8Decoder = (): FixedSizeDecoder<number, 1> =>\n numberDecoderFactory({\n get: view => view.getUint8(0),\n name: 'u8',\n size: 1,\n });\n\nexport const getU8Codec = (): FixedSizeCodec<number, number, 1> => combineCodec(getU8Encoder(), getU8Decoder());\n"]}
@@ -1,51 +0,0 @@
1
- this.globalThis = this.globalThis || {};
2
- this.globalThis.solanaWeb3 = (function (exports) {
3
- 'use strict';
4
-
5
- function x(e,r,o,t){if(t<r||t>o)throw new Error(`Codec [${e}] expected number to be in the range [${r}, ${o}], got ${t}.`)}var S=(o=>(o[o.LITTLE=0]="LITTLE",o[o.BIG=1]="BIG",o))(S||{});function s(e,r,o=0){if(r.length-o<=0)throw new Error(`Codec [${e}] cannot decode empty byte arrays.`)}function z(e,r,o,t=0){let n=o.length-t;if(n<r)throw new Error(`Codec [${e}] expected ${r} bytes, got ${n}.`)}function F(e,r){return "fixedSize"in r?r.fixedSize:r.getSizeFromValue(e)}function a(e){return Object.freeze({...e,encode:r=>{let o=new Uint8Array(F(r,e));return e.write(r,o,0),o}})}function g(e){return Object.freeze({...e,decode:(r,o=0)=>e.read(r,o)[0]})}function b(e){return "fixedSize"in e&&typeof e.fixedSize=="number"}function i(e,r){if(b(e)!==b(r))throw new Error("Encoder and decoder must either both be fixed-size or variable-size.");if(b(e)&&b(r)&&e.fixedSize!==r.fixedSize)throw new Error(`Encoder and decoder must have the same fixed size, got [${e.fixedSize}] and [${r.fixedSize}].`);if(!b(e)&&!b(r)&&e.maxSize!==r.maxSize)throw new Error(`Encoder and decoder must have the same max size, got [${e.maxSize}] and [${r.maxSize}].`);return {...r,...e,decode:r.decode,encode:e.encode,read:r.read,write:e.write}}function C(e){return (e==null?void 0:e.endian)!==1}function c(e){return a({fixedSize:e.size,write(r,o,t){e.range&&x(e.name,e.range[0],e.range[1],r);let n=new ArrayBuffer(e.size);return e.set(new DataView(n),r,C(e.config)),o.set(new Uint8Array(n),t),t+e.size}})}function d(e){return g({fixedSize:e.size,read(r,o=0){s(e.name,r,o),z(e.name,e.size,r,o);let t=new DataView(p(r,o,e.size));return [e.get(t,C(e.config)),o+e.size]}})}function p(e,r,o){let t=e.byteOffset+(r!=null?r:0),n=o!=null?o:e.byteLength;return e.buffer.slice(t,t+n)}var E=(e={})=>c({config:e,name:"f32",set:(r,o,t)=>r.setFloat32(0,o,t),size:4}),D=(e={})=>d({config:e,get:(r,o)=>r.getFloat32(0,o),name:"f32",size:4}),xe=(e={})=>i(E(e),D(e));var N=(e={})=>c({config:e,name:"f64",set:(r,o,t)=>r.setFloat64(0,o,t),size:8}),y=(e={})=>d({config:e,get:(r,o)=>r.getFloat64(0,o),name:"f64",size:8}),pe=(e={})=>i(N(e),y(e));var I=(e={})=>c({config:e,name:"i128",range:[-BigInt("0x7fffffffffffffffffffffffffffffff")-1n,BigInt("0x7fffffffffffffffffffffffffffffff")],set:(r,o,t)=>{let n=t?8:0,m=t?0:8,u=0xffffffffffffffffn;r.setBigInt64(n,BigInt(o)>>64n,t),r.setBigUint64(m,BigInt(o)&u,t);},size:16}),l=(e={})=>d({config:e,get:(r,o)=>{let t=o?8:0,n=o?0:8,m=r.getBigInt64(t,o),u=r.getBigUint64(n,o);return (m<<64n)+u},name:"i128",size:16}),we=(e={})=>i(I(e),l(e));var h=(e={})=>c({config:e,name:"i16",range:[-+"0x7fff"-1,+"0x7fff"],set:(r,o,t)=>r.setInt16(0,o,t),size:2}),w=(e={})=>d({config:e,get:(r,o)=>r.getInt16(0,o),name:"i16",size:2}),$e=(e={})=>i(h(e),w(e));var U=(e={})=>c({config:e,name:"i32",range:[-+"0x7fffffff"-1,+"0x7fffffff"],set:(r,o,t)=>r.setInt32(0,o,t),size:4}),B=(e={})=>d({config:e,get:(r,o)=>r.getInt32(0,o),name:"i32",size:4}),qe=(e={})=>i(U(e),B(e));var T=(e={})=>c({config:e,name:"i64",range:[-BigInt("0x7fffffffffffffff")-1n,BigInt("0x7fffffffffffffff")],set:(r,o,t)=>r.setBigInt64(0,BigInt(o),t),size:8}),O=(e={})=>d({config:e,get:(r,o)=>r.getBigInt64(0,o),name:"i64",size:8}),Ye=(e={})=>i(T(e),O(e));var v=()=>c({name:"i8",range:[-+"0x7f"-1,+"0x7f"],set:(e,r)=>e.setInt8(0,r),size:1}),V=()=>d({get:e=>e.getInt8(0),name:"i8",size:1}),cr=()=>i(v(),V());var A=()=>a({getSizeFromValue:e=>e<=127?1:e<=16383?2:3,maxSize:3,write:(e,r,o)=>{x("shortU16",0,65535,e);let t=[0];for(let n=0;;n+=1){let m=e>>n*7;if(m===0)break;let u=127&m;t[n]=u,n>0&&(t[n-1]|=128);}return r.set(t,o),o+t.length}}),$=()=>g({maxSize:3,read:(e,r)=>{let o=0,t=0;for(;++t;){let n=t-1,m=e[r+n],u=127&m;if(o|=u<<n*7,!(m&128))break}return [o,r+t]}}),sr=()=>i(A(),$());var L=(e={})=>c({config:e,name:"u128",range:[0,BigInt("0xffffffffffffffffffffffffffffffff")],set:(r,o,t)=>{let n=t?8:0,m=t?0:8,u=0xffffffffffffffffn;r.setBigUint64(n,BigInt(o)>>64n,t),r.setBigUint64(m,BigInt(o)&u,t);},size:16}),_=(e={})=>d({config:e,get:(r,o)=>{let t=o?8:0,n=o?0:8,m=r.getBigUint64(t,o),u=r.getBigUint64(n,o);return (m<<64n)+u},name:"u128",size:16}),Nr=(e={})=>i(L(e),_(e));var k=(e={})=>c({config:e,name:"u16",range:[0,+"0xffff"],set:(r,o,t)=>r.setUint16(0,o,t),size:2}),j=(e={})=>d({config:e,get:(r,o)=>r.getUint16(0,o),name:"u16",size:2}),Tr=(e={})=>i(k(e),j(e));var G=(e={})=>c({config:e,name:"u32",range:[0,+"0xffffffff"],set:(r,o,t)=>r.setUint32(0,o,t),size:4}),H=(e={})=>d({config:e,get:(r,o)=>r.getUint32(0,o),name:"u32",size:4}),kr=(e={})=>i(G(e),H(e));var M=(e={})=>c({config:e,name:"u64",range:[0,BigInt("0xffffffffffffffff")],set:(r,o,t)=>r.setBigUint64(0,BigInt(o),t),size:8}),q=(e={})=>d({config:e,get:(r,o)=>r.getBigUint64(0,o),name:"u64",size:8}),Pr=(e={})=>i(M(e),q(e));var J=()=>c({name:"u8",range:[0,+"0xff"],set:(e,r)=>e.setUint8(0,r),size:1}),K=()=>d({get:e=>e.getUint8(0),name:"u8",size:1}),ro=()=>i(J(),K());
6
-
7
- exports.Endian = S;
8
- exports.assertNumberIsBetweenForCodec = x;
9
- exports.getF32Codec = xe;
10
- exports.getF32Decoder = D;
11
- exports.getF32Encoder = E;
12
- exports.getF64Codec = pe;
13
- exports.getF64Decoder = y;
14
- exports.getF64Encoder = N;
15
- exports.getI128Codec = we;
16
- exports.getI128Decoder = l;
17
- exports.getI128Encoder = I;
18
- exports.getI16Codec = $e;
19
- exports.getI16Decoder = w;
20
- exports.getI16Encoder = h;
21
- exports.getI32Codec = qe;
22
- exports.getI32Decoder = B;
23
- exports.getI32Encoder = U;
24
- exports.getI64Codec = Ye;
25
- exports.getI64Decoder = O;
26
- exports.getI64Encoder = T;
27
- exports.getI8Codec = cr;
28
- exports.getI8Decoder = V;
29
- exports.getI8Encoder = v;
30
- exports.getShortU16Codec = sr;
31
- exports.getShortU16Decoder = $;
32
- exports.getShortU16Encoder = A;
33
- exports.getU128Codec = Nr;
34
- exports.getU128Decoder = _;
35
- exports.getU128Encoder = L;
36
- exports.getU16Codec = Tr;
37
- exports.getU16Decoder = j;
38
- exports.getU16Encoder = k;
39
- exports.getU32Codec = kr;
40
- exports.getU32Decoder = H;
41
- exports.getU32Encoder = G;
42
- exports.getU64Codec = Pr;
43
- exports.getU64Decoder = q;
44
- exports.getU64Encoder = M;
45
- exports.getU8Codec = ro;
46
- exports.getU8Decoder = K;
47
- exports.getU8Encoder = J;
48
-
49
- return exports;
50
-
51
- })({});