MCPcopy Create free account
hub / github.com/timgit/pg-boss / createProxyServerNode

Function createProxyServerNode

packages/proxy/src/node.ts:25–86  ·  view source on GitHub ↗
(options: ProxyNodeOptions = {})

Source from the content-addressed store, hash-verified

23}
24
25export async function createProxyServerNode (options: ProxyNodeOptions = {}): Promise<ProxyServerNode> {
26 const service = await createProxyService(options)
27 const { hostname, port } = service.config as { hostname: string; port: number }
28 const signals = options.shutdownSignals ?? ['SIGINT', 'SIGTERM']
29
30 let server: ReturnType<typeof serve> | null = null
31 let detachSignals: (() => void) | undefined
32
33 const proxy = {} as ProxyServerNode
34
35 const stop = async () => {
36 try {
37 await service.stop()
38 } finally {
39 if (server) {
40 await new Promise<void>((resolve) => server?.close(() => resolve()))
41 server = null
42 proxy.server = null
43 }
44 if (detachSignals) {
45 detachSignals()
46 detachSignals = undefined
47 proxy.detachSignals = undefined
48 }
49 }
50 }
51
52 const start = async () => {
53 await service.start()
54 if (!server) {
55 const info = await new Promise<{ port: number }>((resolve) => {
56 server = serve(
57 {
58 fetch: service.app.fetch,
59 port,
60 hostname
61 },
62 resolve
63 )
64 })
65 proxy.server = server
66 options.onListen?.(info)
67 }
68 if (options.attachSignals ?? true) {
69 detachSignals = attachShutdownListeners(signals, nodeShutdownAdapter, stop)
70 proxy.detachSignals = detachSignals
71 }
72 return { port }
73 }
74
75 Object.assign(proxy, {
76 ...service,
77 hostname,
78 port,
79 server,
80 start,
81 stop,
82 detachSignals

Callers 2

apiCallsTest.tsFile · 0.85
server.tsFile · 0.85

Calls 1

createProxyServiceFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…