@solana/codecs-data-structures 8.4.0 → 8.5.0-canary-20261006090716
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 +2 -0
- package/dist/index.browser.cjs +13 -1
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.mjs +14 -2
- package/dist/index.browser.mjs.map +1 -1
- package/dist/index.native.mjs +14 -2
- package/dist/index.native.mjs.map +1 -1
- package/dist/index.node.cjs +13 -1
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.mjs +14 -2
- package/dist/index.node.mjs.map +1 -1
- package/dist/types/array.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/array.ts +23 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/array.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,EAKL,OAAO,EACP,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAEhB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAgC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/array.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solana/codecs-data-structures",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.5.0-canary-20261006090716",
|
|
4
4
|
"description": "Codecs for various data structures",
|
|
5
5
|
"homepage": "https://www.solanakit.com/api#solanacodecs-data-structures",
|
|
6
6
|
"exports": {
|
|
@@ -56,9 +56,9 @@
|
|
|
56
56
|
"maintained node versions"
|
|
57
57
|
],
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@solana/codecs-core": "8.
|
|
60
|
-
"@solana/
|
|
61
|
-
"@solana/
|
|
59
|
+
"@solana/codecs-core": "8.5.0-canary-20261006090716",
|
|
60
|
+
"@solana/codecs-numbers": "8.5.0-canary-20261006090716",
|
|
61
|
+
"@solana/errors": "8.5.0-canary-20261006090716"
|
|
62
62
|
},
|
|
63
63
|
"peerDependencies": {
|
|
64
64
|
"typescript": ">=5.4.0"
|
package/src/array.ts
CHANGED
|
@@ -19,6 +19,7 @@ import { getU32Decoder, getU32Encoder, NumberCodec, NumberDecoder, NumberEncoder
|
|
|
19
19
|
import {
|
|
20
20
|
SOLANA_ERROR__CODECS__SENTINEL_MISSING_AT_END_OF_BYTES,
|
|
21
21
|
SOLANA_ERROR__CODECS__SENTINEL_MUST_NOT_BE_EMPTY,
|
|
22
|
+
SOLANA_ERROR__CODECS__UNEXPECTED_ZERO_FIXED_SIZE_ITEM_FOR_ARRAY_LIKE_SIZE_STRATEGY,
|
|
22
23
|
SolanaError,
|
|
23
24
|
} from '@solana/errors';
|
|
24
25
|
|
|
@@ -193,7 +194,9 @@ export function getArrayEncoder<TFrom>(
|
|
|
193
194
|
): Encoder<TFrom[]> {
|
|
194
195
|
const size = config.size ?? getU32Encoder();
|
|
195
196
|
assertValidSize(size);
|
|
196
|
-
const
|
|
197
|
+
const itemSize = getFixedSize(item);
|
|
198
|
+
assertItemCodecSupportsSizeStrategy(config.description ?? 'array', size, itemSize);
|
|
199
|
+
const fixedSize = computeArrayLikeCodecSize(size, itemSize);
|
|
197
200
|
const maxSize = computeArrayLikeCodecSize(size, getMaxSize(item)) ?? undefined;
|
|
198
201
|
|
|
199
202
|
return createEncoder({
|
|
@@ -274,6 +277,7 @@ export function getArrayDecoder<TTo>(item: Decoder<TTo>, config: ArrayCodecConfi
|
|
|
274
277
|
const size = config.size ?? getU32Decoder();
|
|
275
278
|
assertValidSize(size);
|
|
276
279
|
const itemSize = getFixedSize(item);
|
|
280
|
+
assertItemCodecSupportsSizeStrategy(config.description ?? 'array', size, itemSize);
|
|
277
281
|
const fixedSize = computeArrayLikeCodecSize(size, itemSize);
|
|
278
282
|
const maxSize = computeArrayLikeCodecSize(size, getMaxSize(item)) ?? undefined;
|
|
279
283
|
|
|
@@ -473,6 +477,24 @@ function assertValidSize(size: number | object | 'remainder'): void {
|
|
|
473
477
|
}
|
|
474
478
|
}
|
|
475
479
|
|
|
480
|
+
/**
|
|
481
|
+
* Throws if a zero-byte item codec is used with a size strategy that relies on items consuming
|
|
482
|
+
* bytes to make progress, such as the sentinel and remainder strategies.
|
|
483
|
+
*/
|
|
484
|
+
function assertItemCodecSupportsSizeStrategy(
|
|
485
|
+
codecDescription: string,
|
|
486
|
+
size: number | object | 'remainder',
|
|
487
|
+
itemFixedSize: number | null,
|
|
488
|
+
): void {
|
|
489
|
+
if (itemFixedSize !== 0) return;
|
|
490
|
+
if (size === 'remainder' || isSentinelSize(size)) {
|
|
491
|
+
throw new SolanaError(SOLANA_ERROR__CODECS__UNEXPECTED_ZERO_FIXED_SIZE_ITEM_FOR_ARRAY_LIKE_SIZE_STRATEGY, {
|
|
492
|
+
codecDescription,
|
|
493
|
+
sizeStrategy: size === 'remainder' ? 'remainder' : 'sentinel',
|
|
494
|
+
});
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
|
|
476
498
|
function hexBytes(bytes: ReadonlyUint8Array): string {
|
|
477
499
|
return bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');
|
|
478
500
|
}
|