Skip to content

A abordagem ingênua para criar um ReadableStream a partir de um Uint8Array é usar o construtor ReadableStream e enfileirar todo o array como um único chunk. Para chunks maiores, isso pode ser indesejável, pois não está realmente fazendo "streaming" dos dados.

ts
const arr = new Uint8Array(64);
const stream = new ReadableStream({
  start(controller) {
    controller.enqueue(arr);
    controller.close();
  },
});

Para fazer stream dos dados em chunks menores, primeiro crie uma instância Blob a partir do Uint8Array. Depois use o método Blob.stream() para criar um ReadableStream que faz stream dos dados em chunks de um tamanho especificado.

ts
const arr = new Uint8Array(64);
const blob = new Blob([arr]);
const stream = blob.stream();

O tamanho do chunk pode ser definido passando um número para o método .stream().

ts
const arr = new Uint8Array(64);
const blob = new Blob([arr]);

// define tamanho de chunk de 1024 bytes
const stream = blob.stream(1024);

Veja Docs > API > Dados Binários para documentação completa sobre manipulação de dados binários com Bun.

Bun by www.bunjs.com.cn edit