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

traf

v1.1.0

Published

Transform between various data serialization formats

Downloads

14

Readme

traf

Transform between various data serialization formats

Demo

Installation

npm

npm install traf

bower

bower install https://github.com/kba/traf

Usage

CLI

Install the package globally (npm install -g traf)

Usage: traf [options...] <input-file> [<output-file>]

Transform between different serialization formats

Options:
    -h --help                   Show this help
    -i --input-format FORMAT    Input format
    -o --output-format FORMAT   Output format
    -f --force                  Overwrite existing files
    -I --indent INDENT          Indent data with INDENT spaces per level

Arguments:
    <input-file>    Input filename.
                    Can be '-' to read from STDIN. Specify input format then.
    <output-file>   Output filename.
                    If omitted, derive output filename from input filename.
                    Can be '-' to write to STDOUT. Specify output format then.

Node JS

var t = new(require('traf'))();
console.log(t.parseSync("- 'foo'", {"format": "YAML"}));

Browser

<script src="./path/to/traf.js"></script>
<!-- or -->
<script src="https://kba.github.io/traf/dist/traf-latest.js"></script>
<script>
var t = new traf();
console.log(parseSync("- 'foo'", {"format": "YAML"}));
</script>

Code organization

Formats

A format is a set of rules how to serialize and deserialize data.

Every format has a subfolder in ./src/lib/backend.

Backends

Every format has one or more backends, extending the Backend base class.

Method suffixes

All functions are suffixed with the mechanism to execute them:

Sync

Method takes argument and options and returns the result or throws an exception.

try {
  data = traf.parseSync(str, {"format": "JSON"})
  // do stuff with data
} catch (e) {
  // handle error
}

Async

Method takes argument, options and returns a callback with arguments err and result.

traf.parseAsync(str, {"format":"JSON"}, function(err, data) {
  if (err) {
    // handle error
  }
  // handle data
});

Supported formats

API

parseSync(str, opts)

parseAsync(str, opts, cb)

Load a file in any of the supported serialization formats.

Options:

  • format: Input format

stringifySync(data, opts)

stringifyAsync(data, opts, cb)

Serializes the data passed to a string.

Options:

  • format: Output format

parseFileSync(filename, [opts])

parseFileAsync(filename, [opts], cb)

Options:

  • format: Input format
  • extensions: List of extensions to add to the filename in case it does not exist.

By default, input format is determined by extension.

Not available in the browser version.

stringifyFileSync(data, opts)

stringifyFileAsync(data, opts, cb)

Serializes the data passed to a string and writes it to a file.

Options:

  • filename: The filename to write to
  • format: If not given explicitly, determined by extension.

guessFiletype(filename, opts={})

Guess parser options by looking at the filename.

Will add information to opts, at least the format if it was recognized and possibly further options that can be guessed from the filename.

console.log(traf.guessFilename('foo.json'))
// {"format":"JSON"}
console.log(traf.guessFilename('foo.tsv'))
// {"format":"CSV", "delimiter": "\t"}

guessMimetypeFormat(mimetype, opts={})

Derive the format (e.g. JSON) from the MIME type (e.g. application/json)

Will return the found format

guessFilename(filename, opts)

Guess output filename by changing the extension to the outputExtension of the format in opts.