npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

buffalo

v0.1.3

Published

Buffalo is a lightweight BSON and Mongo Wire Protocol library for Node.js

Downloads

112

Readme

Buffalo

Buffalo is a lightweight BSON and Mongo Wire Protocol library for Node.js. It was built as the underlying engine for Mongolian DeadBeef.

The motivation is to make a fast and simple parser and serializer for BSON.

Build Status

Installation

DISCLAIMER: The API is experimental. I will be adding, removing, and changing the API in the interest of a solid API. Use at your own risk

You can either clone the source and install with npm link, or install the latest published version from npm with npm install buffalo.

Running Tests

Run the tests with npm test.

API

Buffalo exposes two methods:

exports.parse = function(buffer) { ... }
exports.serialize = function(object) { ... }

And several types:

exports.Long // goog.math.Long - http://closure-library.googlecode.com/svn/docs/class_goog_math_Long.html
exports.ObjectId = function(buffer) // buffer must be a 12-byte Buffer, accessible via the bytes property
exports.ObjectId = function(string) // string must be a 24-char hex string
exports.ObjectId = function() // generates an ObjectId
exports.Timestamp // under construction

The BSON types are mapped as follows:

  • 0x01 - Floating point - mapped to Number
  • 0x02 - UTF-8 string - mapped to String
  • 0x03 - Embedded document - mapped to Object
  • 0x04 - Array - mapped to Array
  • 0x05 - Binary data - mapped to Node.js Buffer (with property subtype)
  • 0x06 - Undefined - mapped to undefined
  • 0x07 - ObjectId - mapped to exports.ObjectId
  • 0x08 - Boolean - mapped to true or false
  • 0x09 - UTC datetime - mapped to Date
  • 0x0A - Null value - mapped to null
  • 0x0B - Regular expression - mapped to RegExp (Note: only flags g, i, and m are supported)
  • 0x0C - DBPointer - currently unmapped
  • 0x0D - JavaScript code - mapped to Function or Object with property code
  • 0x0E - Symbol - mapped to String
  • 0x0F - JavaScript code w/ scope - mapped to Function or Object with properties code and scope
  • 0x10 - 32-bit Integer - mapped to Number
  • 0x11 - Timestamp - mapped to exports.Timestamp
  • 0x12 - 64-bit integer - mapped to exports.Long
  • 0xFF - Min key - currently unmapped
  • 0x7F - Max key - currently unmapped

Examples

var BSON = require('buffalo')

// Parse a Buffer
var object = BSON.parse(buffer)

// Serialize an object
var buffer = BSON.serialize(object)

Contributing

Try it out and send me feedback! Unit tests and documentation are good, too.

License

Buffalo is open source software under the zlib license.