express-router-api
Advanced tools
Comparing version 1.0.4 to 1.1.0
23
index.js
@@ -25,2 +25,13 @@ 'use strict'; | ||
// coutesy of http://stackoverflow.com/a/9924463/403571 | ||
const ARGUMENT_NAMES = /([^\s,]+)/g; | ||
var STRIP_COMMENTS = /(\/\/.*$)|(\/\*[\s\S]*?\*\/)|(\s*=[^,\)]*(('(?:\\'|[^'\r\n])*')|("(?:\\"|[^"\r\n])*"))|(\s*=[^,\)]*))/mg; | ||
function getParamNames(func) { | ||
var fnStr = func.toString().replace(STRIP_COMMENTS, ''); | ||
var result = fnStr.slice(fnStr.indexOf('(')+1, fnStr.indexOf(')')).match(ARGUMENT_NAMES); | ||
if(result === null) | ||
result = []; | ||
return result; | ||
} | ||
class ExpressApiRouter extends express.Router { | ||
@@ -92,9 +103,9 @@ constructor(_options) { | ||
callbacks = callbacks.map((origHandler, index) => { | ||
// return orig handler if it provides a callback | ||
if(getParamNames(origHandler).length >= 3) { | ||
return origHandler; | ||
} | ||
return (req, res, next) => { | ||
let promiseChain = Promise.resolve().then(() => origHandler(req, res, next)) | ||
.tap((returnValue) => { | ||
if(typeof returnValue === 'undefined' && index === callbacks.length - 1) { | ||
throw new ExpressApiRouterError('Warning: Route for ' + path.toString() + ' did not return a promise - this happens when normal route handler is attached to express-router-api. Everything most likely works but you are advised to return API data through a promise.'); | ||
} | ||
}) | ||
let promiseChain = Promise.resolve().then(() => origHandler(req, res)) | ||
.then(Promise.resolveDeep) | ||
@@ -101,0 +112,0 @@ .then(this.options.successFormatter ? (data => this.options.successFormatter(data, req, res) ) : (data => data)) |
{ | ||
"name": "express-router-api", | ||
"version": "1.0.4", | ||
"version": "1.1.0", | ||
"description": "Express router that lets you construct your API entirely on promises", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
12423
332
1