@aimee-blue/ab-service-kit
Version:
Aimee Blue Service Template
1 lines • 2.92 kB
Source Map (JSON)
{"version":3,"sources":["../../../src/shared/sockets/buildServerUpgradeListener.ts"],"names":["buildServerUpgradeListener","wss","epicsByPath","add","logger","upgrade","request","socket","head","url","destroy","pathname","parse","has","log","handleUpgrade","done","ws","id","Error","onDetach","emit"],"mappings":";;;;;;;AAEA;;AAKA;;;;AAEO,MAAMA,0BAA0B,GAAG,CACxCC,GADwC,EAExCC,WAFwC,EAGxCC,GAHwC,EAIxCC,MAJwC,KAMxC,SAASC,OAAT,CAAiBC,OAAjB,EAA2CC,MAA3C,EAA2DC,IAA3D,EAAyE;AACvE,MAAI,CAACF,OAAO,CAACG,GAAb,EAAkB;AAChBF,IAAAA,MAAM,CAACG,OAAP;AACA;AACD;;AAED,QAAMC,QAAQ,GAAGF,aAAIG,KAAJ,CAAUN,OAAO,CAACG,GAAlB,EAAuBE,QAAxC;;AAEA,MAAI,OAAOA,QAAP,KAAoB,QAApB,IAAgC,CAACT,WAAW,GAAGW,GAAd,CAAkBF,QAAlB,CAArC,EAAkE;AAChEP,IAAAA,MAAM,CAACU,GAAP,CAAW,kCAAX,EAA+CH,QAA/C;AACAJ,IAAAA,MAAM,CAACG,OAAP;AACA;AACD;;AAEDT,EAAAA,GAAG,CAACc,aAAJ,CAAkBT,OAAlB,EAA2BC,MAA3B,EAAmCC,IAAnC,EAAyC,SAASQ,IAAT,CAAcC,EAAd,EAAkC;AACzE,UAAMC,EAAE,GAAG,iBAAX;;AAEA,QAAI,QAASD,EAAb,EAAwB;AACtB,YAAM,IAAIE,KAAJ,CAAU,6BAAV,CAAN;AACD;;AACD,QAAI,QAASb,OAAb,EAA6B;AAC3B,YAAM,IAAIa,KAAJ,CAAU,8BAAV,CAAN;AACD;;AAEDF,IAAAA,EAAE,CAACC,EAAH,GAAQA,EAAR;AACAZ,IAAAA,OAAO,CAACY,EAAR,GAAaA,EAAb;AAEAf,IAAAA,GAAG,CAAC;AACFe,MAAAA,EADE;AAEFP,MAAAA,QAFE;AAGFM,MAAAA,EAHE;AAIFV,MAAAA,MAJE;AAKFD,MAAAA,OALE;AAMFc,MAAAA,QAAQ,EAAE;AANR,KAAD,CAAH;AASAnB,IAAAA,GAAG,CAACoB,IAAJ,CAAS,YAAT,EAAuBJ,EAAvB,EAA2BX,OAA3B;AACD,GAvBD;AAwBD,CA5CI","sourcesContent":["import { Socket } from 'net';\nimport WebSocket from 'ws';\nimport url from 'url';\nimport { SocketWithInfo, MessageWithInfo } from './types';\nimport { AnySocketEpic } from '../kit';\nimport { RegistryStateApi } from './socketRegistryState';\nimport { BasicLogger } from '../logging';\nimport { uuid } from '../uuid';\n\nexport const buildServerUpgradeListener = (\n wss: WebSocket.Server,\n epicsByPath: () => Map<string, AnySocketEpic>,\n add: RegistryStateApi['addSocket'],\n logger: BasicLogger\n) =>\n function upgrade(request: MessageWithInfo, socket: Socket, head: Buffer) {\n if (!request.url) {\n socket.destroy();\n return;\n }\n\n const pathname = url.parse(request.url).pathname;\n\n if (typeof pathname !== 'string' || !epicsByPath().has(pathname)) {\n logger.log(\"🤷 Path doesn't have a handler\", pathname);\n socket.destroy();\n return;\n }\n\n wss.handleUpgrade(request, socket, head, function done(ws: SocketWithInfo) {\n const id = uuid();\n\n if ('id' in (ws as {})) {\n throw new Error('id already exists in socket');\n }\n if ('id' in (request as {})) {\n throw new Error('id already exists in request');\n }\n\n ws.id = id;\n request.id = id;\n\n add({\n id,\n pathname,\n ws,\n socket,\n request,\n onDetach: 'disconnect',\n });\n\n wss.emit('connection', ws, request);\n });\n };\n"],"file":"buildServerUpgradeListener.js"}