MCPcopy Create free account
hub / github.com/cameri/nostream / workerFactory

Function workerFactory

src/factories/worker-factory.ts:19–71  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

17const logger = createLogger('worker-factory')
18
19export const workerFactory = (): AppWorker => {
20 const dbClient = getMasterDbClient()
21 const readReplicaDbClient = getReadReplicaDbClient()
22 const eventRepository = new EventRepository(dbClient, readReplicaDbClient)
23 const userRepository = new UserRepository(dbClient, eventRepository)
24 const nip05VerificationRepository = new Nip05VerificationRepository(dbClient)
25
26 const settings = createSettings()
27
28 const app = createWebApp()
29
30 // deepcode ignore HttpToHttps: we use proxies
31 const server = http.createServer(app)
32
33 let maxPayloadSize: number | undefined
34 if (pathSatisfies(is(String), ['network', 'max_payload_size'], settings)) {
35 logger.warn(`WARNING: Setting network.max_payload_size is deprecated and will be removed in a future version.
36 Use network.maxPayloadSize instead.`)
37 maxPayloadSize = path(['network', 'max_payload_size'], settings)
38 } else {
39 maxPayloadSize = path(['network', 'maxPayloadSize'], settings)
40 }
41
42 const webSocketServer = new WebSocketServer({
43 server,
44 maxPayload: maxPayloadSize ?? 131072, // 128 kB
45 perMessageDeflate: {
46 zlibDeflateOptions: {
47 chunkSize: 1024,
48 memLevel: 7,
49 level: 3,
50 },
51 zlibInflateOptions: {
52 chunkSize: 10 * 1024,
53 },
54 clientNoContextTakeover: true, // Defaults to negotiated value.
55 serverNoContextTakeover: true, // Defaults to negotiated value.
56 serverMaxWindowBits: 10, // Defaults to negotiated value.
57 // Below options specified as default values.
58 concurrencyLimit: 10, // Limits zlib concurrency for perf.
59 threshold: 1024, // Size (in bytes) below which messages
60 // should not be compressed if context takeover is disabled.
61 },
62 })
63 const adapter = new WebSocketServerAdapter(
64 server,
65 webSocketServer,
66 webSocketAdapterFactory(eventRepository, userRepository, nip05VerificationRepository),
67 createSettings,
68 )
69
70 return new AppWorker(process, adapter)
71}

Callers 3

shared.tsFile · 0.90
getRunnerFunction · 0.90

Calls 5

getMasterDbClientFunction · 0.90
getReadReplicaDbClientFunction · 0.90
createSettingsFunction · 0.90
createWebAppFunction · 0.90
webSocketAdapterFactoryFunction · 0.90

Tested by

no test coverage detected