Convert RFC822 and HTTP messages (headers, body) to Javascript objects

Usage no npm install needed!

<script type="module">
  import veil from '';


Veil: Convert email or HTTP messages to Javascript objects

Veil turns this

Subject: Hello, Veil!
Date: Tue Jan 17 2012 09:06:59 GMT+0700 (ICT)

Hello, Veil. Welcome to the party.

into this.

{ Date: Tue, 17 Jan 2012 02:06:59 GMT,
  From: '',
  Subject: 'Hello, Veil!',
  body: 'Hello, Veil. Welcome to the party.' }

You can use it, for example, to edit blog posts in a useful Markdown style but load them as Javascript objects.

Veil is available as an NPM module.

$ npm install veil

Follow (upper-case F) comes from an internal Iris Couch project used in production for over a year. It works in the browser (beta) and is available as an NPM module.

$ npm install follow


var veil = require('veil')

var message = 'Date: Tue, 17 Jan 2012 02:11:48 GMT\n'
            + 'Subject: This is the example\n'
            + '\n'
            + 'This is the body'

message = veil.parse(message)


{ Date: Tue, 17 Jan 2012 02:11:48 GMT,
  Subject: 'This is the example'
  body: 'This is the body' }


Veil is defaultable. Customize its major behaviors by setting its default options:

// Stock behavior
var veil = require('veil')

// Modified behavior, with inheritance.
var better_veil = veil.defaults({ keys: 'underscore' })
  , best_veil = better_veil.defaults({ dates: true
                                     , numbers: true

API Overview

Veil has one function:

parse(message, [options]) | Return an object representing the message, with optional extra options.


The options to parse() are the same as those for .defaults().

  • keys | If this is "underscore", convert keys like "Content-Type" to "content_type"
  • dates | Enable this to convert timestamp values into Date objects
  • numbers | Enable this to convert numeric values to Numbers


Veil uses node-tap. If you clone this Git repository, tap is included.

$ ./node_modules/.bin/tap test



Apache 2.0