UNPKG

@aimee-blue/ab-service-kit

Version:
1 lines 2.82 kB
{"version":3,"sources":["../../../src/shared/sockets/dataStreamFromSocket.ts"],"names":["dataStreamFromSocket","client","logger","defaultLogger","Observable","subscriber","messageHandler","data","next","errorHandler","error","closeHandler","code","reason","from","closingByKit","log","EOL","timestamp","complete","on","off"],"mappings":";;;;;;;AACA;;AACA;;AACA;;AAEA;;AACA;;AAEO,MAAMA,oBAAoB,GAAG,CAClCC,MADkC,EAElCC,MAAc,GAAGC,sBAFiB,KAG/B;AACH,SAAO,IAAIC,gBAAJ,CAA+BC,UAAU,IAAI;AAClD,UAAMC,cAAc,GAAIC,IAAD,IAA0B;AAC/CF,MAAAA,UAAU,CAACG,IAAX,CAAgBD,IAAhB;AACD,KAFD;;AAIA,UAAME,YAAY,GAAIC,KAAD,IAAoB;AACvCR,MAAAA,MAAM,CAACQ,KAAP,CAAa,4BAAb,EAA2CA,KAA3C;AACAL,MAAAA,UAAU,CAACK,KAAX,CAAiBA,KAAjB;AACD,KAHD;;AAKA,UAAMC,YAAY,GAAG,CAACC,IAAD,EAAeC,MAAf,KAAkC;AACrD,YAAMC,IAAI,GAAG,CAACb,MAAM,CAACc,YAAR,GAAuB,kBAAvB,GAA4C,eAAzD;AACAb,MAAAA,MAAM,CAACc,GAAP,CACG,GAAEC,OAAI,yBAAwBH,IAAK,eAAcF,IAAK,KAAIC,MAAM,IAC/D,oCAAeD,IAAf,CAAqB,EAFzB,EAGE;AACEM,QAAAA,SAAS,EAAE;AADb,OAHF,EAMED,OANF;AAQAZ,MAAAA,UAAU,CAACc,QAAX;AACD,KAXD;;AAaAlB,IAAAA,MAAM,CAACmB,EAAP,CAAU,SAAV,EAAqBd,cAArB;AACAL,IAAAA,MAAM,CAACmB,EAAP,CAAU,OAAV,EAAmBX,YAAnB;AACAR,IAAAA,MAAM,CAACmB,EAAP,CAAU,OAAV,EAAmBT,YAAnB;AAEA,WAAO,MAAM;AACXV,MAAAA,MAAM,CAACoB,GAAP,CAAW,SAAX,EAAsBf,cAAtB;AACAL,MAAAA,MAAM,CAACoB,GAAP,CAAW,OAAX,EAAoBZ,YAApB;AACAR,MAAAA,MAAM,CAACoB,GAAP,CAAW,OAAX,EAAoBV,YAApB;AACD,KAJD;AAKD,GAhCM,CAAP;AAiCD,CArCM","sourcesContent":["import WebSocket from 'ws';\nimport { Observable } from 'rxjs';\nimport { EOL } from 'os';\nimport { localNow } from '../time';\nimport { SocketWithInfo } from './types';\nimport { wsCodeToReason } from './wsCodeToReason';\nimport { Logger, defaultLogger } from '../logging';\n\nexport const dataStreamFromSocket = (\n client: SocketWithInfo,\n logger: Logger = defaultLogger\n) => {\n return new Observable<WebSocket.Data>(subscriber => {\n const messageHandler = (data: WebSocket.Data) => {\n subscriber.next(data);\n };\n\n const errorHandler = (error: unknown) => {\n logger.error('💥 Error on client socket', error);\n subscriber.error(error);\n };\n\n const closeHandler = (code: number, reason: string) => {\n const from = !client.closingByKit ? 'from client side' : 'from our side';\n logger.log(\n `${EOL}👋 Connection closed ${from}, with code ${code}; ${reason ||\n wsCodeToReason(code)}`,\n {\n timestamp: localNow(),\n },\n EOL\n );\n subscriber.complete();\n };\n\n client.on('message', messageHandler);\n client.on('error', errorHandler);\n client.on('close', closeHandler);\n\n return () => {\n client.off('message', messageHandler);\n client.off('error', errorHandler);\n client.off('close', closeHandler);\n };\n });\n};\n"],"file":"dataStreamFromSocket.js"}