MCPcopy
hub / github.com/remix-run/remix / startServer

Function startServer

packages/test/src/app/server.ts:23–60  ·  view source on GitHub ↗
(
  browserFiles: string[],
)

Source from the content-addressed store, hash-verified

21})
22
23export async function startServer(
24 browserFiles: string[],
25): Promise<{ server: http.Server; port: number; baseUrl: string }> {
26 let handle = createRequestHandler(browserFiles)
27
28 let server = http.createServer((req, res) => {
29 handle(req, res).catch((error) => {
30 logError(`Unhandled error for ${req.url}`, error)
31 if (!res.headersSent) {
32 res.writeHead(500, { 'Content-Type': 'text/plain' })
33 }
34 if (!res.writableEnded) res.end()
35 })
36 })
37
38 await new Promise<void>((resolve, reject) => {
39 server.once('error', reject)
40 server.listen(0, () => {
41 server.removeListener('error', reject)
42 resolve()
43 })
44 })
45
46 let address = server.address()
47 if (!isAddressInfo(address)) {
48 await new Promise<void>((resolve, reject) => {
49 server.close((error) => {
50 if (error) reject(error)
51 else resolve()
52 })
53 })
54 throw new Error('Test server did not bind to a TCP port')
55 }
56
57 let baseUrl = `http://localhost:${address.port}`
58 log(`Test server running on ${baseUrl}`)
59 return { server, port: address.port, baseUrl }
60}
61
62function isAddressInfo(address: ReturnType<http.Server['address']>): address is AddressInfo {
63 return address != null && typeof address === 'object'

Callers 1

executeRunFunction · 0.50

Calls 9

createRequestHandlerFunction · 0.85
logErrorFunction · 0.85
isAddressInfoFunction · 0.85
logFunction · 0.85
listenMethod · 0.80
addressMethod · 0.80
endMethod · 0.65
closeMethod · 0.65
resolveFunction · 0.50

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…