Skip to content

A abordagem ingênua para criar um ReadableStream a partir de um Buffer é usar o construtor ReadableStream e enfileirar todo o array como um único chunk. Para um buffer grande, isso pode ser indesejável, pois esta abordagem não faz "streaming" dos dados em chunks menores.

ts
const buf = Buffer.from("hello world");
const stream = new ReadableStream({
  start(controller) {
    controller.enqueue(buf);
    controller.close();
  },
});

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

ts
const buf = Buffer.from("hello world");
const blob = new Blob([buf]);
const stream = blob.stream();

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

ts
const buf = Buffer.from("hello world");
const blob = new Blob([buf]);

// 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