@solana/codecs-data-structures 8.4.0 → 8.5.0-canary-20261006083550

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.
@@ -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;AAUjH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACrC,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,WAAW,GAAG,aAAa,GAAG,aAAa,IACpF,0BAA0B,GAC1B,OAAO,GACP,MAAM,GACN,WAAW,CAAC;AAElB;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,WAAW,GAAG,aAAa,GAAG,aAAa,IAAI;IACxF;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,eAAe,CAAC,KAAK,EACjC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EACpB,MAAM,EAAE,gBAAgB,CAAC,aAAa,CAAC,GAAG;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,GACtD,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AAChC,wBAAgB,eAAe,CAAC,KAAK,EACjC,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAC7B,MAAM,EAAE,gBAAgB,CAAC,aAAa,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAC3D,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7B,wBAAgB,eAAe,CAAC,KAAK,EACjC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EACpB,MAAM,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,GACzC,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC;AA4ChC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAC/B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,EAClB,MAAM,EAAE,gBAAgB,CAAC,aAAa,CAAC,GAAG;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,GACtD,gBAAgB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9B,wBAAgB,eAAe,CAAC,GAAG,EAC/B,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAC3B,MAAM,EAAE,gBAAgB,CAAC,aAAa,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAC3D,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3B,wBAAgB,eAAe,CAAC,GAAG,EAC/B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,EAClB,MAAM,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,GACzC,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC;AA+D9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,SAAS,KAAK,GAAG,KAAK,EAC1D,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EACvB,MAAM,EAAE,gBAAgB,CAAC,WAAW,CAAC,GAAG;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,GACpD,cAAc,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AACrC,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,SAAS,KAAK,GAAG,KAAK,EAC1D,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,EAChC,MAAM,EAAE,gBAAgB,CAAC,WAAW,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GACzD,cAAc,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;AAClC,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,SAAS,KAAK,GAAG,KAAK,EAC1D,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EACvB,MAAM,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,GACvC,iBAAiB,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC"}
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;AAWjH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACrC,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,WAAW,GAAG,aAAa,GAAG,aAAa,IACpF,0BAA0B,GAC1B,OAAO,GACP,MAAM,GACN,WAAW,CAAC;AAElB;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,WAAW,GAAG,aAAa,GAAG,aAAa,IAAI;IACxF;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,eAAe,CAAC,KAAK,EACjC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EACpB,MAAM,EAAE,gBAAgB,CAAC,aAAa,CAAC,GAAG;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,GACtD,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AAChC,wBAAgB,eAAe,CAAC,KAAK,EACjC,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAC7B,MAAM,EAAE,gBAAgB,CAAC,aAAa,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAC3D,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7B,wBAAgB,eAAe,CAAC,KAAK,EACjC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EACpB,MAAM,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,GACzC,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC;AA8ChC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAC/B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,EAClB,MAAM,EAAE,gBAAgB,CAAC,aAAa,CAAC,GAAG;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,GACtD,gBAAgB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9B,wBAAgB,eAAe,CAAC,GAAG,EAC/B,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAC3B,MAAM,EAAE,gBAAgB,CAAC,aAAa,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAC3D,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3B,wBAAgB,eAAe,CAAC,GAAG,EAC/B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,EAClB,MAAM,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,GACzC,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC;AAgE9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,SAAS,KAAK,GAAG,KAAK,EAC1D,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EACvB,MAAM,EAAE,gBAAgB,CAAC,WAAW,CAAC,GAAG;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,GACpD,cAAc,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AACrC,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,SAAS,KAAK,GAAG,KAAK,EAC1D,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,EAChC,MAAM,EAAE,gBAAgB,CAAC,WAAW,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GACzD,cAAc,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;AAClC,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,SAAS,KAAK,GAAG,KAAK,EAC1D,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EACvB,MAAM,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,GACvC,iBAAiB,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solana/codecs-data-structures",
3
- "version": "8.4.0",
3
+ "version": "8.5.0-canary-20261006083550",
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.4.0",
60
- "@solana/errors": "8.4.0",
61
- "@solana/codecs-numbers": "8.4.0"
59
+ "@solana/codecs-core": "8.5.0-canary-20261006083550",
60
+ "@solana/codecs-numbers": "8.5.0-canary-20261006083550",
61
+ "@solana/errors": "8.5.0-canary-20261006083550"
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 fixedSize = computeArrayLikeCodecSize(size, getFixedSize(item));
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
  }