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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@sgarciac/bombadil

v2.3.0

Published

A TOML parser

Readme

bombadil

Copyright Sergio Garcia

A chevrotain based TOML v0.5.0 parser, written in typescript.

Releases

Install

npm install @sgarciac/bombadil

Usage

var bombadil = require('@sgarciac/bombadil')
var input = 'whatever = 1'
var reader = new bombadil.TomlReader
reader.readToml(input)
reader.result // -> {whatever: 1}

Errors

If the input is not a valid TOML string, the reader will store undefined in its result property and it will keep the errors in its errors property. Errors can be either:

Type mapping

By default, the toml reader will map TOML values to javascript values as follows:

  • Integers -> Number
  • Float -> Number
  • String -> String
  • Boolean -> Boolean
  • Offset Date Time -> Date
  • Local Date Time -> Date (using UTC±00:00)
  • Local Date -> Date (using UTC±00:00 and time 00:00:00)
  • Local Time -> Date (using UTC±00:00 and date 0001-01-01)
  • Array -> Array
  • Table -> Object

Full typing information

As you can see in the previous example, there is some information loss. If you need the original typing information, you can pass a second parameter to readToml set to true.

This will parse the following TOML:

title = "TOML Example"

[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00Z # First class dates? Why not?

to the following javascript object:


{ type: 'table',
  content:
   { title:
      { type: 'atomicString',
        image: 'TOML Example',
        value: 'TOML Example' },
     owner:
      { type: 'table',
        content:
         { name:
            { type: 'atomicString',
              image: 'Tom Preston-Werner',
              value: 'Tom Preston-Werner' },
           dob:
            { type: 'offsetDateTime',
              image: '1979-05-27T07:32:00Z',
              value: 1979-05-27T07:32:00.000Z } } } } }

Documents are transformed as following:

  • Toml's tables (including the root one) and primitive values (string, integer, date, etc) are transformed to javascript objects with a 'type' property that describe their type. For example, tables' type is the string 'table'.
  • All Toml's arrays are transformed to javascript arrays
  • Toml's tables corresponding javascript objects have a "content" property that contains another javascript object (a dictionary), whose properties are the toml table's keys, and they point to the transformation of the corresponding toml value.
  • Toml's primitive values corresponding javascript objects include their toml image (a string), and also the corresponding javascript primitive value.

Keeping the original string image of the value can be helpful, for example when dealing with big integers, which can not be handled by the javascript Number type.

Known problems

Chevrotain is known to rely on function names, which means that minification (such as performed by, for example, Uglify) can break bombadil. There are some solutions to this problem here

Unless you are running the code inside the browser, and using minification, you probably don't need to worry about this.