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
 | |
| };
 | |
| 
 |