An ATproto social media client -- with an independent Appview.
1import {ErrorRequestHandler, Request, RequestHandler, Response} from 'express'
2
3import {httpLogger} from '../logger.js'
4
5export type Handler = (req: Request, res: Response) => Awaited<void>
6
7export const handler = (runHandler: Handler): RequestHandler => {
8 return async (req, res, next) => {
9 try {
10 await runHandler(req, res)
11 } catch (err) {
12 next(err)
13 }
14 }
15}
16
17export const errorHandler: ErrorRequestHandler = (err, _req, res, next) => {
18 httpLogger.error({err}, 'request error')
19 if (res.headersSent) {
20 return next(err)
21 }
22 return res.status(500).end('server error')
23}