TransformStream
A interface TransformStream do Azion Runtime: o construtor, as propriedades readable e writable e um transform stream que converte chunks em bytes.
A interface TransformStream faz parte da Streams API do Azion Runtime. Ela é uma implementação concreta do conceito de transform stream de uma pipe chain: você a passa para o método pipeThrough() de um ReadableStream para converter um stream de dados de um formato para outro. Use-a para decodificar ou codificar frames de vídeo, descompactar dados ou converter um stream de XML para JSON. TransformStream é um objeto transferível. Para mais informações, consulte TransformStream na MDN Web Docs.
Construtor
O construtor TransformStream() cria e retorna um objeto transform stream:
O construtor aceita um objeto de transformação opcional e estratégias de enfileiramento opcionais para os streams dele. Sem um objeto de transformação, os dados passam pelo stream sem alteração.
O objeto de transformação carrega o algoritmo de transformação. O método transform(chunk, controller) dele recebe cada chunk escrito no stream, e controller.enqueue() passa um chunk para o lado readable. Um objeto de transformação também pode definir os métodos start() e flush(), como mostra a seção Exemplo.
Como estratégia de enfileiramento, o Azion Runtime define CountQueuingStrategy, mas não ByteLengthQueuingStrategy: uma referência a ByteLengthQueuingStrategy lança ReferenceError: ByteLengthQueuingStrategy is not defined.
Propriedades
Um transform stream tem dois lados. Juntos, eles formam o par que pipeThrough() aceita:
| Propriedade | Tipo | Descrição |
|---|---|---|
readable | ReadableStream | O lado readable do transform stream. Ele retorna os chunks transformados. |
writable | WritableStream | O lado writable do transform stream. Ele recebe os chunks a transformar. |
Exemplo
Este handler define AnyToU8Stream, um transform stream que repassa cada chunk que recebe como um Uint8Array. Ele canaliza uma string, um array de números e um Uint16Array pelo stream e depois retorna os bytes de cada chunk de saída:
A function retorna estes bytes para os três chunks de saída. A string 'hi' se torna os bytes codificados dela, o array de números se torna um Uint8Array com os mesmos valores e o Uint16Array sai como os dois bytes do buffer dele: