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

rummage

v0.0.1

Published

stream friendly JSON.stringify

Downloads

9

Readme

rummage

stream friendly JSON.stringify

Build Status

installation

npm install rummage

example

var fs = require('fs')
var rummage = require('rummage')

rummage({
  message: fs.createReadStream(__dirname + '/message.txt')
}).pipe(process.stdout)

// produces

'{"message":"contents of message.txt\n"}'

special types

By default stream data is concatenated and output as a string, as per the above example. However, there are special instructions to treat streams as arrays, objects or raw JSON.

Imagine you want to retrieve a list of newline-delimited messages from a file and output them as JSON:

var fs = require('fs')
var rummage = require('rummage')
var split = require('split2')

rummage({
  messages: { _array: messages() } // output as an array
}).pipe(process.stdout)

function messages () {
  return fs.createReadStream(__dirname + '/messages.txt').pipe(split())
}

// produces

'{"messages":["message 1","message 2","message 3"]}\n'

Or as an object:

var fs = require('fs')
var rummage = require('rummage')
var split = require('split2')
var through = require('through2')

rummage({
  messages: { _object: messages() } // output as an object
}).pipe(process.stdout)

function messages () {
  return fs.createReadStream(__dirname + '/messages.txt')
    .pipe(split())
    .pipe(through.obj(write))

  // transform so that we get [key, value] for each message
  function write (chunk, enc, cb) {
    var key = chunk.toString('utf8').slice(-1)
    cb(null, [key, chunk])
  }
}

// produces

'{"messages":{"1":"message 1","2":"message 2","3":"message 3"]}\n'

And lastly, as raw JSON:

var fs = require('fs')
var rummage = require('rummage')

rummage({
  messages: { _json: messages() } // output as json
}).pipe(process.stdout)

function messages () {
  return fs.createReadStream(__dirname + '/messages.json')
}

// produces

'{"messages":{"1":"message 1","2":"message 2","3":"message 3"]}\n'

api

var stream = rummage(value)

Return a new readable stream of JSON from value

If a stream is encountered within value, or value is itself a stream, its data will be concatenated and output as a string by default. This behaviour can be overridden using special types, which are:

  • _string - output value as a string (default)
  • _json - output value as raw JSON
  • _array - output value as an array
  • _object - output value as an object. Each chunk of value must be an array consisting of [key, value]

See above for examples

similar modules

license

MIT