create and parse object streams from a single definition
npm install --save lib-stream-protocol
var proto = require('lib-stream-protocol');
// create your data type
function Message() {
this.from = '';
this.dest = '';
this.body = '';
this.subject = '';
this._some_internal_property = null;
}
// define some types
var stringProto = new proto.StringType;
var messageProto = new proto.StructType(Message);
messageProto.addRequired('from' , stringProto);
messageProto.addRequired('dest' , stringProto);
messageProto.addOptional('body' , stringProto);
messageProto.addOptional('subject', stringProto);
// create a data object
var m = new Message();
m.from = 'bob';
m.dest = 'kim';
m.body = 'hello world';
// ready it for the world
JSON.stringify(messageProto.marshal(m))
// message will either be a correct Message object, or throw an error
var message = messageProto.marshal(JSON.parse(str))