
Security News
Browserslist-rs Gets Major Refactor, Cutting Binary Size by Over 1MB
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
Binary encoding for Javascript objects.
Transcode all types of JSON values to and from a binary format, including Buffer, Date, RegExp and more. Originally created to stream worker commands over pipes between processes.
:warning: Early release, handle with care :sunglasses:
Array and Object can hold any of the other types. Serialisation of Object reads enumerable properties, but ignores functions.
Next:
$ npm install buffo
Write a value to a Buffer, later decode the Buffer back to a value.
var buffo = require('buffo');
var buffer = buffo.encode(sourceValue);
var outputValue = buffo.parse(buffer);
Create encoder and decoder Transform streams and connect them over some binary pipe. Then write or pipe JavaScript objects and they magically reappear at the other end.
Keep in mind that due to the nature of node's object-streams you cannot send null
or undefined
as root value as they will terminate the Transform stream (they work fine nested in Arrays or Objects).
var buffo = require('buffo');
// sender
var encoding = buffo.encodeStream();
encoding.pipe(process.stdout);
encoding.write(myValue);
// receiver
var decoding = buffo.decodeStream();
process.stdin.pipe(decoding).on('data', function(data) {
// received a value
});
(note this stdin/stdout example is blocking on Linux, so from inter-process stream better use net or file-descriptor streams)
Performance fair but unclear, varies a lot per data type. Reliability unproven but hopeful.
If you need maximum speed and don't need the fancy types use good ol' line separated JSON.
Install development dependencies in your git checkout:
$ npm install
Build and run tests using grunt:
$ grunt test
See the Gruntfile.js
for additional commands.
They are welcome but please discuss in the issues before you commit to large changes. If you send a PR make sure you code is idiomatic and linted.
Copyright (c) 2014 Bart van der Schoor @ Bartvds
Licensed under the MIT license.
FAQs
Binary encoding for Javascript objects.
The npm package buffo receives a total of 5 weekly downloads. As such, buffo popularity was classified as not popular.
We found that buffo demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
Research
Security News
Eight new malicious Firefox extensions impersonate games, steal OAuth tokens, hijack sessions, and exploit browser permissions to spy on users.
Security News
The official Go SDK for the Model Context Protocol is in development, with a stable, production-ready release expected by August 2025.