28 lines
573 B
TypeScript
28 lines
573 B
TypeScript
import { NextFunction, Request, Response } from 'express'
|
|
import { Middleware } from './Middleware'
|
|
|
|
export const expressify = (
|
|
handleMiddleware: Middleware,
|
|
sendResponse: (res: Response, result: unknown) => void =
|
|
(res, result) => res.json(result),
|
|
) => async (
|
|
req: Request,
|
|
res: Response,
|
|
next: NextFunction,
|
|
) => {
|
|
let result: unknown
|
|
try {
|
|
result = await handleMiddleware({req, res})
|
|
} catch (err) {
|
|
next(err)
|
|
return
|
|
}
|
|
if (result === undefined) {
|
|
next()
|
|
return
|
|
}
|
|
if (res.writable) {
|
|
sendResponse(res, result)
|
|
}
|
|
}
|