lib/sysrev/sysrev.js
function(user, systemId, entryType, details, cb) {
    var file = path.join(options.timelinesRoot, findSystem(systemId));
    if (typeof details === 'function') {
      cb = details;
      details = {};
    } else if (!details) {
      details = {};
    }

    var entry = {v: 0, user: user, ts: new Date(), type: entryType, details: details};
    fs.writeFile(file, JSON.stringify(entry) + '\n', { flag: 'a' }, function() {
      // error is swallowed, as this file does not really matter
      cb();
    });
  }
function(user, systemId, entryType, details, cb) {
    var file = path.join(options.timelinesRoot, findSystem(systemId));
    if (typeof details === 'function') {
      cb = details;
      details = {};
    } else if (!details) {
      details = {};
    }

    var entry = {v: 0, user: user, ts: new Date(), type: entryType, details: details};
    fs.writeFile(file, JSON.stringify(entry) + '\n', { flag: 'a' }, function() {
      // error is swallowed, as this file does not really matter
      cb();
    });
  }
function ( user , systemId , entryType , details , cb ) { var file = path . join ( options . timelinesRoot , findSystem ( systemId ) ) ; if ( typeof details === 'function' ) { cb = details ; details = { } ; } else if ( ! details ) { details = { } ; } var entry = { v : 0 , user : user , ts : new Date ( ) , type : entryType , details : details } ; fs . writeFile ( file , JSON . stringify ( entry ) + '\n' , { flag : 'a' } , function ( ) { // error is swallowed, as this file does not really matter cb ( ) ; } ) ; }
timeline format
[{user: user, ts: new Date(), type: entryType, details: details },...
custom values can be provided through the details object
 TODO change the format to include all the details in the main object
timeline format [ { user : user ts : new Date () type : entryType details : details } ... custom values can be provided through the details object TODO change the format to include all the details in the main object