middleware-async
Advanced tools
Comparing version
@@ -1,3 +0,3 @@ | ||
import { NextFunction, Request, RequestHandler, Response } from 'express'; | ||
export declare const asyncMiddleware: (middleware: (req: Request, res: Response, next: NextFunction) => Promise<any> | any) => (req: Request, res: Response, next: NextFunction) => void | Promise<void>; | ||
import type { NextFunction, Request, RequestHandler, Response } from 'express'; | ||
export declare const asyncMiddleware: <P, ResBody, ReqBody, ReqQuery, Locals>(middleware: (req: Request<P, ResBody, ReqBody, ReqQuery, Locals>, res: Response<ResBody, Locals>, next: NextFunction) => Promise<any> | any) => (req: Request<P, ResBody, ReqBody, ReqQuery, Locals>, res: Response<ResBody, Locals>, next: NextFunction) => void | Promise<void>; | ||
/** | ||
@@ -10,4 +10,4 @@ * wrap async function to connect-like middleware | ||
export default asyncMiddleware; | ||
declare type IRequestHandler = RequestHandler | IRequestHandlerArray; | ||
declare type IRequestHandlerArray = ReadonlyArray<IRequestHandler>; | ||
declare type IRequestHandler<P, ResBody, ReqBody, ReqQuery, Locals> = RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals> | IRequestHandlerArray<P, ResBody, ReqBody, ReqQuery, Locals>; | ||
declare type IRequestHandlerArray<P, ResBody, ReqBody, ReqQuery, Locals> = ReadonlyArray<IRequestHandler<P, ResBody, ReqBody, ReqQuery, Locals>>; | ||
/** | ||
@@ -21,3 +21,3 @@ * combine list of middlewares into 1 middlewares | ||
*/ | ||
export declare const combineMiddlewares: (first?: IRequestHandler, ...middlewares: ReadonlyArray<IRequestHandler>) => (req: Request, res: Response, next: NextFunction) => any; | ||
export declare const combineMiddlewares: <P, ResBody, ReqBody, ReqQuery, Locals>(first?: IRequestHandler<P, ResBody, ReqBody, ReqQuery, Locals>, ...middlewares: readonly IRequestHandler<P, ResBody, ReqBody, ReqQuery, Locals>[]) => (req: Request<P, ResBody, ReqBody, ReqQuery, Locals>, res: Response<ResBody, Locals>, next: NextFunction) => void; | ||
export declare const mockExpressMajorVersion: (v: number) => number; | ||
@@ -30,3 +30,3 @@ /** | ||
*/ | ||
export declare const middlewareToPromise: (middleware: RequestHandler) => (req: Request, res: Response) => Promise<void>; | ||
export declare const middlewareToPromise: <P, ResBody, ReqBody, ReqQuery, Locals>(middleware: RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals>) => (req: Request<P, ResBody, ReqBody, ReqQuery, Locals>, res: Response<ResBody, Locals>) => Promise<void>; | ||
/** | ||
@@ -36,2 +36,2 @@ * extended version of middlewareToPromise which allows one or more middleware / array of middlewares | ||
*/ | ||
export declare const combineToAsync: (...args: IRequestHandlerArray) => (req: Request, res: Response) => Promise<void>; | ||
export declare const combineToAsync: <P, ResBody, ReqBody, ReqQuery, Locals>(...args: IRequestHandlerArray<P, ResBody, ReqBody, ReqQuery, Locals>) => (req: Request<P, ResBody, ReqBody, ReqQuery, Locals>, res: Response<ResBody, Locals>) => Promise<void>; |
27
index.js
@@ -38,8 +38,6 @@ "use strict"; | ||
}; | ||
var __spreadArrays = (this && this.__spreadArrays) || function () { | ||
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; | ||
for (var r = Array(s), k = 0, i = 0; i < il; i++) | ||
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) | ||
r[k] = a[j]; | ||
return r; | ||
var __spreadArray = (this && this.__spreadArray) || function (to, from) { | ||
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) | ||
to[j] = from[i]; | ||
return to; | ||
}; | ||
@@ -51,3 +49,3 @@ exports.__esModule = true; | ||
&& typeof maybePromise.then === 'function'; }; | ||
exports.asyncMiddleware = function (middleware) { return function (req, res, next) { return (function () { | ||
var asyncMiddleware = function (middleware) { return function (req, res, next) { return (function () { | ||
var called = false; | ||
@@ -90,2 +88,3 @@ var cb = function () { | ||
})(); }; }; | ||
exports.asyncMiddleware = asyncMiddleware; | ||
/** | ||
@@ -106,3 +105,3 @@ * wrap async function to connect-like middleware | ||
*/ | ||
exports.combineMiddlewares = function (first) { | ||
var combineMiddlewares = function (first) { | ||
var _a; | ||
@@ -114,3 +113,3 @@ var middlewares = []; | ||
while (Array.isArray(first)) | ||
_a = __spreadArrays(first, middlewares), first = _a[0], middlewares = _a.slice(1); | ||
_a = __spreadArray(__spreadArray([], first), middlewares), first = _a[0], middlewares = _a.slice(1); | ||
return function (req, res, next) { return first | ||
@@ -122,4 +121,6 @@ ? first(req, res, function (err) { return err | ||
}; | ||
exports.combineMiddlewares = combineMiddlewares; | ||
var expressMajorVersion = 4; | ||
exports.mockExpressMajorVersion = function (v) { return expressMajorVersion = v; }; | ||
var mockExpressMajorVersion = function (v) { return expressMajorVersion = v; }; | ||
exports.mockExpressMajorVersion = mockExpressMajorVersion; | ||
/** | ||
@@ -131,3 +132,3 @@ * mimic the next middleware. For express <= 4.x, synchronous error is caught, and returned rejected promise is ignored. | ||
*/ | ||
exports.middlewareToPromise = function (middleware) { return function (req, res) { return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () { | ||
var middlewareToPromise = function (middleware) { return function (req, res) { return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () { | ||
var maybePromise, err_2; | ||
@@ -166,2 +167,3 @@ return __generator(this, function (_a) { | ||
}); }); }; }; | ||
exports.middlewareToPromise = middlewareToPromise; | ||
/** | ||
@@ -171,3 +173,3 @@ * extended version of middlewareToPromise which allows one or more middleware / array of middlewares | ||
*/ | ||
exports.combineToAsync = function () { | ||
var combineToAsync = function () { | ||
var args = []; | ||
@@ -179,1 +181,2 @@ for (var _i = 0; _i < arguments.length; _i++) { | ||
}; | ||
exports.combineToAsync = combineToAsync; |
{ | ||
"name": "middleware-async", | ||
"version": "1.3.1", | ||
"version": "1.3.2", | ||
"description": "A handy tool to work with async/promise express middleware", | ||
@@ -33,25 +33,25 @@ "main": "index.js", | ||
"devDependencies": { | ||
"@babel/core": "^7.12.3", | ||
"@babel/core": "^7.14.3", | ||
"@babel/plugin-syntax-object-rest-spread": "^7.8.3", | ||
"@babel/plugin-transform-runtime": "^7.12.1", | ||
"@babel/preset-env": "^7.12.1", | ||
"@babel/preset-typescript": "^7.12.1", | ||
"@babel/runtime": "^7.12.1", | ||
"@types/express": "^4.17.8", | ||
"@types/jest": "^26.0.15", | ||
"@types/node": "^14.14.2", | ||
"@typescript-eslint/eslint-plugin": "^4.5.0", | ||
"@typescript-eslint/parser": "^4.5.0", | ||
"@babel/plugin-transform-runtime": "^7.14.3", | ||
"@babel/preset-env": "^7.14.2", | ||
"@babel/preset-typescript": "^7.13.0", | ||
"@babel/runtime": "^7.14.0", | ||
"@types/express": "^4.17.11", | ||
"@types/jest": "^26.0.23", | ||
"@types/node": "^15.6.1", | ||
"@typescript-eslint/eslint-plugin": "^4.25.0", | ||
"@typescript-eslint/parser": "^4.25.0", | ||
"babel-eslint": "^10.1.0", | ||
"babel-jest": "^26.6.0", | ||
"eslint": "^7.11.0", | ||
"eslint-config-airbnb-base": "^14.2.0", | ||
"babel-jest": "^26.6.3", | ||
"eslint": "^7.27.0", | ||
"eslint-config-airbnb-base": "^14.2.1", | ||
"eslint-plugin-babel": "^5.3.1", | ||
"eslint-plugin-import": "^2.22.1", | ||
"eslint-plugin-jest": "^24.1.0", | ||
"eslint-plugin-import": "^2.23.3", | ||
"eslint-plugin-jest": "^24.3.6", | ||
"flip-promise": "^1.0.4", | ||
"jest": "^26.6.0", | ||
"typescript": "^4.0.3" | ||
"jest": "^26.6.3", | ||
"typescript": "^4.2.4" | ||
}, | ||
"dependencies": {} | ||
} |
@@ -10,3 +10,3 @@ # Async Middleware [](https://travis-ci.org/tranvansang/middleware-async) | ||
Lets check at this code | ||
Let's check this code | ||
@@ -20,3 +20,3 @@ ```javascript | ||
The `next()` will be executed after `User.findById(...).exec()` is fulfilled because express allow middlewares returning a promise. | ||
The `next()` will be executed after `User.findById(...).exec()` is fulfilled because express allows middlewares returning a promise. | ||
@@ -84,7 +84,7 @@ However, express does not support if the promise returned by the middleware is rejected. | ||
Note that this function does not wrap the middleware with `asyncMiddleware`. If the middleware returns a promise, you need to wrap the middleware manually otherwise the error will never be caught. | ||
Note that this function does not wrap the middleware with `asyncMiddleware`. If the middleware returns a promise, you need to manually wrap the middleware; otherwise, the error will never be caught. | ||
- `middlewareToPromise`: convert express-style middleware to a function which returns a promise. | ||
- `middlewareToPromise`: convert express-style middleware to a function that returns a promise. | ||
`await middlewareToPromise(mdw)(req, res)` is rejected if the middleware `mdw` throws error (in **express/connect-like style via calling next(err)**), otherwise the promise is resolved normally. | ||
`await middlewareToPromise(mdw)(req, res)` is rejected if the middleware `mdw` throws an error (in **express/connect-like style via calling next(err)**), otherwise the promise is resolved normally. | ||
@@ -91,0 +91,0 @@ - `combineToAsync`: a combination of `middlewareToPromise` and `combineMiddlewares`. |
16899
5.59%207
2.48%