Kit
Functions

getTupleCodec

Call Signature

getTupleCodec<TItems>(items): FixedSizeCodec<DrainOuterGeneric<{ [I in string | number | symbol]: TItems[I<I>] extends Encoder<TFrom> ? TFrom : never }>, DrainOuterGeneric<{ [I in string | number | symbol]: TItems[I<I>] extends Decoder<TTo> ? TTo : never }> & DrainOuterGeneric<{ [I in string | number | symbol]: TItems[I<I>] extends Encoder<TFrom> ? TFrom : never }>>

Returns a codec for encoding and decoding tuples.

This codec serializes tuples by encoding and decoding each item sequentially.

Unlike the getArrayCodec codec, each item in the tuple has its own codec and, therefore, can be of a different type.

Type Parameters

Type ParameterDescription
TItems extends readonly FixedSizeCodec<any>[]An array of codecs, each corresponding to a tuple element.

Parameters

ParameterTypeDescription
itemsTItemsThe codecs for each item in the tuple.

Returns

FixedSizeCodec<DrainOuterGeneric<{ [I in string | number | symbol]: TItems[I<I>] extends Encoder<TFrom> ? TFrom : never }>, DrainOuterGeneric<{ [I in string | number | symbol]: TItems[I<I>] extends Decoder<TTo> ? TTo : never }> & DrainOuterGeneric<{ [I in string | number | symbol]: TItems[I<I>] extends Encoder<TFrom> ? TFrom : never }>>

A FixedSizeCodec or VariableSizeCodec for encoding and decoding tuples.

Example

Encoding and decoding a tuple with 2 items.

const codec = getTupleCodec([fixCodecSize(getUtf8Codec(), 5), getU8Codec()]);
 
const bytes = codec.encode(['Alice', 42]);
// 0x416c6963652a
//   |         └── Second item (42)
//   └── First item ("Alice")
 
const tuple = codec.decode(bytes);
// ['Alice', 42]

Remarks

Separate getTupleEncoder and getTupleDecoder functions are available.

const bytes = getTupleEncoder([fixCodecSize(getUtf8Encoder(), 5), getU8Encoder()])
  .encode(['Alice', 42]);
 
const tuple = getTupleDecoder([fixCodecSize(getUtf8Decoder(), 5), getU8Decoder()])
  .decode(bytes);

See

Call Signature

getTupleCodec<TItems>(items): VariableSizeCodec<DrainOuterGeneric<{ [I in string | number | symbol]: TItems[I<I>] extends Encoder<TFrom> ? TFrom : never }>, DrainOuterGeneric<{ [I in string | number | symbol]: TItems[I<I>] extends Decoder<TTo> ? TTo : never }> & DrainOuterGeneric<{ [I in string | number | symbol]: TItems[I<I>] extends Encoder<TFrom> ? TFrom : never }>>

Returns a codec for encoding and decoding tuples.

This codec serializes tuples by encoding and decoding each item sequentially.

Unlike the getArrayCodec codec, each item in the tuple has its own codec and, therefore, can be of a different type.

Type Parameters

Type ParameterDescription
TItems extends readonly Codec<any>[]An array of codecs, each corresponding to a tuple element.

Parameters

ParameterTypeDescription
itemsTItemsThe codecs for each item in the tuple.

Returns

VariableSizeCodec<DrainOuterGeneric<{ [I in string | number | symbol]: TItems[I<I>] extends Encoder<TFrom> ? TFrom : never }>, DrainOuterGeneric<{ [I in string | number | symbol]: TItems[I<I>] extends Decoder<TTo> ? TTo : never }> & DrainOuterGeneric<{ [I in string | number | symbol]: TItems[I<I>] extends Encoder<TFrom> ? TFrom : never }>>

A FixedSizeCodec or VariableSizeCodec for encoding and decoding tuples.

Example

Encoding and decoding a tuple with 2 items.

const codec = getTupleCodec([fixCodecSize(getUtf8Codec(), 5), getU8Codec()]);
 
const bytes = codec.encode(['Alice', 42]);
// 0x416c6963652a
//   |         └── Second item (42)
//   └── First item ("Alice")
 
const tuple = codec.decode(bytes);
// ['Alice', 42]

Remarks

Separate getTupleEncoder and getTupleDecoder functions are available.

const bytes = getTupleEncoder([fixCodecSize(getUtf8Encoder(), 5), getU8Encoder()])
  .encode(['Alice', 42]);
 
const tuple = getTupleDecoder([fixCodecSize(getUtf8Decoder(), 5), getU8Decoder()])
  .decode(bytes);

See

On this page