function listChunk
listChunk(): Coder<ListChunk>

Creates a coder for LIST chunks.

Encodes and decodes LIST chunk structures with:

  • 4-byte chunk ID ("LIST")
  • 4-byte chunk size
  • 4-byte list type
  • Exactly chunkSize - 4 bytes of list data

A RIFF LIST chunk counts its list type towards chunkSize, so the payload that follows the list type is four bytes shorter than chunkSize.

Examples

Basic LIST chunk encoding and decoding

import { assertEquals } from "@std/assert";
import { listChunk } from "@binstruct/wav";

const listCoder = listChunk();
const testList = {
  chunkId: "LIST",
  chunkSize: 20,
  listType: "INFO",
  data: new Array(16).fill(0)
};

const buffer = new Uint8Array(100);
const bytesWritten = listCoder.encode(testList, buffer);
const [decoded, bytesRead] = listCoder.decode(buffer);

assertEquals(bytesRead, 28);
assertEquals(bytesWritten, 28); // 4 (chunkId) + 4 (chunkSize) + 4 (listType) + 16 (data)
assertEquals(decoded.chunkId, "LIST");
assertEquals(decoded.chunkSize, 20);
assertEquals(decoded.listType, "INFO");
assertEquals(decoded.data.length, 16); // chunkSize - 4 (listType)

Return Type

Coder<ListChunk>

A coder that can encode/decode ListChunk objects

Usage

import { listChunk } from ".";