@@ -4,7 +4,12 @@ import type {AddressInfo} from "node:net"
44
55import type { OptionsJson } from "body-parser"
66import Cors , { type CorsOptions , type CorsOptionsDelegate } from "cors"
7- import express , { type Express , type RequestHandler , type Router } from "express"
7+ import express , {
8+ type ErrorRequestHandler ,
9+ type Express ,
10+ type RequestHandler ,
11+ type Router ,
12+ } from "express"
813
914// from https://stackoverflow.com/questions/39494689/is-it-possible-to-restrict-number-to-a-certain-range
1015type Enumerate <
@@ -79,10 +84,20 @@ export type ServerConfig = {
7984
8085 /**
8186 * provide arbitrary express middleware to be mounted before all request handlers
82- * useful for mounting logging, error handlers, alternative body parsers, etc
87+ * useful for mounting logging, alternative body parsers, etc
8388 */
8489 middleware ?: RequestHandler [ ]
8590
91+ /**
92+ * Provide a custom 404 handler
93+ */
94+ notFoundHandler ?: RequestHandler
95+
96+ /**
97+ * Provide a custom error handler
98+ */
99+ errorHandler ?: ErrorRequestHandler
100+
86101 /**
87102 * the router to use, normally obtained by calling the generated `createRouter`
88103 * function
@@ -119,6 +134,8 @@ export async function startServer({
119134 body = undefined ,
120135 port = 0 ,
121136 router,
137+ notFoundHandler,
138+ errorHandler,
122139} : ServerConfig ) : Promise < {
123140 app : Express
124141 server : Server
@@ -143,6 +160,14 @@ export async function startServer({
143160
144161 app . use ( router )
145162
163+ if ( notFoundHandler ) {
164+ app . use ( notFoundHandler )
165+ }
166+
167+ if ( errorHandler ) {
168+ app . use ( errorHandler )
169+ }
170+
146171 return new Promise ( ( resolve , reject ) => {
147172 try {
148173 const server = app . listen ( port )
0 commit comments