mini tools for express and others


License
MIT
Install
npm install mini-tools@1.0.2

Documentation

mini-tools

mini tools for express and others

stable npm-version downloads build windows coverage outdated-deps

language: English also available in: Spanish

Install

$ npm install mini-tools

Main goal

Have some mini tools for express and others

API

serveErr(req, res [, next])

Returns a function that sends a error message to de front-end. If the error object has setted the property

  • code: is displayed before the message
  • status: is sended in the header (otherwise "400" is sended)
app.post('/insert' , function(req,res){
  //...
  if(duplicate){
    serveErr(req,res)(new Error("Duplicate name. Can't insert"));
    return;
  }
  //...

It is promise friendly

app.use('/tools', function(req,res,next){
  //...
  .then(function(){
    if(not_in_this_middleware){
      throw new Error("next");
    }
    // ...
  }).catch(serveErr(req,res,next));

catch expects a function that receive an error. serveErr returns that function.

When err is Error("next") serveErr calls next and does not send any result to de front-end; otherwise it sends a 400 error with the message and stack.

serveJade(path, opts)

var express = require('express');
var app = express();

app.use('/',MiniTools.serveJade('./static',true));

app.use('/main',MiniTools.serveJade('./static/index.jade',false));

Returns an express middleware to serve jade files.

If opts is boolean it will be the any option.

If any==true it serves files adding .jade to req.path; and if there is no jade file it call next().

If any==false it serves that specific file.

Others options in opts are pased to pug.render function.

Note: for use serveJade you must include "pug" in package.json

serveStylus(path, any)

var express = require('express');
var app = express();

app.use('/',MiniTools.serveStylus('./static',true));

app.use('/site.css',MiniTools.serveStylus('./static/index.styl',false));

Returns an express middleware to serve jade files. If any==true it serves files adding .jade to req.path; and if there is no jade file it call next().

If any==false it serves that specific file.

Note: for use serveStylus you must include stylus in package.json

serveText(anyText,contentTypeText)

var express = require('express');
var app = express();

app.use('/about',MiniTools.serveText('<h1>This app</h1>','html'));

app.use('/is-up-service',MiniTools.serveText('Yes.'));

Returns an express middleware to serve pain text. Optionaly you can pass "content type".

serveJson(object)

var express = require('express');
var app = express();

var config = {devel:false, title: "title"};

app.use('/config',MiniTools.serveJson(config));

Returns an express middleware to serve an object in JSON format.

serveYaml(object)

var express = require('express');
var app = express();

var config = {devel:false, title: "title"};

app.use('/config',MiniTools.serveYaml(config));

Returns an express middleware to serve an object in yaml format (using js-yaml).

readConfig(list, opts)

MiniTools.readConfig(
    [
        {production: true},
        'package.json',
        'other-configs.yml',
        'more-configs',
    ],
    {whenNotExist:'ignore'}
).then(function(config){
    console.log(config);
});

Reads the chain of configuration merging with best-globals.changing.

If the list element is a fileName ending with .json .yaml o .yml, it reads and parse, if doesn't have extension it search first, if it is a plain object it uses directly.

options

  • whenNotExist:'ignore'
  • whenNotExist:'fail'

License

MIT