node utility
JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
lib
README.md
RELEASE.md
index.js
package.json

README.md

NodeUtil

This is just a tool collect for easy use of some tool library. I will pack some operation for more easy to use.

Install

npm install nodeutil

Usage

var nu = require('nodeutil');

Using logger

var log = nu.logger.getInstance();
log.info('Test logger...');

Or you can insert log name to getInstance() to catelogry your log...

var log = nu.logger.getInstance('MAIN_LOG');

You can also set logger some advance properties:

var log = require('nodeutil').logger.getInstance('io_sockets', {
    path:   'your-logger-path',
    catg: 'log-category-name',
    level: 'log-level',
    logMaxSize: 'max-log-file-size',
    logBackup: 'backup-days'
});

Advance Logger

If your need to do more with log, you can extend the log4js setting like this:

var log = nu.logger.addInstance('appjs', {
        "type": "dateFile",
        "filename": 'test-log.log',
        "pattern": "-yyyy-MM-dd-ss.log",
        "alwaysIncludePattern": true
});

In addAppender(), you can put appender config using log4js config format. Related config format, please reference to log4js: https://github.com/nomiddlename/log4js-node

For date rolling log, please reference here for dateFile appender: https://github.com/nomiddlename/log4js-node/wiki/Date-rolling-file-appender

Simple Log

Simple log is fix format using js file name and function name as prefix. It is focus that user can easily find the log exist in

var log = require('nodeutil').simplelog;
log.info('Hello %s!');

Using dateutil

var dateutil = no.dateutil;
var pattern = 'yyyymmdd hh24:mi:ss';
dateutil.getNowString(pattern);
dateutil.getDateString(new Date(), pattern)

Using step

var Step = nu.step;
Step(
  function step1(){
    //do something...
    return something1;
  },
  function step2(step1_returned){
    //do something
    return something2;
  },
  ...
)

Using cfgutil

var cfgutil = nu.cfgutil;
//read from json file
var cfg = cfgutil.readJsonCfg('path to json config file');

Using mailutil

var mailer = nu.mailutil;

mailer.init(
  {"smtpOptions":{"service":"Gmail", "auth": {"user": "your-account","pass": "your-password"}}, "sender": "NO-REPLY <no-reply@micloud.tw>"}
);

mailer.sendNodeMailAsync('receiver@gmail.com',
  'test mail send...',
  'send mail OK!',
  true,
  function(){
    console.log('Send mail done...');
  }
);

Using mailutil through localhost sendmail service

var mailer = require('nodeutil').mailutil;

mailer.init(
      {"smtpOptions":{"host":"localhost"}, "sender": "NO-REPLY <no-reply@micloud.tw>"}
    );

mailer.sendNodeMailAsync('yourmail@gmail.com',
  'test mail send...',
  'send mail OK!',
  true,
  function(){
    console.log('Send mail done...');
  }
);

Advance using mailutil...

mailer.init(
  {"smtpOptions": {"service":"Gmail",
    "auth": {
      "user": "your_mail_username", "pass": "your_password"
    }},
    "sender": "NO-REPLY <no-reply@your.mail.address>"
  }
);

mailer.sendNodeMail({
    to:["receiver1@gmail.com"],
    subject: "test123",
    html:"<h1>TEST123</h1>",
    cc:["cc-receiver@gmail.com"],
    attachments: [//see detail: https://github.com/andris9/Nodemailer#attachment-fields
       {   // utf-8 string as an attachment
            fileName: "text1.txt",
            contents: "hello world!"
        },
        {   // binary buffer as an attachment
            fileName: "text2.txt",
            contents: new Buffer("hello world!","utf-8")
        }]
  },
  true, function(res){
    console.log(res);
  }
);

Convert Json to Table

var json2table = nu.json2table;
var json = [{aaa:123, bbb:223}, {aaa:223, bbb:323}];
console.log(json2table.ConvertJsonToTable(json));

The result:

<table border="1" cellpadding="1" cellspacing="1"><thead><tr><th>aaa</th><th>bbb</th></tr></thead><tbody><tr><td>123</td><td>223</td></tr><tr><td>223</td><td>323</td></tr></tbody></table>

Generate GUID

var guid = nu.guid;
//Generate a guid without prefix and postfix
console.log( guid.getGuid('%s%s%s', 0,0));
//Generate a guid with 2 digit prefix and 3 digit postfix
console.log( guid.getSimpleGuid('%s-%s-%s', 2,3));

//Generate a guid using specifc seed
var a = '12341234'
console.log( guid.getSimpleGuidWithSeed(a, '%s-%s-%s', 2,3));

The result:

-13ee608f7e0-
FE-13ee608f7e1-Dia
rm-12341234-eep

Simple Validator

Create model

var validator = require('nodeutil').validator;
var usermodel = {
    username: {
      type: "string", require: true, max: 200, desc: 'the username, must provide as an email address',
      validator: validator.isEmail
    },
    password: {
      type: "string", require: false, max: 200, desc: 'the password'
    },
    sex: {
      type: "string", require: true, max: 200, desc: 'the sex'
    },
    created: {
      type: "number", require: true, max: 200, "default":-1, desc: 'the create time in number format',
      map: function(v) {
        if(v == -1) return new Date().getTime();
      }
    },
    user_type: {
      type: "number", require: true, "default": 0, pick: [0,1,2], updatable: true, desc:'the user type to define the role of user'
    },
    test: {
      type: "string", require: false, max: 200, desc: 'just for test',
      map: function(v) {
        return "111" + v;
      }
    }
  }

If the object not exist sex:

//file: test.js
var user = {
  username: 'simon',
  password: '123',
  user_type: '0'
}

var result = validator.check(user, usermodel);

console.log('check result:', result);

Run:

$ node test

/Users/peihsinsu/project/github-projects/nodeutil/lib/validator.js:66
      if(!vo[k] && vo[k] != 0) throw "value of key [" + k + "] not found";
                               ^
value of key [sex] not found

If the object is valid

//file: test.js
var user = {
  username: 'simon',
  password: '123',
  user_type: '0',
  sex: 'M'
}

var result = validator.check(user, usermodel);

console.log('check result:', result);

Run:

$ node test
check result: { username: 'simon',
  password: '123',
  sex: 'M',
  created: 1456637453105,
  user_type: '0' }