A streaming LZW encoder and decoder in JavaScript