31 lines
1,010 B
JavaScript
31 lines
1,010 B
JavaScript
'use strict';
|
|
|
|
const express = require('express');
|
|
|
|
function replaceLastBySafeHandler(handlers) {
|
|
if (handlers.length === 0) {
|
|
return [];
|
|
}
|
|
|
|
const lastHandler = handlers[handlers.length - 1];
|
|
const ret = handlers.slice();
|
|
ret[handlers.length - 1] = (req, res, next) => lastHandler(req, res, next).catch(error => next(error));
|
|
return ret;
|
|
}
|
|
|
|
function create() {
|
|
const router = new express.Router();
|
|
|
|
router.allAsync = (path, ...handlers) => router.all(path, ...replaceLastBySafeHandler(handlers));
|
|
router.getAsync = (path, ...handlers) => router.get(path, ...replaceLastBySafeHandler(handlers));
|
|
router.postAsync = (path, ...handlers) => router.post(path, ...replaceLastBySafeHandler(handlers));
|
|
router.putAsync = (path, ...handlers) => router.put(path, ...replaceLastBySafeHandler(handlers));
|
|
router.deleteAsync = (path, ...handlers) => router.delete(path, ...replaceLastBySafeHandler(handlers));
|
|
|
|
return router;
|
|
}
|
|
|
|
module.exports = {
|
|
create
|
|
};
|
|
|