()
| 17 | const logger = createLogger('worker-factory') |
| 18 | |
| 19 | export 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 | } |
no test coverage detected