veil

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

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)
From: jhs@iriscouch.com

Hello, Veil. Welcome to the party.

into this.

{ Date: Tue, 17 Jan 2012 02:06:59 GMT,
  From: 'jhs@iriscouch.com',
  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)
console.dir(message)

Output:

{ 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
                                     })

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
XXX

ok

Apache 2.0