aboutsummaryrefslogtreecommitdiffstats
path: root/async.ts
diff options
context:
space:
mode:
authors-ol <s+removethis@s-ol.nu>2022-01-13 13:27:26 +0000
committers-ol <s+removethis@s-ol.nu>2022-01-13 13:32:06 +0000
commit4ddf66ce54a1bd674e571f95d91cd31d7efff342 (patch)
treeb8ed1b22aa6b4924d100581146dd4c6903e39151 /async.ts
downloadfedidag-4ddf66ce54a1bd674e571f95d91cd31d7efff342.tar.gz
fedidag-4ddf66ce54a1bd674e571f95d91cd31d7efff342.zip
initial commit - read-only DiscDag integration
Diffstat (limited to 'async.ts')
-rw-r--r--async.ts26
1 files changed, 26 insertions, 0 deletions
diff --git a/async.ts b/async.ts
new file mode 100644
index 0000000..c88aceb
--- /dev/null
+++ b/async.ts
@@ -0,0 +1,26 @@
+import type { Request, Response, NextFunction, RequestHandler } from "express";
+import type { ParamsDictionary, Query } from "express-serve-static-core";
+
+export interface AsyncRequestHandler<
+ P = ParamsDictionary,
+ ResBody = any,
+ ReqBody = any,
+ ReqQuery = Query,
+ Locals extends Record<string, any> = Record<string, any>
+> {
+ (
+ req: Request<P, ResBody, ReqBody, ReqQuery, Locals>,
+ res: Response<ResBody, Locals>,
+ next: NextFunction,
+ ): Promise<Response>;
+}
+
+export const wrap = <
+ P = ParamsDictionary,
+ ResBody = any,
+ ReqBody = any,
+ ReqQuery = Query,
+ Locals extends Record<string, any> = Record<string, any>
+>(handler: AsyncRequestHandler<P, ResBody, ReqBody, ReqQuery, Locals>): RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals> => {
+ return (req, res, next) => handler(req, res, next).catch((err) => next(err));
+};