Compresión y descompresión de datos usando zlib en Nodejs

¿Puede alguien explicarme cómo funciona la biblioteca zlib en Nodejs?

Soy bastante nuevo en Nodejs, y todavía no estoy seguro de cómo usar buffers y streams.

Mi escenario simple es una variable de cadena, y quiero comprimir o descomprimir (desinflar o inflar, gzip o gunzip, etc.) la cadena a otra cadena.

Es decir. (cómo esperaría que funcionara)

var zlib = require('zlib');
var str = "this is a test string to be zipped";
var zip = zlib.Deflate(str); // zip = [object Object]
var packed = zip.toString([encoding?]); // packed = "packedstringdata"
var unzipped = zlib.Inflate(packed); // unzipped = [object Object]
var newstr = unzipped.toString([again - encoding?]); // newstr = "this is a test string to be zipped";

Gracias por las ayudas

Respuestas a la pregunta(3)

Su respuesta a la pregunta